In reaction to my last blog entry, several people seemed surprised to find out that I have an office (not a cubicle). I've worked out of cubes before, so I can sympathize with the plight of the cube-dweller. However, I have to admit that I've never had it quite as bad as this:
Just remember: things can always be worse. I wonder if this was an early experiment in Extreme Programming techniques?
People have a funny habit of walking into my office and resting their backend on everything except
the guest chair that exists for that very purpose. Visitors will lean their butts against my doorknob, my credenza, or (worst of all) just plop right down and sit on the corner of my desk.
I never say anything about it, but I can't help cringing every time that happens. Personally, I really don't want to operate my doorknob after five people have stopped by to rub their rear against it, but I don't have much of a choice.
I'm thinking about hanging a sign up behind my desk (yes, that's a pun) that says:
Your ass should touch nothing in this room other than the seat of a chair
Not sure if that would help, but it would make me feel better. Am I the only one who has these kinds of problems?
There was an interesting article in the MIT Technology Review magazine at the end of last year titled Digital Renaissance
(registration required -- sorry about that). It talked about how kids are growing up today in a very media-rich environment, and parents should encourage their children to participate in this environment in order to understand and learn from it, rather than actively avoiding it (a concept that the author called "Media Literacy").
It's worth reading the whole article, but here's an excerpt to give you an idea of where it was going:
We would not regard our children to be literate if they could read and not write. We should similarly not feel that our children have developed basic media literacy if they can consume but not produce media. Creating media content can range from the traditional, such as writing stories, to the high-tech, such as programming original computer games. Just as reading and writing skills feed on each other, production and consumption skills for other media are also mutually reinforcing.
One of the problems that many adults have today is dealing with "information overload". Our brains can't effectively absorb and filter all the things that we're bombarded with on a daily basis. I wonder if that just won't be a problem for kids who are younger than about 10 right now. Maybe their minds will unconsciously adapt as they grow up in this mass of information, so that by the time they enter the workforce they won't even flinch at sorting through their inbox while they've got 12 web pages and 5 instant messaging windows on the screen.
That must be my problem staying focused at work. I probably just didn't watch enough TV growing up.
Here's something that seems like science fiction but has apparently been around for several years.
There's a technology called StereoLithography that allows you to create 3-D models of CAD drawings. You start with a vat of "liquid photocurable monomer" (which I think is like a liquid plastic) and a laser. When the liquid is hit by the laser, it solidifies at that exact point. As a result, the laser can be used to literally draw an object in the vat and produce a solid, 3-dimensional plastic model.
The best short description I found for the process was from a paper entitled Application Challenges to Computational Geometry:
The components of the stereolithography manufacturing process (e.g., in the system patented by 3D Systems of Sylmar, CA) consist of a vat of liquid photocurable monomer, a computer-controlled table on a stand that can be moved up and down in the vat and a laser above the vat that can shine on the surface of the liquid and can move in a horizontal plane. The system works as follows:
In the first stage the table is positioned right below the surface of the plastic and the laser is controlled to move about so that the light shines on the plastic surface and draws the bottom-most cross-section of the object being built. Upon contact the laser light solidifies the plastic, and the first cross-section of the object is formed and rests on the table. In the second stage, the table is lowered by a small amount to allow liquid to cover the hardened layer and the laser then draws the next cross-section of the object. The light from the laser penetrates the liquid just deep enough so that the cross-section is welded to the lower cross-section produced in the previous stage. This process is repeated until the entire object is formed.
That's like something out of Star Trek. I'm trying figure out how to convince my boss that we need one of those for the Portal project I'm working on. Surely I could integrate that with WebSphere somehow...maybe there's a stereolithography portlet?
Okay, I'm probably going to blow my bandwidth budget by doing this, but it's almost the end of the month and I guess I have a few hundred megabytes to waste.
Here's an old Lotus Notes R5 television advertisement/promo/spot that I ran across recently (be careful, it's a 21 MB download -- it's a single mpg file, but I zipped it up so you don't try to stream it from my server):
Unzip the file, turn up the volume on your computer, and watch that baby a few times. You'll want to buy Notes all over again.
Now hop on over to the IBM site and watch some of the more recent TV spots. They're not bad, and some of them are kind of funny...but man, that old R5 commercial is just inspiring. I want more like that.
UPDATE: Ed says what I've got there is a "rally video". Whatever it's called, I like it.
I flew to and from from Atlanta this week, and I've got to say that airports are full of comedy if you just peek your head out from behind the newspaper every once in a while. For example, here are a few of the things I saw/heard in the airport this week:
- A sign with pictures of things you're not allowed to bring into the airport with you -- a pair of scissors, a knife, a gun, and a bomb (several more things were listed by name, but those were the pictures they chose). Okay, I can see how you might forget that you have some cuticle scissors or a pocket knife in your shaving kit or purse, and I can almost understand a slack-jawed yokel forgetting that he's got a .45 stuffed down his pants, but a bomb? Do you really have to explicitly remind people not to bring bombs into the airport? If that's the case, then I propose that they replace the scissors and the knife on that sign with pictures of a tank and a grenade launcher. The bomb-carrying folks might have forgotten to check those at the ticket counter too.
- One of the airlines at the South terminal of the Atlanta airport is Hooters Air, listed on the sign just below Delta. Next time I come up here, I'll have to see if they fly to/from Jacksonville (call 888-FLY-HOOT). I wonder if they have a club room? I wonder what the turbulence would...oh, never mind.
- Delta now loads people on their planes based on the "zone" your seat is in, not the row. Now come on, how the hell am I supposed to know what zone I'm in (I finally found it printed on my ticket in a much smaller font than the seat number). Are they intentionally trying to confuse their passengers? Is it really that hard to call out the row numbers? Think "user-friendly" here...
- The Atlanta airport has a sort of vending machine called "Corporate Express" that has about 30 items in it: batteries, camera film, headphones, things like that. One of the items for sale was TurboTax. I would like to know if anyone in the entire country has ever done their taxes in an airport, especially at the spur of the moment.
"Well, here I am with a couple hours to kill at the airport, and I just happen to have all of my W2's, year-end mortgage statements, investment information, and charitable donation stubs right here with me in the carry-on. If only I had a copy of TurboTax I could use this free time to get my taxes done on the laptop." I see that happening...um, never. I think that the Corporate Express people might be better off selling Tomb Raider instead of TurboTax.
I also think there was a guy standing at a urinal in the airport bathroom talking on his cellphone (using a hands-free headset, of course). I can't be sure though. Maybe he was talking to the wall. I didn't ask.
I'll be at a Websphere POT session for a few days (that's "Proof Of Technology", not the Bob Marley kind of pot session), so I may not be able to keep up with the old blog too often this week. Here are a couple of things you might be interested in before I go silent, though:
- John Marshall sent me an update to the Java ReplaceSubstring Routines I wrote a little while back. He noted that passing an empty string as both the original string and the find string would return an empty string, when it should probably return the value of the replacement string instead. His changes are evident in the ReplaceSubstring6 method.
- I've been meaning to mention this for a while now, but Jerry Carter did a lot of testing to get dbActivity working in batch mode using his ND6 client. The newest version of dbActivity (which is open source, if you want to take a look) has the ability to use wildcard matches to run it against multiple databases, but somehow the NSFSearch API function seems to function differently in ND6, so the program no longer worked properly in anything newer than an R5 client. As a result, I released an earlier version of dbActivity that only ran against a single database, but which didn't make a call to NSFSearch, so it was ND6 safe. If you're stuck using the ND6 or 6.5 client and want to use dbActivity, please take a look at Jerry's notes (or load an R5 client on your machine and run the latest version of dbActivity from there).
(As an aside -- Jerry, I tried to send you an e-mail, but it got bounced back saying that the message was blocked because it had the string "Bicha" in it. Unfortunately, "Bicha" is an integral part of the name "Robichaux", so...)
Oh gosh, I just looked at my tips RSS feed
and realized I haven't posted a tip since January. Sorry 'bout that. Let me check the mailbag to see if there's anything interesting...
Ah, here's a letter from T. Duff in Oregon. He writes:
I recently realized that a Notes Database Replica ID is simply a representation of the date and time that the original replica of a database was created. The problem is, I can't figure out how to convert the Replica ID to a readable time/date. I've always been amazed by your programming skills -- can you help me out?
signed, Puzzled In Portland
Sure "Puzzled", I think I can help you there. I added a little code to my API TIMEDATE Structures Tip that will make the conversion for you. Hope that helps.
(Editor's Note: the letter above was entirely fabricated. Any relation to a real "T. Duff", living or dead, is entirely coincidental.)
By the way, Paul Robichaux
isn't a direct relation, but I imagine that our Louisiana connections have us as distant cousins somehow (my grandfather was a coonass from outside of LaFayette). We know of each other
-- I've actually got a C++ book he co-authored way back in 1995, and I think he's written or contributed to a couple dozen other books since then -- but that's about it.
I say that just in case any of you were wondering after Ed's link to his recent commentary.
I finally got around to seeing the movie Minority Report
this past weekend. It was good high-tech sci-fi and also thought provoking (as are other Philip K. Dick stories that have become movies, like Blade Runner
and Total Recall
, and to a lesser extent Paycheck
), but in the police station scenes I just couldn't stop thinking about the OK/Cancel take on the user interface
. I'm sure that I completely missed many of the things that were going on in those shots just because I kept thinking, "Those guys were right. That would take more energy than an aerobics class."
Now, I'm not trying to say that the movie was ruined because of this, but it's funny how easy it is to get so focused on a single aspect of something that you can ignore lots of other things that are going on at the same time. Because I came into the movie looking for the un-usability of the computer interface, I stopped looking for things like subtleties and subplots during those scenes.
That's not too unlike other areas of life though. Think about the news. When you first realize that it's biased in certain directions (you can choose your own type of news here -- political, sports, computers, whatever), it's often hard to actually hear the news itself for a while, because all you're listening for is the bias. The informational value can fall by the wayside while you're trying to be clever enough to pick out the opinionated statements and complain about them.
As a developer, I have to watch out for this kind of mindset when I'm programming too. It's often so easy to get caught up in the details of the program (code elegance, internal complexities, cool interfaces) that you lose sight of the actual goal (producing a deliverable product that the customer can use). I've mentioned before that I struggle with that a lot, because I could spend months tweaking chunks of code that already work, just to try to make them look nicer to me.
I used to have a quote hanging over my computer that had been attributed to J.P. Morgan:
I don't want it perfect, I want it Thursday
I need to hang that back up, because that's something I need to keep reminding myself. Stop fussing so much over the little details, and focus on the whole job.
Here are a few random links I've run across in the past week or so:
- Michael Fitzgerald suggests that you "attach a note in your e-mail signature file saying whether the contents are bloggable". Hmm, that's different. I wonder what Chris Linfoot would say about that?
- While reading an article about Naked Objects, I saw that J#.Net is Java 1.1 compliant, therefore you should be able to compile your Java 1.1 code as a .Net object (or DLL). Interesting. Something in the back of my head tells me that I could do something useful with that, but I can't quite think of what...
- Here's a PDF with a good overview of service-oriented architecture and component-based development as they relate to Web services (if you're looking to learn about such things).
- I'm now responsible for a few Quickplaces at my new job, so I was trying to find some information about how they work (if you've never used Quickplace, it's really easy and the users really seem to like it, but if you try to dig into the internals it's also really hard to understand). I found a nice example of a Quickplace on the web. Looks kinda portallesque. I have no idea how to make my places look like that one though.
- A product called Beyond TV can easily turn your computer into a Tivo-like machine for about $80, and no monthly charges. Just read about this one on Yahoo news, although I think it's been around for a little while. There's an interesting toaster oven casemod on the site too.
That's all for now. Have a good weekend.
I originally started writing this as part of a comment response to my last blog entry, but decided to break it off into an entry unto itself. I was trying to think of the ugliest LotusScript I could write, and here's what I came up with:
Option Base 1
Dim a As New NotesSession
Set c =b.getview("My Happy View")
Set f = c.getfirstdocument
If (f Is Nothing) Then Goto theend
Redim Preserve i2 (i1+1)
Loop Until (False)
Print "Deleted " + Str(i1) + " docs from ""My Happy View"""
Think that'll work well?
Based on Mike's recent concerns
that the availability of code and open-source programs is breeding an army of skript kiddies who are disguising themselves on the job market as real programmers, I decided to write out this simple guide for you. This can help you quickly determine whether someone you're talking to is actually a developer or not.
How to spot a fake programmer:
- uses Comic Sans as the default font in their programming IDE
- tells their boss that they can't possibly start using a new language without at least 3 formal, week-long training classes and a certification under their belt
- claims to be a master of a new language after completing 3 weeks of training and obtaining a certification
- when there's a problem with their code, says "Gosh, I found that routine on the Internet. I can't believe it doesn't work. Let me post a question to a couple forums and see if I can get it fixed."
- can't write a batch file/shell script on their primary OS
- gets a blank look on their face when you mention that they might want to break their 3,000 line main routine into multiple functions or methods
- has never accidentally crashed another program with their code
- continues to crash other programs with their code
- doesn't own any programming books other than software manuals
- has any computer book that ends in the words "for Dummies" visible on their bookshelf
- doesn't know what "RTFM" means
- doesn't understand this list
I'm sure there are other tells, but that should at least get you started.