



Recently, I have been thinking about an old fable. I am sure that is was read to you as a toddler or maybe you read it as a kid. The Tortoise and the Hare is a fable about a hare who challenges a tortoise to a race. The story ends with the slow and steady tortoise beating the hare in the race. One of the interpretation of this story is haste makes waste. I believe this fable has some serious lessons for any one who works with software development.
In college, Computer Science students learn about software development models like Waterfall or Agile Development. The students learn why structure is needed to effectively develop software. They are also taught the downfalls of the lack of structure. I, like may students, learned all of this in college. Recently, this lesson was brought home and I learned first hand why the tortoise is so damn fast.
The hare from the fable has some very appealing attributes on first look. In terms of software development, The hare starts off strong. He produces code sooner and boy can he code. He can also adjust to changes in design and requirements faster. This sounds great doesn’t? I mean who wouldn’t want all of this?
The tortoise on the flip side has to gather requirements and write designs. This is all before coding can even begin. The tortoise has one thing, a process. He knows that following his process will result in a solid product what out anything missed. So he just plugs away, slow and steady.
The devil is in the details. Or so they say. A deeper look at the hare and the flaws become visible. The hare relies on sheer speed. The sheer speed can only continue for a finite amount of time. There is no time for a process or any structure. This means requirements are missed, code is sloppy, and technical dept is being added at a crazy rate. At some point, the hare will hit a wall. This wall has many forms. In my case, the wall is an endless loop of adding and removing requirements and bug fixes.
The tortoise on the other hand is consistent. The code is produced in a consistent manner. The Tortoise’s output is also consistent. Since he has a process, he can accurately estimate when a feature or fix will be completed. In the end, the tortoise will pass by the hare and will do so with a generally better product.
I always knew having a process was needed. Hell, we wouldn’t learn it in college or have people much smarter than me publish books on the subject if it wasn’t important. The thing I didn’t know is the subtleness of the problems that start to creep up. At first it is minor annoyances like having to to fix brittle tests. Before you know it, the Hare will start to cause full blown production problems.
Watch out for the hare. He causes problems.




I’ll admit, I am not much for book reading. I like skimming the Internet and blogs but setting down with a book is not my thing. Maybe it is my Dyslexia, who knows. That is why I was surprised on how fast I read Being Geek by Michael Lopp.
Michael, who often goes by the name Rands, is a engineer manager in Silicon Vally by day and writer/blogger at night. Besides writing books, Rands writes a blog called Rands In Repose where he gives advice about living, working, and dealing with geeks and being a geek. It is well written blog with good content.
Back to Being Geek. The book claims to be the “The Software Developer’s Career Handbook” and it does just that. The content is not earth shattering but it does put things into perspective. Being Geek is written for the target audience of Geeks who tend to view the world in black and white. The content flows from the start of a Geek’s career to the end the current gig along with everything in between. Chapters are short and to the point, each has a point to be made. While connected and in an order, the chapters can stand on their own. This made the book a joy to read because I didn’t have to go through the fluff to get to the point.
I thought the book was over all very good. There were a few chapters that felt they didn’t apply to me at this moment. These parts where more about being a manager, which I am not (yet anyways). With that said, may of the chapters did apply. The first section of the book walks through the finding a job and interviewing process. This was probably the biggest eye opener to me. I did not realise all the minuscule detail that interviewer is looking for, that is if they are any good. Rands goes into detail on what to expect and what the goals of the interviewee should be. For example, the phone screen, I learned, is all about communication. Can communication flow between the interviewer and interviewee. Rands also discusses the type of questions the interviewer is probably going to ask, why they ask it, and high level suggestions for answers.
In the end the book gave a lot of good information in a no nonsense cut the crap kind of way. I give credit to the Book and Rands for giving me some confidence and motivation in my career.




So back in October I started the process of learning to do development for to android. Sadly, I am here today to admit that went poorly. This is my reflection on why it went badly and how I expect to better next time.
Problem 1: Me. Yup, that is right. The first problem I ran into was me. I have a lot of ideas for applications for Android and in general. The problem isn’t that I jumped right into development, it was when I jumped I landed in a spot that was over my head and that made me instantly frustrated. With in days of installing the tools and SDK my drive had died. I just got over whelmed with all the new that I didn’t take the time to learn.
Solution: While I hate doing the typical “Hello World” type apps, it is a necessary evil. It is the steps needed to ramp up understanding of the environmental. What I was trying to do was not hard but because I didn’t know the basics of Android development, it was difficult to find help. The process isn’t hard and takes a bit of time but ramping up is needed to keep from being overwhelmed.
Problem 2: Holy cow, embedded application development is slow. Let me be clear, development isn’t slow but getting you application to run via emulator or on a device is painful. When it takes a few minute for my application to run, this just kills the fun and drive to continue. Especially when learning. When I was waiting, it was so easy to get side tracked.
Solution: I hear the sdk and emulators are getting better and faster. I am also in needed of a new PC which is pushing 5 years old or at least an upgrade or 2. Other than that, I am not sure what else I can do.
So the biggest problem was me. Once I can get through them, it should be pretty easy to continue. I plan on starting this again as I think there is some positive applications I could contribute to the community. However this is on hold for the moment. Need to get caught up on technologies related to my job, mainly ASP.NET MVC




I recently picked up my first smart phone. After years of wanting to move up to a smartphone but holding off because of price, I finally caved and picked up a HTC Desire. It is running Android 2.1 out of the box. It is a pretty slick phone. So far I have enjoyed my prechuse.
One of the reason I decided to pull the trigger was the idea of creating application for the phone. By day I am a .NET developer. Mainly C#. I was sort of excited to learn a new development environment and langue because I have been in .NET land for so long. I figure it is time to branch out. Yeah java is not much different than .NET but you have to start somewhere.
So I had some time to get the Eclipse IDE setup and ready to go to start my journey. I went to http://developer.android.com and followed the instructions on getting started. I am starting from scratch. The machine (win7) I am working on didn’t even have the Java runtime installed yet. Since I am a novice when it comes to Java and Eclipse, I followed the installation steps for the Android SDK. They seemed straight forward.
First step: Get eclipse. Sounds easy enough. Read through the section for ecplise which stated…
A Java or RCP version of Eclipse is recommended. For Eclipse 3.5, the “Eclipse Classic” version is recommended.
What does that even mean? So I want to the Eclipse site and downloaded the Java version of Eclipse 3.6 and continued to the section to install the Android Develipment Tools (ADT). This is where things get more confusing because I was greated with…
Caution: There are known issues with the ADT plugin running with Eclipse 3.6. Please stay on 3.5 until further notice.
Grrrrrr…. But I just downloaded 3.6.1!! To limit the number of issues I run into I decide to follow what Google recommends and found a copy of Eclipse 3.5. No big deal. I go to run Eclipse and it promptly fails stating it can not find the JVM. At this point I was confused because I had thought that I installed Java at some point in the past. Yeah, I was wrong. Whoops. Over to the Oracle to get the JRE/JDK.
I am running win7 x64 and did what anyone running x64bit OS would do. I download the x64 windows binary. Install Java. Run eclipse. Eclipse fails again. Still stating that it could not find the JVM. Ugh. The message box suggest to add the path to the JVM to my system path. A few clicks later and it should be good to go right? Nope, now Eclipse crashs but with a log/debug message.
At this point I was about ready to give up. That is until it dawned on me. “Hey stupid! You probably can’t run 32bit Eclipse with 64bit JRE!” An uninstall and reinstall of the JRE and eclipse is running!
From here on out everything seem to work correctly. Totally elapsed time: ~2 hours. No really 2 hours.
My enthusiasm has lessened alot because of the frustrating install. I mean I have not even started to write a hello world Android app yet. I am planning on sharing my experience as I go and comparing it to how I view the .NET start up experience.




Windows 7 is due out by the end of this year. Visual Studio 2010 is due out next year. Does this all sound a bit familiar? It should because there was a similar situation with the release of Windows Vista and Visual Studio 2008. I have always liked going to Microsoft events and drinking the Microsoft “Kool-Aid”. It makes me feel all warm and fuzzy inside! We all assume that there will be events for Windows 7 and Visual Studio 2010 because Microsoft has a track record having events for their major releases. Well, it is my understanding that this time is no different.
At a recent developer event, I happen to catch up with a few developers from Microsoft and asked just what is going on. Here is what I know. The Windows 7 and Visual Studio 2010 events are in the planning stages at Microsoft. They will more than likely be like the “Heroes happen {here}” events for Visual Studio 2008 and Windows Vista. And lastly, the event will more than likely happen next year.
Nothing I was told is set in stone and is all likely to change 10 times in typical Microsoft fashion. And just so there is no confusion, I do not work Microsoft. I just ask them questions.
Tony.




I decided to try out Google Analytics over the weekend. My web host’s web stats leave something to be desired. Since Google already knows everything about me and my site already, I figure it was a safe things to do. With a WordPress blog, it is very easy to set up. Here are the steps.
It literally took five minutes to set up. Google Analytics has some very cool features. For example, it keeps track of return visitors vs new visitors. It is pretty neat.
Google Analytics comes with a free side effect! The stat tracking requires the client to have JavaScript execution enabled. What this means is that clients without JavaScript enabled do not get tracked. So if you have a lot of users that disabled JavaScript, this could be back. However there is a an upside, Spam bots do not run JavaScript! I know this because Google Analytics only tracked me for the first day that I had it installed. However during that same time frame I had ~20 spam comments caught. I am happy about this because I get a more accurate view of the visitors to the blog.
Tony.




So I was getting my oil changed today. While I waited I took advantage of the free WiFi. I had to download Adobe Reader because of the new install of Windows 7. Below is a screenshot of one of the new features of the task bar. It appears applications can change the button on the task bar. The screenshot is of the progress bar for a download in IE8. I think it is pretty cool and will be more useful than flashing that task bar buttons to get my attention.





The Problem: What to do with all those aging home videos that are on VHS (or other analog) format?
The Answer: Buy some new toys and convert the analog video to something modern like DVDs!
My parents, like many, bought a home video camera in the late 80s. Since then my family has accumulated hours upon hours of home movies. There is a lot of family history on those VHS tapes. That is a lot of family history many do not want to disappear. The real problem is most (none technical people) do not realize that tapes do not last forever and VCRs will not be around that much longer.
I was pretty much going into this blind. There are a many possible way to get analog video converted to digital video. Since I didn’t want to screw this up or waste money on anything that yielded problems or poor quality, I made sure to do my research. VideoHelp.com has proven to be a great resource for all things video. There is a ton of information on the site but be warned, VideoHelp.com has a large community of professionals so it is hard to get a clear answer for the hobbyist.
I started my research with exactly how to get the analog video from the VCR to my computer. There are tons of ways to convert analog video to digital video. There are a number of hardware to software and internal and external solution to do this. After reading the net, it becomes clear the easiest way to get video from analog to digital was to use a GrassValley ADVC110. The ADVC110 takes in S-Video or Composite connectors. It will do the conversion from analog video to digital video in the unit and outputs the video from the device over fire-wire. The video that is output from the device is DV-AVI and runs about 13GB/hour.
The next major part of this plan was to find a VCR. There are a lot of options for a VCR too. Finding a VCR proved to be even more complicated than finding a device to do the video converter. It seems that there are a lot of opinions how what type of VCR is better and why. There is a large debate over consumer vs professional VCRs and which one is better. At the present moment in time, there are no companies making standalone VCR players. The options are to buy a used professional or prosummer VCR from EBay or similar place or you can buy a consumer dvd/vcr combo from your local retailer. The main difference between the two options (form what I can tell) is a some of the professional VCRs will have image correct/stabilization in the form of a TBC or Time Base correction device. A TBC will make jumpy video more stable and remove some of the artifacts form the video.
Since I needed a new DVD player for my office, I opted to go with the consumer DVD/VCR combo. I bought a Philips DVD/VHS combo from Wal-Mart for $80 bucks. I figured if the video quality was poor, I would try to find a used professional VCR. After all my research and worrying over what to buy, I finally pulled the trigger and bought the ADVC110 and VCR/DVD player. Last weekend, I hook it all up and started to convert video. I have 13 family video tapes to convert and since then I have done 3 of the tapes. I wanted the DVDs to look as good as the VHS tapes when being played on a TV. I can say that with my current set up the digital video looks better than the VHS tapes. It is all really easy to use too!
Set Up of the VCR and ADVC110 is very easy and easy to work with. The hardware set up consisted of connecting the VCR to the ADVC110 and the ADVC110 to my computer. To capture the video being pushed from the ADVC110, I use a free tool called WinDV which is very easy to use. Once the raw DV-AVI video is captured, I have been using Windows Movie Maker and Windows DVD Maker to create movies and DVDs. Both are straight forward to use. They are not very robust but they get the job done to my needs.
I am open to question just remember I am by no means an expert on this subject. Here is a very small example of raw video that has been converted from on of the tapes. The clip is what my bedroom looked like when I was little.
Tony




Neal Ford has a series of post about SOA and how it is being sold to developers. While the post had some pretty good points on the topic, He talks about something he calls the Rubick’s Cubicle anti-pattern. The pattern as stated from the post is:
If the presented problem isn’t complex enough, developers will figure out ways to make it complicated and therefore challenging.
Shortly after reading about the anti-pattern, I had a meeting to attend. It becomes apparent pretty quickly how true the anti-pattern is as I sat in listened in this meeting. This got me to thinking about problems and solutions of everyday life.
The first thing that comes to mind is how we communicate. Back when cavemen walked the Earth communication was nothing more then pointing and grunts. Fast forward to Today where we have E-mail, Twitter, Cell Phones, signal fires, and video conferencing. One could go on for a pretty long time one just the number of different ways we interact with others these days. Anther fine example of complexity with communication is that forms of interaction that were not suppose to be instant are being treated as such. I can not count the number of times I would get an e-mail from someone and an hour later get a phone call or another email asking if I had received the first one! I know make it a general rule to ignore my email when I am being productive.
This quote has actually got me thinking about my problem solving abilities. I have noticed that I am guilty of taking the more complex rout because it would be more entertaining and/or challenging. It actually has me concerned. I don’t want to write complex code because I can! I have added a step to my problem solving process because of this quote and realizations. When trying to solve a problem, I make sure to stop and ask myself if there is a less complex way of solving the problem. Sure there may be an easy way to solve the problem, however easy does not mean simple. We have all seen a “fix” that was one line of code but was confusing as hell.




Stack Overflow is a Q&A wiki site for programmers. People can post questions, answer questions, and search for questions. Question and Answers get voted up or down based on what the community thinks of them. As people ask and answer questions, karma is gained. As karma is gained by a user they can do more on the site like editing, voting up, and voting down.
The site is fairly popular among developers. The 100,000 question was recently asked with many added everyday. The community looks to be pretty strong and oddly mature. I say oddly mature because it is the Internet after all.
Stack Overflow is programmer crack. I find myself setting at the questions page hitting refresh over and over again waiting for new questions to be asked. Its fun to see what roadblocks other programmers are stack at. It is also a good feeling to get voted up on question and/or answers on the site. The ultimate joy is when your question is accepted as the answer. It some how validates you as a programmer when one of your questions get marked as an answer or is up voted. Stack Overflow addicting nature is what keeps me coming back day after day to see what has been posted.
Stack Overflow is currently working out great for many people. Questions (depending on complexity) will have answers or suggestions shortly after posting because the community seems eager to help. And yes the answers are normally helpful in someway, shape, or form. In the end Stack Overflow comes highly recommended from this developer.
Tony.


More Options ...
Categories
Tag Cloud
Blog RSS
Comments RSS

Void « Default
Life
Earth
Wind
Water
Fire
Light 