Archives
- April 2008 (2)
- March 2008 (6)
- February 2008 (14)
- January 2008 (9)
- December 2007 (12)
Rush -- a Ruby Shell
February 28th, 2008
Rush looks very cool. It is not “complete” but it is a usable shell, and is intended to replace bash & ssh with a shell that uses Ruby syntax.
I once thought about creating a Ruby shell (I think about a lot of things that I never actually do), but I was going to call it rash. It sounds more contagious.
UML For Hackers: Lean Class Diagrams
February 27th, 2008
UML is usually seen as a very corporate (i.e., boring) tool. It implies planning, best practices, and all those other things.
Hacking is usually described as a paradigm of just sitting down and starting to code, and altering your architecture along the way as you need to.
I think that’s fine, possibly even beneficial, for small projects, or projects worked on my one individual. But as soon as you decided to get a team working on a project… you need some way to represent parts of the application so people know how it works. Yes, we could just invent a new ad hoc representation scheme every time we need to do this… or we could just use UML.
Read the rest of this entryComputer Science vs. Real Life
February 20th, 2008
When I decided that I wanted to change my career and “go into computers”, I had a very limited exposure to computing.
Well… I should qualify that. It’s true, I had used DOS so much in high school (before there was Windows) that I preferred DOS to the Macintosh of that day, wrote my own autoexec.bat files, and in fact had a copy of DOS, Pascal, and Moria on 5.25” floppy disks that pretty much went everywhere with me. At the time, many DOS PCs did not have hard drives; you loaded the OS from a floppy, then it ran from memory and you put in some other disk with your files or other programs on it.
Read the rest of this entryConsidered Harmful Considered Harmful
February 18th, 2008
Okay, the novelty of exploiting use-mention ambiguity wore off awhile ago. That’s okay.
It’s possibly time we stopped considering things harmful. The idea is somewhat puzzling; it seems as though the thing under consideration might not actually be recognized as harmful for any other reason than that we are considering it such. A panel of experts, perched somewhere behind your shoulder, has unanimously agreed that what you’re about to do may, in fact, be harmful. Dispensing with things such as proof, we’ll just consider it harmful and be done with it.
What are you doing? Don’t you know that’s considered harmful?
The trouble with this is that, to be consistent, we can’t even consider “considered harmful” harmful without violating our new rule. You see? That’s what happens when we start inventing considerations without regard to rhyme, reason, or reality.
On Iterative Development
February 18th, 2008
“You should use iterative development only on projects you want to succeed.”
- Martin Fowler (UML Distilled, 3rd Edition).
NOTE: I’ve had a penchant for just posting quotations, recently. This is mainly because I’ve been swamped with work, but part of that work has included reading or re-reading a lot of software development classics, hence the quotations. For what it’s worth, I’ll try to write something of my own some time soon.
Another Perspective On Advertisements on Blogs
February 17th, 2008
About 3 months ago I stopped running advertisements on my blog.
This was after about 2-3 years (not sure, really) of running AdSsense ads on my blog, and in that time earning a grand total of about $100. Needless to say, it wasn’t making much of an income.
During this time, I often found myself trying (usually in vain) to attract more traffic to the blog, but after awhile I began to feel like my motivations were wrong. The canonical strategy to advertisements on a blog, or almost any website, is that the more traffic you get, you should get correspondingly more click-throughs, resulting in more income. After awhile, my main goal was to simply make some money off the website. Obviously, there’s nothing wrong with this; I’m a big supporter of making money. But it seemed (to me, anyways) that my goal to drive traffic simply to make (hopefully) a few more dollars from the website, was distracting me from whatever purpose I had originally had in creating the website.
Read the rest of this entryAbstraction
February 17th, 2008
“The discovery of common abstractions and mechanisms greatly facilitates our understanding of complex systems. For example, with just a few minutes of orientation, an experienced pilot can step into a multiengine jet aircraft he or she has never flown before and safely fly the vehicle. Having recognized the properties common to all such aircraft, such as the functioning of the rudder, ailerons, and throttle, the pilot primarily needs to learn what properties are unique to that particular aircraft. If the pilot already knows how to fly a given aircraft, it is far easier to learn how to fly a similar one.”
Booch, Grady, 2007. Object-Oriented Analysis and Design With Applications. Third Edition. Addison-Wesley.
Simplicity Revisited
February 17th, 2008
“A complex system that works is invariably found to have evolved from a simple system that worked…. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over, beginning with a working simple system.”
Gall, J. 1986. Systemantics: How Systems Really Work and How They Fail. Second Edition. Ann Arbor, MI: The General Systemantics Press, p. 65.
Exhaustive Testing Is Impossible
February 14th, 2008
Let’s assume that testing your software is good. We’ll assume that you are working on a larger project, or as part of a team, so we want to test the code. Great. There we are.
Something to keep in mind is that exhaustive testing is not possible. This is not provable, and it would not be true if it were provable.
If it were provable, that would mean that you could locate everything testable within the software, and demonstrate that tests could not be written for all of them. But if it’s possible to locate everything testable within the software, then it must be possible to write tests for all of them.
Of course, showing that something is not provable isn’t the same thing as showing that it’s true… but let’s assume, just for fun, that exhaustive testing is not possible. I mean, exhaustive. Nothing left out. Nothing left untested. No input, output, or circumstance un-foreseen and un-tried. Impossible.
So there will be some things that are not tested. Whatever you don’t test probably has a bug in it, somewhere. That’s also unprovable, and a little bit cynical. It’s also a bit of a tautology. If we assume that all software has bugs (cynical? realistic), we know that the bugs are not in what you tested, because if they were in what you tested you would have found and corrected the bugs. So, said bugs (of whose existence we are confident) must be in the areas which you didn’t test.
Of course, if you’re going to do tests at all, you want to test everything you can; you want to at least attempt to be exhaustive, within reason. Good deal; your manager will be very happy.
For the record, I do think test-driven development is a Good Thing, and that it will probably ensure that, at the very least, your core concerns (whatever you had the foresight to test) will work properly.
But you’ll know that you haven’t tested everything. Because you can’t have tested everything.
As Simple As Possible, But No Simpler
February 11th, 2008
Simplicity is a feature. It’s a feature shared by too few software projects, and as such should be highly sought after and implemented wherever possible. Sadly, the reason it’s so often not implemented is because developers do not believe they have time to implement it.
“I would have written a shorter letter, but I didn’t have time.”Read the rest of this entry
—attributed to Blaise Pascal
Google's Social Graph API
February 5th, 2008
A sidebar to the last post; Google’s OpenSocial may not be the glue that sorts out the mess of social networks, but the Social Graph API is a step in the right direction.
Looking at it, I feel compelled to admit that I neglected to mention microformats such as XFN and FOAF in the last post, also. I considered it, and since it really dovetails very well with what I was writing about, it was probably a poor choice to leave them out.
Possibly more on this once I read the docs.
Social Networking Is A Mess
February 3rd, 2008
I’ve started thinking along these lines before, but seeing hellotxt.com this evening started me thinking about it again.
The Problem
Social Networking is a great tool; it’s a cool thing. It’s not going away, and there are quite a few of them out there that are doing quite well. That’s the problem. There are a lot of them, and a lot of the people who like this sort of thing wind up with memberships on many of them. Some of them are more directly competitive with each other, but in general, the successful social networking sites have unique features which compel people to keep multiple accounts — most people don’t seem to give up one service in favor of another. Instead, they just add the new tool to their pantheon of social networks. Myspace, Facebook, Virb, Bebo, Digg, Vox, del.icio.us, LinkedIn, Twitter, Pownce, Jaiku… phew. The list could continue.
It’s this sort of mess that makes concepts like hellotxt work: Here! You can send out some information to multiple places at once. Your life will be better.
It’s a good tool, but doesn’t solve the problem.
Read the rest of this entryRelease Even Earlier, Even More Often
February 1st, 2008
If it’s a good idea to release early, release often, maybe it would be an even better idea to release even earlier, even more often.
We could have hourly release schedules, targeting our 1.0 release for the day after we begin planning. In fact, maybe we should begin coding before even specifying requirements, stakeholders, or deliverables. Heck; let’s skip those. Let’s just write code and figure out what it does later.
Read the rest of this entryAre We There Yet?
January 31st, 2008
Was just thinking: I’m 34 years old. Aren’t I supposed to, you know… aren’t I supposed to have arrived by now? Going by our assumptions when we were young, I mean; when I was 10, 11, 12, even a little older, I’m sure if you had asked me what I would do/be when I was 34, I would have said: an artist, or a writer, or a musician. Depending when you asked. But one thing’s for sure: I was pretty confident that whatever I was going to be, by the time I reached the ripe old age of 34, I was certainly going to be it by that time.
So why the heck do I still feel I’m not there?
Read the rest of this entry