Archive for October, 2007

Feedburner

Today I turned on feedburner to handle my RSS feeds.  I wanted to see some better reporting, and this seemed like a good solution.  You shouldn't need to do anything because I've set up everything to redirect to the correct feedburner URL.  Please let me know if something goofy happens.

New Theme

The other day I did an upgrade of wordpress and decided to totally change my theme in the process.  The base theme I started with was fUnique by Frederik Fahlstad.  It was already a wordpress theme, but was 3 columns.  I trimmed the second column out, widgetized it, and cut the css down quite a bit.  I modified the graphics to use my repeating header and graphics.  I also stuck in some of the Silk icons.  I still have some minor tinkering to go, but all in all, I'm happy with how things turned out. 

A nice side effect of my theme upgrade produced what seems to be substantial bandwidth savings.  I know the markup is cleaner and the css is much more compact.  Also, this theme is much less graphically intensive.  I did not get any kind of before and after measurements, but my web stats show the bandwidth usage going down.  Nice.

Wrong Way

At yesterday's weigh-in, I was 0.4 pounds heavier than the week before.  I cheated this week a little and I wasn't able to work out like usual because of some lower back pain.  Regardless of circumstance, I weighed in and recorded the numbers.  I'll do better this week, I know it.

I'm weighing in at the same time every week on Wednesday as soon as I get home from work.  I'm learning that my weight on that day is VERY much related to my activities and diet leading up to that day (Monday and Tuesday).  I'm trying to get a routine going for my sanity so that my weigh-ins stay consistent. 

I need a mentor

I sat on this topic for a while because I've had this feeling, but I haven't had the words to describe it.  At this moment in my career I'm in need.  My need feels kind of odd to say, as it isn't money or happiness.  My need is for professional mentorship.  More specifically, I need a mentor in the field of software development. 

As a developer in his mid twenties, I've far from peaked.  Right now I'm just starting to get a sense of the bigger picture.  I'm a sponge and I'm ready to soak up any kind of information and experience I can.  I WANT to learn.  I NEED to make myself better.  This is a difficult mental state to output in words. 

My main problem is that I'm missing that person in my career who has been there and done that.  He or she has the t-shirt and has forgotten more nuggets of knowledge than I'll ever learn.  Right now I feel like I'm fumbling through problems that might be avoided if the architecture was a certain way or the environment was set up different.  I feel like I'm wasting time learning things via the school of hard knocks that are already common knowledge to some.  I want to break ground not reinvent the wheel.

I'm compensating for this through other sources, but it feels like it's far from ideal.  I'm making use of a few e-mentors though blogs and podcasts.  I owe a debt of gratitude to Scott Hanselman, Jeff Atwood, and Oren Eini for their continued public outreach.  These 3 blogs and Scott's podcast have really aided me in my quest for development knowledge.  I've also started reading through Code Complete by Steve McConnell which is a goldmine.  If you are a developer and don't own this book then you need to go buy it now.

Still, I need more.  If you, dear reader, have any book, blog, or podcast recommendations, then please share them.  I would love to see what motivates and inspires you.

How to create an unmanageable project

There is this one project that I maintain at work that really punches me in the gut.  It was developed by someone who is long gone who will remain anonymous.  Every time I open this project in visual studio, I die a little bit inside.

First let me give you a little background on the project.  It parses the wonderfully stupid 837 document standard mandated by HIPAA(X096 and X098 if you care) .  So, to defend the person who wrote this, it sucks to begin with.  The EDI format is comprised of loops and segments.  Each loop/segment piece is separated by a delimiter which is standardized to be a tilde ('~').  Each loop/segment piece starts with an identifier and then continues on with the data.  Data pieces within a loop/segment piece are separated by a delimiter which is standardized to be an asterisk ('*').  Furthermore, some of those data pieces, depending on the identifier, may have multiple elements which are delimited by a colon (':').  Congratulations, you have been briefed on the basics of an EDI document.  The official documentation for the standards mentioned above are 600+ pages.  Please shoot me now.

So how do you make it worse?  Let me count the ways.

The code is designed to specifically parse the intended documents.  Each segment has it's own class which is custom tailored to parse and produce the intended string.  Great, so now we have a metric crap ton of classes dedicated to parsing segments.  The class count for these segments is somewhere around 70 which are neatly organized into one file (Yipee!).  Each segment object takes a string as a constructor and breaks those data fields into named buckets.  It also contains a method to re-assemble those named buckets back into the appropriate string representation.  Basically each object performs these same basic functions with an extra bit of logic for validation. Is all of that parsing and assembling factored into a base class?  Nope!  There's no code reuse here. Why make smaller code when you can copy and paste!  Furthermore, the assembling method doesn't even override ToString() like a good little object.  Nope, it has it's own method "WriteString()".  This behemoth weighs in at around 15,000 lines of code.

With all of that said, it does its job.  It's not fast and it's very picky about the format, but it has been up and running for a year and a half now with occasional persuading by yours truly.  I have plans to rewrite it, but bigger projects are on my plate at the moment.  I do, however, have a working prototype that uses configuration files from the Perl Module X12::Parser.  The parser happened in 150ish lines of code, and it'll take at least that again to make use of the structure to do what I need to do.  Brevity can be beautiful.

« Previous PageNext Page »