Archive for the “Technology” Category

Lots of techies are out there right now thinking ahead to 2008 and what might be. Here’s a few random thoughts. Hopefully the tongue-in-cheek entries will be self evident.

The semantic web will become more fully realized. But you won’t notice it. It will power more and more of your daily functionality yet remain very transparent. All of your news feeds, TV listings, calendar items etc will all be managed more and more by web related delivery mechanisms. Look out for Google Mashups and Yahoo Pipes to become a lot more interesting.

The push for pure-play SOA will be replaced by simpler message bus style architectures. Techies are tired of having large scale infrastructure and application architecture pushed on them. The message here is to start small. the introduction of message bus driven architectures to solve scalability issues will help long term SOA adoption by bringing the tools and techniques in the back-door. Players to watch for in this space: WSO2, ServiceMix.

The “Web 2.0″ label will officially be retired. Subsequently “Web 3.0″ will be announced by Tim in mid ‘08.

MySpace, Facebook or LinkedIn will be hit by a serious security vulnerability that will expose enough personal information (more than they already perhaps) that serious questions will be raised regarding online privacy legislation.

Google’s gPhone will launch and Android will be a smashing success. Riding the coat tails of the iPhone (and Apple fandom) will tough and traction will be difficult. Once Android is running on more platforms and people start to understand its power then phones (and their networks) running it will slowly start to become more popular. This will begin in ‘08 but wait another few years to see the revolution. Eventually even the iPhone will have an Android compatibility layer.

Kindle will fizzle more than it already has.

OLPC will not change the world. Don’t get me wrong, some really cool inexpensive technology will eventually trickle down to the masses. It will not have a significant impact on developing countries though. Reliable drinking water systems. Sustainable food supplies. Advanced education systems. These are the things that developing countries need.

Comments No Comments »

A few weeks ago Steve Yegge posted an article about code base size and it’s negative effect on projects.  While I agree that his example of a 500k LOC project is horrid I’d have split some hairs here and say that lines of code (or bloat as he refers to it) isn’t the problem.  The problem is a horrible application architecture and lines of code is just one of the symptoms.  Other symptoms may include execution speed, memory consumption, lack of encapsulation, security vulnerabilities or a host of other issues.  I’m curious as to what political/managerial/architectural situation arose that allowed a single application code base to grow so large.

Do you have an application architect? Why didn’t the application get carved up into distinct loosely coupled systems?
Do you have sufficient business representation that prevents the “just add it to application X” problems?  How does the scope of an application grow so much with no oversight?

The application bloat I’ve seen typically takes three forms:

  1. Very little code reuse is taking place.  How many separate logging infrastructures do you have?  Using multiple ORM tools in the same project?  How long does it take a developer to understand all that?
  2. Reinventing the proverbial wheel.  This is loosely related to #1 but I’ll call it out here because it’s so important.  If you wrote from scratch any of the following for your project you need to seriously justify your decision IMHO: ORM, logging, web framework. If your language of choice doesn’t already include suffucuent choices for these utilities then you need to reconsider your platform choices.  Avoid the “not built here so I don’t trust it” syndrome.
  3. Feature-itis.  Knowing when to say “no” is a very valuable skill.  Knowing when to say “yes” conditionally is also important.  It’s ok to add that new feature but require some refactoring time so it doesn’t just add to the collective mess.  Think of architectural trade offs as a karma based system.  In other words for every shortcut you take now you make things harder on yourself later.  For example: I can add your feature in 10 days with 40% code duplication (+ 20 days of cleanup later and every other coding task has to slow down to work around this ugliness) or I can add it in 20 days with 0% code duplication (and little to none of the other slowdowns).  It’s acceptable to tell the business that the feature, if done properly, will take 20 days to implement.  In fact it’s your duty to recommend the slower approach.  If you have a boss who doesn’t understand those trade-offs you need to start looking for another job.

I’ve seen (and worked at) both kinds of mistakes and they all contribute to code bloat but that isn’t their biggest problem.  Bringing new talented developers up to speed on the whole system is a monstrous adventure.  No single developer understands enough of the entire codebase to affect significant change.  The systems become so brittle over time that making small changes involves enormous regression testing challenges.

You are a developer.  It’s your duty to protect the integrity of the code base you are working on.  That’s part if what your company is paying you to do.  Yes there will be pressures to deliver faster.  Yes there will be pressures to do things that violate your developer principals.  That’s part of life.  Accept it.  Now that you can take a deep breath what are you doing to protect your code base?  Do you have a solid architectural plan that you can show to your PHB that lets him know how this feature fits into the greater system?  Do you have at least some high-level design documents that allow you to justify your position?  Are you prepared to defend your position to your stakeholders.  “While it’s technically possible to add feature X in 10 days that will have a negative net impact on the whole project and here’s why…”.
Also, don’t think that merely switching to/from a waterfall, agile etc shop will magically fix these issues.  It won’t I’ve seen both kinds of development shops make all of these mistakes.

Comments 1 Comment »

The Colorado Software Summit this year was a blast. Bryan, Lisa and I learned enough to make our heads spin. We drove through a bit of snow and ice from Denver to Keystone but once we arrived we were graced with very beautiful and cold weather. I took a few pictures as usual. I think that I was a little unclear if there would be an underlying theme like last year (SOA) but I would probably pin scalability and interoperability as the general topics of the event this year. Lot of people were talking about virtualization, concurrency with todays multi-core environments, general scalability, and interoperability of web services, data formats etc.
Dan Pritchett from eBay had to be one of the more impressive speakers this year in my opinion. In many ways (but certainly not all) we share a lot of scale issues with eBay so hearing Dan talk about seemingly odd architecture decisions (and the slaying of various sacred cows) really resonates with me.  Just to pick a few oddball concepts they use in various forms at eBay:

  • No client-side database transactions.
  • Database partitioning and sharding.
  • 100% stateless application tier.
  • No 2 phase commits. Don’t worry about the order or failures, clean them up later.
  • Only use stored procedures for ETL-like routines.
  • Use lots of small soldiers instead of large soldiers. (commodity hardware, not expensive branded stuff)
  • Virtualize wherever possible so horizontal scaling is more possible.

Dan sat with us at lunch one day and he’s a simple yet captivating speaker. I talked to him for a while after the Thursday night BoF he held on the eBay architecture. We talked about monitoring and I learned a few fascinating things that have really made me think differently (or reaffirm some existing hunches) about some of the architecture decisions I’ve made on many of the applications I have managed or currently manage.

Want a few crazy facts about the eBay architecture?

  • 1 Billion photos
  • > 1 Billion page views / day
  • 26 Billion SQL queries / day
  • 100 Million items for sale
  • 99.94% availability
  • 1 terrabyte of log files generated per day
  • around 100 code branches are active at any time
  • 15,000 application servers + 300 database servers
  • 300 million front-end searches per day (plus tens of millions of internal searches) == more than Google

I also learned a bit more about Continuum, ActiveMQ and Groovy.

Matt Raible (as usual) gave a couple of great talks about Java web application frameworks. During Scott Davis’s talk on ATOM and REST, Bruce Snyder made a comment that he used JMS as a SOAP transport. Fascinating. Why don’t more people do that? All the message reliability you’d expect out of a message broker (guaranteed delivery, indemnity etc) with the contract of SOAP. Great idea. AMQP also seems like a great idea for message bus architectures. If you’re at all having to deal with bus interoperability, bus vendor lock-in or anything similar, give AMQP a shot.
I went to another Scott Davis talk on Grails. Grails is a new web application framework using Groovy that has borrowed a lot of rapid development techniques from Rails. The awesome thing about Grails is that is uses all of the leading Java tools like Spring and Hibernate. I have been playing around with it on and off for the last few months and I really like it so far. I’m really interested in seeing is mature more though.

Speaking of ATOM and REST, I like the philosophy of REST but I like that WSDL has basically standardized contracts for SOAP services. I’m not saying that I think WSDL is perfect by any means, but it works. I don’t usually need to read it because it’s automatically generated and automatically consumed by most implementations I manage. REST offers no such standard right now for contracts. In order to integrate with a RESTful service I either have to read the spec documents (assuming they exist) or I have to guess as to the contract. Should I ask for “/San_Antonio” or “/San+Antonio”. Read the GData spec. It’s ATOM but it still prints out to dozens of pages. Then what data type is returned? I’d have to make a request, inspect the returned XML and build a parser. Hopefully it’s supplied a schema. What a pain. And this is supposed to be better than SOAP. If a SOAP service provides a WSDL I just point my wsdl2java client to it (or equivalent in whatever language or toolkit I’m using) and I’m literally integrating against that interface within a few seconds. The WSDL provides all the contract I need to work.

I also went to a talk by Gregor Hophe of Google (and author os the awesome Enterprise Integration Paterns book) where he demonstrated a really cool and simple integration of the Google Mashup Editor and Yahoo Pipes. I’ve been using Yahoo Pipes for several months and as a few coworkers can attest, I really love it. Think of it as all the fundamental UNIX utilities (pipes, sed/awk, grep, tee, sort, split etc) but for RSS/ATOM feeds. I have it take a handful of very chatty RSS/ATOM feeds, combine them, filter for certain topics and spit them out as a single feed. That mini-app too all of 45 seconds to create. Gragor’s example took a Google Calendar feed, fed it into Yahoo Pipes, did a little massaging of the format, added Geo Location data and spit the result back out to a feed. That feed he sucked into the Google Mashup Editor (new service, I just got my account today) and integrated it with a Google Map so he could see the location of his calendar events. It was a really slick lightweight integration technique.

Speaking of Google, the Google Gears demo was very cool. I know of a few people who are already getting interested in this project.

Comments No Comments »

I’m headed to the Colorado Software Summit again this year. If I learn half as much as last year I’d still think it was worthwhile. I have been to a number of other software development and techie conferences and this one is hands down my favorite. Here’s a few quick reasons why:

  1. No vendor booths. No pressure, no commercialism, no spin. Just tech.
  2. Every session is worth taking notes in. They are very techie focused. I bring my laptop and between sessions find myself playing with the stuff I just learned about.
  3. Several of the speakers wrote books that I own or software that I use. Perhaps that speaks to the quality of the presenters or maybe to my taste in books and software.
  4. Keystone, Colorado is incredibly beautiful. We received 18 inches of snow during the conference last year.

Last year many of the session topics covered Service Oriented Architectures and various tools often used to facilitate them. Message busses, web services, mashups etc. This year there looks to be a bunch of topics on web frameworks, architecture (SOA, scaling, monitoring, grids etc) and data. Good stuff.

Here’s a few links from last year:

Comments No Comments »

I want to be a iPhone fan-boy, I seriously do. The thing is I don’t have one yet so instead … I’ll play the role of “the hater”.

Reasons not to buy an iPhone (bare with me, I’m trying to talk myself out of buying one):

  1. AT&T? Yikes, Amy and I left AT&T because of how bad the coverage is out here. I’m not going back any time soon.
  2. No syncing from Linux. How hard would it have been to fix this? And the OSX syncing only works with the latest and greatest version of OSX. And forget about it under 64bit Vista. Too many limitations here for me.
  3. Lack of useful apps. IM? Java? Flash? SSH? Encrypted notes?  I’m not saying that these kinds of apps are used by everyone but I’m so spoiled by my Treo and the sheer number of downloadable applications.
  4. No insurance? AT&T isn’t offering any for the iPhone from what I’ve heard. Is that a $500 wad of uninsured breakable cash in your pocket or are you just happy to see me?
  5. Phone locking up? Reports of lockups after 24 hours of use are starting to come in. These kinds of issues are typical for first generation devices and I’m sure Apple will issue a firmware update. Rev 2 and beyone will only get better in this regard.
  6. No memory card support? The only reason I can think of is that Apple REALLY wants to control what and how things get loaded to this device. iTunes is the only way to sync anything to it. (see #2)

That’s it for now. I’m sure I’ll find more as time goes on. I’d love to play with one though to see if the screen is as beautiful as I hear. If some of these issues get resolved I’d seriously consider dropping some cash but until then I’ll just be jealous the iPhone hater.

Comments 1 Comment »

I think I’m getting bored with Fedora (and Red Hat for that matter). Don’t get me wrong I’ve been rather faithful for a while now but I keep getting the feeling that I’m missing out on something better. I’m not one of those “tweak, fiddle, poke and prod” kind of Linux guys. I’m more of a “get my job done and get out” kind of geeks.

I remember back in the summer of 1995 when my college roommate (Lamont Lucas, where art thou?) and I got ahold of some free ARCNET network cards and a hub we decided that we needed a seriously professional network capable operating system … to play games. We embarked on a mission to acquire Windows NT 3.51 for free (we were REALLY poor college students) to no avail. Windows 3.1 for Workgroups was rather dull and painful. We heard some rumors from some obscure newsgroups about this seemingly unknown OS called Linux. A dozen 3.5″ floppies loaded with Slackware, one solid weekend and a lot of guts later we both had working systems (my 60MHz Pentium and his 486DX2 66MHz) with no GUI. Configuring XFree86 was another matter. That took lots of trips back to the computer lab to read all about the wonderful ways that misconfigured modelines could literally turn your monitor into a smoking brick. Eventually we both had working X setups and were happily tweaking away at fvwm to get everything just right. I can still remember the first moments of having a working Linux machine at my feet and again when I had X working. It smelled like victory.

I then spent the next several years tweaking my X desktop. I tried several distributions but mostly settled on Slackware. I ran SUSE for a bit but felt more somfortable with Slackware. I also tried every window manager under the sun. Remember fvwm95? It looked just like Windows 95, only worse. Using Linux at that point wasn’t a matter of productivity, it was more a matter of pride. Another roommate of mine later told me not to waste my time on that crappy little OS because it wouldn’t go anywhere.

So my primary desktop has been Linux for the last 6.5 years (just about every version of RedHat since 6.2) and roughly 50% of the servers under management at work (Rackspace) are Linux based. It’s not going away anytime soon. I am on my 3rd laptop that has run absolutely nothing but Linux. I get the usual sneers at work when I have some obscure issue when I undock my dual-headed HP nx9420, close the lid, walk to a conference room, open the lid, connect to a projector and something doesn’t work quite right. I’m sort of used to things needing a little tweaking here and there to get working. I have to say that Fedora Core 6 on this nx9240 has been rather nice yet not trouble free. The usual Linux stumbling blocks like APM, wireless and video (crazy 1680×1050 resolution) have all worked out of the box. I did struggle with the dual headed setup though, the media card reader isn’t supported yet and the thumbprint scanner isn’t really useable. I hear these things are almost all fixed in Ubuntu so I’m thinking of switching.

Keep in mind that I’m probably the atypical Linux geek here. I don’t mind tweaking things to get them functional but I really don’t want to be required to do so. I have a job to do. I have lots of code to sling and not much time to do it. I don’t want to be wasting my time dealing jacking around with yum repository settings just to keep gstreamer from killing itself. Ideally I’d prefer my OS not get in the way.

It all comes down to this. To any of my Linux listeners: What distro do you recommend? Is Ubuntu where it’s at these days? Is Gentoo worth a shot? Should I give SuSE another shot? Is Fedora 7 going to be the shiznit? What are your thoughts?

Comments 3 Comments »

First a little disclosure. I don’t currently own a Mac. It’s not that I don’t want one, it’s just that until now a few key tools I need at work weren’t available for OSX (VMWare for example).

That being said, I can’t help but drool over the iPhone. The touch screen looks beautiful and the fact that it’s backed by a OSX sounds very powerful. From a developers point of view this is very compelling to me as Palm development is, well, nasty. I love that there are hundreds of good Palm apps available for download or pay but OSX is just such a powerful platform that I would much rather do OSX development than Palm development. J2ME is fun but I’ve only tinkered with it. It will be very interesting to see how Apple will release the development tools.
Here’s the features that I really want to find a little more about before I think of dropping $500 on one though.

  1. Processor. Will it be truly fast enough? One problem with Treos and many other smart phones is that the processor is just fast enough for normal use and dog slow when you need a little more juice.
  2. Battery life. Really, spouting stats at Mac World based on lab usage and real world stats are 2 completely different things.
  3. Voice quality. Again, the thing that makes people the most happy with a cell phone, first and foremost is the quality of the voice connection. Do calls drop? Is the call clear and free of distortion? I think this hurt the Blackberry early on.

The only other thing that would hold be back would be Cingular. Sorry, been there, dropped them. Their coverage in my neighborhood was horrible. I literally had to stand on my back porch to make a call. So we went to AT&T with not much more luck. I have been very happy with Sprint and it will take a lot to convince me to go back to Cingular.

The bottom line is that I really want one, but I can wait until revision 2 comes out. Hopefully by then it’ll be opened up to more carriers and a few of the early kinks will be ironed out. Until then I’ll just be drooling.

Comments 1 Comment »

Several weeks ago I finally got around to upgrading my Linux distribution on my Dell Latitude D505. Since I was issued this laptop at work a couple of years ago I have been running Fedora Core 3 (the latest and greatest at the time). Since FC3 is really pretty old almost nobody packages modern RPMs for Open Office, Firefox or much of anything anymore. Bottom line, I was WAY overdue for an upgrade.

I backed my personal files and applications to my 100GB Seagate external drive and dropped in FC5. Other than the standard “yum update” stuff all I did was point yum to a few 3rd party repositories so I could update gstreamer plugins for MP3 playback, install a working MPlayer plugin for Firefox and install the ipw2200 firmware to get my wireless working. Otherwise everything else pretty much just worked. I took a queue from my coworker Bryan and started using alternatives to manage multiple JVMs, ant and a few other Java related tools. A few websites that helped out:

http://stanton-finley.net/fedora_core_5_installation_notes.html

http://www.tldp.org/HOWTO/html_single/Fedora-Multimedia-Installation-HOWTO/

I think this was the first time on a Linux machine I ever had hibernate to disk working with absolutely no configuration. Fedora has come a long way.

Comments Comments Off

Last night Amy and I went to a farewell party for a coworker of mine. Grant is headed to our London office for at least 6 months. Farewell Grant, we will miss you tons.

Heather said this would happen, and sure enough it did. Our new Roomba showed up yesterday and Amy and I must have spent half an hour just watching it work around the house. Crazy. This thing is awesome. It fairly accurately detects dirtier spots and circles over and over it until it’s clean. We’ll see how well it performs over the next few weeks though.

d2x_1522sized.jpg

Comments 3 Comments »

Yesterday afternoon we got back from a 4 day vacation at our family’s cabin in the Davis Mountains of west Texas. We finally got my in-laws out there with us this time and I think they really enjoyed it. Once Bobby got over his frustration at the bad washboard roads he had a great time. At one point in the drive up the mountain (in my Dad’s truck) he looked over at me and said (with wide eyes) “now I understand why you need 4 wheel drive out here”. If you haven’t been to our cabin before, the drive up Remington Ridge is pretty rough. The 4 wheel drive in my Blazer wouldn’t engage for some reason and I barely made it up the mountain, probably only because I have driven it before and I know the rough patches and how to navigate them. Loretta had the same reaction as Amy, not wanting to look over the edge. There are a couple of very rough and steep switchbacks and a couple of patches of badly washed-out road.

Our cabin has no electricity, telephone or traditional sewer/water. We haul our own drinking water and a rain collection system provides for cooking, and bathing water. A propane system powers a small RV sized fridge, stove, water heater and lights. There is a toilet and a nice big fireplace. Most cell phones work but the signal is pretty weak.

This trip marked the first time in almost 2 years that I had been out there, easily the longest stretch in my life. Before I went to college we made the trip at least twice a year. We couldn’t go last year because the water tank in the cabin was busted and we had to wait on a replacement (thank you Uncle Lenny).

I think Bobby’s interest in wildlife was satisfied with all the Whitetail and Desert Mule Deer. There were also a number of different types of birds to identify. He never saw the coyote or mountain lion he was hoping to and amazingly enough we encountered no snakes.

We celebrated both my birthday (big 31) and Easter while up there. We had an easter-egg hunt, went on a few hikes, gave the in-laws a tour of the area, ate quite a bit, repaired the wind damaged roof of a shed and relaxed a whole lot. I made it almost completely through the new 37signals book: Getting Real. Holy cow, if you develop, design or are in any way, shape or form involved in software development especially web application development, you need to read this book. More on that topic later.

If you are reading this and thinking that you might have a hard time dealing with no phone or internet for 4 days, you really need to try it. There is no better way to clear your head and really relax. Take lots of reading materials, turn off your cell phone, find a comfortable place to sit outside and take a deep breath.

I’m glad to be home but I really do love that place.  It’s a 6 hour drive from Boerne and 4 wheel drive is almost a requirement but it’s the one main place I can go to relax and unwind.

Comments 2 Comments »