Friday, November 07, 2008

Frequently Forgotten Fundamental Facts about Software Engineering

Bruce Eckel blogs about this article by Robert Glass. I've never seen this list before, but it is really good. The first one is so true:

C1. For every 10-percent increase in problem complexity, there is a 100-percent increase in the software solution's complexity. That's not a condition to try to change (even though reducing complexity is always desirable); that's just the way it is. (For one explanation of why this is so, see RD2 in the section "Requirements and design.")

I would add:

C2. For every increase in the software solution's complexity, there's a disproportionate increase (10-to-1? Maybe? Depends on the project I think.) in the cost of implementing the software.

I think he lets us programmers off the hook here:

ES3. Most software estimates are made, according to several researchers, by either upper management or marketing, not by the people who will build the software or by their managers. Therefore, the wrong people are doing estimation.

I don't know if I've ever met a technical person who overestimates, but I've met plenty who underestimate (myself included). You could argue the reason is insufficient information (see ES2), but we could all probably do a better job asking the right questions to get the information needed to make the estimate.

Thursday, November 06, 2008

G1 Phone

I love the G1 phone so far. Being able to access gmail, google reader, google calendar, maps, etc... from my phone makes it worth it.

What needs to be improved:
  1. Update me when a third-party application that I've downloaded from the Android Market has a new version available. Do it just like Firefox notifies you when new versions of add-ons are available. Do it very soon.
  2. Battery life.
  3. The orientation of the screen should change depending on how you're holding it, not on whether you have the keyboard out or not. Did they just run out of time?
  4. I want to be able to edit docs in google docs. Also view PDFs.
  5. The way contacts work: there's no good way to handle the fact that we all have friends that are couples. Usually these couples share a home address and home phone number, but they each have their own email and cell phones. Either you make them one contact, then whenever you send or receive emails or calls to their cell phones, you see their names together ("Bill and Melinda Gates are calling you". Which one!?). Or you make them two different contacts, but then you have to duplicate their information (do I just hate that because I'm a programmer?) Or you make them three different contacts ("Bill", "Melinda", and "Bill and Melinda") and store individual information with the individuals and shared information with the couple. I'd love to see a better way to handle it, but I can't find one.
  6. Please someone write an app that will track the stocks in my portfolio. While you're at it, a better twitter client. And a picasa app that naturally would allow me to upload photos from my phone to my web albums.
  7. I want to be able to close applications. Sometimes I suspect my phone is slow because of some app that's running. Now I have to reboot the phone.
  8. The maps application needs to display zip codes. Sure you don't need a zip code if you're navigating to somewhere, but you do if you want to look up an address so you can address a letter.

Monday, September 15, 2008

Steven Levitt's 5-year old figured out what took me about 35 years to get. This is why it's a bad idea for me to play video games, play fantasy football, or watch sports on TV.

Monday, April 28, 2008

Yahoo! Pipes

I've been playing around with Yahoo! Pipes. It's a nice way to combine information from various web sources, and combine/manipulate the result into something else. Here are some pipes I've created.

The simplest is a Tim O'Reilly feed (who blogged about Pipes himself). His blog is actually part of a larger blog with posts from other people. I only wanted to see his posts so I wrote a pipe that filters out all but those where he's the author.

Pipes can also screen scrape from sites pretty well. There's a pipe that gives the upcoming schedule of the TCJUG, which is not available via RSS.

Finally there's a pipe that will create an RSS feed of all the recent games of a collection of teams, using RSS feeds from Yahoo! And since I've also been playing around with GWT, I wrote a (client-side-only) page where you can select your favorite teams and generate an RSS feed for them using that pipe.

Tuesday, February 05, 2008

Get rid of Minnesota Caucuses

Some interviewee on NPR today said that Minnesota has caucuses instead of primaries because of its populist tradition of including everyone's voice. If by inclusive you mean enabling everyone to vote who doesn't have young kids, who doesn't have a job in the evening, who isn't stationed somewhere else in the military, who isn't a retiree or college student temporarily out of state, then it's incredibly inclusive.

Thursday, October 04, 2007

Exploring Ways to Shorten the Ascent to a Ph.D.

From the NY Times:

The Council of Graduate Schools, representing 480 universities in the United States and Canada, is halfway through a seven-year project to explore ways of speeding up the ordeal.


I'm pretty sure the person who is taking seven years to research the question of how to do research in less time is the wrong person to ask. Must be someone's dissertation topic!

Sunday, July 08, 2007

Playing around with Google Web Toolkit (GWT)

I've been playing around with the Google Web Toolkit (GWT). To learn it, I wrote a chess game. There's no server component; everything's on the client. With GWT, what that means is that all the code is in Java, and then "compiled" into JavaScript.