Thursday, December 31, 2009

Migrating to Spring Security 3.0

I recently upgraded my web application (a side project that I am working on at home) to use Spring 3.0 and Spring Security 3.0.

Moving to Spring 3.0 was pretty seamless - drop in the new jars (don't forget aopalliance.jar) and you are good to go. My project works the same now as it did before, and now I can start using some of the new features!

The migration to Spring Security 3.0 took an hour or two work through.

Here are some of the small issues that I ran into: (these only take minutes to fix)

  1. Make sure you change your XSD references to reference the new 3.0 schema.
  2. There was some package refactoring, so several of my classes had to have import references fixed.
  3. <security:anonymous/> is really no longer needed.
  4. The getAuthorities method on the UserDetails interface now returns a Collection (rather than an array).
  5. Make sure to include spring-security-config.jar


The only other issue that really bit me was an XML validation issue. I was using a customer authentication provider in my XML file that looked like this:


<security:authentication-provider ref="userDetailsService">


This was giving me the following validation error:

cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'security:authentication-provider'.


Luckily, someone else ran across the same issue, and I fixed it by wrapping my authentication-provider inside an authentication-manager:


<security:authentication-manager alias="authenticationManager">
<security:authentication-provider ref="userDetailsService"/>
</security:authentication-manager>

Saturday, December 26, 2009

Crappy Graphics, Lots of Fun.

So, I actually played with an XBox 360 the other day. I had some time to kill while Jenn was at church, and she gave me some errands to run. Before running the errands, I decided to drop by Best Buy and get some hands-on time with some digital cameras. The digital camera selection at Best Buy quickly bored me, so I decided to play with an XBox 360 (since there was no one using the demo kiosk).

I walked up to the kiosk, and fumbled my way through a driving game. The graphics were great (but on par with modern computers). The force feedback was good, and I was having fun playing the game... for about 5 minutes. After five minutes, I realized that I was using a little thumb nob to move a car around a race track.

I was completely amazed at how much I missed playing Mario Kart. Sure the graphics are about 10 years old. Sure the game does not have the uber-realistic physics system that allowed me to dent up the car.

But Mario Card has a controller that lets me play a game with a real steering wheel.

I walked away from a top-of-the-line gaming system, thinking "Meh".

Oh yeah.. Played Mario Kart again. It was a blast.

Sunday, November 8, 2009

iPhone Development using the web.

iPhone development has really been the buzz as of late. Apple is boasting 100,000 apps (unfortunately - 99,900 of them really suck -- or to use Internet speak: "they are the FAILS").

I've fallen pray for this scam... I probably have 50 apps on my iPhone (and the ones I care about most is under 10).

I feel like I am living in circa 1995 when everyone discovered the Internet and saw that they could download all sorts of crap on their computer! Come on... we all remember Elf Bowling!

I don't have anything against iPhone apps -- I think there are always going to be times when I really want to play Madden Football, rock it out on iTunes, compulsively check my Twitter account, or check my work calendar. But, it just seems more and more silly that I keep downloading apps.

What ever happened to the true mobile web? Luckily for the iPhone, it is really still alive! I can't believe I never checked out GMail on my iPhone until last month.. and you know what? It ROCKS. And it even allows me to properly archive my mail (unlike the stupid iPhone mail client). And there's no client to download!

It's amazing what you can do with Javascript and a little bit of CSS.

O'Reilly has a great online tutorial so that you can start iPhone enabling your site today.

Check it out today.

Tuesday, October 13, 2009

Podcasts

I am still listening to a lot of podcasts. My 35 minute drive to work gives me a solid 1 hour a day of solid listening time.

What am I listening to? Here's the list! (my top podcasts are at the top of the list):

1. This Week in Tech - Let's face it. Leo is a fantastic facilitator, and it's a nice brainless podcast to listen to. Without Leo, this should would probably be further down my list. But with Leo in charge, and a revolving cast of characters on the panel, this podcast gives me a nice light view of consumer and end-user technology.

2. Security Now - Steve Gibson is just fantastic. This show goes from light and fluffy news about the latest security patches on Windoze to hard-core bit twiddling and crypto. Honestly... anyone even remotely interested in security should just start listening at Episode 1.

3. Blue White Podcast - This gives me my fall fix of PSU football.

4. Penn State Football Podcast - I like this podcast as well because it's done by two former PSU football players (that quite often give an interesting different perspective on the game and team).

5. Stuff You Should Know - It's kinda like listening to Wikipedia for 20 minutes. Great all-purpose knowledge podcast.

6. FLOSS Weekly - Leo's a great facilitator, and Randal and the Ubuntu guy are really enthusiastic. It's great hearing from a lot of folks in the open source community talk about their projects.

7. 60 Second Science - These are quick fillers when I have a few free minutes int the car. At 1 minute a piece, it's hard to turn this down.

8. LostCasts - These guys are *really* annoying, but they do a great job on keeping up with all of the latest theories on the message boards.


Stuff on my iPod that Used to be higher on my list that I don't have the time to listen to:

1. This Week in Google - I liked the two episodes, but then I found it was just taking too long to listen to. I wish truly more about cloud computing and more technical content rather than "this is how you use this google product". I hope to give this one another try in a few weeks.

2. Diggnation - I used to *really* like this podcast. And then there were the live shows that were unfunny. And then there were more advertisements. And then there was listener feedback. It seems like every Diggnation show only covers only 5 top stories. I've gone 2 months without listening to Diggnation.. It will probably leave my rotation.

3. Java Posse - As a Java developer, I *really* wanted to like this podcast. And I think that I really used to like this podcast, but I'm not sure why I drifted away. Was it the fact that I do so much Java programming during the day and I really don't need another dose of Java during my commute? Was it the bland banter of the hosts? Was it the sickening way these guys seem to get along? Was it Joe Nuxoll? Was it the fact these guys are a little too obsessed with language design? Was it the crappy audio from their open space conferences? I suspect all of the above. Don't get me wrong -- these guys are doing a great service, and I think I'll try listening to them again over the holidays (when my other podcasts run dry).

4. Windows Weekly - Boy the Windows world is really in a world of hurt when the key content contributor for this podcasts feels like he's continually beaten-down about Windows and he's more excited talking about Apple products. I like Paul, but he's really losing my interest.

Friday, August 21, 2009

Here Cometh the Cloud.

I am a big fan of cloud computing. It is a giant trend that was very easy to spot from a long time ago, but I was never quite sure exactly "when it's here".


For me, I think that day is today.


I just got done trying out SpringSource's Cloud Foundry. It's basically a way to easily deploy web applications on a Spring/Java/Tomcat/Apache/MySQL platform on Amazon EC2. And you know what? It freaking works!


As a Java developer, this is what I wanted -- a really easy point-and-click web interface to deploy a distributed Java application on the cloud. I don't have to worry about all of the boring systems plumbing. (and this comes from a guy who kinda likes the boring systems plumbing!). As a developer, I just want a platform that can scale effortlessly and cheaply.


Sure... Cloud Foundry has all sorts of issues: limited DB support, limited configuration, no elastic block storage, etc. But for a first release, I think the Spring Source folks shows what the future could be like for developers.


Cloud Foundry isn't the only cloud solution out there, but it's the one I care about as a Java developer, since java/tomcat/spring apps are what I write. And let's face it: Google's App Engine for Java just sucked.


I really do see computing as a utility. And I really hope to see scalable computing systems with full software stacks to become a utility as well. I think it could usher in a whole new wave of developer innovation. When you lower the bar for the deployment of scalable applications (and you make it really cheap), you start to invite a whole new segment of developers with interesting ideas and interesting solutions.


The next 10 years are going to be cool.

Thursday, August 20, 2009

Bucket List 3: Work with Someone Great (and then impress them!)

I am a big believer that only true way to get better is to surround yourself by great people. I believe this works in sports, business, the economy, and just about everything.


I think it's really true for a developer. Want to write better code? Work with someone that really really really knows their craft. You'll learn a thing (or 10). Try to keep up with them -- try taking your craft to the next level!


You'll know you've succeeded when you come up with an idea that will impress the heck out of them.


Don't work with smart people? Get on a new team or a new project!


You're the smartest guy in the company? Find a new job!


Can't find a new job with smart people? Find an open source project with smart people. There are tons of them out there! Get on the forums for a software project and contribute! Impress the experts!


You'll never get any better if your the sharpest programmer in the shed!

Saturday, August 1, 2009

I Heart RAID

On Thursday afternoon, we had a critical situation in the Kratzer Household.


The computer was having problems and wouldn't start up. Jenn called me while I was out at lunch. I decided to leave work early because what she was describing didn't sound good.


I came home to find out that one of my disk drives was complete toast. Luckily, I made the decision to purchase a computer with a RAID controller on the motherboard. For those non-techies out there, a RAID controller allows me to make two disks look like one disk (among other configurations). This is called RAID 1 - or mirroring. Every time a piece of data is written to the disk drive, it is actually written to two disk drives. The beauty of this is that I always have a working image of my computer system (even if a drive dies).


This problem was easily fixed. I went to Best Buy (10 minute drive down the road), and found a similar disk drive (same size, same speed, same vendor even!). I installed the mounting kit and slid the new drive into the computer, removing the old drive.


When I booted the computer, the system told me that the RAID array was rebuilding itself and that it would start booting a while. After a slower boot into Windows, I was able to watch the drives "rebuild". Basically, the one good drive needed to copy all of its data to my new drive (to keep the system back in sync). This took about an hour and a half. After that, I was in tip-top shape.


When I purchased my computer three years ago, I made three conscious decisions:

+ I got the maximum amount of memory I could put in the computer at the time (4 GB). This has had a very good pay off for me in terms of performance.

+ I got a premium XPS system from Dell. Wow. I actually never opened up my computer until Thursday (I'm a software guy.. not a hardware guy). The case system was designed to open very easily (no screw drivers needed) and every component was easy to access. Thank you, Dell.

+ I invested some extra money for a RAID controller. I always knew this was a good decision. The events on Thursday proved it.


Someone once said "There are two types of disk drives. Those that have failed and those that are going to fail.". I can testify to this. I've had many computers over my time and I have had many disk failures. I knew that having RAID would "save my bacon".


And while I certainly have back-ups of everything, I am glad that this problem was fixed (with zero data loss) in a couple of hours. A re-installation and a copy of my data down from Amazon S3 would likely have taken days. And I'm sure that I would have forgotten to back up something.


Thank you, RAID.

Sunday, July 26, 2009

Bucket List 2: Implementing Encrypting and Compression

Every developer should have the pleasure of implementing an encryption and compression algorithm.


Why?


Why not!


There are many good reasons that every developer should have this experience:


1. Encryption and Compression are very fundamental technologies that have broad-reaching impact in much of what we do as software developers. Getting some hands-on experience with both of these subject areas only helps the developer to really understand and internalize some of this knowledge.


2. The theory behind both compression and crypto is downright fascinating.


3. It's a great opportunity to take a very solid specification, and take your hand at implementing it. This is also a great way to learn a new langauge!


4. It's a great opportunity to work with data at a byte-level and bit-level. Sometimes you just realize how one of your favorite programming platforms (Java) really sucks at byte manipulation and bit-twiddling.


5. Implementing compression algorithms is also a good opportunity to dust off your data structure skills sets. (note: implementing run-length encoding does not count) :-)


6. It's pretty darn satisfying to use your software at for one operation (like compression or encryption) and see it inter-operate with another software tool for the other operation (like decryption or uncompressing data).


So, go ahead and implement LZW or DES today!

Thursday, July 23, 2009

Bucket List 1: Write Code Down at the Bare Metal.

I think every developer should experience the joy, frustration, and shear thrill of programming in assembly (machine) language. While maybe not a critical day-to-day skill for many software developers, Assembly Language programming still educates the software developer in many ways.


I first started programming 6502 Assembly back in 1985. I had an 8-bit Atari computer, and I was doing a lot of programming BASIC. The problem with this platform is that the computer only had a clock speed of 1.44 Mhz, and BASIC was interpreted. This wasn't exactly the speediest platform. :-)


I soon learned that the Atari platform had some very simple hooks to allow your BASIC program to jump to a user machine language program loaded into "page 6". Each "page" on the Atari computer had 256-bytes of memory. Page 0 started at memory location 0, Page 1 started at memory location 256. Page 6 started at memory address 1536.


I remember hand-translating the assembly opcodes to machine language, and then using BASIC's DATA statements to load them into memory, starting at location 1536. If my assembly language program when awry, the computer would lock up and I'd reboot. I was in heaven a year later when I found an Assembler written in BASIC that would do the translating for me. :-)


I used 6502 Assembler to quickly redefine character sets, wipe out memory, animate graphics, mix colors, break the 4-Player limit in Player-Missile-Graphics (there were some gnarly things you could do when the screen was redrawing itself mid-screen).


6502 Assembly was a great assembly language to learn. There were only three registers (A, X, and Y). The instruction set was small. I learned a lot about the computer - everything from interfacing with external devices to programming the graphics and sound chips.



My later experience was in college. I picked up 80x86 assembly language to do some hi-performance 3D graphics. The 80x86 had more sophisticated memory management and more registers to work with, but the experience was just as invaluable. I learned the art of really fast integer math (both fixed point math and all of the neat tricks with rotates/adds that could be done to speed up calculations). I counted clock cycles. I precalculated values to make math even faster. I unrolled loops to prevent the penalty of having to branch/jump.


I haven't done any assembler since college (well over 15 years now!). But I still look back at those times very fondly. They gave me a great appreciation for how computers really work, how memory is managed, and how devices really work. You get great insights into code optimization. Finally, there was always a huge pay check at the end of the day - A HUGE performance pay off in speed.


I remember learning C and remembering how simple it was. Everyone in myu college class was having a hard time understanding pointers and memory allocation. But after programming in assembly, it was really easy to understand the abstractions that C was providing the programmer and what the programmer needed to do in order to clean up after himself.


With today's multi-core, multi-language, multi-system architectures, it's easy to see how Assembly language programming is becoming a lost art. With C/C++ compilers that produce super optimized machine code and JVM's that perform run-time analysis before compiling to machine code, I cannot see myself ever dipping back into assembly language again. But the time spent their was a fascinating part of my experience as a software developer. And I still wish every developer gets a chance to talk to the machine using its own native language.

A Software Developer's Bucket List.

About 6 months ago, my wife and I watched the movie The Bucket List. The movie is about a guy that makes a list of Things to Do before he Kicks the Bucket.


This got me to thinking about my career as a software developer, and I thought I should put together a Software Developer's Bucket List. Everything a software developer should do during their career.


I'll start off with things that I've done and end with things that I have yet to do.


This should be an interesting exercise for me.

Friday, June 12, 2009

Debugging Certs using OpenSSL

Sometimes, I could just kick myself. I know OpenSSL has a lot of great features, but I never spend any time learning the myriad of command line options.

Today, Matt showed me some really useful ones at work:


To print out a certificate in human-readable format:

openssl x509 -in certfile.crt -text


To print out hash fingerprint of a cert:

openssl x509 -in certfile.crt -fingerprint


To show the certs being served up by an SSL/TLS endpoint:

openssl s_client -connect hostname:443 -showcerts


I'm making a resolution that I'm going to spend a few hours going over the OpenSSL docs to learn more!

Thursday, April 30, 2009

Old School Computer

I just read an article on Slashdot about Old School Programming Techniques.


I'm ashamed to say that I nearly practiced every single one of these at one point in my programming history!


How many have you done yourself?

Tuesday, April 28, 2009

Thunderbird 3, Beta 2.

At home and at work, I use Thunderbird. I like the having a nice, lightweight, open-source mail client that doesn't try to do everything (like Outlook tries).


However, over the last year, I have become extremely frustrated with Thunderbird for two major reasons:

  1. There is a bug that causes the password to be forgotten for IMAP accounts. The end-result is that you have to needlessly type in your password.
  2. IMAP mailbox performance just sucks.

Since I use IMAP for both my home and work e-mail, this was getting a bit unbearable (as well as my wife complaining about these two issues also... and rightfully so - this was just getting miserable).


I normally do not go out of my way to try beta software (since I run my computer at home like a production system... it's all about productivity and not having applications crash all of the time). However, I decided to download and try out Thunderbird 3, Beta 2.


And it is fantastic.


The password bug is fixed; I originally downloaded the beta because I saw in Mozilla's bug tracker that the issue had been resolved in the beta. Even, better the IMAP mailbox performance is much better. Thunderbird now locally caches mail in the background. Even better you can enable/disable this feature at a folder level. Since disk space is cheap, I take the default options which cache everything.


I have not had any stability issues or crashes since downloading it last week. If you are a Thunderbird user who uses IMAP a lot, download the beta now!

Monday, April 13, 2009

How quickly they grow!

I always forget how quickly babies grow!

Here is a picture of Colin from New Years Day (he was about 2 weeks old when this picture was taken):



Here is a picture in the same swing, three months later:

Monday, April 6, 2009

Technical Links moving to Twitter.

I've had a twitter account for a while. I usually squat on my name when a new service is available.

To that end, I couldn't really come to terms how I wanted to use FaceBook, SmugMug, this blog, or twitter.

For those of you out there who like reading technical links... I will now be publishing them on twitter. (the 140 character limit seems perfect for this!).

Follow on me twitter @ http://twitter.com/billkratzer

There are RSS feeds available so that you can follow me in Google Reader (or any other RSS tool).

I will continue to use this blog to post longer pieces of thought.

A Very Nice 37th Birthday.

Today I turned 37.


Overall... I had a very nice day. I only spent two hours in the office, and then two hours at a client site (I am helping out an old-coworker and friend of mine). I then left early so that I could spend the day with my family. I got some cool Lego sets for my Birthday. Jenn's parents gave me some money (which will also go towards my Lego projects!).


The best part of the day was being able to just take a break from the insanity of life. My work life is very busy right now, and I am working on 5-6 projects at any given time. My side-project outside of work demands a lot of time. Factor in all of the other stuff that just needs to get done around the house, and sometimes it feels like you never have time to breathe!


Today's best gift was to ditch the co-workers, ignore the customers, delay the side-projects and just spend time with the family and enjoying the time I have with them.


Tomorrow.... the full steam ahead again!

Friday, March 27, 2009

Great Article on CSS-based form design

I just ran across a great article on how to do really good form design in CSS.

Thursday, March 26, 2009

Published!

My wife was interviewed for a local magazine on parenting. A picture of my daughter and son was also used as the lead photo. Pretty neat!

Here's the article: (click photo to enlarge)

Wednesday, March 25, 2009

Contract First Web Services

I must be getting old.

For a while, I resisted the Spring-WS approach of contract first web services. I quickly dismissed it as too much work. I was just more interested in annotating my pojos to get them quickly deployed so that I can get some web services available.

Well, over the last couple of weeks, I've had the opportunity to catch my breath and have an open mind about Spring's case for Contract First Web Services.

Read it here yourself.

Their case is certainly a good one. At the end of the day, the contract really should start with the XML.

Every approach has its pro's and con's, but I think I will be giving much more serious consideration to Contract First Web Services!

Need a password to dump your postgresql database?

I was putting together a quick cron job today to dump a postgresql database, using pg_dump.

If you need to connect to the database with a password (because local trust is turned off), then you need a way to pass the password into pg_dump. pg_dump does not allow a command line password specification (for good reason... you don't necessary want the password showing up in a process listing by someone else on the box).

But it appears that pg_dump will look for an environment variable named PGPASSWORD.

In your script:

export PGPASSWORD=somereallysupersecurepassword
pgdump databasename

voila!

Thursday, March 19, 2009

The Year 2009 so far.

So far, I've had a pretty productive 2009 (in terms of some of my personal goals):

  • I am really focused at work, possibly doing some of my best all around technical work.
  • I am working on some great projects, and generally feel invigorated by my job and my team.
  • My side project is going really well. We go into testing in a few weeks!
  • My lego house is slowly coming along.
  • I started studying economics in my spare time. It is turning out to be a really neat topic to delve into. Next up: some basic accounting!
  • Still playing oGame. :-)

One of My First Usenet posts.

I was curious what was one of my earliest records of me on the Internet.

According to Google, it's this post by me to a Usenet news group back in summer of 1992:

http://groups.google.com/group/comp.os.msdos.programmer/browse_thread/thread/89c270d2e86ef013/c3be546b21d8fa53?hl=en&q=wmk101#c3be546b21d8fa53

I had been on the internet at Penn State since Fall of 1990, but I seldom used any public Usenet news group until that summer.

Mark: This was the summer was started programming 3D game engines in MS-DOS/Pascal/Assembler! Fun times!

Wednesday, February 11, 2009

Good Progress

I set out some goals this year, and I am pretty excited with some of my progress already.

  • My side project outside of work is going very well. I cannot wait to talk more about it.
  • My work projects are going very well. I am re-invigorated, and I am doing really solid work right now.
  • I have really cranked up my focus level at work. Outside of the occasional coffee break, I am seldom distracted by other attractions in the circus that we call work!
  • I think I found a subject area that I am going to explore outside of computers. More on that soon!

Sunday, January 18, 2009

Lego Town House Model - Take 1

My big order of custom bricks arrived on Saturday. Today, I took the first stab at a recreation of our town home. This was more of a conceptual build. I knew that I was well short of pieces. I just wanted to build enough of a skeleton to get a rough idea on size, scale, and a couple of building techniques.


Overall... I couldn't be more pleased! The pictures below show about an hour or so of work. And everything is coming together quite nicely. The entire model will be completely rebuilt (with lots more detail), but I think I know what I really want to do now with this house!


I've promised myself that I won't by any more bricks until my birthday, though. :-)







Saturday, January 17, 2009

Review: Non-Designer's Design Book


When you stumble upon a book several times in your online world of blogs, podcasts, and other web sites, you just have to give it a read!

That's what happened to me with The Non-Designer's Design Book. This book is targeted to anyone who has done (or needs to do) any type of design work. Whether it's for a web site, a news bulletin, the community news letter, business cards, or even a report -- this book is for you.

The author covers some very basic principles of design, including: contrast, repetition, alignment, and proximity. "Dull" examples are shown, followed by ones that use these simple concepts to make the design very interesting.

If you are like me, you will quickly notice the dull designs as something you normally do! The illustrations are fantastic, making the read very visual and enjoyable at the same time. Even better: this is a book that you can polish off in 2-4 hours.


The book also gets into some very basic color theory and typography theory as well. Although, I wish a little more time was spent on these sections. Overall, I am quite impressed and will gladly recommend this book to anyone interested in improving their design skills.


Pro's: Quick read. Easy concepts. Fantastic illustrations. Very visual books. All examples list the fonts used (very cool).


Cons: A little too short. I wish the book would have gone a little more into color and typography theory and usage.


Overall: This is a great book. Everyone who has a need to design web sites, web pages, news letters, PowerPoint presentations, and even reports will get something out of this book.

Thursday, January 8, 2009

Lego Art.

Neya and I spent some time tonight making some Lego art:

Tuesday, January 6, 2009

Green Grocer Finished.

Neya and I finished building the Green Grocer on Saturday.


Here are some pictures:


More pictures available here.

Saturday, January 3, 2009

More Lego Building


For Christmas, I got a Lego set called Green Grocer. It's a three story building that features a grocer on the bottom store, and two apartments above it. The set weights in at over 2500 pieces at will probably take me around 10 hours to fully assemble. The set has a huge amount of detail: a mouse that hides under the stairs and eats cheese, a dairy cabinet stocked with juice and milk, vegetable bins, checkout counters, mailboxes, etc.


Neya and I started to assemble the bottom floor on New Years day. Here are some pictures below. We had a lot of fun putting it together. Sometimes, getting my 5-year-old daughter involved slows the process and tests my patience, but it's totally worth it!

All of the pieces spread out on the table (for the first floor). It really pays to have a big table! (thankfully, Lego organizes the bags for the pieces by floor).

Friday, January 2, 2009

Goals for 2009.

I'm not one to spend a lot of time reflecting, so here are my personal and professional goals for 2009.

Note: My prior comments about uninspired work may have confused some people, so let me clarify: I love working at Versatile. I love my job. I love the people I work with. I've done good, solid work. My customers have been happy, my employer has been happy (I think!), and overall I have been happy. However, I tend to evaluate my work output probably much more critically than most people I know, and I really want to do something much better!


Onto the list!


Loose 40 Pounds - Started off good last year. We'll see if I can do it this year! Rebuck - I'll be calling you for trips to L.A. Fitness!


Get On the Raquetball Court (and beat Rebuck) - This will take a lot of work (just getting on the court... not beating Rebuck ;-)). I love raquet sports, and I miss playing them with Mark. I hope to get my ankle in good enough shape to play again!


Family - I really want to be a better husband and father. I need to be more patient with my kids (which surprises me -- I am usually a very patient person). Overall, I need to spend more time with my family... which leads me to my next goal.


Work - Just say NO to work. I work a lot. There's nothing wrong with that. In fact, I enjoy it. I love what I do, and I love the challenges of the things that I get asked to deliver. But, I plan to be saying NO a little bit more to my co-workers, managers, and bosses a little more this year. My family deserves it!


Work - Do something KICK ASS. I cannot predict what I will be working on next year (our industry and my company moves way too fast), but I really want to do something really cool. I have a good shot early this year. We have a project code named Sheep Metal at work. It's a really good chance to right some wrongs, and do something really good. We'll see!


Books - I need to read more this year. And reading more does not mean "Spring in Practice, version 2.5" and "Mastering Regular Expressions". I need to finish Cryptonomicon! My goal - read 10 non-technical and non-work-related books this year! (note: Audiobooks will count for me!)


Explore More Music - I need to stop downloading safe music from iTunes. I need open my ears and listen for new stuff.


Focus - My level of focus just has not been consistent over the last 2 years. I've had those 20% moments of being in the zone. I've been much better since coming back to work after the ankle injury, but I really need to focus on this area.


Build the Business - Wally and I have a great business concept, and I plan to test it in 2009. Very exciting!!!!


Finish Playing Legend of Zelda (Twlight Princess) - I've had this game since I purchased my Wii. There is nothing wrong with it... in fact, it's fantastic! For some reason, I've never been able to get myself to finish the game.


Get Matt Hurne to purchase Little Big Planet. - Need I say more?


Get More Out of My NetFlix Membership - I love NetFlix. However, I run into stretches where I do not rent movies for months. I usually make this up by watching tons of movies in short spurts, but I really need to make more out of my membership!


Quit Playing oGame - I will do this once I get my Death Stars. I promise! (stop laughing, Andy!)


Build a Lego House - My daughter and I have been building Lego sets (using the instructions that they give you in the box). I want to do some serious building on my own. My first creation for this year will be a re-make of our home. This should be good fun!


Work-Related Goals:

Learn JavaFX - It's probably too little, too late for Sun, but I still think it's the right thing for Sun to do. I'll be learning this new technology stack soon.


Work on Design - I've always been a student of graphical design. Over the last couple of years, I've been lucky enough to put more of it into practice. I've already ordered some bibles of graphics design, so I am excited to learn more!


Learn a Functional Language - Scala, Erlang, etc. I should do this. I think this is really more hype than practice at the moment, but the mental gymnastics will be good for me.


Use More Regular Expressions - I know RegEx. I just don't use them enough. That changes this year!


Be Smarter About Tools - There are lots of tools out there that help to make me more productive. I'm going to start paying more for good software development tools.


Learn Something Completely New - I want to learn something completely new in the I.T. field. We'll see where the year takes us.......


Happy New Years!

The Year In Review...

Before coming to grasp with 2009, I guess it's best to take a brief look at my life in 2008.

The year of 2009:

Collin - Jenn and I both wanted another child, and I really thought it would not be until 2009 before our next child would be born. We were lucky! Collin entered our lives in December and it's already getting hard to remember life without him.

Neya - Neya has changed quite a bit this year! She now has many friends, goes to school, and will even stay over at people's houses. She had a great Christmas with her grand parents. She is really coming out of her shell.

Personal Triumph - Breaking my ankle was a real eye-opener. It took a good 4-5 months to get over this. I actually walked downstairs (fairly) normally for the first time just last night!

Personal Health - I started the year strong by losing 20 pounds. Stress at work and my ankle injury threw a complete monkey wrench into my exercise plan.

Work - I had a really uninspiring year at work this year. I really will not look back at this year and say "wow.. you did really good work". I did not produce anything at all that I am particularly proud of. I improved some of my web-monkey skills, but that's about it.

Home Improvement - Big year for this! We finished our basement, painted the house, and expanded our deck! Jenn did a lot of the real work as I was immobilized much of the time due to my ankle injury.

Books - Sadly... I did not read many books this year. I read Prey by Michael Chrichton - good, quick, breezy read.

Music - Sadly, my sheltered world of iTunes has kept me from exploring new music. Although, I started listening to Girl Talk at the end of the year, and I've been loving it.

Games - This was a great year for gaming. But with my busy schedule, it's really hard to keep up with the scene. Although my ankle injury afforded me the time to play and master: Mario Kart, Super Paper Mario, Super Mario Galaxy, Da Blob. I also played of Goo, Call of Duty and way too much oGame this year.

Business Ideas - My friend Wally and I have been working on a side project that we think could be very profitable. I'm really excited about it, and should probably be working on it right now rather than working on this blog post.... more details next year as the ideas turn into real products!


Next blog post - Goals for 2009!