tag:blogger.com,1999:blog-23142048403346915442024-02-18T23:31:26.652-07:00Chris' UpdatesThoughts on tech, and previously college and military lifeXylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.comBlogger398125tag:blogger.com,1999:blog-2314204840334691544.post-7880788931835909232018-04-02T18:06:00.001-06:002018-11-25T21:29:13.862-07:00E-books and e-readersIt's been ages since I've posted, but I thought I'd record my recent experience with e-books and e-readers.<br />
<br />
As context, I've recently dusted off my <a href="https://en.wikipedia.org/wiki/Barnes_%26_Noble_Nook_1st_Edition">original Nook e-reader</a>, and have been trying to get as much of my e-book library on to it as possible. At the same time, I've been researching new e-readers because there have been a number of technology improvements since the release of the first edition Nook.<br />
<h2>
E-books</h2>
My e-book purchases have come from a number of retailers:<br />
<ul>
<li><a href="https://pragprog.com/">Pragmatic Programmers</a></li>
<li><a href="https://www.manning.com/">Manning Publications</a></li>
<li><a href="https://www.oreilly.com/">O'Reilly Books</a></li>
<li><a href="https://www.barnesandnoble.com/b/nook-books/_/N-8qa">Barnes & Noble</a> Nook store</li>
<li><a href="https://play.google.com/store/books">Google Play</a> books</li>
<li><a href="https://www.amazon.com/Kindle-eBooks">Amazon Kindle</a> books</li>
</ul>
<div>
Of course, the name of the game with e-books these days is DRM: some distributors apply strong DRM, some weak DRM, and some none.</div>
<div>
<br /></div>
<div>
Both Kindle and Nook e-books are useless except within their ecosystem.</div>
<div>
<br /></div>
<div>
Kindle books can be downloaded with a "Download & transfer via USB" option, but the AZW3 file is encrypted to a specific device. I see references that this wasn't always the case, but that was my experience.</div>
<div>
<br /></div>
<div>
Nook no longer offers a download option at all; books must be delivered via the cloud to their devices and mobile apps. I saw references to a Nook Study desktop app but couldn't locate a site to download it. I had also previously downloaded EPUB files, but Adobe Digital Editions asks for a username and "unlock code" to decrypt those. I see references online that the credentials are tied to the credit card used for the purchase (username is the name on the card, unlock code is the credit card number itself), but there's no way I have that information for books I purchased 6 years ago.</div>
<div>
<br /></div>
<div>
Google Play purchases have some books with DRM, but so far I've been able to open those in Adobe Digital Editions without trouble. I'll explain below, but if I can open it in ADE, I can remove the DRM and read the book on whatever device I please.</div>
<div>
<br /></div>
<div>
Other retailers generally don't use strong DRM. Pragmatic Programmers has a unique scheme where their books are completely DRM-free, but are generated with the purchaser's name and email address embedded in the content.</div>
<h2>
E-book library management</h2>
<div>
In this quest to organize everything, I ran across <a href="https://calibre-ebook.com/">Calibre</a>, and hands down it's the tool I always wanted for this sort of thing. It can track books across multiple retailers, filter by author, publisher, fetch metadata, import and organize vast unorganized collections of files, track one entry for multiple file formats; it's a lot like <a href="https://www.plex.tv/">Plex</a> for video media. Calibre will even convert between file formats, removing one of my big concerns about devices: the fact that Kindle doesn't support EPUB.</div>
<div>
<br /></div>
<div>
The one thing Calibre doesn't do out of the box is anything concerning DRM, but luckily there's a <a href="http://apprenticealf.wordpress.com/2012/09/10/drm-removal-tools-for-ebooks/">plugin by Apprentice Alf and Apprentice Harper</a> that will read DRM files and when possible, remove it. Note: I paid for the content. I didn't get it from a pirate, and I'm not giving it to pirates. The author and publisher got their cut, so I feel no remorse in breaking DRM implemented by retailers trying to lock me into their ecosystem. Apprentice Alf's DeDRM Tools will remove any DRM if Adobe Digital Editions can decrypt it, but as noted earlier, I haven't found a way for ADE to access Nook or Kindle purchases, at least not yet.</div>
<h2>
New E-Reader?</h2>
<div>
In considering a new e-reader, I was at first committed to staying with Nook, primarily because of their EPUB compatibility and a bit of brand loyalty. However, Kindle's devices seem superior in terms of polish and variety of selection. With Calibre, EPUB compatibility is less of a problem since it's straightforward to convert to MOBI. And since Nook has locked down their walled garden, I'm less inclined by brand loyalty. I can look at Kobo as well, but really, Kindle's the big show.</div>
<h2>
Which retailer for the future?</h2>
<div>
After all of this research and testing, the other thing I have to decide is, given a choice, which e-book retailer should I prefer?</div>
<div>
<br /></div>
<div>
With e-books in particular, I feel like the freedom to move around should be a given; it seems like there should be fewer excuses for brand lock-in than any other type of media. For that reason, I'm less inclined to purchase books from Kindle or Nook. Sure, there's a bit of convenience from cloud delivery and last-read-page syncing or sharing/lending options, but it's not worth being stuck in a walled garden. However, if push comes to shove and I really want to purchase a recent, popular title, I think I prefer Kindle's current household sharing model; it's light years ahead of Nook's one-off lending feature.</div>
<div>
<br /></div>
<div>
In the end, I don't know if I'll stick by my guns and prefer Google Play books, or get comfortable with the walled garden and switch to Kindle books.<br />
<h2>
Update</h2>
</div>
<div>
2018-04-04: I had luck today using Kindle for PC in conjunction with DeDRM Tools, so Kindle books appear to be a reasonable purchase right now. On the other hand, DRM is a game of cat and mouse, so I'll probably still lean toward more permissive retailers (Google Play Books) when possible.</div>
Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-42108860403211596932012-03-23T00:17:00.000-06:002012-03-23T00:17:06.724-06:00Buzzing XBees<span style="font-family: inherit;">It's been a while since I've written, but I just have to share my experiences with this. I recently bought a pair of <a href="http://www.sparkfun.com/products/10414">XBee Series 2 radios</a> along with <a href="http://www.sparkfun.com/products/9132">XBee Explorer break-out boards</a>. I first heard about these radios in general back in school when I was working with CU's <a href="http://recuv.colorado.edu/">RECUV</a> group, and then again in Tom Igoe's excellent book <a href="http://www.amazon.com/Making-Things-Talk-Practical-Connecting/dp/0596510519">Making Things Talk</a>, and I've been itching to try them out ever since. They're a bit like Wi-Fi or Bluetooth, but seem to lend themselves better to microprocessor projects, generally use less power, and have some unique features that are great for sensor networks. I understand they're also being used for modern home automation products.</span><br />
<span style="font-family: inherit;"><br />
</span><br />
<span style="font-family: inherit;">However, getting these things configured and tested wasn't exactly a walk in the park! As it turns out, I probably should've gotten the Series 1 radios, as they use the simpler 802.15.4 protocol. Series 2 uses the Zigbee protocol, which allows for more advanced network topologies but is also harder to configure. In the end, though, it wasn't really that difficult, and I appreciate the greater flexibility, so I'm happy with my purchase. Because of my difficulty in the first few steps, I'm taking it upon myself to write a little about my lessons learned in getting these going.</span><br />
<span style="font-family: inherit;"><br />
</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHL5EEVz6p5LBOTNLn8b8E-BH75L-CUjqfI7cqpe0cFuOV9IdQP7wPds07N2v3OPU23i1SaPMBwcPgvb8Ji7wIMxiW5UnAZMC4Cz3DcY_9UPnrVUhmzcY8E7fYKW27fPBxuC8HOh7Piwq/s1600/IMG_20120322_225939.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHL5EEVz6p5LBOTNLn8b8E-BH75L-CUjqfI7cqpe0cFuOV9IdQP7wPds07N2v3OPU23i1SaPMBwcPgvb8Ji7wIMxiW5UnAZMC4Cz3DcY_9UPnrVUhmzcY8E7fYKW27fPBxuC8HOh7Piwq/s320/IMG_20120322_225939.jpg" width="320" /></a></div><span style="font-family: inherit;">Once I soldered headers onto the Explorer boards, my next task was to hook them up to USB-to-serial adapters to program them. There are <a href="http://www.sparkfun.com/products/8687">Explorer boards with built-in serial adapters</a>, but they're more expensive, and I already have a <a href="http://www.sparkfun.com/products/718">separate adapter</a>. However, this meant I could only hook up one radio at a time, and it turned out to be very handy to hook up both. I eventually found a <a href="http://www.zoobab.com/use-the-arduino-as-a-serial-adaptor">blog post</a> that indirectly guided me to using my Arduino's USB-to-serial chip as a sort of pass-through. If you hook a jumper wire from GND to the RESET pin on the Arduino board, that effectively disables the ATmega chip so it doesn't interfere with the UART pins. (You can also remove the chip from the socket, but the jumper is easier.) After that you can hook up +5V, GND, and the two signal wires from the Arduino to the Explorer. In this case, the Explorer is acting as the UART's device, so you have to hook up RX to DIN and TX to DOUT in a straight-through configuration, instead of crossed-over as in normal device-to-device serial.</span><br />
<span style="font-family: inherit;"><br />
</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6_WDqyhOoFvaQ9EJ2b_aM_i_4irF23sf0LLxcXQycsQ2syy3zFz0VD1QOINKGwBctf3jhe5Pf0akHy5RHITYX0xgn1V6jx7y5K35Z5P6zltn2wEIPFLdnovaGnUmd-swZYq04KuX-PWJd/s1600/X-CTU-01.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6_WDqyhOoFvaQ9EJ2b_aM_i_4irF23sf0LLxcXQycsQ2syy3zFz0VD1QOINKGwBctf3jhe5Pf0akHy5RHITYX0xgn1V6jx7y5K35Z5P6zltn2wEIPFLdnovaGnUmd-swZYq04KuX-PWJd/s320/X-CTU-01.png" width="320" /></a></div><span style="font-family: inherit;">In that configuration, I was able to start two copies of the <a href="http://www.digi.com/support/productdetail?pid=3352">X-CTU configuration program</a> (v. 5.2.7.5 under the <span style="background-color: white; line-height: 16px; text-align: center;">General Diagnostics, Utilities and MIBs tab as I write), and start setting up the radios' software. On the opening tab, PC Settings, I set one copy of the program to each COM port (4 and 6 in my case) and made sure I could Test/Query both radios. My radios came set to 9600 baud.</span></span><br />
<span style="font-family: inherit;"><span style="background-color: white; line-height: 16px; text-align: center;"><br />
</span></span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYce2aPpg27FNHksSRJeHYWl6XWSjkftXjR27nwTdmnW4d6xrWq3ozwQYpW31y7cBR9tKEZ205VDjd5EFhK2JXbUUswHaHFX1G6lN0rlCExlOVTtR88IHLSjnuoYmkj7t2K_i9BzEe7yux/s1600/X-CTU-02.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYce2aPpg27FNHksSRJeHYWl6XWSjkftXjR27nwTdmnW4d6xrWq3ozwQYpW31y7cBR9tKEZ205VDjd5EFhK2JXbUUswHaHFX1G6lN0rlCExlOVTtR88IHLSjnuoYmkj7t2K_i9BzEe7yux/s320/X-CTU-02.png" width="320" /></a></div><span style="font-family: inherit;"><span style="background-color: white; line-height: 16px; text-align: center;">After that, I started poking around in the Modem Configuration tab. By clicking Read, I was able to find out that both of my radios came loaded with the Zigbee Router AT firmware. If you read the <a href="http://ftp1.digi.com/support/documentation/90000976_J.pdf">Product Manual</a>, you'll learn that a ZigBee network <u>must</u> have exactly one radio with Coordinator firmware, even for simple point-to-point connections. With that in mind, I changed one of the radios to a Coordinator by selecting Zigbee Coordinator AT in the Function Set dropdown box and then writing the new firmware. On both modules, I set the same PAN ID. In Zigbee (as opposed to plain 802.15.4), the 16-bit network address is either implicitly 0 for the coordinator, or randomly set for all other nodes, so those fields aren't editable. Since I'm starting with a point-to-point network, for both modules I set the destination address (DH and DL) to the serial number (SH and SL) of the other device.</span></span><br />
<span style="font-family: inherit;"><span style="background-color: white; line-height: 16px; text-align: center;"><br />
</span></span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidN04uqJXKvH7LTXh01GBASwwi4z0MMdX7DIjY4ujjC_RaJJ6_FnjWVOegUyqIZPIWGDxifbWKdlC9rquOLZiinRKlMn4TZWpT2ceBoZXQd_hJEzNbJiSdJnT-mCQdVW4apT140dvpcnT8/s1600/X-CTU-03.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidN04uqJXKvH7LTXh01GBASwwi4z0MMdX7DIjY4ujjC_RaJJ6_FnjWVOegUyqIZPIWGDxifbWKdlC9rquOLZiinRKlMn4TZWpT2ceBoZXQd_hJEzNbJiSdJnT-mCQdVW4apT140dvpcnT8/s320/X-CTU-03.png" width="320" /></a></div><span style="font-family: inherit;"><span style="background-color: white; line-height: 16px; text-align: center;">I could be forgetting something, but that should be enough to get point-to-point communication going. From the Terminal tab on both windows, I'm able to type on one side and watch the other side receive. In the photo, blue is what I typed, and red is what was received by the other radio.</span></span><br />
<span style="font-family: inherit;"><span style="background-color: white; line-height: 16px; text-align: center;"><br />
</span></span><br />
<span style="font-family: inherit;"><span style="background-color: white; line-height: 16px; text-align: center;">Once all of that was established, I decided to hook up the radio to the Arduino "for real." To switch the Arduino from a pass-through to a microcontroller, I just removed the wire from the RESET pin, and swapped the signal wires so that I had </span></span>RX to DOUT and TX to DIN (as in normal, crossed-over serial communication). After that, I loaded the Arduino with a simple program using the <a href="http://arduino.cc/en/Reference/Serial">Serial</a> object. The sketch just listens to serial in, and when it gets a byte, increments it and writes it back out.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfoH1IXDfbKUZjTY7UQjVVClsINWbCkARbejK68jRG7beSj2jgoVMc9jn6Uml5jzP-VLj9ZQez51ZPdUJMLlBCvaFvDZ85_k4Yff7N5V7Px7ZjF-RTWBvfgggd9-t74NHqV8H2zgzBhHSJ/s1600/IMG_20120322_235804.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfoH1IXDfbKUZjTY7UQjVVClsINWbCkARbejK68jRG7beSj2jgoVMc9jn6Uml5jzP-VLj9ZQez51ZPdUJMLlBCvaFvDZ85_k4Yff7N5V7Px7ZjF-RTWBvfgggd9-t74NHqV8H2zgzBhHSJ/s320/IMG_20120322_235804.jpg" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAdNKcjABXSsTCxZA0KOu_jpTJcSo42p498pSxewmVfHy2UBc3x3du3kkd_ruX7Uz9B_vO3f0U1UK07joL0QYImIQnQ3m2J_gzHVi1PrRzdJDQAnIcmpfaTNsNw1o5zm-tbra-Pt49N2wI/s1600/X-CTU-04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAdNKcjABXSsTCxZA0KOu_jpTJcSo42p498pSxewmVfHy2UBc3x3du3kkd_ruX7Uz9B_vO3f0U1UK07joL0QYImIQnQ3m2J_gzHVi1PrRzdJDQAnIcmpfaTNsNw1o5zm-tbra-Pt49N2wI/s320/X-CTU-04.png" width="262" /></a></div><br />
<div><br />
As you can see, the module attached to the computer (and visible through the X-CTU window) sends a letter (in blue). The radio attached to the Arduino gets the letter and passes it to the Arduino. The Arduino increments the letter, passes it back to the attached radio, which sends the new letter to the computer's radio and back to the terminal (in red).</div><br />
That's the extent of my exploration so far. Nothing too exciting, but I'm quite pleased that I'm this far. Next up, maybe I'll control a servo on one Arduino using a potentiometer on another. We'll see!Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-55330749103334590712011-10-09T16:27:00.001-06:002011-10-09T16:32:13.368-06:00My Robot FriendIt's been a bit since I've posted, but fear not! Things are going well, and some exciting things are taking shape!<br />
<br />
Work is as exciting as ever. There are new challenges almost every day it seems, yet nothing that seems to be impossible. Our systems environment is ever-changing, and the causes and motivations are numerous, but it's all in a day's work. I've also taken it upon myself to start implementing measurable quality metrics in my work, and that has been an interesting journey. I'm starting to learn a number of tools and techniques for automated building, testing, and deployment, and those are skills that should serve me anywhere on any project.<br />
<br />
Outside work, I got the itch to do some engineering mentoring, and so I got a hold of my local high school. They don't currently have any programs like the old "computer club" that I attended when I was there (it was really just 3 or 4 of us that would hang around in the computer lab after school). However, just as I contacted them, the tech lab teacher was gearing up a team for a robotics competition called <a href="http://www.rockymountainbest.org/">BEST</a>. Basically, over a 6 week period, the team of high schoolers must design and build a fair-size robot (maximum 2 feet cubed) out of basic provided materials, like plywood and PVC pipes, plus an electronics kit. The robot must then perform certain game tasks in competition. I've been volunteering my time with them, and I'm really having a blast, even if there isn't all that much programming. Many general engineering principles, like designing to meet goals and building prototypes, are still useful. Maybe after the competition, I can keep something going through the rest of the school year. We'll see.Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-33724556712903514232011-09-11T21:58:00.001-06:002011-09-11T21:59:42.089-06:00Ten Years Ago, TodayI was in the 10th grade. The morning started off as any other, with my morning bike to school. My first class was Spanish. There were rumors of confused news reports about a small plane accidentally glancing off of the World Trade Center, but our teacher would allow no distractions. Our class plowed through the planned material.<br />
<br />
But when I arrived at 2nd period chemistry, it was clear that this was no normal day, no small news story, and no accident. Our chemistry teacher didn't say much, and didn't attempt to teach class. We listened to the radio reports from shocked and confused journalists in New York. We heard that commercial airliners had been hijacked and crashed into the towers and the Pentagon; that both towers had just fallen; that the streets of Manhattan were rivers of dust and ash; that tens of thousands were injured, trapped, or dead.<br />
<br />
It took time for the magnitude of the reports to crystallize in my head. This had happened on American soil? The shock was profound to me, a teenager who had never heard of a disaster of this scale in my own country during my own lifetime. The next few hours are now just a blur, but I know the question eventually solidified: what was going to be attacked next? Every feeling of comfort and safety was shattered, for myself and everybody around me.<br />
<br />
I remember sitting with friends in the school cafeteria at lunch time. Half of the students had already left school. In my recollection, there was no official release by the administration, but our teachers were also in shock, and knew that on this day, nobody was thinking of anything else. Some kids had left or been pulled out by their parents so they could be with their families. Some kids left because they were afraid that the school might be targeted, images of Columbine High School still fresh in their minds. Other kids didn't immediately grip the gravity of the event, saw the reign of chaos in the school, and left because they smelled the opportunity for a day of freedom.<br />
<br />
When I got home, I sat in a daze in front of the TV news reports. The hijackers had been foreign terrorists. My train of thought was, "Really? Who would want to do that to us? We're Americans! We have our faults, but no one actually hates us, do they?" There had been four planes, and one had mysteriously gone down in a field in Pennsylvania; there were hazy reports that the passengers might have fought the hijackers and forced the plane down. The whole thing was entirely surreal.<br />
<br />
The end of the day seemed drained of hope, but over the next weeks and months, I saw the country come together in strength and hope. Out of the wreckage, miraculous stories of heroism, courage and compassion emerged. For every mention of the innocent lives lost, there were tales of the brave people that selflessly gave for their fellow human beings. That day touched the life of every American, and I like to think that we've become better for it, as a nation and a people.Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-1992546631557269982011-07-10T12:45:00.001-06:002011-07-10T13:00:38.556-06:00Google Map MakerFor those that don't know, Google Maps just opened up the <a href="http://www.google.com/mapmaker">Google Map Maker</a> web application to allow normal users to enter data into Google Maps. After a review process, those edits can be published into the public Google Maps for the world to see. I was pretty excited when I learned about it in April, and I've been pretty active.<br />
<br />
Recently I received an e-mail from the Google Map Maker Community Team. Because I'm "one of the top mappers in the United States," they offered to send me a free t-shirt, and invited me to the Google Geo User Summit in Mountain View. I had to regretfully decline the offer to attend the summit, but the t-shirt is pretty awesome.<br />
<br />
<table style="margin-left: auto; margin-right: auto; width: auto;"><tbody>
<tr><td><a href="https://picasaweb.google.com/lh/photo/wLHfNvTcr2B0Dv81fZlmig?feat=embedwebsite"><img height="288" src="https://lh6.googleusercontent.com/-fxFAbQaB7KI/ThncsFisOjI/AAAAAAAAIlM/V6Lh0xrwS1U/s288/IMG_20110710_110420.jpg" width="216" /></a></td><td><a href="https://picasaweb.google.com/lh/photo/XeCCU9vDrNDcFWDv9o7X7g?feat=embedwebsite"><img height="288" src="https://lh3.googleusercontent.com/-hR6vCGuqLiY/ThncU0s6PcI/AAAAAAAAIk8/JTkm1Auk1FI/s288/IMG_20110710_110436.jpg" width="216" /></a></td></tr>
<tr><td></td><td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;">From <a href="https://picasaweb.google.com/xylo04/July2011?authuser=0&feat=embedwebsite">July 2011</a></td></tr>
</tbody></table><br />
My friends and I were trying to figure out what the map on the front is showing. At first glance, it looks like a <a href="http://en.wikipedia.org/wiki/File:World_Night_Lights_Map.jpg">map of the world's lights at night</a>, but some major countries, like the US, Canada, UK, France, and Russia are not lit up. So what do the white areas represent? My speculation is that those represent major road systems that Map Maker users have added which were not previously recorded in Google Maps, but I'm not sure. Does anyone know?Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-49224056640193022832011-07-08T22:44:00.000-06:002011-07-08T22:44:52.207-06:00Graduation VideosCheck these out! Courtesy of Munchkin, thanks friend!<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="303" src="http://www.youtube.com/embed/ZU93vOKCzNY" width="480"></iframe><br />
<br />
<iframe allowfullscreen="" frameborder="0" height="303" src="http://www.youtube.com/embed/95Gjq4__PB0" width="480"></iframe>Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-19176686013278574482011-07-03T12:20:00.000-06:002011-07-03T12:20:13.742-06:00Exploring Google App Engine with Restlet and ObjectifyWarning: this post is excessively geeky for my usual audience. Non-programmers, feel free to skip.<br />
<br />
I've been doing a little more exploration with Google App Engine. I've used it before, first for my Weasley Clock, and also for one of my classes, Object-Oriented Analysis and Design. In that OOAD class, my team and I had a short amount of time to build an Android app backed by a RESTful web service on GAE. We ended up using JAX-RS/Jersey as a RESTful framework, JAX-B for server-side XML serialization, and JDO for the datastore API. Then on the Android client, we used the Apache HTTP client and SAX parsers. That worked out alright, but recently I've wanted to explore what other options are out there.<br />
<br />
I've been interested in <a href="http://www.restlet.org/">Restlet</a> for a while; in OOAD, I explored that first before moving to JAX-RS. It seems to be a pretty comprehensive solution. They provide both server and client libraries for many platforms, with flexible configuration for many needs, such as filters. What turned me off last time, and almost again this time, was that the source code for the "first application" example didn't work out of the box. I had to decide which version of the library I needed, download four different editions, and figure out which .jars to put where. Then for a long while, I was stuck on an interesting bug. Apparently, GAE doesn't support chunked encoding (whatever that means), so their current stable 2.0.8 libraries won't work for GAE/Android communication. Their 2.1m5 libraries have a workaround, but one must manually specify that entities must be buffered (once again, what?). I also paired their 2.0 "first application" example with 2.1m5 libraries without realizing that there was a difference, because their wiki wasn't clear about which version of the sample application you were looking at.<br />
<br />
So far, I would say that Restlet is a well-built library for RESTful communication, both server and client-side, but their documentation and examples could really use some organization help. The answers are on their site, but sometimes they seem to be hidden away in dark corners of the wiki.<br />
<br />
After I got the Restlet "first application" working, I wanted to bolt on datastore support. I wanted to try something other than JDO, and so looked at JPA. However, these both seem to be cumbersome and ill-fit when it comes to the GAE datastore. Then somehow I stumbled across <a href="http://code.google.com/p/objectify-appengine/">Objectify</a>, a relatively thin library that works on top of the datastore low-level API. Some of the attractive features were a less-cranky <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">Key</span> interface, using POJOs instead of GAE-specific Entities, and GWT compatibility without DTO's. I did have trouble with that GWT part for a while, because I thought that my POJOs still needed to be annotated with <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">java.persistence.Entity</span>. I think that was causing problems when the DataNucleus Enhancer went and did its magic; the server-side class looked different than what GWT was expecting on the client side, which ended up throwing a <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">SerializationException</span>. However, I finally figured out that stored entities don't need the <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">Entity</span> annotation. The only thing that the POJOs need is a <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">java.persistence.Id</span> annotation on the primary key field.<br />
<br />
I have yet to really explore this thoroughly, but so far both libraries seem to be doing their job and playing nicely. The best part was not having to write DTOs! I did have to fight with both libraries for a while, but hopefully this post will help somebody else avoid those pitfalls.Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-6580532669818476362011-06-23T18:23:00.000-06:002011-06-23T18:23:39.327-06:00Hit the Ground Running<div class="separator" style="clear: both; text-align: center;"><a href="https://picasaweb.google.com/xylo04/CampingAtGoldenGateCanyon#5612602077861108786" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqFI0LRxb47dKB1oLc1kZeeWDn36B0CJoDtjR_g_WBfEJkw2TWB9kfaojhNmB96_o-ppcMqJGAxhe-dd2oZZRQx3J52_FvjWjEfzySJKEVens9IVyAAuiEt_UvA5MCM9iEPNcy8ofwLSzC/s320/IMG_0964.JPG" width="320" /></a></div>My time between finishing school and starting work was relaxing, but too short, of course. I did keep myself busy with projects, planning for our first camping trip of the season, and preparing for work. I was able to get some stepping motors to ressurrect the Wesley clock. I finished all of the software last summer, but still haven't gotten around to building the darn thing!<br />
<br />
I started work the week before Memorial Day, so it was a fairly relaxing time to come in. So far I like the people, and the work is interesting. My co-workers are a pretty tight-knit group and have some nice traditions. "The Phat Club" is an agreement among about a dozen people to bring in breakfast for everyone else once a week on a rotating basis. Every day at a certain time, everyone who isn't busy with something will take a short walk down to the "snack room" to stretch our legs and shoot the breeze. Some of us even took an afternoon off to see a Rockies game. That was a lot of fun!<br />
<br />
One thing that's in stark contrast to my previous experiences is the level of isolation. Communication is restricted in order to protect proprietary information, so we can't have cell phones inside our building. It's a little unnerving, but it's a necessary evil and I'm learning to adapt. But there also seems to be some technological isolation. I don't know if it's just my project, but there's a lot less use of libraries and frameworks than even some of my school projects; instead, everything is built from scratch. It's well-built from what I can tell, but open-source frameworks have the advantage of public scrutiny, industry approval and large support communities. Working on this project could certainly be a learning opportunity in relying on my own design and coding ability, but I will need to spend time outside work to keep my finger on the pulse of the industry.Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-6898641396073002682011-05-18T13:50:00.003-06:002011-05-18T13:53:11.049-06:00On Endings and BeginningsI forgot to mention a couple of other interesting notes concerning graduation and the like. The most exciting news is that I've transferred out of active drilling status in the Army Reserve and into the Individual Ready Reserve, otherwise known as inactive reserve. That mean's I'm essentially out of the Army; they can still call me up if I'm needed, but the circumstances would have to be extraordinary. I don't have to go to monthly drills, I just go for a once-a-year "muster" to make sure I'm still alive.<br />
<br />
I have to say, it's bittersweet leaving the Army. I really enjoy doing my job there, and I enjoy the camaraderie. If I were keeping myself in better shape and moving forward in my military career, I would have a strong reason to stay. But on the other hand, it's really the right thing for me right now. My entire life is changing; I'm moving from primarily being a student to the working world. My situation in the Army was also supposed to change, as I was being forced to change units. For one thing, changing units would mean re-establishing my reputation as a good soldier. The fact that I'm a habitual PT failure means that I have a hard time gaining good graces with NCO's and officers until I've fixed their commo a few times. For another, being forced to change yet another thing in my life right now is difficult to fathom. And besides, it might be nice to see what it's like to live life without the Army. If I really find that I miss it, I can probably get in shape and go back.<br />
<br />
The other thing that I wanted to mention was from the Engineering Recognition Ceremony. The Peak Brass Quintet played the graduates on to the floor with the traditional "Pomp and Circumstance," but after a while I realized they were working in other music too. It blended very well, so it was hard to tell at first, but they added some phrases from the <i>Star Wars</i> soundtrack as well as the <i>Zelda</i> video game soundtrack. It was subtle and tasteful, and I thought it was totally appropriate for a room full of über-nerds. Nice touch!Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-2188052912300793012011-05-16T18:49:00.001-06:002011-05-16T18:51:13.570-06:00Alma MaterApologies for the late post, but I've been a madman up until last week. After spring break, I had to kick all three of my class projects into high gear. In senior project, I had been spinning my wheels on a particular problem, and finally called in our Google sponsor, Scott, to help me out. We and the rest of the team had a couple of late-night hackathon sessions, and really made some huge progress. After Scott showed me how to incorporate my own PaintWeb tools the right way and started me on a selection system, I was able to make some nice enhancements to our 2D canvas and toolset. In the end, we handed off a senior project that I'm proud to put my name on, and proud that AgentSheets will carry forward.<br />
<br />
In Object-Oriented Analysis and Design, our group wrapped up our design and did our three week-long iterations of development, and ended up with a decent proof-of-concept; an Android app for managing chores, along with a RESTful web service backend. We had planned a lot more, but with only 3 weeks to develop, it's difficult to get a finished product. And finally, my Data Mining teammate and I were able to wrap up our medical insurance mining project gracefully, even if we didn't find the juicy patterns we were looking for.<br />
<br />
So that's it. I've graduated from the University of Colorado at Boulder, College of Engineering and Applied Science, with a Bachelors of Science in Computer Science. It was an excellent experience, and I'll always be happy to call CU my alma mater.<br />
<br />
The graduation ceremonies were pretty much as expected; fairly boring in-and-of-themselves, but emotionally meaningful as a rite of passage. Many of my family and friends were able to make it for the Engineering Recognition Ceremony, and then for the University Commencement, I had Ashley, Chris and Holly cheering me on. After that, Ashley threw me a party at her mother's house, and I got to see so many of the people I love! Ashley and Holly collaborated to make my <a href="https://picasaweb.google.com/xylo04/May2011#5607154821006489026">cake</a> a special surprise, a reference to the game Portal. <a href="https://picasaweb.google.com/xylo04/May2011#">All of the photos are online for your viewing pleasure!</a><br />
<br />
Since then I've mostly been taking it easy, cleaning the house a bit, catching up on my personal projects, and the like. I did have one exciting adventure, though; our senior project sponsor Scott invited us to Google I/O Extended at the Google Boulder office. It was a blast! I mean, sure, it was just sitting around watching live videos of the real thing in San Francisco, but I got to meet people from industry, get a feel for their attitudes and opinions, learn about what Google's been up to and where they're going, and even got a swag bag! If I can't make it to San Francisco next year, I'll definitely have to see about coming back to Extended.<br />
<br />
As far as future plans, I expect to stay at Northrop Grumman for the time being. I could eventually see myself pursuing a Master's degree, but for now, I'm excited to see where life in the working world takes me. It's a wide world out there, just waiting for me!Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-25180661733555353732011-03-27T00:59:00.000-06:002011-03-27T00:59:28.529-06:00The Internet GameI've been thinking about how to teach fairly young kids about how the Internet works, and I've come up with a game. I think this would be appropriate for 3rd to 5th grade or so. I call it "The Internet Game."<br />
<br />
Begin by separating about a third of the class to be "computers," then the rest are "routers." (This could also be half and half, which would make it easy for the two groups to switch roles after a while.) The computers get into a large circle, with the routers all standing inside.<br />
<br />
The computers get to write simple "packets" on index cards, addressed with To, From, and Message. These packets have to be sent to other computers. These could be free-form, write messages to whoever you want; or there could be a rule that you must send a message back, which would simulate a client/server request and response. The routers must pass the packets so that the packets get closer to their destinations. The routers aren't allowed to move from their spot, but they can spin to face other people.<br />
<br />
For a more advanced version, one could split the computers into clients and servers, and assign specific server roles. One student could be the search engine, which would send back information about other servers. Pages sent from servers to clients could have "links" to other pages on other servers. The teacher could choose a router to break (sit down?), forcing packets to be routed around. The routers could be arranged a certain way to produce bottlenecks.<br />
<br />
I'm not in the education field, so I don't know what primary schoolers are being taught about the Internet, or how. I know interactive games are much more interesting than drawing diagrams on a chalkboard. This game seems a little reminiscent of the Telephone Game, used teach very young primary school kids about rumors. I would be shocked if something like this Internet Game doesn't exist, but a quick Google search didn't turn up anything like it. If you're an educator, or otherwise, please let me know what you think!Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-43547076499662971322011-03-11T22:12:00.000-07:002011-03-11T22:12:35.815-07:00Release ModeSchool is in full tilt, with no sign of letting up through Spring Break. In senior project, we're now into what we software engineers call "Release Mode." We're coming up to The Big Deadline, and we're churning out code and documentation as quickly as we can.<br />
<br />
We have a number of big features in Volumizer that are still not quite the way we want, but we don't have time to really do all of them justice. It's not for lack of trying, mind you; I don't function as well without sleep as some of my fellow students, but I haven't been getting my full, comfy 8 hours a night for the past couple of weeks either. I get up, start working on this or that project, maybe go to class, program more, and roll into bed. There's just too little time left to make any more huge changes. We tested with users, found our weak spots, and we'd be golden with two or three months more. But that's the breaks, I guess. Software has one distinct similarity to fine art: it's never finished, only abandoned (to quote Da Vinci). We just have to finish up the most important stuff, and leave any future work to our sponsors.<br />
<br />
I'm still quite proud of what we've accomplished. Our project would've been nearly impossible 5 years ago, bleeding edge 2 years ago, and even today is part of the first generation of 3D programs for the mainstream web. Even with its limited range of functionality, it still lets anyone who can use a paint program make their own 3D models. We've dealt with changing internet specifications, buggy development browsers, and a ton of other eye-opening experiences. We can now say with confidence, "Yeah, I've done that before." And that's worth everything.Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-28109347052394752472011-03-07T00:16:00.001-07:002011-03-07T00:17:25.542-07:00Pet PicturesI present you with some shameless animal pictures:<br />
<br />
<a href="https://picasaweb.google.com/lh/photo/uYPMN9QZ5Jf0yw9UGQW4dw?feat=embedwebsite"><img height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-DEJhalXWN8unx9Aa3UZMJIJMSqMHkyUQX_iVqyoEmahGHYN3qayuXZfkR8IYFPKAwj3t6HPgOgSkbOJnBtI3592-pQw3ONzj9Scx5f4qQNbx8lO4MIJzWDs5HZflB1h9pAZp58XtFMMp/s288/IMG_20110215_101845.jpg" width="288" /></a><br />
Apollo really enjoyed the mud pit at the dog park. Until he got home, that is.<br />
<br />
<a href="https://picasaweb.google.com/lh/photo/nBH3DsML_rVnyR9HgxGIvg?feat=embedwebsite"><img height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKsnhhFECxBDu5VCfBQhbCnFtsaQp2hbKy_Kx8IAC9DSjT723zDKS7IPndDqSzn3-8l3uP3mxRaWCUA8mu64d0b4OlPuzxMuxUWinPQ2JDWMtIGCepYWkdMs0LQrYbMzl4PWzuBhECAb62/s288/IMG_20110227_162424.jpg" width="288" /></a> <a href="https://picasaweb.google.com/lh/photo/Jf9R20nHHxgP_rXf-A-PRQ?feat=embedwebsite"><img height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjds5IDBtfEm1jASro0C8jVX_3N867YWTETSB4ZSIDJzklCod9Z7F90rCXCpl9iqXsx1BHGLj-wRYqtp_44VRHsmh5pIYRPDEKBITUS7jwuA293zEo7SMLETuuFqhWrM3012-wCgLJJyhrn/s288/IMG_20110227_162434.jpg" width="288" /></a><br />
Marley thought my drink was delicioso!<br />
<br />
<a href="https://picasaweb.google.com/lh/photo/GXqCiw60zTLxtXU8f3iLVg?feat=embedwebsite"><img height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8s0Gzmw9EcCDkaMk_0eOh0Q0KYI11S8lO2HS3Vh7f1UTZpx968uSmpoz0d-_AXkHt7SeeJlPw3dwRLUoQ9_UF8cbxHGKsSEYvDsCx0MPdV-mGXbgnafVaRfmIJgUB1D5ErLoVFqTioxEs/s288/IMG_20110301_015247.jpg" width="288" /></a><br />
A pile of sleepy.<br />
<br />
<a href="https://picasaweb.google.com/lh/photo/FlrrYPYE2UCIM6CRvX0NYw?feat=embedwebsite"><img height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyfmdpPLUaabLOapTW_ZvrDOyqil5YmlA17gYTI3a2-4GGcKVX8LNetuFB6SwmWvPonts_-GtT6nNCg3Ye6Py1rD6iwxpvISLUd03FabrpJYK4X93cLh3QLgQam0bbfqa9w-fAQ5ZjZvYZ/s288/IMG_20110306_210701.jpg" width="288" /></a><br />
Can you tell that these two like each other?<br />
<br />
Al hasn't been posing for as many photos, but worry not, he's still stalking around the house.Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-14713139941271937082011-02-09T22:37:00.001-07:002011-02-09T22:43:20.430-07:00Hyperconnectivity<div class="separator" style="clear: both; text-align: left;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;">My wife says I have a problem. She may be right.</span></div><div class="separator" style="clear: both; text-align: left;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;"><br />
</span></div><div class="separator" style="clear: both; text-align: left;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;">During tonight's project to get all of my electronics charged and software updated, I discovered that I've collected an astounding array of "computers" in the last few years. When I think about it, I use all of these on a somewhat regular basis, because they all have their particular niche.</span></div><div class="separator" style="clear: both; text-align: left;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;"><br />
</span></div><div class="separator" style="clear: both; text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiexxWo8tVfB2zyza0kqUySGuW2-c7qXKQbq1fgh6p_rFI21MbwRn7eoD33jz4mgTLDL2yVSVOphDjGh9AdcVcthJmfb_9fyylDLknpLqjMUXs8UDoJHhISSbffPfxNwHE_8GZTZCZHwmX/s1600/IMG_0906.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiexxWo8tVfB2zyza0kqUySGuW2-c7qXKQbq1fgh6p_rFI21MbwRn7eoD33jz4mgTLDL2yVSVOphDjGh9AdcVcthJmfb_9fyylDLknpLqjMUXs8UDoJHhISSbffPfxNwHE_8GZTZCZHwmX/s320/IMG_0906.JPG" width="320" /></a></div><br />
<div style="text-align: left;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;"><br />
</span></div><div style="text-align: left;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;">From left to right: </span></div><div style="text-align: left;"><ul><li><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;">HP Pavilion dv9700 gaming laptop (dual-boot Win7/Ubuntu)</span></li>
<li><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;">Barnes & Noble nook e-reader (Android)</span></li>
<li><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;">custom-bui<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;"><wbr></wbr></span><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;">lt gaming desktop (Win7)</span></span></li>
<li><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;">(same screen) VNC session to media server in living room (Ubuntu)</span></span></li>
<li><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;">G1 smartphone (</span></span><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;">Android)</span></li>
<li><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;"></span><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;">Apple Macbook 13" mid-2010 model (OSX Snow Leopard)</span></li>
<li><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 15px;">Asus Eee PC netbook (Ubuntu netbook edition)</span></li>
</ul></div>Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-33701313202194858582011-02-03T19:41:00.001-07:002011-02-03T19:45:30.109-07:00Beginning of the EndI'm finally into my last semester at CU. I've been working toward my BS in Computer Science for a total of six and a half years now, and I will finally have my piece of paper in a couple of months. It's a great feeling to be this close, and yet somehow I've avoided catching Senioritis, that contagious feeling of apathy that sometimes hits high school and college students towards the end of their studies. I think the things that are really keeping me grounded are a) our senior project, which has been interesting and challenging, and b) the fact that I have a job waiting for me.<br />
<br />
My team's senior project, <a href="http://volumizer.vasinov.com/">Volumizer</a>, has seen some fairly major progress in the last two months. We've swapped out our rudimentary, homebrew 2D canvas for an open source solution called <a href="http://code.google.com/p/paintweb/">PaintWeb</a>, and that gives us a lot more tools and functionality. The downside is that trying to interface with PaintWeb is a little difficult for what we're trying to do with it. It's very tightly integrated, and trying to pull it apart for our needs has been mostly unsuccessful. At the moment, we've just hidden away the parts we don't want. However, we've started alpha testing Volumizer with our classmates, and the results have been mostly positive! (By the way, the latest version of <a href="http://www.google.com/chrome/">Google Chrome</a> that came out today finally includes WebGL support, so you don't have to use a developer version of a web browser to check out our project!)<br />
<br />
My other classes, "Data Mining" and "Object-Oriented Analysis and Design," have started out at a good pace, and are very interesting. I've been looking forward to OOAD for a while, because it teaches not just how to write software, but design good, robust, maintainable, "beautiful" software. Coming up with clever, elegant solutions one of my favorite aspects of writing software. In addition to these, I'm taking a beginning guitar class that just started this week. I've been slowly getting myself back into playing music, but this class should really jumpstart the process. I've been meaning to pick up guitar for a while, but it's very different from anything else I've every played.<br />
<br />
I'm still looking forward to my job at Northrop Grumman. It's still contingent on an extensive background check, but I expect that will go smoothly. Now I just need to savor my last few months of school, and prepare for being a full-time bread winner.Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-35090682272558447192010-12-04T08:51:00.001-07:002011-02-03T19:45:49.640-07:00Tiny Speck of Light at the End of the TunnelMy most exciting news to report is that I've received and accepted a job offer at Northrop Grumman! I've been interviewing pretty hard for the last couple of months, and Northrop Grumman gave me a great offer on a great-looking job. Once I graduate from CU next May, I'll start working in their Information Systems division, writing, maintaining and supporting software for national defense systems. I don't know exactly what the job will entail and what sort of systems I'll be working on because the details are classified (and even if I knew I wouldn't broadcast them here), but one of the engineers interviewing me assured me that "it's just data." I'm really glad that the interviewing process is done for now, that I know what I'm doing after I graduate, and that I have a great job at a great company waiting for me!<br />
<br />
Now all I have to do is graduate. I'm not expecting that to be really difficult, but I do have to keep working at a steady pace. Next week is the last week of class for the fall semester. Most of my classes are wrapping up a few last homework assignments. In senior project we're going to give an extensive, hour-long presentation to our sponsors covering our progress through the semester and the current state of the project. For our group, I'm happy to report that our progress has been substantial, especially over the last two or three weeks. You can even start to see the fruits of our labor: go check it out at <a href="http://volumizer.vasinov.com/">Volumizer</a>! The purpose is to be able to create simple 3D models by taking 2D images and blowing them up like a balloon, and to make that a fun, social experience. We plan to do a lot more with it, but the basic picture editor, 3D viewer and social features are working! It's been very exciting to see the pieces come together.Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-75466335832224113432010-10-24T21:17:00.000-06:002010-10-24T21:17:00.222-06:00Life with MacAs you probably read in my previous post, I just bought a new MacBook. I've been slowly getting used to its quirks, and to the Mac "way of thinking," for lack of a better term. I've learned a lot, and I thought it might be useful to share some of my experiences.<br />
<br />
First, one of the most important discoveries I've made. Tonight I transferred my music collection on to the Mac. I've used iTunes before and I'm happy enough to just stay with that, but I was having issues at first. Most of my MP3 files were imported into the library just fine, but some failed to show up. I tried all sorts of things: the import tool, double clicking, clicking and dragging. Snow Leopard's built-in audio preview was able to play them, but iTunes refused to acknowledge the existence of these certain files. After looking around for a while, I learned that this might happen if the MP3 file's headers were <i>a little</i> corrupted; the files would play in most players, but not iTunes. I also found a tool to fix the offending files: <a href="http://triq.net/mac/mp3-validator-mac-os-x">MP3 Scan+Repair for OSX</a>. The really good news was that it was dead simple to use: I just dragged my entire music folder into the app, hit scan, and it told me everything that wasn't quite right. Another few clicks, and all of the bad files were rebuilt and playing in iTunes! It's still a little annoying that iTunes is that picky about files, and doesn't warn you when it's ignoring files like that.<br />
<br />
Besides that, I've found a decent set of applications for daily stuff. Many of the programs I'm used to, like <a href="http://filezilla-project.org/">FileZilla</a>, <a href="http://www.google.com/chrome">Google Chrome</a>, and <a href="http://www.microsoft.com/mac/default.mspx">Microsoft Office</a> have Mac versions. For other things, I've found some nice replacements. The sales guy recommended <a href="http://www.fraiseapp.com/">Fraise</a> (French for Strawberry) for editing code, and that's quite nice. The fact that the underlying kernel is BSD is great, because it acts a lot like Linux, which I'm very comfortable using. That provides a lot of under-the-hood power. There are even ports for <a href="http://winebottler.kronenberg.org/">Wine</a> and <a href="http://alan.petitepomme.net/unison/index.html">Unison</a>, so I can use some of my Windows-only programs and sync files with my server.<br />
<br />
I've been playing around with dual-booting Ubuntu Linux as well. My first attempt was a total failure, which forced me to reinstall everything from scratch. However, after I found the <a href="http://refit.sourceforge.net/">rEFIt</a> boot loader, I had better success. As it turns out, Ubuntu has pretty good support for running on Mac hardware. On the other hand, I probably won't use it all that much, as I haven't found many tasks that I can't accomplish with OSX. I have to say, I'm impressed.Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-79510883253126147762010-10-19T12:59:00.001-06:002010-10-19T13:05:29.356-06:00Senior project, and the job huntPerhaps its time to change the title of my blog once again; it started out as Chris' Almost-Daily Updates, has now moved to Chris' Weekly Updates, and is probably more accurately described now as Chris' Monthly Updates. But I digress.<br />
<br />
I've officially gotten back into my busy mode of living. I'm constantly switching tasks, but only occasionally do those tasks include taking the dog for a walk or to the dog park, or playing computer games, or cleaning the house. Mostly my time is being occupied by homework and job searching.<br />
<br />
Homework this semester has taken the rhythm of focusing on one project for one class for a few days solid, turning that in, then focusing on something different. It's a little hectic doing this because it constantly feels like I'm working on things at the last minute. I'm probably still spending an appropriate amount of time on each assignment, but its always close to the deadline. Senior project has been going well so far; I really did find a great team. The five of us have been consistently working together, communicating well, and hitting deadlines. We're at somewhat different skill levels, but we've been specializing to compensate. We have one guy who's been focusing on the WebGL pieces, which is nearly incomprehensible to the rest of us. I'm sure we'll all get better at it, but I imagine he'll really be the expert by the time we're finished. I've been taking on pieces that make us more efficient and effective as a team; I've been writing documentation for the version control system we're using, and I'm currently setting up our testing and deployment automation.<br />
<br />
As for the job hunt, I've been searching for a job to step into once I graduate in May. I spent about two weeks straight in a business suit. A few weeks ago was the Fall Career Fair here at CU, and I met many employers there. I've had a few on-campus screening interviews, as well as a couple of on-site technical interviews. In fact, last Thursday I got to fly out to Boise, Idaho for an on-site interview with Clearwater Analytics. They are a company that specializes in financial analytics for corporations. In particular, many of their clients are technology companies. I think I did pretty well in the interviews there, but I'm still waiting to hear back from them. While I was in Boise, I took some pictures of the downtown area; you can <a href="http://picasaweb.google.com/xylo04/InterviewInBoise#">check them out here</a>. I've also been looking for part-time work here in Colorado, so hopefully something there will pan out soon.<br />
<br />
One last bit worth mentioning. A couple of weeks ago, I got my GI Bill tuition money. Since my university bill had already been mostly paid off with grants, I went on a bit of a shopping spree. Last week, I decided that it was time to invest in an e-book reader. Since Ashley and my friends have already done their research and bought the same device, I followed suit and got the <a href="http://www.barnesandnoble.com/nook/">Barnes and Noble nook</a>. It reads the majority of e-book formats available today, and many books can be "loaned" to friends who also have the nook; they get the ability to read that title for 2 weeks, while you're locked out of reading it. It was great for the airports last week, and I suspect I'll get a lot more use out of it.<br />
<br />
My second big purchase was Friday night. Long story short, I decided it was time to break my old prejudices and buy a Mac. I've been using a combination of Windows and Linux for years, so this was a bit of a stretch for me. I ended up buying the absolute cheapest Mac laptop I could find, a 13" MacBook. So far I'm pretty impressed. It does everything I need it to do, which prevents me from carrying both my netbook for taking notes and my monstrous 17" HP gaming laptop for working on 3D programs in senior project. I'm still not a total convert, but I am really glad I bought a Mac, and I'm getting more comfortable with the OS, the multi-touch gestures and the keyboard shortcuts. I'm now firmly convinced that Macs are useful even to people who aren't pretentious snobs with goatees, aspiring to be independent film screenwriters (though I haven't really thought that way in a long time).<br />
<br />
P.S. Along those lines, check out the <a href="http://www.youtube.com/watch?v=9BnLbv6QYcA">MacBook Wheel</a> as reported by The Onion. "I'll buy almost anything if it's shiny and made by Apple."Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-12509191196622602562010-09-03T09:55:00.000-06:002010-09-03T09:55:39.964-06:00Senior ProjectIt's official, senior project has begun. The professor, Bruce Sanders, just finalized teams and projects. It's been a bit of a bumpy ride for me, getting through this process. Two weeks ago, I thought I had everything laid out. I had a project lined up, working for the startup that I interviewed with over the summer, with the other student they had considered hiring, plus whoever we could find for our team of 4 to 5. Unfortunately, at the last minute, we gained too many people for the team. Our extras just happened to be all of her friends. I guess the kind way of saying it is that she found people that she knew she could work with. The unkind way of saying it is that even though we were basically equals, she still decided she had the authority to kick me off in favor of her friends. It's too bad, because I was really looking forward to that project.<br />
<br />
But the good news is that I think I've a good team and project. I'll be working with one guy I've worked with before, and along with the other three, it seems like we'll work well together. We're working on a portion of AgentCubes, a programming "language" that Prof. Alex Repenning created. It's a fairly simple environment where icons and objects on the "stage" are programmed with behaviors, and can then interact. Prof. Repenning uses it to teach computer science to non-computer-science folks, like middle school students and high school teachers. AgentSheets was the original version, and was all 2D; AgentCubes is the attempt to bring it into 3D in order to make it more fun and compelling. It has a feature, called <a href="http://www.youtube.com/watch?v=lURpDIsXYM4" target="_blank">Inflatable Icons</a>, that takes 2D images and "inflates" them like balloons to easily create 3D models. Our team's job is going to be making that work on the internet, with the help of the emerging WebGL standard. With WebGL, it's going to be possible to make 3D games and displays and embed them within websites. It's been possible before with some obscure, proprietary tools, but WebGL promises to be an open standard, a huge step forward.<br />
<br />
My other classes are going pretty well so far. My stats class is the class I've been dreaming about ever since I came to CU; it's actually applied! We're using a professional computer program on real industry data sets. Every other math class I've taken that had Applied in the title turned out to be a huge disappointment. The professor, Jeffrey Luftig, has a couple of decades of experience as an industry statistician, and really seems to know what he's talking about. It helps that he's also a riot!Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com1tag:blogger.com,1999:blog-2314204840334691544.post-77744774450658251882010-08-21T14:32:00.003-06:002010-08-21T14:35:00.577-06:00Back to School... last time for a while?I've purchased my books, packed my pencils, and updated my Ubuntu software. It's time to head back to school again, for what should be my last fall semester, at least for a while. I should be graduating in May, and I don't plan to go back and earn my Master's degree immediately. For the next few months, I'll be working on computer science senior project, network systems, statistics, and just for fun (and to fulfill natural science requirements), astronomy.<br />
<br />
I'm really looking forward to senior project. It's a chance to finally work on a substantial piece of software, not just little toy examples and homework assignments that get tossed away after a week. I've had friends go through senior project before, and a couple of them suggested that doing a thesis instead would be less of a pain. While I value their warning, and believe that it probably would be less annoying to do a thesis on my own, I can't help but think that the project is going to be valuable experience in more than just coding and writing academic papers. For senior project, I'll have to work on a team, and we'll be asked to write corporate documentation and give presentations to our real-world business customers. Not only that, but our team will have to learn how to work together, brainstorm together without bickering, divvy up work efficiently, and integrate the pieces back together, which is no small feat. I think it's going to be an excellent learning experience, even if it turns out to be a pain in the ass.<br />
<br />
<table style="width: auto;"><tbody>
<tr><td><a href="http://picasaweb.google.com/lh/photo/F3nVjpJku8nN0FUAEQhh2w?feat=embedwebsite" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZTVR60rjIvbWE52U4VfDdKUf6_FcO8fmsnjEnYz6EHST5KHhs3AXhpUXuiRnOirohpeiBA0nTTPuqWa008kuk2Vc7rDw79fF_uwQYJugvrIGxNrCXxKpltNnWR_pUqXqdItbBaQn4KQjf/s320/ArduinoWeasleyClock.jpg" width="320" /></a></td></tr>
<tr><td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;">From <a href="http://picasaweb.google.com/xylo04/ArduinoProjects?feat=embedwebsite">Arduino Projects</a></td></tr>
</tbody></table>I do have something to show for my free time this summer; my Arduino Weasley Clock is actually pretty far along. The diagram above shows the whole layout of the finished product. I've written the webapp on Google App Engine (lower-right) which talks to Google Latitude (lower left), gets latitude/longitude information, and translates those into meaningful locations like Home and Work. I've also got the Arduino (top right) talking to that webapp through the XPort serial-to-Ethernet module, so the Arduino can ask where we are and get an answer back! The last step, and the most challenging for me, is to figure out how to hook up a couple of stepper motors into a disassembled clock. It's still pretty exciting how far I've brought this project, though.<br />
<br />
Last but not least, the back concrete porch on our house was just re-poured. The old one was probably original and about 30 or 40 years old, and sinking badly on one side. Worse, it was taking a piece of the roof with it. That won't be a problem for much longer, because the old porch was taken out at the beginning of the week, and a new one poured yesterday. It's very exciting, because we had the main level dropped down much closer to the level of the yard, and steps put in near the door, so it won't be so difficult to climb into the house anymore.Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-72194092095619988342010-07-26T23:34:00.000-06:002010-07-26T23:34:29.219-06:00Summer Class Ends, Job Begins?Last Thursday was my last day of class for the summer, and I'm glad to be finished with this Matrix Methods and Applications class. I was really looking forward to the applications, but it turned out to be all methods. Once again, I've learned a lot of math techniques and I'm left with no idea when they're useful. Brilliant. I don't have my grade back, but I'm pretty sure I passed at least.<br />
<br />
A couple of weeks ago, Ashley and I and some friends took a camping trip up to Kelly Dahl campground near Nederland. We did a lot of catching up, and a little hiking and geocaching. You can check out our <a href="http://picasaweb.google.com/xylo04/CampingJuly10">photos on Picasa</a>. We took Apollo, and he had a blast.<br />
<br />
It was great to get outdoors and remember that I can tear myself away from computers when I need to. I spend a lot of my time using my computers. Even when I go out around town, I have my G1, which has more processing power than our family's first computer, and constantly keeps me connected to the internet. When I think about it, I realize that my children will probably never know a life without computers or the internet; it will always be a part of their lives, and probably a daily part, at least as soon as they start learning to read. Will they know how to moderate themselves? Will they know how to get away? Only if I teach them, I guess.<br />
<br />
Anyway, I've had a couple of "interviews" for programming gigs, though neither of them was a formal interview. One of them is a short-term contract that involves revamping a website with educational programs; the other is a startup company in Boulder that has a great idea for a new website. I don't know if either gig will hire me at this point, but I'm still crossing my fingers!Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-61399662949368510542010-07-05T12:22:00.000-06:002010-07-05T12:22:53.188-06:00Intro to ArduinoIn other news, I've been bitten by a curiosity for electronics, robotics, and "physical computing." A while ago I discovered a microcontroller platform called <a href="http://www.arduino.cc/">Arduino</a>, and finally decided to try it out! I ordered a kit from the Maker Shed, their <a href="http://www.makershed.com/ProductDetails.asp?ProductCode=MSAPK2">Advanced Arduino Starter Kit</a>, and have been trying a few simple things. The kit contains a book, <i><a href="http://www.amazon.com/Making-Things-Talk-Practical-Connecting/dp/0596510519">Making Things Talk</a></i> by Tom Igoe, which contains a lot of projects that demonstrate how systems of electronics communicate. I've built a rudimentary version of the first project, called Monski Pong, using the parts from the kit. The microcontroller acts as a joystick that controls a game of Pong on the computer.<br />
<br />
<table style="width: auto;"><tbody>
<tr><td><a href="http://picasaweb.google.com/lh/photo/JshOLs7dzrGXeRg38eUebg?feat=embedwebsite"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSOTnxfdoKRaZz69_Z2XPdpTv5vnRNVAw6NepWDLO-keuaXTHhNVuoJADkbEnG0kPOM0s6x8PIAwgGmNzMvkprzR_9nKdKkKl7rya8k0t6F6yR1QdN9poojoeVE7arm23RGyhisi8vFU5a/s288/IMG_0790.JPG" /></a></td></tr>
<tr><td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;">From <a href="http://picasaweb.google.com/xylo04/ArduinoProjects?feat=embedwebsite">Arduino Projects</a></td></tr>
</tbody></table><br />
<div>The book actually calls for two flex resistors that get sewn into a plush monkey, but the kit didn't come with those parts. Actually, the kit didn't come with parts to complete any of the projects in the book. It's a little strange, but this kit wasn't really designed as a step-by-step introduction, but more like a sandbox "go have fun" experience, with the book thrown in as ideas for next steps. It seems a little bizarre, and the only problem I have with the kit.<br />
<br />
Going forward, have a couple of projects I'd like to try and build. First, I'm inspired by <a href="http://blog.johnmckerrell.com/2009/06/01/hacking-location-into-hardware/">John McKerrell</a> and <a href="http://www.edparsons.com/2009/11/the-weasley-clock-and-google-latitude-a-mashup-waiting-to-happen/">Ed Parsons</a> to build a Weasley Clock. If you're familiar with the Harry Potter series, you might remember that the Weasley family has a clock-type object that doesn't tell time; it tells where each of the family members are located, using places like Home, School, Work, Garden, Lost, and Mortal Peril. I don't have magic to drive my own version, but I do have Google Latitude, a service that runs on my phone. Latitude publishes my location to friends that I approve to see it, and can tell me when I'm unexpectedly nearby one of them. Using that information, I could hack together a system that checks with Latitude, then updates the position of hands on a reworked clock. Sounds pretty neat, huh? I've got some other ideas, but I think I'll stick with one at a time for now!</div>Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-2947617742304701312010-07-05T12:21:00.000-06:002010-07-05T12:21:05.881-06:00Dog Days of SummerOnce again, I've neglected posting for a while, but I've certainly been busy. The end of the spring semester was hectic as usual, but I feel pretty good about my performance. I was able to scrape decent grades in 4 classes, but unfortunately I couldn't keep up in my probability class and failed it. That seems to be the norm when I take math classes; so far, I've had to take every college math class twice in order to pass. It's not great, but I'll manage. In fact, that probability class is not required for my Computer Science major, only the Applied Math minor I'm going to try and scrape out.<br />
<br />
After the end of the spring semester, I took some time to visit with family and friends. I wasn't able to find an internship immediately, but that's not such a bad thing. I think I should try to enjoy what should be my last summer before I enter the workforce full time.<br />
<br />
After a couple weeks of relaxing, I started back at school for summer classes. I initially started with two classes; Matrix Methods and Applications, and Computer Graphics. Matrix methods is required for my major, and computer graphics was going to be just for fun. After a couple of days, I decided to drop computer graphics to focus on the math class. I realize that I normally have trouble with math classes, so it makes sense to spend more energy concentrating on that class.<br />
<br />
The other reason I dropped the computer graphics class is that I wasn't impressed by the teacher's style. He hates Java and loves global variables. Since I just finished Software Engineering Methods and Tools, I've just learned more modern techniques, and the code from his examples had several bad "smells." Basically, I think his coding style and language preferences haven't changed in 15 years. I anticipated being forced to decide between learning bad habits to please the teacher, or doing it the way I think is right and risking being marked off, and I really didn't want to make that choice.<br />
<br />
For the Army, I took a week-long trip a few weeks ago for a computer security class. The goal was to become CompTIA Security+ certified, and I passed with flying colors! That certification should help me doing my network administration job for the Army.Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-32877692046255570052010-04-27T15:27:00.001-06:002010-07-05T10:55:59.616-06:00Furry New Family MemberAlright, it's been a while since I've posted, but you can be sure I've been busy! School and my new workout regimen have been going pretty well. I've been falling short of perfect in both arenas, but I'm maintaining a good pace on both.<br />
<br />
Over spring break last month, I had my good buddy William Holliday visit from North Carolina. I met William when we were both in Iraq, and it was great to see him again and show him around my beloved home state. I still have to figure out when I'm going to visit him.<br />
<br />
Last weekend I had Army drill down at Ft. Carson. We stayed down at a little corner called Camp Red Devil, far from main post, which was a first for me. Our living arrangements were shacks covered in sheet metal, with cots to sleep in. Once you get past that little annoyance, though, it was a fun, productive weekend. I got to practice some of my radio skills for a change. We set up several radios, an OE-254 antenna, and tried to set up a retransmission site. I have some <a href="http://picasaweb.google.com/xylo04/651stRSGApril2010FTX#">pictures</a> up at Picasa, check them out!<br />
<br />
The day after I got back from drill was a special occasion, the second wedding anniversary for Ashley and I! We decided to go to dinner, but got sidetracked at the Humane Society of Boulder Valley. My gift for this anniversary was to finally agree to adopt a dog. We looked at three, and loved them all, but one captured our hearts. He came with the name Austin, but we've decided to name him Apollo. He's a terrier/pit bull mix, and somewhere around 3 months old. He's a little shy and unsure of himself, but we hope to raise and train him to be a little more outgoing and friendly with people and other dogs. Our cats are divided about our new family member; Marley is pretty neutral and mostly ignores the dog, but Al is pretty unhappy. I think Al will get over himself eventually.<br />
<br />
Looking forward, I have a couple days left of classes, a drill weekend (in the Army's typical horrible timing), and final exams. I have a lot to do in the next week, so wish me luck!Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0tag:blogger.com,1999:blog-2314204840334691544.post-35978070506799817852010-03-03T12:18:00.004-07:002010-03-03T12:29:06.898-07:00Gettin' in shapeIt's been over a month since my last update, so I suppose it's time. We're about half-way through the semester at school, and I'm staying afloat for the most part. I do need to spend more time concentrating on my probability class, but everything else seems to be going well.<div><br /></div><div>I've been pushing harder on my physical fitness in the last couple of weeks; I'm actually getting to the gym, and I'm spending some quality time while I'm there. I've hired a personal trainer, and she's been helping to get me in the weight room. On my own, I've been focusing on improving my cardiovascular fitness and endurance while running, as well as trying to burn off a few pounds. When I got home last June, I was just below my Army-mandated maximum weight, but I've gained about 20 lbs. since then.</div><div><br /></div><div>In other news, our friend Chris is having serious medical issues. He's been in and out of the hospital in the past few weeks. He's going through some pretty serious treatment at the moment, and we're all really worried about his health. If you can spare a prayer, please say one for him.</div>Xylohttp://www.blogger.com/profile/04069927708207167156noreply@blogger.com0