tag:blogger.com,1999:blog-77171724843406095852024-03-05T01:51:53.889-05:00Bill Kratzer's BlogOne Geek, a La-Z-Boy recliner, and a laptop.Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.comBlogger91125tag:blogger.com,1999:blog-7717172484340609585.post-90911257756210519832010-12-08T21:18:00.003-05:002010-12-08T21:40:27.328-05:00Tivo PremiereJust a quick post to share with everyone that I finally got a Tivo Premiere. <br /><br />Back in April, Comcast forced customers to go digital so that people like me with HD Tuners couldn't get free high-def local channels. Rather than opting for the crappy, free, low-definition digital decryptor, I upgraded my Comcast service so that I could get HD, including the ESPN family of channels and Big Ten network in HD (which is fantastic).<br /><br />Unfortunately, this put my old Tivo in a pretty useless state (unless I wanted to try to rig the Tivo to send IR commands to my cable box). Since, that's pretty lame, I went ahead and tried a Comcast DVR (which turned out to be lamer).<br /><br />I got the top of the line Motorola, Dual-Tuner HD DVR, which appears to be technology from circa 2002. <br /><br />Let's review how this thing sucks:<br /><br /><ul><li>No ability to undelete programs<br /></li><li>The entire interface is just WAY too laggy.</li><li>Quite often sound goes out.</li><li>About once a month I need to reboot it.</li><li>Recently, deleting a program also meant that I needed to go back to the main DVR menu (this should happen automatically).</li><li>Shows never started at +0 seconds (they always started at +2 seconds)</li><li>No netflix, No you tube, No Hulu (of course, why would we want that). Suprisingly enough, no Fan-Crap-Cast either.</li><li>Online Guide is clumsy to use.</li><li>Searching for programs was ridiculously slow</li><li>Scheduling of programs was quirky at time, forcing me to manually review recording each night to make sure it was going to do what I wanted it to</li></ul>I'm sure I could have found more, but that's just off the top of my head. Basically, I bought into the Comcast DVR because it was quick and easy to get and I thought it was worth the try. After a few weeks, I grew tired of the DVR. At just about the same time, the new Tivo Premiere was unveiled, and I was pretty psyched to get one. After all, I just loved my old Tivo.<br /><br />Unfortunately, real life got in the way and recording live TV no longer became a priority. Fast forward seven months, and with Jenn's encouragement, I got the new Tivo Premiere.<br /><br />Major benefits and good points:<br /><br /><ul><li>I got the XL version which lets me record a 1000 hours of standard definition TV (150 hours of HD). This is fantastic when you have kids.</li><li>Accepts dual-tuner M-Series Cable Cards that are a SNAP to install (unfortunately, Comcast "forgot" to activate my HD channels, so a I had call them back a few time to fix this).<br /></li><li>Has all of the great season pass management, conflict resolution, Tivo suggestions, remote scheduling that you'd expect from Tivo.</li><li>The new Tivo remote has a light sensor on the back so that it knows when to go into "backlit" mode. Very nice.</li><li>Support for Netflix, BlockBuster, and Amazon on demand instantly make me forget about Comcast OnDemand</li><li>Support for YouTube and PodCasts is fantastic. Collin loves watching YouTube videos.</li><li>Set up is a piece of cake, and provides a set of glasses for color-tuning your TV</li><li>Comes with all of the cables you would want</li><li>Optional wireless antenna accessory piece of cake to install</li></ul>Minor complaints so far:<br /><br /><ul><li>User interface is much prettier but is a little bit more laggy (it's like they are trying to do more with not quite enough CPU power). This is only the main menu interface, the TV watching interface is still excellent.</li><li>First time set up took about 2 hours just because lots of content and patches needed to be installed.</li><li>You Tube support is a little buggy (it doesn't pick up all of my favorites and playlists) properly.</li><li>Netflix app does not let me browse the store - I can only play out of the instant queue</li><li>Netflix app seems to not perform as well as my Wii. (not sure why)</li><li>I wish that there was support for more web video (I heard Hulu is coming soon). <br /></li></ul><br />Overall, I am very happy with the new Tivo. I wish it was just a little bit slicker, but overall this is a solid product and I am sure that it will be well worth the money. I wish I got it before college football started back in last August!Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com0tag:blogger.com,1999:blog-7717172484340609585.post-35377859845037767182009-12-31T05:36:00.004-05:002009-12-31T05:55:01.740-05:00Migrating to Spring Security 3.0I 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.<br /><br />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!<br /><br />The migration to Spring Security 3.0 took an hour or two work through.<br /><br />Here are some of the small issues that I ran into: (these only take minutes to fix)<br /><br /><ol><li>Make sure you change your XSD references to reference the new 3.0 schema.</li><li>There was some package refactoring, so several of my classes had to have import references fixed.</li><li><security:anonymous/> is really no longer needed.</li><li>The getAuthorities method on the UserDetails interface now returns a Collection (rather than an array).</li><li><pre>Make sure to include spring-security-config.jar</pre></li></ol><br /><br />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:<br /><br /><pre><br /><span style="color: rgb(0, 102, 0); font-weight: bold;"> <security:authentication-provider ref="userDetailsService"></span><br /></pre><br /><br />This was giving me the following validation error:<br /><br /><span style="font-style: italic; color: rgb(255, 0, 0);">cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'security:authentication-provider'.</span><br /><br /><br />Luckily, <a href="http://deprecatedconsciousness.wordpress.com/">someone else ran across the same issue</a>, and I fixed it by wrapping my authentication-provider inside an authentication-manager:<br /><br /><pre><br /><span style="color: rgb(0, 102, 0); font-weight: bold;"><security:authentication-manager alias="authenticationManager"></span><br /><span style="color: rgb(0, 102, 0); font-weight: bold;"> <security:authentication-provider ref="userDetailsService"/></span><br /><span style="color: rgb(0, 102, 0); font-weight: bold;"></security:authentication-manager></span><br /></pre>Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com1tag:blogger.com,1999:blog-7717172484340609585.post-85465412793849111362009-12-26T13:14:00.002-05:002009-12-26T13:19:45.451-05:00Crappy 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).<br /><br />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. <br /><br />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. <br /><br />But Mario Card has a controller that lets me play a game with a real steering wheel.<br /><br />I walked away from a top-of-the-line gaming system, thinking "Meh". <br /><br />Oh yeah.. Played Mario Kart again. It was a blast.Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com0tag:blogger.com,1999:blog-7717172484340609585.post-32084596665819739102009-11-08T10:23:00.003-05:002009-11-08T10:34:05.702-05:00iPhone 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").<br /><br />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).<br /><br />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!<br /><br />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.<br /><br />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!<br /><br />It's amazing what you can do with Javascript and a little bit of CSS.<br /><br />O'Reilly has a great online tutorial so that you can <a href="http://building-iphone-apps.labs.oreilly.com/">start iPhone enabling your site</a> today.<br /><br />Check it out today.Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com0tag:blogger.com,1999:blog-7717172484340609585.post-34919150387753261912009-10-13T20:17:00.002-04:002009-10-13T20:36:31.598-04:00PodcastsI 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.<br /><br />What am I listening to? Here's the list! (my top podcasts are at the top of the list):<br /><br />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.<br /><br />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.<br /><br />3. Blue White Podcast - This gives me my fall fix of PSU football.<br /><br />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).<br /><br />5. Stuff You Should Know - It's kinda like listening to Wikipedia for 20 minutes. Great all-purpose knowledge podcast.<br /><br />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. <br /><br />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.<br /><br />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.<br /><br /><br />Stuff on my iPod that Used to be higher on my list that I don't have the time to listen to:<br /><br />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.<br /><br />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.<br /><br />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).<br /><br />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.Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com1tag:blogger.com,1999:blog-7717172484340609585.post-63596768768052765762009-08-21T06:10:00.002-04:002009-08-21T06:24:53.197-04:00Here 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".<br /><br /><br />For me, I think that day is today.<br /><br /><br />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!<br /><br /><br />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.<br /><br /><br />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. <br /><br /><br />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.<br /><br /><br />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. <br /><br /><br />The next 10 years are going to be cool.Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com0tag:blogger.com,1999:blog-7717172484340609585.post-73520485946106937782009-08-20T20:16:00.004-04:002009-08-20T20:24:39.955-04:00Bucket 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.<br /><br /><br />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!<br /><br /><br />You'll know you've succeeded when you come up with an idea that will impress the heck out of them. <br /><br /><br />Don't work with smart people? Get on a new team or a new project! <br /><br /><br />You're the smartest guy in the company? Find a new job!<br /><br /><br />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!<br /><br /><br />You'll never get any better if your the sharpest programmer in the shed!Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com0tag:blogger.com,1999:blog-7717172484340609585.post-45151542242725159722009-08-01T08:48:00.002-04:002009-08-01T08:59:28.027-04:00I Heart RAIDOn Thursday afternoon, we had a critical situation in the Kratzer Household.<br /><br /><br />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.<br /><br /><br />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).<br /><br /><br />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. <br /><br /><br />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.<br /><br /><br />When I purchased my computer three years ago, I made three conscious decisions:<br /><br />+ 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.<br /><br />+ 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.<br /><br />+ I invested some extra money for a RAID controller. I always knew this was a good decision. The events on Thursday proved it.<br /><br /><br />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".<br /><br /><br />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.<br /><br /><br />Thank you, RAID.Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com0tag:blogger.com,1999:blog-7717172484340609585.post-33290872756687712752009-07-26T22:38:00.004-04:002009-07-26T22:47:25.423-04:00Bucket List 2: Implementing Encrypting and CompressionEvery developer should have the pleasure of implementing an encryption and compression algorithm.<br /><br /><br />Why?<br /><br /><br />Why not!<br /><br /><br />There are many good reasons that every developer should have this experience:<br /><br /><br />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.<br /><br /><br />2. The theory behind both compression and crypto is downright fascinating.<br /><br /><br />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!<br /><br /><br />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.<br /><br /><br />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) :-)<br /><br /><br />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).<br /><br /><br />So, go ahead and implement LZW or DES today!Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com0tag:blogger.com,1999:blog-7717172484340609585.post-77005141585826794172009-07-23T10:23:00.004-04:002009-07-23T10:48:14.441-04:00Bucket 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.<br /><br /><br />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. :-)<br /><br /><br />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. <br /><br /><br />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. :-)<br /><br /><br />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).<br /><br /><br />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.<br /><br /><br /><br />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. <br /><br /><br />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. <br /><br /><br />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.<br /><br /><br />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.Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com1tag:blogger.com,1999:blog-7717172484340609585.post-82233031158942253622009-07-23T10:20:00.002-04:002009-07-23T10:23:28.893-04:00A Software Developer's Bucket List.About 6 months ago, my wife and I watched the movie <a href="http://en.wikipedia.org/wiki/The_Bucket_List">The Bucket List</a>. The movie is about a guy that makes a list of <span style="font-style: italic;">Things to Do</span> before he <span style="font-style: italic;">Kicks the Bucket</span>.<br /><br /><br />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. <br /><br /><br />I'll start off with things that I've done and end with things that I have yet to do. <br /><br /><br />This should be an interesting exercise for me.Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com0tag:blogger.com,1999:blog-7717172484340609585.post-18763735559704058982009-06-12T13:21:00.003-04:002009-06-12T13:25:45.270-04:00Debugging Certs using OpenSSLSometimes, 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.<br /><br />Today, Matt showed me some really useful ones at work:<br /><br /><br />To print out a certificate in human-readable format:<br /><br /><span style="font-weight: bold;font-family:courier new;" >openssl x509 -in <span style="font-style: italic;">certfile.crt</span> -text</span><br /><br /><br />To print out hash fingerprint of a cert:<br /><br /><span style="font-weight: bold;font-family:courier new;" >openssl x509 -in <span style="font-style: italic;">certfile.crt</span> -fingerprint</span><br /><br /><br />To show the certs being served up by an SSL/TLS endpoint:<br /><br /><span style="font-weight: bold;font-family:courier new;" >openssl s_client -connect </span><span style="font-style: italic; font-weight: bold;font-family:courier new;" >hostname</span><span style="font-weight: bold;font-family:courier new;" >:443 -showcerts</span><br /><br /><br />I'm making a resolution that I'm going to spend a few hours going over the OpenSSL docs to learn more!Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com0tag:blogger.com,1999:blog-7717172484340609585.post-86888703100715713122009-04-30T06:42:00.001-04:002009-04-30T06:43:50.740-04:00Old School ComputerI just read an article on Slashdot about <a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&taxonomyName=Development&articleId=9132061&taxonomyId=11&pageNumber=1">Old School Programming Techniques</a>.<br /><br /><br />I'm ashamed to say that I nearly practiced every single one of these at one point in my programming history!<br /><br /><br />How many have you done yourself?Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com1tag:blogger.com,1999:blog-7717172484340609585.post-41132045483857365752009-04-28T07:10:00.000-04:002009-04-28T07:18:20.042-04:00Thunderbird 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).<br /><br /><br />However, over the last year, I have become extremely frustrated with Thunderbird for two major reasons:<br /><br /><ol><li>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.</li><li>IMAP mailbox performance just sucks.</li></ol><br />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).<br /><br /><br />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. <br /><br /><br />And it is fantastic.<br /><br /><br />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.<br /><br /><br />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!Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com0tag:blogger.com,1999:blog-7717172484340609585.post-18593079527649972132009-04-13T13:12:00.000-04:002009-04-13T13:15:17.408-04:00How quickly they grow!I always forget how quickly babies grow! <br /><br />Here is a picture of Colin from New Years Day (he was about 2 weeks old when this picture was taken):<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKV_zEgV7lOgufBJ2XBU418-VnGf22-Gq-vLBdxtKybh9Lk4nDlrsj_w1GJyxCHcFlbV8KmVhDHe91zsRr4SuJ7hYLxqSdJwv0NU9UmWmr7PNf1Gi2Kzb998cqRv8Ux7_3cnHvKu7Dc8E/s1600-h/2009-01-01.jpg"><img style="cursor: pointer; width: 394px; height: 293px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKV_zEgV7lOgufBJ2XBU418-VnGf22-Gq-vLBdxtKybh9Lk4nDlrsj_w1GJyxCHcFlbV8KmVhDHe91zsRr4SuJ7hYLxqSdJwv0NU9UmWmr7PNf1Gi2Kzb998cqRv8Ux7_3cnHvKu7Dc8E/s400/2009-01-01.jpg" alt="" id="BLOGGER_PHOTO_ID_5324225499650389378" border="0" /></a><br /><br />Here is a picture in the same swing, three months later:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_k6v34amecbHBFp-_bLD-0yFH3AHkTWB7DQ6hUp7ABCll5GlNM8IMtGhT994U_ZlMg8iOf7J7g1yKWnSxPZ9BZtHA1x2TmbdYcDMOJtRwfb7tyNM00TeeLK941tHzPiONrbufX20n1BE/s1600-h/2009-04-12+Collin.jpg"><img style="cursor: pointer; width: 400px; height: 300px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_k6v34amecbHBFp-_bLD-0yFH3AHkTWB7DQ6hUp7ABCll5GlNM8IMtGhT994U_ZlMg8iOf7J7g1yKWnSxPZ9BZtHA1x2TmbdYcDMOJtRwfb7tyNM00TeeLK941tHzPiONrbufX20n1BE/s400/2009-04-12+Collin.jpg" alt="" id="BLOGGER_PHOTO_ID_5324225702668191714" border="0" /></a>Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com0tag:blogger.com,1999:blog-7717172484340609585.post-17098627688313876012009-04-06T19:31:00.001-04:002009-04-06T19:34:28.959-04:00Technical Links moving to Twitter.I've had a twitter account for a while. I usually <span style="font-style: italic;">squat</span> on my name when a new service is available.<br /><br />To that end, I couldn't really come to terms how I wanted to use FaceBook, SmugMug, this blog, or twitter.<br /><br />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!).<br /><br />Follow on me twitter @ <a href="http://twitter.com/billkratzer">http://twitter.com/billkratzer</a><br /><br />There are RSS feeds available so that you can follow me in Google Reader (or any other RSS tool).<br /><br />I will continue to use this blog to post longer pieces of thought.Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com0tag:blogger.com,1999:blog-7717172484340609585.post-8489699206390282612009-04-06T19:22:00.000-04:002009-04-06T19:27:45.184-04:00A Very Nice 37th Birthday.Today I turned 37.<br /><br /><br />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!).<br /><br /><br />The best part of the day was being able to just take a break from the insanity of life. My work life is <span style="font-weight: bold;">very</span> 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!<br /><br /><br />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.<br /><br /><br />Tomorrow.... the full steam ahead again!Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com0tag:blogger.com,1999:blog-7717172484340609585.post-2028149601122979492009-03-27T08:33:00.000-04:002009-03-27T08:34:12.822-04:00Great Article on CSS-based form designI just ran across a <a href="http://www.sitepoint.com/article/fancy-form-design-css/">great article</a> on how to do really good form design in CSS.Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com0tag:blogger.com,1999:blog-7717172484340609585.post-17566231988568148522009-03-26T20:23:00.000-04:002009-03-26T21:34:34.496-04:00Published!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!<br /><br />Here's the article: (click photo to enlarge)<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpidv5495Q8sKukwpsbokwSs2csELmU6y6PrTnAaFGAg2cqYPkvu7TvD76SuaMV-InRah88bVoaSksZzoXIk-kH-zmH1eNOYkdDzBonF4szWk4gbpdd9MurQia8KFWnBi262Ef1ohdkHA/s1600-h/Neya_Collin001_resized.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 340px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpidv5495Q8sKukwpsbokwSs2csELmU6y6PrTnAaFGAg2cqYPkvu7TvD76SuaMV-InRah88bVoaSksZzoXIk-kH-zmH1eNOYkdDzBonF4szWk4gbpdd9MurQia8KFWnBi262Ef1ohdkHA/s400/Neya_Collin001_resized.jpg" alt="" id="BLOGGER_PHOTO_ID_5317657122695568594" border="0" /></a>Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com0tag:blogger.com,1999:blog-7717172484340609585.post-68239695473032738082009-03-25T15:28:00.000-04:002009-03-25T15:33:55.345-04:00Contract First Web ServicesI must be getting old.<br /><br />For a while, I resisted the Spring-WS approach of contract first web services. I quickly dismissed it as <span style="font-style: italic;">too much work</span>. I was just more interested in <span style="font-style: italic;">annotating my pojo<span style="font-style: italic;">s</span></span> to get them quickly deployed so that I can get some web services available.<br /><br />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.<br /><br /><a href="http://static.springframework.org/spring-ws/sites/1.5/reference/html/why-contract-first.html">Read it here yourself</a>.<br /><br />Their case is certainly a good one. At the end of the day, the contract really should start with the XML. <br /><br />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!Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com1tag:blogger.com,1999:blog-7717172484340609585.post-70788130042715106042009-03-25T09:47:00.000-04:002009-03-25T09:52:13.937-04:00Need a password to dump your postgresql database?I was putting together a quick cron job today to dump a postgresql database, using pg_dump.<br /><br />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).<br /><br />But it appears that <span style="font-style: italic;">pg_dump</span> will look for an environment variable named <span style="font-style: italic;">PGPASSWORD.</span><br /><br />In your script:<br /><br />export PGPASSWORD=somereallysupersecurepassword<br />pgdump databasename<br /><br />voila!Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com0tag:blogger.com,1999:blog-7717172484340609585.post-84535904796553695262009-03-19T21:51:00.000-04:002009-03-19T21:54:52.153-04:00The Year 2009 so far.So far, I've had a pretty productive 2009 (in terms of some of my personal goals):<br /><br /><ul><li>I am <span style="font-weight: bold;">really </span>focused at work, possibly doing some of my best all around technical work.</li><li>I am working on some great projects, and generally feel invigorated by my job and my team.</li><li>My side project is going really well. We go into testing in a few weeks!</li><li>My lego house is slowly coming along.</li><li>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!</li><li>Still playing oGame. :-)<br /></li></ul>Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com0tag:blogger.com,1999:blog-7717172484340609585.post-62145955837665238102009-03-19T21:48:00.001-04:002009-03-20T07:02:23.271-04:00One of My First Usenet posts.I was curious what was one of my earliest records of me on the Internet.<br /><br />According to Google, it's this post by me to a Usenet news group back in summer of 1992:<br /><br /><a href="http://groups.google.com/group/comp.os.msdos.programmer/browse_thread/thread/89c270d2e86ef013/c3be546b21d8fa53?hl=en&q=wmk101#c3be546b21d8fa53">http://groups.google.com/group/comp.os.msdos.programmer/browse_thread/thread/89c270d2e86ef013/c3be546b21d8fa53?hl=en&q=wmk101#c3be546b21d8fa53</a><br /><br />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.<br /><br />Mark: This was the summer was started programming 3D game engines in MS-DOS/Pascal/Assembler! Fun times!Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com1tag:blogger.com,1999:blog-7717172484340609585.post-72318871784729222642009-02-11T18:22:00.000-05:002009-02-11T18:29:06.843-05:00Good ProgressI set out some goals this year, and I am pretty excited with some of my progress already.<br /><br /><ul><li>My side project outside of work is going very well. I cannot wait to talk more about it.</li><li>My work projects are going very well. I am re-invigorated, and I am doing really solid work right now.</li><li>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! <br /></li><li>I think I found a subject area that I am going to explore outside of computers. More on that soon!<br /></li></ul>Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com1tag:blogger.com,1999:blog-7717172484340609585.post-75648740660855973582009-01-18T20:59:00.000-05:002009-01-18T21:05:59.510-05:00Lego Town House Model - Take 1My 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.<br /><br /><br />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!<br /><br /><br />I've promised myself that I won't by any more bricks until my birthday, though. :-)<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ_6M0PDd-8WNcTA7nvaqs3FGHKrGCt8SvH3QScnNjYu59C1ZNRr6Mth-hdbw-TUwiqln2cAlIqkrjmrD7fU_HE5y24GyvnWm2Husy_MXhLDiSZZxQldyFkS5Zgz_5lgRRYz48R7HQsV0/s1600-h/2009-01-18+Lego+400+North+Star+2.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ_6M0PDd-8WNcTA7nvaqs3FGHKrGCt8SvH3QScnNjYu59C1ZNRr6Mth-hdbw-TUwiqln2cAlIqkrjmrD7fU_HE5y24GyvnWm2Husy_MXhLDiSZZxQldyFkS5Zgz_5lgRRYz48R7HQsV0/s320/2009-01-18+Lego+400+North+Star+2.JPG" alt="" id="BLOGGER_PHOTO_ID_5292819897728982402" border="0" /></a><br /><br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje6P6VMRv_IBpXwU2apUecGMvLA5d7YO240AplPih8gNLa80kvEs1a3hZfLmbFVL7PteWKNfzqRe0OZ7mDGU65RNco9VxCIHJ1tQJhW5Quh2l-0OjC0Nw9YPNs172b-OPFs9gQlo7F_uc/s1600-h/2009-01-18+Lego+400+North+Star+5.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje6P6VMRv_IBpXwU2apUecGMvLA5d7YO240AplPih8gNLa80kvEs1a3hZfLmbFVL7PteWKNfzqRe0OZ7mDGU65RNco9VxCIHJ1tQJhW5Quh2l-0OjC0Nw9YPNs172b-OPFs9gQlo7F_uc/s320/2009-01-18+Lego+400+North+Star+5.JPG" alt="" id="BLOGGER_PHOTO_ID_5292819915734703378" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHOWU8gRmaOgE_vgbbtBzeFDKQWkEExh-X0FY_8wSsEZ_8yvPeO_bLrsSM4rtzFn3dU1s-G0jCfGCx5c1c1whS0KsRaTN32xYUnmUu1hs82bImR6LYuHm4sd0KLpGd8o10dZPXOAEBQsQ/s1600-h/2009-01-18+Lego+400+North+Star+4.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHOWU8gRmaOgE_vgbbtBzeFDKQWkEExh-X0FY_8wSsEZ_8yvPeO_bLrsSM4rtzFn3dU1s-G0jCfGCx5c1c1whS0KsRaTN32xYUnmUu1hs82bImR6LYuHm4sd0KLpGd8o10dZPXOAEBQsQ/s320/2009-01-18+Lego+400+North+Star+4.JPG" alt="" id="BLOGGER_PHOTO_ID_5292819906255457266" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi92FUUfPJC65jRDxtmQasvzthyKQL0Aes3u_oAxSG1OgTZxlNPdVxzvmuujYz5xn5k5JT2RZGcfKa4w4UTDB-OK160n7QqTMhU53jRuw3E_7JhWa7XcurfnSTQo5v2tIp9JNzN-7g4maM/s1600-h/2009-01-18+Lego+400+North+Star+3.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi92FUUfPJC65jRDxtmQasvzthyKQL0Aes3u_oAxSG1OgTZxlNPdVxzvmuujYz5xn5k5JT2RZGcfKa4w4UTDB-OK160n7QqTMhU53jRuw3E_7JhWa7XcurfnSTQo5v2tIp9JNzN-7g4maM/s320/2009-01-18+Lego+400+North+Star+3.JPG" alt="" id="BLOGGER_PHOTO_ID_5292819901579567986" border="0" /></a>Bill Kratzerhttp://www.blogger.com/profile/02198012933460110907noreply@blogger.com0