xorcise your daemons

ramblings on software development

July 20th, 2010

iPhone 4 antenna histeria

I’ll start by saying that I got my iP4 on 6/23, a day early. I’ve been using it exclusively since, and have terrible reception at home (nothing new for me). Even with the latest 4.0.1 I drop lots of calls, and have periods during almost every call where the call fades in and out but does not drop. I’ll be blabbing away, and the person on the other end will begin asking “hello ? are you still there ? hello ?”, and then I mysteriously reappear on the call. I’ve had the exact same behavior without any case, with a bumper case, and with a belkin case, and a variety of grips, so I’m clearly in a less than ideal cell area, especially for this phone. While the fading behavior is new for me, the poor reception is not. Every phone I’ve owned over the past several years has had poor reception and call drop issues at my house, from RAZRs, to Palm treos, through all 4 iPhones. Every phone, including my iP4, has performed wonderfully everywhere else I spend any amount time, so for me, this is unfortunately status quo.

All told, it is still an amazing device. I’m using it for quite a lot these days from reading books via the Kindle app to communicating with foreign colleagues via Skype, and even with the less than stellar reception at home I would be hard pressed to replace it with anything else, nor do I want to.

What I really want to comment on though is the media response to the antenna issue. As Steve Jobs pointed out at the time of the press conference last week, the device had been out for 22 days at the time of the conference, by which point Consumer Reports and a host of other media outlets had whipped the antenna topic into quite the frenzy. 22 days is not a lot of time, and while Apple is notoriously quite about many of its issues, they deserved more time to diagnose the issue properly in my opinion. Particularly for something that involves thorough testing in special facilities and complex data analysis thereafter. I’d rather they do it right and find the true root cause, before issuing incorrect or insufficient information on the matter.

It certainly appeared as though CR and the others were interested in increasing their own readership more than anything else.

Popularity: 4% [?]

June 2nd, 2010

Gov 2.0 Expo/Conference

I attended the gov 2.0 expo last week, and thought that it was a great conference.

There was a wide variety of keynote speakers, including Tim O’reilly, Tim Berners-Lee, Gary Vaynerchuck, and Linda Curetan.
In addition to hearing from so many influential people, I was there to cherry pick the cloud and web service conferences and workshops, and enjoyed and learned something in all of them.

Two really stand out in my mind still. One given by Alistair Croll on the topic of cloud computing, who I thought was an awesome speaker, and one given by Tim O’reilly on the topic of finding users.

Mr. O’reilly really strongly stated the importance of connecting with and engaging your user community, on any project commercial or governmental, and I couldn’t agree more.

All in all, the conference was quite good, I highly recommend it. The conferences, workshops and networking opportunities are all excellent.

Popularity: 13% [?]

May 12th, 2010

“Perfect Software”

I just finished “Perfect Software” by Gerald Weinberg, the author of “The Psychology of Computer Programming”. It was a very short, but good read.

It focuses mainly on software testing, and has a number of interesting perspectives on this all too often under represented area of the software industry. It’s a valuable book not only for testing folks, but for anyone involved with the software industry.

Popularity: 16% [?]

April 24th, 2010

Death March ? Indeed…

I recently finished Edward Yourdon’s “Death March”, and felt like commenting on a few of the things that stuck with me.

First, he supposes that most, if not all, software projects are death march projects to varying degrees. I absolutely agree, from the point of view that we still lack comprehensive enough means and processes to adequately measure software projects that would require more than a few days effort to complete. There is still such a large disconnect between the idea and plan, and its execution, that it is extremely difficult to understand most software projects. I personally prefer quick and dirty prototypes to address this, and honestly think that a complete and minimally functional prototype should always be created before any sort of plan or schedule is laid out. Perhaps not by an entire team, but one or more of its senior developers. They can then help management make informed decisions and craft a realistic schedule and working plan. Without a prototype, it’s just guess work by all involved. True, this is not always feasible, but it is viable more often than not.

Second, I took away two new ideas that really stuck, and that I feel are extremely powerful. The first idea is to compensate, or help however possible not only the software team itself, but their friends and family too. Those people sacrifice just as much, and struggle just as much during difficult work schedules and demands as the team. Yourdon even goes so far as to suggest sending flowers, setting up taxi service to/from day care as well as maid services, all to minimize the burden on the entire group involved. In my ten years developing software professionally, during which time I’ve been on my share of death march projects, not once has something like this ever been mentioned let alone considered. Not by my peers, not by management, not by senior management. It’s a step above Google’s tactics of providing as many on site amenities as possible, and has the same goal they do. Remove not only the work related road blocks, but the personal life ones as well and not only will the team be grateful, they will honestly be able to focus more easily on the tasks at hand.

The last thing I feel like commenting on is another interesting management tactic with loads of potential. Say you’re on a six month project, on which you’re expected to put in 18+ hour days, or more. How would you respond if you were offered 6 months off (paid) afterward ? Or perhaps offered 6 months to work on any arbitrary project, even your own, following the completion of the current death march ? Not only is this an amazingly interesting tactic in practice, but it is an equally valuable question to ask of any prospective leader for which you will work. Offering these kinds of rewards is fair and immeasurably valuable. Similarly, the response one would get when asking if such a thing would be possible is priceless in and of itself. You would immediately know all you need to about your leaders by the way they respond.

The book was decent, and was a quick enough read that I think it is valuable for any software developer/PM/mgr. I found the inclusion of email conversations a bit distracting, but otherwise enjoyed the book and recommend it.

Popularity: 19% [?]

March 30th, 2010

and so the un-freeing of former Sun products begins…

OpenSolaris powers my home brew NAS, because ZFS, DTrace, and a number of other key items it provides simply rock, and allow me to do things more quickly and easily (with less grief) than alternatives I’m willing to consider.

Yesterday, I saw Ben Rockwood’s blog post regarding a license change to Solaris proper, and it seems others sites have taken notice (and referenced his blog).

Though this licensing change is to Solaris, OpenSolaris is still in limbo and this isn’t good news for people like me who run free variants at home, and use what we learn to inform work decisions.

I’m a software developer at work, and as such don’t have the luxury of exploring operating systems on company time. I get what the IT department has decided is best, period.
Having the ability to tinker and learn at home is what drives me to make suggestions or offer informed opinions at work, and provides me with more experience that benefits both home and work.

The server components of my home were entirely Linux until I started tinkering with OpenSolaris (mostly for ZFS). I liked OpenSolaris so much that I switched my personal infrastructure over, and barring a few hiccups, I’m glad I did.
Sadly, where this is headed is that I’ll probably have to switch back, or more likely to Free/OpenBSD which have some of the things I like in the Solaris stack (again ZFS, DTrace etc). Sure, FUSE provides ZFS on Linux, but I’m not willing to trust it with my irreplaceable data just yet.

I’d like to see some statistics of what folks in our industry use at home, and how that influences (or not) what they use at work. Is Oracle heading down a short sighted path, or am I in the minority ?

I would really like to believe that power users who have total freedom to use what they want at home end up driving adoption where they work, which in turn generates direct or tangential revenue for the companies that provide the things they’re using.
Whether this is true or not, Oracle’s track record makes it clear where its interests lie, and thus sadly, where this will all likely end up.

Popularity: 22% [?]

March 26th, 2010

The Tablet Device Rush

There has been a deluge of tablet devices recently, so much so that the iPad feels ever more late to the game by the day.

Lesser known brands such as Archos have 5″, 7″ and even 9″ parts these days, while the major manufacturers are just jumping into the game (HP Slate?). Microsoft has it’s various incarnations, which may or may not ever see the light of day, as does Dell. There is no shortage of options for a person in the market for a 5″-9″ tablet.

Taking a step back, the common theme among them seems to be the level of abstraction provided by the operating system. iPad is a glorified iPhone/iTouch. Most of Archos’ fare, and many others, are Android based and suffer the same fate. We’re approaching a time where these internet connected tablet devices could become as ubiquitous as smart phones, but based on contrived iPhone-like operating systems. Personally, I prefer a full fledged PC-like device, and had high hopes for the iPad only to watch them dashed upon its announcement when I learned what the OS would be. For most consumers, these interfaces are fine, and they probably won’t realize what they’re missing out on. I however can’t help but feeling they’ll be nothing more than toys. I want a full fledged device like the Axiotron ModBook, in a smaller iPad-esque tablet form factor, at a reasonable price (I’d part with $800-$1000 depending on specs). Sadly, none of the near term devices will be anything I’m interested in beyond a toy. Which brings me to the zenPad. A friend pointed out the zenPad recently, and my initial surprise at the low price point has begun to fade in light of the many negative comments and potential shadiness of the seller. If the zenPad does pan out (I’m happy to let others test those waters… too good to be true = too good to be true), that would be a good thing, but I’m not holding my breath. At $155, it’s even in the price range of a tech toy, in contrast to the roughly $300 price range of similar sized devices. At the higher price point, it’s a hard sell as a play device, but at $155 ? you betcha! play on! It’d even make for an awesome Android development platform.

Popularity: 22% [?]

February 23rd, 2010

If you build it (web services), will they come ?

A recurring thought came to me again last August while attending a conference called CSIG (Cyber-infrastructure Summer Institute for Geo-scientists), that there seems to be a rush to use new technologies whenever possible, commonly without considering why or how they’ll be used. I’ve experienced this first hand not only in technology companies, but research centric organizations, and other organizations. The common sentiment always seems to be the newer the gizmo, the better.

Do yourself a favor and take emotions or technical biases out of the equation, take stock of what you already have in place, and only then ask yourself if you really need that new shiny XYZ.

Is it necessary, or is it fluff ?
Do you have the time or resources to implement it ?
Who will use it ?
Will it serve _their_ needs ?
If it existed, _would_ anyone even use it

CSIG is a great conference, it showcases the latest and greatest tools in use by the GeoScience community, highlighting projects actually deployed and in use. But the one critical aspect that I thought didn’t get enough air time was how all of these things will or are actually being used by the community they’re intended to supply. The presenters had all accomplished some impressive feats, but only a few discussed how the results were actually being used by the intended audience.

The thought stuck more so than before, as it had more bearing on my daily work than in the past, due to my role developing code for SPIDR.
It got me thinking about SPIDR’s Web Service interfaces, and how they were being used, and if they could be improved.

SPIDR has been around for quite some time in various incarnations (since the late 90’s), and has evolved very well over time to support current paradigms. After a short bit of introspection, mainly by looking at usage statistics, the complexity of the then current client software packages, and going through the exercise of making a SOAP workflow with Kepler, it was apparent that our interfaces were too complicated for the intended audiences.

Outside of SPIDR itself which makes heavy use of web service calls internally, not many people were using the previous web service interfaces. Those that were using them were highly technical and very software development savvy. SPIDR’s target audiences are various science communities, which should not need web service development expertise to use this resource.

I made some initial steps, such as providing streamed CSV data via SPIDR’s SOAP interface so that clients like the Kepler one could more easily use the data. This simpler access mechanism helped illustrate that we could simplify elsewhere too, which helped the idea take root more broadly. The result of all of this has been a collaboration between us at NOAA/NGDC and our colleagues at the Russian Academy of Science’s Geophysical Center to export several new data formats, expose simpler web services, and provide more documentation for developers and data customers.

In addition to some other announcements that have gone out about them, SPIDR’s new web service interfaces are part of a public unveiling tomorrow (2/24/10) at a conference for IDL developers. This is the exact community the services are targeted at! The IDL client provides an even simpler abstraction atop the web services, in a programming language the intended science communities are very familiar with.

We built them. They’re very easy to use. Now, will the users come ?

Popularity: 28% [?]

January 20th, 2010

Waltzing with Bears, review and opinion

I finally finished Waltzing with Bears this week, after nursing it for a few months.
It’s a book about “managing risks on software projects” from the authors of Peopleware.

Peopleware is one of my all time favorites, so I had high hopes going in. As you may have gathered from my previous comment, that it took me quite a while to finish this book, it didn’t live up to my expectations. So much so that a couple other books I was reading at the same time kept dragging me away from Waltzing, hence the surprisingly long time to completion. It isn’t bad, not by a long shot, it’s filled with useful insight and risk centric perspectives, it just didn’t grab on to me the way Peopleware did.

I felt passionately about the material when reading Peopleware, but felt hard pressed to connect this time around. I did glean a number of useful tidbits from it, which will serve me well in the future, so again, it is still a worthwhile read. It just isn’t in the category of books that engage you so well that you don’t want to put them down until you’re finished.

I would classify it as a text book for a college course. It contains information you absolutely should know, but isn’t something you’ll want to read for enjoyment.

Popularity: 32% [?]

December 16th, 2009

WorldWideTelescope

TFP (last post) is already introducing me to new things…

I came across Microsoft’s WorldWideTelescope project in the book, and decided to check it out.

It runs painfully slowly (even on my 2.93GHz C2D MBP), but I can still use it, and determined that it’s extremely cool. That said, I should point out that being a Mac user limits me to the Silverlight based web client. Perhaps the Windows stand alone client is more responsive, but I can’t justify rebooting the Mac into Windows just to run WWT.

For viewing constellations and as a show+tell aide, I still prefer Stellarium for the data it supports, but will be using WWT more as time goes on.

Popularity: 36% [?]

December 15th, 2009

It’s the data stupid (”The Fourth Paradigm”)

I stumbled across this New York Times article in my RSS feeds this AM regarding a Microsoft research endeavor/book titled “The Fourth Paradigm”.
I’ve skimmed TFP so far, and have highlighted a few sections I want to read in depth, and it looks quite good.

Essentially, it explores today’s data volumes in the science realm relative to those who must make sense of it all. Make no mistake, there’s a deluge. Now that I’ve been back in the science/quasi-academic realm at a NOAA data center for a while, I can certainly attest to there being more data available than people know what to do with. In fact, some scientists even have to make determinations of which level 0 data to delete in some cases, because they simply lack the space to store it all. This is a scary fact, since processing theories and algorithms evolve constantly, and if you no longer have your level 0 data, you can’t refine or evolve your models as effectively (if at all). This is bad for science in the long run, and this book hits on these topics, among others.

It’s available for free in PDF form from Microsoft, so what are you waiting for ?

Popularity: 38% [?]

December 10th, 2009

DIY desktop glass multitouch/touchpad from a unibody Macbook

~6 months or so ago, I purchased a top case from a parted out 13″ unibody Macbook from eBay, with the intent to strip off the touchpad and make a DIY desktop touchpad USB device out of it. Similar things have been done before, albeit not for these glass touchpads.

I thought it would be a great way to create an amazingly comfortable mousing/typing combo by putting it between the two halves of my Kinesis freestyle keyboard, allowing me to minimize reaches for the mouse while maximizing comfort.

I have a similar setup I made for work, but since I only have the choice between Windows XP and RHELinux there, I just used this cirque touchpad. Comfort wise, it works amazingly well, but the cirque pad, quite frankly, sucks. No middle click, no two finger scrolling, terrible accuracy, yet I continue using it because the comfort level outweighs the negatives in my case.

Fast forward to this week. I had an interesting idea pop into my head earlier in the week, which was a potential way to get more information, or pinout/wiring diagrams of the parts I have, to move the project past its current standstill. The challenge is that the ribbon cable which connects the touchpad to Apple’s logic board is extremely small, has 3 ICs on it, and way too many tiny test points for me to realistically probe to pull this off.

I needed more information.

In the first link above, the older style touchpads incorporated the mouse’s USB controller IC into the touchpad PCB itself. On the unibody Macbooks, the combined mouse/keyboard USB controller IC is on the logic board (as confirmed by ifixit)

The 3 ICs on the unibody touchpad cable are:

Texas Instruments: CD3238
(google => RS232)

Broadcom: BCM5974
(google => touch controller)

SST: 25VF020
(exact match from SST, 2Mbit flash chip)

I’d rather not divulge the idea that led to this, but will say that the end result was several responses from someone at Apple. This person was kind enough to answer my questions, in return, I won’t give out that information. At any rate, this person is in a position to answer the technical questions I had, and the feared/unfortunate end result is that it would be possible to accomplish my goal… IF I had a logic board too, not just the pad and cables. The contact at Apple confirmed the only two options would be to tie in to the logic board upstream from the mouse/keyboard USB controller, or somehow magically figure out all the needed information to do it at the lower level (essentially duplicating the USB stuff on the logic board). All without any wiring diagrams or pinouts of the ICs.

The cheapest logic board I could find is $500, making this project too spendy to continue… Especially considering the fact that I can pick up a top case with the older style touchpad for ~$50 on eBay

My end goal was a touchpad with middle click, and multi-finger swipe to scroll. While the other gestural capabilities would be awesome, I can live with the limited set available from an older touchpad, and so, one is on the way (only $40 even!).

When it gets here, the DIY will continue, and perhaps I can even coax it into supporting 4 finger gestures

If it succeeds, I’ll replace the crappy cirque at work too.

Popularity: 40% [?]

December 7th, 2009

Google LiquidGalaxy, would be even better with multitouch :)

I came across this rather awesome Google project in my RSS feeds today, LiquidGalaxy

Essentially, it’s 8 large screens integrated as a single Google Earth UI, complete with a gazebo for the user to stand in.

After reading this, I had a thought. This would be even better if the screens incorporated multitouch!, perhaps using these, or if there
was a podium in the center with a smaller screen supporting multitouch, for which a number of other options exist too. One challenge would be deciding which display, or all of them, to add multitouch to. If only one, it’d have to be clear to the user which one they use. If all, the software would have to be able to accommodate that. Personally, I feel like a central podium with a smaller display “feels” like it would work the best from a user’s point of view.

Taking it a step beyond multitouch, it could possibly use an available body tracking technology instead of, or to augment multitouch. If the Nintendo Wii can do it, why not this ?

For quite a while now I’ve been eying the multitouch options, and have even parted out (but not purchased) an inexpensive set up for some DIY MT action. Sadly, as happens all too often for me, other priorities supersede the fun excursions.

Nonetheless, combining the mentioned capabilities would make for some amazingly engaging interactive environments, which while fun and neat, have some immense and practical educational ramifications.

Popularity: 36% [?]

November 9th, 2009

Closure, perhaps it will convice some JavaScript haters to stop…

Google open sourced their Closure JavaScript Tools!

If you’re not familiar with them, and you do any web development at all, now’s the time to read up. In short, this is a set of groundbreaking tools for the JavaScript developer, which bring some amazing capabilities to the table. If you are in any way involved in web development, you should take a look at the range of features now at your disposal.

In recent years, things like jQuery, MooTools, ExtJS and Dojo have given me hope that people have recognized the value of JavaScript, and that you can indeed write solid code in the language. Too often in my direct experience, it’s been looked down upon, and its usage even expressly forbidden in some cases. Some people simply have been unable to shake their negative view of it, relative to their early web development experience. As recently as last week even, someone commented to me “why in the hell would you ever write anything in JavaScript ?” Why ? Because it made the most sense in this particular case, and because I pick technologies based on the needs of the project, not based solely on my current proficiencies or personal preferences. JavaScript does have it’s place, and can be a powerful tool, and Closure is an excellent addition to the toolbox.

What really has me excited are the language enhancing features, such as the dependency system, the name space/object capabilities, and the debugging additions. I’ve already started incorporating some of them into the next version of my most recent JavaScript project: Real-Time Ionosonde. It was a relatively small and quick project to begin with, so it should serve nicely as an introduction to the tool’s API.

Google’s use of JavaScript in its products, and the release of these tools will hopefully sway some of the haters when they realize what’s possible.

Popularity: 42% [?]

November 4th, 2009

Calendar Heat Maps

I’m a huge fan of data visualizations, and this one is pretty cool.

calendar heat maps of two different time series data sets

1. Performance of Microsoft’s stock
2. Airline Peformance

This certainly has potential a little closer to home than some of my other favorites, and may end up finding its way into some of my projects :)

Some of my other favorites are death and taxes, an interesting pie chart variation for internet usage, years remaining of consumables, and finally, job losses in the US (be sure to watch the vid)

Visualizing immense volumes of data is become more and more difficult, so it’s really great to see so many neat new variations on presentation. I was thrilled to come across the calendar heat map though, because it’s one I can actually use myself!

Popularity: 41% [?]

October 13th, 2009

To Wave or not to Wave ?

I’ve had access to Wave for a tad over a week now, and so far I have to say that I see the potential, but I will withhold judgment until it’s a final product, or heck, even a Google Beta(tm).

The integrated communications platform that is Wave allows one to combine communication mechanisms in new and interesting ways. For example, by adding components from Ribbit to allow voice conferencing, or by using the included map component to collaborate on a map. These extensions, coupled with the core real-time text platform, create a compelling communications system. It will only improve as a system as more extensions are added.

I like the interface, but it does crash on me a lot. Personally, I’ve had the best luck running it in Chrome. I looked through the API documentation and some of the extension examples, and felt both were a bit under developed. I’m sure Google will flesh these out, as they’re critical to developer uptake, but I found myself unmotivated to even tinker around, which is unusual for me. I’m usually an early adopter, and enjoy tinkering with things. The crash frequency, and UI lag of the preview version have certainly been off putting though, and have slowly eroded my desire to use the tool, for now.

At any rate, the real-time nature of a wave is interesting indeed, and I’ve certainly found it handy to communicate with multiple people in this fashion. Many times, a conversation has ended quickly simply because all involved got the point as a participant was only partially through writing a particular sentence. At least in my usage, it certainly has sped up large group communications, better in fact than anything I’ve encountered before. I’ll be keeping a close eye on these aspects of Wave since they’ll be the most useful to me personally. However, I will be surprised if Wave pans out as an end all be all communications paradigm shift, as touted. It will definitely have its place in ones repertoire of communications tools though.

Popularity: 42% [?]

September 2nd, 2009

TravelFli

Last night at Boulder New Tech Meetup, the founders of TravelFli showed us their latest.
They also talked about some interesting stats regarding frequent flier miles in general, such
as it being one of the largest untapped assets.

Their app can scrape all of your mile accounts and allow you to book travel
in such a way that you leverage those account’s maximum potential.

To sum it up in my own words, I’d say it is the ideal companion to flight
and hotel loyalty program junkies, allowing us to effortlessly maximize
our return from those programs.

I was impressed, and signed up for their beta.
Take a look for yourself

Popularity: 45% [?]

August 19th, 2009

blink

I recently finished blink and must say that with each of the books of his I read, I become an increasingly large fan of Malcolm Gladwell.

blink has been added to the Books Page.

Popularity: 49% [?]

July 31st, 2009

Google Voice on iPhone :(

Like a few others, I am disappointed by Apple’s decision to prevent Google Voice for iPhone. I am not as upset as some, but do think the situation is unfortunate.

The startup I worked for a few years ago was doing something very similar to Google Voice, called VerbalOneNumber, which wasn’t as successful as GrandCentral (the predecessor of Google Voice), but my point is that I intimately understand the immense value potential here. The combination of Google Voice for inbound calls combined with consistent outbound presentation would prevent confusion. Our solution for VerbalOneNumber was to dial the service itself and use it to dial out, since it predated mobile devices such as iPhone, the G1/G2/pre etc. which are capable of doing this themselves. Perhaps Voice should do something similar anyway, in addition to having device specific applications. We dealt with it by identifying that a caller was dialing in from one of their designated numbers, asking for their PIN, and then presenting an internal speech recognition/DTMF menu structure to access voicemail, outbound calls etc. It worked fairly well, although voice quality (quality, drop outs etc.) on cell phones still isn’t anywhere near consistently decent enough to provide good results from speech recognition engines, but fast/responsive DTMF menus work very well indeed. They already provide click to call, which addresses the cases where you’re near a computer. However, what if you’re not ?

Hopefully this will get sorted out as a result of all the bad press. It would be very useful to take full advantage of Google Voice’s capabilities.

Popularity: 56% [?]

July 16th, 2009

iPhone 3GS GPS disappointment

I’ve been mostly pleased with my 3GS, with one exception: GPS flakiness.

The hardware upgrades certainly make a difference, not only in applications but
general UI responsiveness, which makes the whole experience of using the device better.

The GPS however, bluntly put, sucks.

In Maps, I’m lucky if it ever uses the GPS (yes, even when standing outside
in clear skies). Even when Maps does decide to use the GPS, it doesn’t update frequently
enough and can take minutes to decide I’ve moved, which when driving can represent
a substantial distance. It’s essentially useless to me as a map+GPS device, which represented
the majority of my usage of my 3G.

Being a developer gives me access to the 3.1 betas, and I have the same poor GPS performance
on stock 3.0 as well as both 3.1 betas that have been released. At least it’s consistently crappy :)

I’ve combed forums and tried every possible solution, including many targeted at the 3G, but
nothing makes a positive improvement on my 3GS.

Hopefully the source of this issue is the firmware and can be fixed. It’s really disappointing, since
I came to rely very heavily on my 3G + GPS, which always worked impressively well, even in my
car. I trusted the 3G so much that I wasn’t bothering to look at a map prior to going somewhere.
I’d just head to my destination having a rough idea of where to go, pull up Maps on the 3G, and
depend on it to worry about the details. I had such trust in the 3G that I did this in states I’d
never driven in, and was traveling decent distances between cities, and it never failed me.

For example, last January I was in San Fransisco for work, and had to drive South to meet someone in Menlo Park.
No problem, just ask the phone. Then along the way, the phone’s battery nearly died. Again, no problem,
ask the phone for the closest Fry’s. It led me right to the closest store, at which I bought a cigarette
lighter charger and kept on truckin and made my appointment with plenty of time.

Alas, no more…

Popularity: 51% [?]

June 25th, 2009

Why is engineering software so hard/different than other engineering pursuits ?

I’ve been pondering this topic a lot lately, and have had several discussions with
colleagues and friends on what steps one might take to improve matters when working
on a project which has issues associated with this topic.

This Dr. Dobbs article brought the topic to
the forefront of my mind and has recently resulted in the following thoughts on the subject.

1) The solution to any given software problem has far more possible solutions than in
other fields of engineering, and tends to be on the bleeding edge of technology. Other engineering fields
don’t tend to put developments out of their R&D labs into customer usable/facing products
nearly as rapidly as in the software industry. Effectively, customers are most commonly using the bleeding
edge instead of a product from tried and true methods, processes and technologies. This
is a fairly sizable contributing factor in the complexity of the creation of software. The fact
that developers are learning new technologies and techniques all the time and applying them
each day is a huge testament to the traditionally less than strict process involved in our industry.

2) The group members in any engineering team are of different quality by any metrics you might measure them by.
How that impacts a project and subsequently the whole team, is where things diverge when comparing software development
to other engineering disciplines. Only in the software industry can one person have as large an impact on the whole ecosystem.
If you’re building a bridge, and one contributor isn’t keeping up, you send them packing and find another in short order. In the
software realm, you could send the person packing, but usually don’t, and whether you do or not there’s a much larger impact.
Replacing someone usually doesn’t happen when it needs to, takes far too long, and is far too difficult to do successfully.
This needs to be dealt with case by case, as every company and environment will be able to address it different ways.
The goals should be to a) have processes in place that make it trivial for people to switch projects on their own, including
capturing their knowledge on current projects. b) allow the team to decide how best to divide the work it’s been given c) force
the team to take responsibility for itself and its project. d) implement current standard practices such as bug tracking and
continuous integration. You might be surprised how regularly such things are either not in place, or not used consistently…
They can help bridge the skill gap to a certain degree by allowing the team to understand which of their colleagues is capable
of what, and can allow them to compensate internally without any intervention. In the software industry
the least capable person has a far greater ability to affect the project than in other industries. Addressing this single
point would go a long long way toward improving the software engineering domain. Sadly, I have no idea what
to suggest, and every attempt I’ve seen to do so has been a failure or marginal success.

3) A view point offered by my manager, Eric Kihn,
is that there’s such a large uncertainty associated with estimating both new features and bug fix efforts, that it’s difficult to plan a software
project to any reasonable degree of certainty when compared to other engineering efforts. Again, if you’re building a bridge it’s far easier
to know if you’re on schedule, and if not what your trouble areas are and how to address them. Too commonly a software developer
will jump into a feature or bug fix and find out that what they thought would take a week will actually be more on the order of months.
Experienced software engineers are obviously better at estimating, but the potential impact of the unknown is still far larger than in
other engineering fields.

4) As the Dr. Dobbs article points out, the human factor is a massive contributor to this phenomenon. I’ll expand
that to point out that because of the human factor, architecture religion/politics/preconceptions all impact a project
way too much, and way more than in any other industry. At least in terms of getting things done. I’m sure bridge
builders have politics too, but it seems to be less about the methods used than the process of doing the work in that case.
If I’m a commuter who’s going to drive over a bridge, I don’t care what brand of tool was used to lay down the asphalt, I
just want the bridge to work reliably day after day. If I buy a house, I don’t care what brand or model of drill was used
to screw in my screws, I just want the house not to fall down, and last year after year. In the software industry we
spend way too much time arguing over what brand of drill we’ll use to create a piece of software. Pick technologies
that make sense for the project, the environment in which it must work, the constraints of the company, and the experience
of the team doing the work. In other words, stop arguing about ultimately pointless things and make sound decisions based on
a project’s goals and constraints.

The goals of a project will determine what makes sense. If the right people understand this and provide
proper guidance, software development can be more like other more stringent engineering pursuits. What
value would we or the product get from that though, and does it matter ? Who knows, but over the course
of my career I’ve heard one question far more than any other. “Why is it so hard to write good software ?”

Popularity: 59% [?]

June 12th, 2009

The Tipping Point

I added The Tipping Point to the books page.

This book was recommended to me by my former mentor at Sun, and
was quite good. Follow the link or go to the books page for more details.

Popularity: 88% [?]

May 30th, 2009

jpeekaboo updated, new features added

Something finally motivated me enough to make some changes to jpeekaboo.
Time does indeed fly, it’s been almost a year since the last release…

I put in some infrastructure for settings, and used that to allow the note
to be pinned to either the left or right side of the screen. The settings
also have a way to set the vertical percentage of the screen the note will
occupy now as well.

Grab yours here

Popularity: 88% [?]

May 29th, 2009

First wolf3d, now Doom for iPhone!

John Carmack commented on the existence and forthcoming release of Doom for the iPhone.

That will certainly be interesting, and per the article more time has been put into the interface (among other things) so it should be a better app than wolf.

Hopefully he’ll release the Doom iPhone source code too…

Popularity: 90% [?]

May 27th, 2009

now that’s a great idea! (data.gov)

The government decided to do something useful with a few of its copious data stores, excellent!

After perusing data.gov a bit, there are quite a few useful data sources. More importantly, this
could be much larger than it currently is, and represents a huge opportunity for so many federal organizations to share their data
not only with one another, but with us normal folks too.

Imagine having this sort of programmatic access to a wider range of data over a wider time frame.
It puts all sorts of interesting statistical and scientific measurement opportunities into the hands of a
great many people.

It will be very interesting to see what comes of this effort.

Popularity: 83% [?]

April 6th, 2009

MapReduce becoming ubiquitous ? => Collaborative Map-Reduce in the Browser

As an academic exercise, myself and a colleague at Sun are currently implementing a MapReduce client for iPhone which has a server component, and a number of other clients we’ve written in various programming languages (currently Python, Ruby and Perl). Our hope is to statistically prove iPhone and similar devices can be useful in a larger MapReduce exercise to augment beefier hardware in the data center,
specifically for processing massive amounts of textual information for the purpose of search and data mining.

Assuming you have enough mobile device toting participants of course…

In the course of our implementation we’ve come across a few other interesting ideas in this
space, such as this one which creates a MapReduce client in Javascript to farm compute to website visitors, which is very neat.

Also, Amazon recently announced elastic MapReduce.

More and more lately I’ve been sensing that MapReduce is seeping into software developer’s common knowledge, which is a good thing.

There is a class of problem for which it’s extremely applicable, but like anything, it is NOT a silver bullet, nor
the solution to every massive scale data processing problem. Alas, as is too common, it seems to be the next big shiny thing…

After its completion, I’ll provide additional details and possibly some source code on our iPhone MapReduce project.

Popularity: 100% [?]