Saturday, September 30, 2006

Go Towards The Light

Before captioner:

After captioner:

Tonight Shira and I stopped by our favorite park - Gravelly Point. It sits right next to the airport, and has an incredible view of take-offs and landings. (Hence the blurred lights in the photos.)

How, in our security conscious world, you can get away with giving access so close to a busy airport is beyond me.

But, what it lacks in security it makes up for in ambiance.

--Ben

Friday, September 29, 2006

You want a quote? I can get you a quote. With nailpolish.

While programming quotations may be fun, for really deep wisdom you need to turn to The Big Lebowski. Check out this random quote generator from the movie.

The best part? You can add it to your Google home page, so everytime you search the web you can get a bit more enlightened. Like:

Three thousand years of beautiful tradition from Moses to Sandy Koufax, you're damn right I'm living in the past!

Warning: while the dude abides, he also likes to cuss - the above link isn't appropriate for people who don't want to see a fairly healthy dose of swearing.

In fact, I had no idea how many widgets you could get for the Google Home page. There seem to be hundreds - some useful, some junk. But regardless, you should take a few minutes and check them out.

Collaboration Tools - Lifehacker

LifeHacker has a nice collection of collaboration tools to check out. My favorite though, has to be:

Leave a note with mirror markers
Lifehacker reader Jess says the best place to leave her other half a note in the morning is on the bathroom mirror with easily-wiped off Crayola Window markers

Nice hack - I'm so going to have to get me a set of those.

There are other goodies on this site too, most of them a bit more technical in nature.

I am a ...

I stumbled across this this personality test and on a whim decided to take that (what does that say about my personality?!). It turns out, I am a:

Who knew? If you put your mouse over each of the colored squares, you can learn a bit about what makes me tick. A few things I learned from the full report:

  • My Masculinity level isn't high, but then again, neither is my Femininity - does that mean I need to see a doctor?
  • My Openness wasn't as high as I expected - isn't a person who publishes his complete personality profile on the web, for any stranger to read, by definition open?
  • I'm more Earthy than Imaginative - who knew?

Even if you don't want to have your existance reduced to a bunch of colored squares, you may still want to check out this site. It contains some of the most creative UI widgets I've ever seen - giving you both an intuiative interface, and the possibility of providing subtle distinctions. If you are in the UI business, check it out.

Thursday, September 28, 2006

Programming Quotations

Here is a most excellent list of programming quotations. Today's quote is officially:

The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.
--Tom Cargill

definitely required reading for people in the programming world.

Jad + Emacs

Here's a nifty little emacs package - decompile.el. It, on the fly, uses jad to decompile Java .class files.

Jad is one of those nifty tools that makes debugging a live system infinitely easier. Why? Because instead of just guessing what code is deployed, you can actually verify it.

If you use program in Java, and don't use a decompiler to help debug stuff, then you are probably missing out (or, really lucky to not need it!).

Mark - my guess is that Eclipse already does this decompiling for you. Right?

Mobile Content Good News

There have been two announcements of late which are good news for those who crave mobile content. (Which should be anyone with a mobile device and gray time on their hands.)

First, Bloglines announced that their mobile version will now take advantage of Skweezer. Skweezer is an on the fly rendering engine that converts complex websites into tiny-device-friendly pages.

If you want, you can use Skweezer on its own, to turn your WAP browser into a device that can access tons of useful content.

The second bit of news is that Weblogs, Inc has setup all its blogs to have a mobile version. This means you can read Engadget or Joystiq on your mobile phone in a painless fashion.

So far these changes appear to make the sites even more sidekick friendly (though I've mostly been taking advantage of Skweezer).

The bottom line is that next time I'm stranded in Nordstroms I'll have plenty to read.

Via: Micro Persuasion

Wednesday, September 27, 2006

Howto: Run Linux on a USB Drive

AltHack.com: How to Run Linux on a USB Drive

I've been meaning to attempt to create a bootable thumb drive with Linux on it. The above link provides, what seem to me, to be fool proof instructions on how to do this.

The only catch is that some thumb drives, and computers simply won't work for this purpose.

Still, with instructions this easy, it's worth a shot.

--Ben

Update: It works! It turns out, the instructions provided were as easy to follow as I had hoped. Everything went according to plan, and the longest part of the process turned out to be waiting for the 50MB distribution to download.

Getting Shira's laptop to boot off the USB drive took a bit of poking around the BIOS. It turns out, the laptop sees the USB device as another hard drive, and allows you to set it ahead of the primary drive in the boot order. Again, painless once I knew what I was doing.

It's pretty remarkable to think that I'm editing this blog post, using Firefox, running under Linux that booted off of a USB thumb drive. (That may be the geekiest sentence I have ever written.)

Ring++

I so need one of these: The Remember Ring heats up as you approach your anniversary. It gets up to 120 degrees F, all in the name of not letting you screw up.

I'm sure these are considered illegal in my marriage, but a guy can dream ya know.

Secret Messages and Other Goodies

Learning Morse Code has been on my list of things to do for quite some time. And as soon as I get some free time, I'm so going to learn it. Why? It seems like a handy protocol to know - just think, with a single flashing LED, or tone, you can transmit an entire novel's worth of information.

Make pointed me to this nifty site which generates a .mp3 file of morse code tones from arbitrary text. This, I suppose is useful for practice, and for passing these messages around.

I made my first example here. Natrually, I can't understand the file yet. So for now I'm thinking of this as a way of leaving myself a message which I can pick up in the future.

Along the way to writing this post, I realized I needed a place where I could host some media. In the past I've used OurMedia, but I find it so clusmy to use. And this time, it simply wouldn't allow me to upload my .mp3 file.

So off to Google I went, in search of a replacement. I Googled for host media files, and didn't see any useful results. However, as an AdWoreds listing, I noticed box.net. (Gosh I love it when advertising works!)

They promised free storage - and boy did they deliver. The setup process was painless. I now have a Gig of free storage, no questions asked. No annoying ads (or any ads at all). It even comes with a very friendly Web 2.0 look & feel.

As you can see from my test post, Box.net works well with Blogger, and also provides an easy way to share media.

I'm so sold.

-... . -.

Tuesday, September 26, 2006

A New Year Wish

I read a version of this article last year and thought it provided a terrific message (aka PMA). Here's to a wonderful year, and may you have plenty of both kinds of sweetness in the year to come.

Question:

On Rosh Hashanah we eat apples and honey for a sweet new year. My question is, why specifically apples and honey? There are many sweet foods. Is there anything significant about them?
Answer:

There is a difference between the sweetness of an apple and the sweetness of honey. An apple is a sweet fruit which grows on a tree. There is nothing surprising about that--many fruits are sweet. But honey comes from a bee--an insect that is not only inedible, it actually stings. Nevertheless the honey that it produces is sweet. In fact, honey is sweeter than an apple!

Similarly, there are two types of sweetness in our lives: we have times of family celebration, successes in our careers, personal triumphs and harmonious relationships. These are sweet times like the apple is sweet. But then there is a different type of sweetness; a sweetness that comes from times of challenge. When things don't go the way that we would like them to, when tragedy strikes, when our job is in jeopardy, when we fail to reach the goals we expected of ourselves, when our relationships are being strained and tested, when we feel alone.

At the time when we are facing these challenges, they seem bitter and insurmountable, like the sting of a bee. But if we are strong and withstand the difficult times, and overcome the obstacles to our own happiness, we reveal layers of our personality that we would never have tapped into if we weren't challenged. Something deeper is brought out when we are tested. Tension in a relationship is painful, but there's nothing better than reconciling after that tension. Losing a job is degrading, but how often it is that we find bigger and better things to move on to. Loneliness can eat us up, but it can open us to higher levels of self-knowledge too. We have all experienced events in our lives that at the time were painful, but in retrospect we say, "Thank G-d for the tough times--imagine where I would be without them!"

So we eat apples and honey on the first day of the new year. We bless each other and ourselves that in the year to come the apples should bring sweetness, and what the bee stings bring should be even sweeter!

Via: Chabad.org

Monday, September 25, 2006

Mini Howto: Printer Friendly CSS

I wanted to create some handouts for an upcoming class I have. I liked my LAML solution, so I wanted to keep them in HTML. But how could I insure that the printed version looked good?

I recalled that CSS supports the concept of media types and that print was one of them. So I did a bit of research in that direction.

It turns out, it's trivial to make printer friendly documents. In my case I wanted to control where the page break were, so I just made use of page-break-after.

 <div style='page-break-after: always'>
   ...the content for one page goes here...
 </div>

That provided me with the page breaks I wanted. To get even fancier, I added:

 <link rel='Stylesheet' href='print.css' 
          type='text/css' media='print'
 />

I then stashed some specific definitions for printer friendly settings in print.css.

You can also use media='screen' to control the content of what is shown on the screen.

I'm really impressed with how easy CSS made this, and how it all Just Works in Firefox.

Oh, and I should plug LAML again here - this whole form thing would have been a cut and paste nightmare if it weren't for LAML. I can simply say:

  (let ((scenario (lambda description
                     ...)))
   (div
    (scenario
     "Find tax software that you would recommend for a person who wants to"
     "do their taxes for the first time.")
    (scenario
     ...)))

Which allows me to define once how a scenario should be rendered, yet call it multiple times. Check out the final document here to see what I mean. For maximal effect, do a print-preview to see the printer friendly style sheet too.

Clinton Gets Agitated

Shira shared this video with me this evening, where Bill Clinton explains to a Fox anchor who questioned him about his efforts to get Bin Laden.

I thought this was a rare peek into a Clinton that was obviously venting intense frustration on this issue. He just has to wonder, why won't people listen to him and appreciate the facts?

I don't know if this frustration worked for or against him - but regaredless, it makes for good watching.

There was a little Fox clip that mentioned that this was the most popular movie on youtube for some period of time. However, if you attempt to view the clip on youtube you are greeted with the message:

This video has been removed at the request of copyright owner Fox News Network, LLC because its content was used without permission

Nice, they get the buzz from youtube and get to yank it from users.

Cooking Salmon in a Dishwasher

Perhaps the wildest approach to cooking I've seen: Cooking Salmon in a Dishwasher. I so want to try this.

I like how the recipe mentions, in big bold letters: DO NOT ADD SOAP OR DETERGENT. Nice.

Which reminds me of the famous story from when my brothers and I were in scouts. We used to soap our pots, meaning you put dish soap on the outside of the pot so that placing the pot over an open flame didn't burn the pot itself (it's actually a pretty cool hack to avoid blackened pots). Of course, the lore goes that my tenderfoot brother was told to soap the pot - which he did, both inside and outside.

Ahhh, the joy of scouts.

Via: Make

Update: David wants go on record as the brother who did not soap the pot. So noted.

Friday, September 22, 2006

So Engaged

It's about time!

We are so proud that Justin and Jenna took the plunge.

We wish you much mazel, and may you only know simchas.

--Ben

Chag Semeach!

This weekend is Rosh Hashnah - the Jewish New Year.

Shira and I wish everyone a happy, healthy, sweet, and bug free new year.

Pardon me while I go prepare for the yummy meal we have ahead of ourselves tonight!

--Ben

Design Tool: Mood Boards

Here's an interesting story about how a mood board helped make a website design easier.

It's an idea just simple enough to work.

Via: 43folders.com

How do you get creative with your phonecam?

LifeHacker pointed out this nifty article about creative uses for your camera phone.

I think I've done every one of them on the list, including capturing a snapshot of my hair cut.

One suggestion which wasn't in the original list is to use your camera phone to capture whiteboard design sessions. This is especially useful when you come into a conference room, and you aren't quite sure if you can erase what is on the whiteboard. You just grab a snapshot, and you can safely erase the contents knowing that you won't be destroying the only copy of your company's strategic plans.

How to explain RSS

Forget the Dummy's Guide to RSS - you want the How to explain RSS the Oprah way.

This article attempts to explain why RSS is useful to the average non-technical user.

Suppose you have 50 sites and blogs that you like to visit regularly. Going to visit each website and blog everyday could take you hours. With RSS, you can subscribe to a website or blog, and get fed all the new headlines from all of these 50 sites and blogs in one list, and see what’s going on in minutes instead of hours. What a time saver!

This serves as a terrific getting started guide to RSS. So go, get started. I promise this will make reading my blog, and lots of sites, much easier.

Thursday, September 21, 2006

Mini Howto: CSS + JSP

On a recent project I noticed that I was duplicating a bunch of CSS code. Because this duplication is evil, and would keep me up at night, I decided to do something about it.

I quickly noticed that all the code that was being duplicated depended on one magic parameter, lets call it foo. If only, I thought, I could parameterize the value of foo, I'd be all set. But you simply can't do that in CSS (gosh I dislike languages that don't give you basic abstraction capabilities, like variables).

But I do have a language handy which does do what I want - JSP. JSP, after all, does exactly what I want for HTML files, so why can't I apply that to CSS. Of course I can. And did. Here's the recipe.

First, start with your separate files, like:

/* basic_look.css */
body { background-image: url('images/basic_bg.gif'); }

/* fancy_look.css */
body { background-image: url('images/fancy_bg.gif'); }

Next, put them in a single file, and make use of your token:

/* look.css.jsp <-- notice the .jsp here */
body { background-image: url('images/${foo}_bg.gif'); }

At this point, you might think the final step is to update the document that uses this as so:

<!-- Old Approach -->
<link rel="StyleSheet" href="basic_look.css"  type="text/css"/>
<link rel="StyleSheet" href="fancy_look.css"  type="text/css"/>

to:

<!-- New Approach -->
<link rel="StyleSheet" href="look.css.jsp"  type="text/css"/>

But if you did just that, you would actually be wrong. (Hence the need to write up this howto, so 2 years from now when I want to recall how to do this, I can search my blog and find out how again.)

The problem is that a .jsp document, by default, produces a header that says the content type is text/html. This is usually a good thing. Except when it's not. And now it's not.

So you need to make the above change and change your .css.jsp file to:

<%@ page language="java" contentType="text/css" %>
/* look.css.jsp <-- notice the .jsp here */
body { background-image: url('images/${foo}_bg.gif'); }

Now you're all set. Whew, with that taken care of I should have no problem sleeping at night.

How to Deal With An Irate Person

Open Loops: How to Deal With An Irate Person
A better approach [rather than speaking calmly to an irate person] is called Pace and Lead. The first step is to match the complainant's emotional intensity. This is not agreeing with the person. This is simply responding with the same emotions that are being presented. If a person is complaining that the delivery person scratched the new dryer as they installed it and was outraged, the customer service rep would respond in an outraged fashion: They what?!? You've got to be kidding! If that happened, it's unacceptable!! This is pacing. After matching the emotional intensity, the rep would begin to, slowly, de-escalate the intensity to a normal level, leading the complainant to a state that is more productive for dealing with the problem. This is leading.

This is good advice - I've heard it mentioned before, but it's always good to get a reminder on ideas such as these.

I for one am pretty sure Shira would see right through any tricks I tried to use on her like this. She knows me way too well, and she knows that I listen to way too many books on tape. I'm better off doing the Apology, Flowers, Jewelry ® approach with her.

Via: LifeHacker

Design Wireframe Tips

This article touches on a design problem that I've run into a bunch of times. You whip up a mockup to get feedback, and your subject only notices the items that you purposely left undone.

Perhaps we've played with a new layout, and the person reviewing the mockup only sees incorrect text or images.

This specific article delves into this type of miscommunication caused by basic wireframe mockups. These are fast to make, but often difficult to interpret (as the article explains so well).

Here are a list of suggestions that are offered to make wireframe mockups be a bit more realistic without adding to the time required to create them.

  • Make a header bar with the company branding. It should look like the site they are used to, showing the company logo.
  • Use color. Hyperlink color is a basic requirement.
  • Put a web browser frame around the image (or at least the first page).
  • Use real form elements, not drawn replicas of them.
  • Create a template or library of real form elements (feel free to share yours in the comments below).
  • Avoid lorem ipsum. Instead, use: Descriptive text that will explain this product. to avoid confusion about greeked text.
  • Use accurately sized fonts (this also keeps you honest about what can fit on the page).
  • Use real detail such as products names and data. Especially on transactional tools with expert users, users care about what they are reading and recognize and use data like account numbers. It may not be important to us, but they have expectations that need to be met.

This isn't the first time Boxes and Arrows has come through with a useful article on the design process, they did it previously on an article relating to mockups and stories.

Blogger profiles, the undiscovered feature

One of my students mentioned in class today that he wished more people had filled out their blogger profiles for an assignment I gave them. This isn't something I've particularly paid attention to (profiles, not my students), as it asks you seemingly unimportant questions - what books do you like, what movies do you like, etc. - it all seemed like a waste of time.

Well, today I finally poked around some people's profiles, and it turns out they are way more clever than I thought. The items you add to your profile become links that can be searched on. So, when I update my profile and added SICP to the list of favorite books, others who have that same interest can now find me.

Why hadn't this occurred to me earlier? This is simply brilliant.

This is probably also a great way to fish around for more interesting blogs to follow. Just pick an interest, and follow the search results to people who share that same interest.

For example, who knew that I would be connected to both Strawberry_wine (5'9" redhead, blue eyes, slender, outgoing, likes chatting and meeting people, discusses high school, marching band and a wicked feud with another gal her age) and Don (huge fan of W., has a link to Blogs4God in his margin, discusses the Muslim Question and Napoleon Dynamite) via various interests and movies.

Gosh it's a small world.

Tuesday, September 19, 2006

Jews in sports follow-up

In a bit of irony, since Ben just posted on the topic of Jews in Sports, a friend of ours from Rochester sent us this link out of the blue. It is very funny and gives kudos to some Jews in baseball.

Under Pressure

Today Kelly and I got a first hand demonstration of Tonya's new nursing skills - she took our blood pressure.

I just hope she doesn't use phrases like, reboot, reinstall, upgrade, patch, check-in, check-out, dump, restore or kill -9 in her new job.

She's likely to scare the end users, uh I mean, patients.

Just think, free medical care at the office now!

--Ben

Scheme Grows Up

A few days ago it was announced that the next version of the Scheme programming language standard (R6RS) is available in draft form. The draft is quite a bit larger than the current standard (current: 50 pages, new: 142 pages!) and contains many useful features. Including:

  • Module/library support
  • Records, Hashtables and Enumerated types
  • A more sophisticated macro system
  • Improved IO, including a bit of Unicode support
  • And lots of other goodies...

It's true that most mature implementations of Scheme already had these features, but now they can be standard.

My, our little programming language is growing into the real thing. All while attempting to hold onto its original goals of clarity and elegance.

As the report continues to remind us:

Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary.

How sad is that a 147 page language spec actually seems like it will make interesting reading?

Monday, September 18, 2006

Pop Quiz

Shira: Pop quiz, who plays this song [currently on XM radio]?
Ben: Hmmm, let me listen for a sec. Oh wait that's Alan Jackson's new song. The Rose Song.
Shira: Yeah, Like Red on a Rose
Ben: Oh, you like that song?
Shira: No, I just never get roses anymore [sad face]

Boy, did I walk into that one.

Sunday, September 17, 2006

Jews in Sports - The List

Today Jenna informed me that the chargers had Igor Olshansky on their team - and that he was Jewish. The first thought I had was, oy, what Jewish mother wants to hear that her son is playing football? But at 6'6 and 309 pounds, I'd say his Mom has nothing to worry about.

I couldn't resist Googling him when I got home tonight, and of course he has a Wikipedia entry.

It was there that I learned that Wikipedia has a list of Jewish American Sportspeople. And it's surprisingly long.

No longer are we limited to just discussing Sandy Koufax when the topic of sports comes up. We can mention Emily Hughes of skating fame, Yeol Judah of kickboxing fame, Jay Heimowitz of World Poker Fame (is that a sport? of course it is!), Max Zaslofsky of Basketball fame, Morgan Pressel of golf fame and many others.

Check out the entire list here.

My Cubicle - Funny Clip

Shira got this movie clip in her e-mail a few days ago as a forward. We watched it and laughed. And now I can't get it out of my head. So on the blog it goes.

And besides, who doesn't love good viral media?

Txt'ing Good News

http://news.bbc.co.uk/1/hi/education/5327358.stm

The above article points to some good news - not only were 11 year olds "texting" each not harming their spelling and writing skills, but they may actually be improving their skills.

Texting is the term used to describe sending short messages using a cell phone (or more officially, SMS messaging) . The messages usually contain a large number of abbreviations and short cuts for words (e.g., C U L8r)

According to the article, "Those children who were the best at using "textisms" were also found to be the better spellers and writers."

Texting is an example of technology that most parents and teachers look at and cringe. They think, back in my day we wrote real letters, and now kids are tapping away on thier phones. They aren't using punctuation, capitalization or even real words.

But, the thing is, kids are using writing to communicate - and that's a good thing. It forces them to express themselves in a compact manner and in a way that their peers will readily understand. Not an easy challange, and a skill worth mastering.

Heck, did the telepgraph or telegram ruin language? Nope. For those mediums, and SMS, it's all about compression.

Do kids need to learn that sometimes texting is OK and sometimes real English needs to be used? Of course. But that's part of being an adult and an important skill to master in and of itself. It falls in the same category of knowing when you have to wear a suit, versus your favorite jeans.

Perhaps this next generation can take Strunk and White's advice to "omit needless words" and take it one step further to "omit needless characters."

Via: Textually

--Ben

Sunday: Football, Beer and GPRS

Had a fun day watching the Chargers (currently ahead 33 to 0) with Jenna and the gang.

I got to watch football and, more importantly, commercials, on the big screen (stupid Tivo, keeping me from seeing all those well crafted commercials). Throw in GPRS, bloglines and a Long Island Iced Tea, and you have a good time.

Go Bolts, Lights Out and LT!

(Don't ask me to explain the above sentence)

--Ben

Friday, September 15, 2006

Complete

My desk is now complete. Can you tell the one item that was previously missing?

--Ben

Thursday, September 14, 2006

Blogging Meets Tarot Card Reading

My friend Lauren just announced that she's going to start a new blog - but with a twist. Rather than writing about what's in her head, she wants to write about what's in your future!

As she explains:

This is a blog to answer questions or help you with situations using the art of Tarot. Please post in the comments section any questions, life situations, issues, etc... with any supporting information or details you would like to include. You can be as descriptive or as minimalistic as you would like.

Oooh, where to begin?!

Lauren - what a neat idea and welcome to the blogosphere. If you want to avoid lots of the mistakes I made, I'd suggest picking up a copy of the Weblog Handbook.

Review: Dark Matter by Phillip Kerr

Dark Matter by Phillip Kerr is a historical murder mystery novel thing. It takes place in London during the 1600's and our hero is none other than Sir Issac Newton.

The book had a more or less Sherlock Holmes feel to it. Issac Newton is portrayed is an all powerful genius, though he claims his only real skill is that of close observation.

Overall the story felt more like a mystery marathon, rather than a sprint. The cases took months to resolve themselves, and the countless details had me finally give up attempting to predict who done it. I was just happy that when the plot was revealed, I rembered who all the players were.

One word of warning - this book isn't for kids. It has some of, if not the most, explict sex/violence scenes of any other book I've read. There's a thin vail provided by the 1600's slang, but lets face it, our dirty words haven't really changed much in the last 400+ years.

A special treat was provided by the author as he explained which parts of the story were based on facts. Turns out, Newton's sidekick did indeed exist, and he really did hold the same position in real life that he had in the book.

One part of the book that I didn't appreciate was all the conflict between the different Christian sects. I have a hard remembering who is supposed to despise who. It was interesting that the author made Newton kind to the one Jewish character, while the narrator, and what seems like the rest of England, was quite anti-semetic.

As muder mysteries go, this was a nice change of pace. The plot was complex, and it was long enough that by the end the story really had lost its umph - but it was still a good listen, and one I would recommend.

I give it a 7.235/10 for being creative, and a fun way to package history.

--Ben

Free Falling

--Photo censored--

Shira twisted her ankle on the way out of the house this morning. She's not a happy camper.

Josh - can you diagnose this from a blog post? We think it's not broken, can you confirm? ;-)

--Ben

Update: within 2 minutes of CC'ing my brother Josh on this blog post, he had e-mailed me back. He then proceeded to talk Shira through the situation, and we decided not to go to the ER.

Of course, that's what he does for a living (ER doc'ing), but it will still impressive to see it in action.

Lyrics Surprise: Born in the USA

I'm currently listing to Jump The Shark: When Good Things Go Bad by Jon Hein. The book is a discussion about the point in the career of various TV shows, actors, musicians, etc. that started the downward spiral from their zenith.

Jon had a section talking about Bruce Springsteen, and in it he mention that Born in the USA was a song that most people didn't know the lyrics to, and just assumed it was a patriotic tune.

Naturally, he piqued my interest, as I had no idea with the lyrics of the song were.

It's worth taking a moment and checking them out. With a first verse such as:

I got in a little hometown jam
And so they put a rifle in my hands
Sent me off to Vietnam
To go and kill the yellow man

I'd say that song was anything but what I thought it was.

Wednesday, September 13, 2006

Blogging Checklist

LifeHacker pointed me to this nifty checklist that describes things you should do to make your blog more effective.

This meshed well with tonight's discussion about how to contribute to the internet in my ITE-115 class.

In fact, every student in my class is supposed to add their blog to here.

This is a really useful checklist, and one that I need to take the time to go through myself.

Bar Coding Fun

Smartpox is a cool bar coding concept I've seen a few other places. Basically, you encode a small chunk of info into a bar code. You then spread this image around. Finally, you can decode this image into the raw data via your cell phone's camera.

Think of it as your own personal CueCat setup.

Unfortunately, my sidekick doesn't support their J2ME app to read the bar code. But it's still really interesting software. Your typical nifty-concept-but-not-sure-how-I-would-use-it-ware.

I can't do much with it...but here's my first Smartpox:

The Best Time to Buy Everything

Lifehacker pointed me to this nifty article - The Best Time to Buy Everything.

Whether it's a new car, show tickets or appliances, there's a best time to buy stuff. And this article explains when that is.

For example...

Airplane Tickets
When to buy: On a Wednesday, 21 days (or a couple of days earlier) before your flight.

Why: Airlines make major pricing changes (and run fare sales) every week, typically on Tuesday evenings and Wednesday mornings. About 21 days out from your flight, you'll see plenty of deals out there as airlines scramble to fill seats, says Anne Banas, executive editor of SmarterTravel.com, a consumer travel advice Web site. Don't wait much longer, she cautions; prices jump significantly from 14 to seven days ahead of departure.

Who knew?

Of courses, for airlines you probably want to use Farecast, which claims to do fancy schmancy statistical modeling to decide when you should buy a ticket.

Tuesday, September 12, 2006

The Art Of Not Over Doing It

Here's a great example of not over doing it

One bag of peanuts. One cup of soda (well, water in this case.).

I could not be more unimpressed if they (Southwest Airlines) tried.

--Ben

Blue Sky Commute

Here's a shot out the window on the way to the office.

It just so happens that today's office is in Albany, NY.

I'm excited to spend the day hanging with our Albany Team. Of course, my team is probably more excited just to have me out of the office.

Unfortunately for them, I've got about half a dozen ways to keep in touch with them.

(Think: what's your status? Good....What's your staus now? Goood....how about now? Good...)

--Ben

Presentation Hack: S5 + LAML

Quite some time back I reading lshift.com's blog and learned about S5, A Simple Standards-Based Slide Show System. I played around with one of their example slideshows and was blown away.

The slide show was created out of HTML, yet it produced a polished presentation that would run inside of Firefox, IE or Opera. Considering how compact it is, it provides quite a number of features, including the ability to toggle between show mode and text mode, the ability to jump around in the slides and a completely CSS driven look & feel.

There were only two minor difficulties. First, because S5 is xHTML based, it doesn't provide for any means of creating abstractions. I was going to be hand programming all the HTML, which seemed like a pain. And secondly, I had no reason to use it. So, I put it on the back burner.

Then tonight came along. Previously, I had developed a whole bunch of materials for ITE-115, a class I'm teaching, using LAML. Tonight, I decided I wanted to do my next outline as a presentation, instead of a flat HTML document.

However, LAML didn't appear to offer a simple presentation mode. Then I remembered S5 and it clicked - I could use LAML to generate the HTML needed to represent S5's format. I would get the benefits of S5 and have the ability to create new abstractions.

It worked great. I wrote a bit of LAML code so I can write:

 (presentation "My First Test"
   (slide/b "Slide One: bulleted example"
     (<< "My first point")
     (<< "My second point"))
   (slide "Slide two: regular o'l HTML"
     (huge (center "This is some big, centered, text"))))

The LAML functions such as slide/b, slide, presentation, huge were trivial to write, yet made creating my presentation easier and without the need to cut & paste my way to a solution.

If you need a simple presentation solution, that's pretty much always going to work, I'd give this combo a try.

And if you want something that's a bit fancier, you should check out Beamer and PLT Slideshow. Though, S5 is going to be hard to beat for its simplicity.

Sunday, September 10, 2006

Pentagon Memorial Lights

Click on the image to see a better view of the scene.

Arlington County has setup a set of Memorial Lights for 9/11 in front of the Pentagon. Tonight Shira and I took a walk down to check them out.

As memorial lights go, they are nice. Though I'm not sure how you are supposed to judge these kinds of things.

TIME Mobile

http://mobile.time.com/

Micropersuasion pointed out that there is now a mobile version of Time.

More great content available on your cell phone.

Works great on the sidekick.

--Ben

Worst Swag Ever

I'm all for companies giving out free goodies. When it's done right, it's a win-win. I get a new pen, flashlight or pocketknife, and the company gets lots of free advertising.

Most of the time these chochkies aren't that special and have a short shelf life.

But, the other day I picked up the worst corporate gift to date: a large, square, lackluster, paper weight.

First, who gives paper weights in this day and age? Do I really want to have a big o'l stack of papers on my desk?

Second, the company specializes in making a paper heavy process paperless - so why a paper weght?

And why not at least make it duel purpose, and put a picture frame in it too so I can at least use it for that?

I'm just supposed to leave this metal box on my desk reminding me that this company appreciates my business. Yeah, right.

What's your best and worst swag to date?

--Ben

Math Lesson

As a computer programmer I am occasionally called upon to deal with complex mathematical concepts. Like differential equations or calculus*.

Tonight was one of those occassions - I needed to use fractions. And I don't just mean use them - I needed to add, subtract, multiply and divide them. Heck, I even needed to compare them.

Luckily, Shira was available to make a cheat sheet and remind me how to do this fancy type of math.

What does it say when 3rd grade math trips me up?

*Truth be told I have yet to need diff eq or calculus in any of the software I have written. Using the integer remainder operation is about as tricky as I usually get.

--Ben

Wacky Site Of The Day: Hotel Bed Jumping HQ

Today's award for Wacky Site Of The Day goes to: Hotel Bed Jumping HQ.

Here you have it ladies and gentlemen: a site who's sole purpose appears to be capturing people jumping on hotel beds.

Oddly enough, the site has this strange appeal to it.

I'm so tempted to contribute to it next time I'm traveling...

This is probably all some big marketing stunt - but at least it's one with style.

Update: Chris assures me that this is all in good fun and that there are no hidden agendas here. And I believe him. Keep up the jumping fun!

Friday, September 08, 2006

Developer Offsite Training

Today we had a critical offsite training seminar.

Balls were hurled. Beer was consumed. Fun was had.

And now we can finally answer the age old question: how many developers does it take to setup an automatic scoring bowling lane? 9, plus 1 CTO.

--Ben

Thursday, September 07, 2006

Dev Management Ideas and another Peopleware Sighting

Here's another Peopleware sighting. This time on Joel Spolsky's blog.

Joel discusses a topic which is core to Peopleware - doing smart, but seemingly expensive, things to make your teams more productive. Some of these smart things aren't all that obvious, such as giving people on your team private offices or flying them first class when they travel.

Joel even quotes some one from a VC conference who says:

"You have to read this book," he said. "This is the bible of how to run a software company. This is the most important book out there for how to run software companies."

So there you have it, another good endoresment to read the book.

I was most impressed with Joel, as he managed to suggest that the Aeron Chair, the very symbol of the dot com bubble ($900 for an office chair - yeah, that sounds about right for a symbol of the good 'ol days), is a smart investement for your programmers.

I'm a bit nervous if I my team reads this article - as no doubt they will be wondering when their "two large (21") LCD screens (or one 30" screen)" are going to be showing up on their desks. Thanks Joel, I owe you one.

Writing Hacks, Part 1: Starting - scottberkun.com

Here's an excellent article on beating writer's block. It includes such gems as reading something you hate, switching to something harder and one of my favorites - going out for a run.

I just took the exercise advice a few nights ago. I went for a walk, instead of a run, and was planning on scratching down my ideas in my notepad. However, I found it easier to actually IM the ideas to myself using Sabifoo.

The end result can be found here - a stream of random thoughts that I had about how to optimize a web app.

Perhaps I should add send random messages to your Sabifoo blog as yet another writer's block buster.

The new schema is official when...

We just posted our latest database schema on team member's walls. There's no going back now, its official.

I even managed to get Beamer to model his version for the camera.

I'm thinking about getting a framed copy I can post at home..

--Ben

Wednesday, September 06, 2006

The Ultimate Blog Post

Here's a cute article about blogging. You can use this article as a test to see how plugged into the blogging world you are - the more you laugh, the deeper in you are.

With quotes like the one below, I wonder if Shira might have had a hand in the writing of this article:

"Blog" itself is short for "weblog," which is short for "we blog because we weren't very popular in high school and we're trying to gain respect and admiration without actually having to be around people."

Via: Digg

More Design Goodies: Color Jack

Here's another cool color mixer/studio site thingy that might be useful for coming up with pretty looking color schemes.

I've covered this topic before, but this site seems a bit different. It's got the whole slick-modern-web thing going on.

So next time you have an important design project, you can pick out just the right set of colors.

Via:LifeHacker

Update: Just when you thought the topic of color schemes had been beaten to death. I present to you: Daily Color Scheme. Which, unsuprisingly, provides you with a new color scheme...daily. Still, some interesting choices here.

Breaking news: Bank Robbery?

Karun and Kostyantyn just notified me that the bank across the street is having all sorts of police activity.

Possible bank robbery?

Well, the rumor started here...

--Ben

Update (12:47pm): With 5 cop cars, a helicopter or two and police tape rolled out, it certainly looks like something interesting happened across the street.

Home Sweet Home

Thanks to Beamer, Jade and Tim, we now have a new office setup.

My goal is to trade desk space for whiteboard space. Seems like a good trade to me.

--Ben

Tuesday, September 05, 2006

Photoshop Tip: Making Quality Gradients

Everytime I use the Gradient Tool in Photoshop it ends up looking like a 5 year old was playing at the controls.

Not any more! I found this very cool tutorial that walks you through the creation of good looking (meaning: subtle) gradients.

I can now create a truly Web 2.0 compliant website.

Along the way, the tutorial explains about saturated vs. desaturated colors, as well as how to make meaingful use of the color selector in Photoshop. This is good stuff.

Job Interviews - Break all the rules

I've been making my way through Peopleware, and as expected, finding lots of juicy tidbits. One section in particular talked about the job interview and hiring process. It recommended some significant changes from what most companies do (ad-hoc, sit around and shmooze).

Then, Seth Godin came along an published an article that more or less said the same things. End the interview, and get to the useful stuff.

Seth explains that there are two parts to the job interview: selling your company and evaluating the skills of the candidate. He suggests two intelligent, but seemingly heretical ideas to deal with these issues.

First, treat the selling of your company like any other marketing message. Get a pro to do it, or at least to script it. You wouldn't think about having a senior developer sit down and sell the company to a prospect - so why do you expect him to do it during an interview?

Second, if you want to judge the skills of a candidate, put them to work. Forget the sitting around and talking, and give them an assignment to work on.

These are sensible ideas, though they violate quite a few of the taboos of hiring.

I read Seth's ideas, and was very proud of myself for connecting them to Peopleware. But, I wasn't the only one. The very next post from Seth was to repeat a story told in Peopleware that sums this whole situation up.

It's cool enough to repeat, so here it is:

Juggler Interview

Circus Manager: How long have you been juggling?
Candidate: Oh, about six years.

Manager: Can you handle three balls, four balls, and five balls?
Candidate: Yes, yes, and yes.

Manager: Do you work with flaming objects?
Candidate: Sure.

Manager: ...knives, axes, open cigar boxes, floppy hats?
Candidate: I can juggle anything.

Manager: Do you have a line of funny patter that goes with your juggling?
Candidate: It's hilarious.

Manager: Well, that sounds fine. I guess you're hired.
Candidate: Umm...Don't you want to see me juggle?

If you are in charge of hiring, do yourself a favor and at least consider Seth's advice. It won't be easy to take, but it sure might make a difference in hiring quality people.

I for one have been having folks submit sample code with their resumes. It has provided some insight into the developer's skills, but not nearly enough.

Now armed with this advice from two trusted sources, I pity the next person I interview.

Monday, September 04, 2006

Take a Hike!

Shira and I took advantage of our day off by going for a hike at Harper's Ferry. We found the 6.9 mile hike in the guide book 50 Hikes in Northern Virginia.

The excursion turned out to be a really fun one. The hike included some time in the forest, as well as historic Harper's Ferry and along a (very flat) canal which parallels the Potomac River.

The trickiest part of the hike was finding the trail head. Apparently, this book was written before GPSs were that common, as it could have saved us a lot of trouble by simply telling us the longitude and latitude of where to start.

So, for the record, if you want to do hike 16 of 50 Hikes in Northern Virginia, the one titled Splits Rocks/Jefferson's Rock, start at: 39.32173 degrees North, and 77.74294 degrees West. It really is nice hiking, fitting somewhere between basic to medium level difficulty.

Shira was a real trooper. She plowed through all the up hills, and didn't ask once how much longer we had to go. The guide book kept mentioning that there were large patches of poision ivy, so if we both end up with rashes, that's our excuse.

Here are some photos from the hike, the rest can be seen here

And here's the route we took, courtesy of my Garmin eTrex and GPS Visualizer

Review: Invincible

We saw Invincible - a feel good Disney film about an unlikely football player.

It promised to be a heart warming story based on a real person - and it didn't let us down.

This is good old fashion, wholesome fun for the whole family, film. No sex, no bad language - just a lots of crunching football violence and the underdog battling it out.

It's enough to almost want to make me tune into the football season this year. Almost being the operative word there.

I give the movie a 8.46/10 for being fun, but not particularly challanging.

P.S. - why is it that randomly snapped pictures in a dark theatre come out OK, but posed pictures in just slightly sub par light come out terrible? Oy, this sidekick can be a pain sometimes.

--Ben

Sunday, September 03, 2006

Thinking of you Picture

Shira was on travel for business, and saw this layout of hotel floors in the elevator where she was staying. The floors start at -1 and include a 0 as well.

I'm so impressed that she knows that this exactly the kind of oddity I would post on my blog. Ahhh, geek humor, she may not think it's funny, but she knows that I will. (The sign of a terrific wife, no doubt.)

Simon - is this sort of -1 business typical in the UK?

I'm just glad we earned our independence, or who knows how our floors would be numbered.

Wiki + Logo == Cool

One of my readers just left me a comment that mentioned the site LogoWiki. It turns out to be a more or less standard Wiki where you can also write and execute Logo programs directly.

The site's done really well, serving as perhaps one of the best examples of an online programming environment I've seen.

This site may get use in my ITE 115 class, as I need to teach my students a bit about programming. I was thinking about using Logo, but wasn't sure about what interpreter to use. With WikiLogo, I can use an online one.

Saturday, September 02, 2006

Language Wars - My Take

Java, C#, PHP - Huh?

Yesterday, I was surprised to read Joel Spolsky's advice on choosing a programming language for your next web app. Here's a quote that sums up his advice:

These debates [about choosing a language] are enormously fun and a total and utter waste of time, because the bottom line is that there are three and a half platforms (C#, Java, PHP, and a half Python) that are all equally likely to make you successful, an infinity of platforms where you're pretty much guaranteed to fail spectacularly when it's too late to change anything (Lisp, ISAPI DLLs written in C, Perl), and a handful of platforms where The Jury Is Not In, So Why Take The Risk When Your Job Is On The Line? (Ruby on Rails).

Youch. I'm from the camp that buys in to the Blub Paradox - which says that different programming languages have different levels of power. And that you can be more productive in a more powerful language. Typically, those that buy into the Blub Paradox also think that C#, Java and PHP don't rate as particularly powerful languages.

I think Joel is suggesting you choose the above set of languages for two main reasons. First, the knowledge base and established patterns needed to succeed in the above languages are well defined. Second, choosing a main stream language increases greatly your chance of scalability.

If you have to debate then the answer is ...

I think Joel's first point is extremely valid. The situation he was describing in his article was that of a bunch of interns debating a language choice. And I think the key point is that if you have to actually have a debate, then you probably should go with the main stream language. Paul Graham didn't choose Lisp to write his app in because he evaluated Lisp and other choices, and chose Lisp. He knew lisp. In fact, he knew it well enough to literally write the book on developing sophisticated extensions to Lisp.

If you have that level of knowledge about a language, then you should know both the advantages and disadvantages of going with your selection. And if you don't know the language well, using a production project to learn about it is almost always a mistake.

So, on this point, we agree. If you have to debate, then choose the mainstream language. If you are a Haskell Hacker, or an Erlang Expert, then by all means, go with your language.

I would add to Joel's advice though, to the interns, is that they should use Java or C# for the main implementation, but to continue to study one of the more esoteric languages. In fact, use it for side projects as much as possible. Why? The techniques you gain from dealing in a diverse set of language can only make you a strong programmer. And of course, one day you will have enough knowledge in that language to use it for your primary web application.

Remember, not too long ago the safe choice was Perl + CGI, not Java Servlets.

On Scalability

The second point Joel makes about scalability I have a bit more of an issue with. He says:

I for one am scared of Ruby because (1) it displays a stunning antipathy towards Unicode and (2) it's known to be slow, so if you become The Next MySpace, you'll be buying 5 times as many boxes as the .NET guy down the hall.

Allow me a proof by contradiction. Assume that if you use all the mainstream practices that everything will work out just fine and you'll have an app that scales without any major issues. Does that work?

Well, I've had the (good?) fortune to run just this experiment. At my last job, in the 2000 bubble, I was working with a company that needed to design a highly scalable system. So what did we do? We followed all the rules. We went the J2EE route, including Web Logic, Sybase, Entity Beans, Session Beans, the whole nine yards. And you know what? The system didn't scale one bit out of the box. In fact, we had to break most of the J2EE rules in order to get it to scale at all.

The bottom line, as far as I can tell, is that writing a the next MySpace is going to take as much art as it is skill. To my knowledge, we simply don't have a guaranteed recipe for designing scalable web apps. You need to be smart, creative and try every trick in the book.

Simply using a language doesn't guarantee anything - you can write Java code that is 10x slower than Ruby code, and you can write Ruby code that generates static HTML files that are 10x faster than Java code. (OK, that's my guess, but from my experience, it seems plausible.)

After my hard learned J2EE follow the pack lesson, I'll be hard pressed to believe anyone who tells me that I can just follow a single pattern to success.

On The Same Page After All?

One last aspect of Joel's article caught my eye and suggested that perhaps we aren't that far off after all. He explains:

FogBugz is written in Wasabi, a very advanced, functional-programming dialect of Basic with closures and lambdas and Rails-like active records that can be compiled down to VBScript, JavaScript, PHP4 or PHP5. Wasabi is a private, in-house language written by one of our best developers that is optimized specifically for developing FogBugz; the Wasabi compiler itself is written in C#.

So there you have it - Joel's own company uses a custom language, not one of the three mentioned above. And today he explained that he did it for the reasons mentioned in the Blub Paradox: because they wanted a more powerful language. (He even goes so far as to cite Paul Graham's On Lisp book, which I did above.)

So what language should write your web app in today? If you aren't experienced in any particular language, then by all means, choose Java or C#. But if I were you, I'd pick an advanced one that you can start learning, so you can take advantage of the advanced features you may be missing out on.

Introduction to Continuations

Introduction to Continuations

The above link points to a really handy article on continuations that gives you some meaningful examples.

Why should you care about continuations?

Consider your typical AJAX call. Something like:

  var result = ajaxCall(uri, {query: "What is a Continuation"});

In the above call, the value of result isn't really useful. That's because ajaxCall kicks off its work in the background and returns immediately. The typical way to deal with this is to change the above call to:

  ajaxCall(uri, {query: "What is a Continuation"}, handlerFunction);

When the AJAX call is done, it will invoke handlerFunction.

This concept of providing the next function to call, rather than depending on a return value is more or less using continuations.

By taking in the function to call next, instead of returning back a value, you can do all sorts of nifty things. Like implement threads, or write a system that backtracks (like a regular expression engine).

But don't take my word for it, read the above link and try out the examples.

Friday, September 01, 2006

The Husband Seal

Thanks to Collision Detection for pointing me to this nifty seal generation site.

It's too much, isn't it? Yeah, I thought the handcuffs were a bit overboard.

Blogs by E-mail, attempt #2

A while back, I mentioned that I was interested in setting up a Blog to E-mail gateway. The theory being that some people would rather get an e-mail than have to remember to check a blog.

Of course, these people just need to learn about bloglines, but that's another story.

The more I thought about it, the more I liked the idea of having this bridge from my blog to e-mail. It would be perfect for my grandparents, who get a kick out of the blog, but aren't ready to go the RSS reader route.

There was only one slight problem with the solution I tried before - it doesn't work. I tried to sign up a subscription, and it may have sent me a confirmation e-mail, but beyond that it hasn't said word one.

So I went shopping around for a new blog to e-mail gateway and learned about feedblitz.

At first I was a little turned off by how it's a commercial product with a free trial version. But, it turns out, it works really well. And even the free trial seems to do more or less what I want it to do. It sends out mail once a day with a summary of what's happend on my blog. Pictures and everything are included. It really works well.

Want to give it a try? Just sign up here:

Enter your Email:


Powered by FeedBlitz

Ernesto Makes An Appearence

My commute home took a little longer than expected as Ernesto has started dumping rain on us.

The shot of the fire engine blocking the road appeared to me to be there simply to protect a downed powerline.

And of course, a few stop lights were out.

So far though, the homestead seems safe, sound and dry.

--Ben

Yes, But is it Kosher?

One doesn't usually come across 5 layer dip that is marked kosher. It just doesn't happen. Cheese can be a tricky thing to certify (with the animal rennet and all), and lets face it, my people tend to know lox and whitefish, not guacamole and refried beans.

So when I came across this item at Trader Joes I was excited to see an SVK on it. This just might be an annotation marking this item as kosher.

But how is one to know?

Easy, just Google it while standing in the isle.

Sure enough, SVK stands for "Vaad Hakashuruth of Springfield."

And is described as a "non-profit organization guaranteeing that all products are in full compliance with Kosher standards."

Whooo! Kosher 5 layer dip.

Gosh I love Google. How did I ever function without it.

--Ben

Nifty Mozilla Plug-In, and New Debugging War Story

First, the new plugin. I was playing around with Last-Modified caching in web applications tonight. And for the life of me, I couldn't get it to work for one I was playing with.

Last-Modified caching is a really simple concept - you tell the browser when a document was last changed. Then, when it asks for a document again, it can say: "Hey, if the document hasn't changed since you told me it was last changed, then don't bother sending it to me again." This saves on both bandwidth and computation.

So, I knew I wanted to do this.

But, when I got all the code in place, it didn't work. Argh. But that's life as a programming. So, what I needed was a way to debug what was going on. Because this whole caching thing is done via HTTP headers, I needed a way to review them. I figured there must be a nifty plugin in Firefox to let me see what was going on behind the scenes. And Sure enough, there is.

Check out Live HTTP Headers - it will let you watch the exact request/response headers being sent between the browser and the server. Like a variety of other firefox extensions, once you start to use it, you will quickly wonder how on earth you ever developed without it.

Now onto the new Debugging War Story...

So here I am, trying to get this whole caching thing to happen. But for the life of me, no what I change, I can't get Firefox to do anything but to deliver up a fresh copy of the page.

I'm thinking to myself, how could Firefox be this broken? I'm Googling around for phrases like "Firefox Last-Modified" and "Firefox not sending If-Modified-Since," and still I can't see anyone else who is having this problem. I even browsed through the bug reports on Mozilla.org, because I was running out of options.

One of the neat things about having the web as a resource, and having an obscure problem is that usually one of two things happen: (a) you search for the issue and the solution jumps right out at you. Or (b) you search and can't find anything. At first you might think (b) was a bad thing, but in fact, it can be good news. It can mean that chances are you just doing something so dumb that you've managed to invent a problem where there isn't one.

And that's what I did tonight.

Every time I reloaded the page to see if caching worked, I was holding down the shift key. I was doing this totally without thinking. As every good Firefox user knows, holding down the shift key during the reload process intentionally turns off caching. That's its whole point. And I'm so used to reloading pages like that, it never occurred to me that I was defeating the one thing I was testing.

So once I stopped holding down the shift key, I realized that my caching was working just fine.

Ahhh, the joys of programming. Gosh I love my job.