Archive

Archive for the ‘fun’ Category

An open letter to DROID

December 10th, 2009

This morning, I received yet another smug text message from a new DROID owner.  Please, allow me to address all of you at once with this open letter:

Dear DROID,

Congratulations on getting to the party, two years late.  Things are already starting to wind down and walking around telling everyone how cool your baby-blue polyester leisure suit is just makes you look desperate.  You should know that even Windows Mobile got here on time.  I heard that Blackberry gave you the wrong address, I am supprised that you found the house.  And yes, you are the only one who cares that you are here.

I should tell you that my buddy, G1, told me that your girlfriend (Android TM) is sleeping around.  A LOT.  You are totally going to catch something, dude.

Sincerely,

iPhone, Blackberry, and Windows Mobile users the world over

P.S.  No matter how many times you go to the gym, you will never look like iPod does.  Just sayin…

fun

What do “comeuppance” taste like?

April 6th, 2009

Not long ago, someone very close to me recently informed me that they were becoming a vegetarian.  Curious, I asked, why?  I was sat down and patiently lectured that she recently did some reading and discovered that vegetarians live longer healthier lives.  Furthermore, since we were not meant to eat meat, she would march forth with resolve and refrain from taking the lives of animals for future nourishment.

The very next day, we decided to go out to one of our favorite restaurant for lunch.  Being an Indian restaurant, they had an excellent selection of both meat and vegetarian dishes.  My new-found-vegetarian wife’s favorite dish, butter chicken, appeared to be on the buffet that day.   As we approached the counter, I saw her resolve sap away as she noticed the presence of the tasty looking dead chicken pieces awash in sweet buttery tomato sauce.  Grabbing a plate, she explained to me that she would start being a vegetarian “tomorrow” and that she would be having the tasty butter chicken.

As she tasted the first piece of “chicken”, I noticed an expression forming across her face.  It looked something like this:

398338226_1b6601d9ea

As it turned out, the “chicken” was not really chicken at all.  The sign was wrong and swiftly corrected after we inquired about it.  Apparently, the “chicken” was really paneer - good, but something of an acquired taste and certainly a shock to ones system when one was expecting an entirely different texture.  So, as we both learned that day, “comeuppance” taste much like Matar Paneer.

If you are curious, my wife took that event as a sign, and now, a month later, is still solidly vegetarian.

fun

From the “When I was your age” department

January 18th, 2009

Back in my day, we used to have to walk to school.  In the snow.  Uphill.  Both ways.  And we liked it!

Okay fine, I took a school bus just like you.  But, back in my day, we would sometimes see these dreaded words when coding/debugging in C or C++:

Segmentation fault (core dumped)
#

At that point, the feeling of dread sets in.  Its obvious to you, and anyone shoulder surfing, that you were not careful with your memory allocation.  To boot, if your application was any more complicated than say, “Hello World”, you would be faced with the task of firing up GDB, loading the core file, and tracking down exactly where you went wrong.   While being able to do this is indespensible, I have always found prevention to be better than the cure.

While working on my new project, I wanted to know how I was doing with memory allocation.  Enter Valgrind:

st-george-dragon

Valgrind is useful to help you find memory leaks and identifiying when you are accessing memory that has not been allocated.  Additionally, it will find incorrect uses of the free/delete operators.  Valgrind does this by running your program in a simulated, managed environment complete with a simulated CPU.  Effectively, while your program is running under Valgrind, it is being treated as if it were Java byte code.

To use Valgrind, first modify your make file to use the -g and -O0 options. This will turn on debugging information (so you get line numbers) and insures that the compiler is not running any optimizations (which is the default mode).  Keep in mind that your program will run many orders of magnitude slower when running under Valgrind.

Once that is done, simply run your program like this:
valgrind --leak-check=yes myprog arg1 arg2

To find out more about interpreting the error messages you get back, look here.

fun

Pining for the arcane arts…

January 4th, 2009

Not to show my age, but my college started us out programming in C, not Java.  After a few classes of that, we were allowed to take a class called Object Oriented Paradigm, which was really shorthand for Booch’s notation and C++.  My first job out of college involved C to a degree and then I spent 4 more years doing C and C++.  All the while, I managed to keep a small CircleMUD code base (written in C) going in my spare time.  All in all, I loved it.  However, there were problems.  At the time, I was building ground control software using the Motif toolkit and Roguewave libraries.  The requirements for the software we were building often necessitated sophisticated controls.  Motif was many things, sophisticated (in modern 2001 terms) was not one of them.  We were spending the better part of our development time on trying to compensate for sub-par libraries.

At that point in time, Java had really just started taking off.  I did some research and wrote some prototype user interfaces (using AWT at first and later Swing).  Selling an entity that is not accustomed to change on rewriting the ground control software for an entire installation was largely an uphill battle, but one that we won.  We were able to show (with solid metrics) that developers would be more productive using Java for non-real time systems and be capable of building more sophisticated interfaces and applications in less time.  It was a great success that came with a free side of portability.

As my career progressed, I found myself working on enterprise scale web applications.  Specifically, I was usually working on the server code, but periodically ventured into the client code as well.  The client code we were writing was using the Struts framework.  For the life of me, it felt like everything I did required me to do something to make Struts happy.  Everything seemed like a chore - the framework could not get out of its own way.  I opted to look elsewhere and found Ruby and Rails.  The Ruby language is elegant, easy to work with, and has an amazingly complete library at its disposal.  The Rails framework makes development of web applications almost trivial (well, as trivial as it can be).

I woke up the other morning with a certain irrational desire.  For some strange reason, I find myself longing to dabble in the dark arts of C and C++ again.  I miss screwing with pointers and memory allocation.  I miss compiling.  Not generating byte code, but real honest to goodness compiling.  I did some looking around and re-experimenting with distro’s and discovered that openSUSE 11.1 and KDE 4.1 is hot!  Really hot!  Dig this:

Screenshot

Hot, right?!?

I spent some time this weekend dusting off my tomes on C, C++, sockets, semaphores, and shared memory.  Over the next few months, I am going to spend some time looking at the KDE libraries and will hopefully love what I find :)

fun , , ,

Slackfest 2008!

December 19th, 2008

Slackfest 2008 (only slightly dampened by a power outage) officially started yesterday!  I have a four day weekend during which I will do nothing but “man/geek” things.  I started out the festivities by some copious online gaming (World of Warcraft) with Luke.  Unfortunately, National Grid put the kibosh on that shortly after lunch.  You’d think that as a power company, that they would be slightly better at their job.  Apparently, they suck at it.

On the agenda of things to do:

  • Install Debian Etch on my Powerbook G4
  • Refactor Jarhunt some more
  • Start a new free software project (I miss compiling, more on that later…)
  • Get some exercise
  • Sins of a Solar Empire marathon multi player battle

First things first though… Living in New England, we are in for a few days of nasty snow storms this weekend.  I’ll need some food and will not necessarily want to leave the house to get it.  To deal with this, I made enough stuffed peppers to tide us over for the better part of the weekend.

If you want to follow along at home, you’ll need the following ingredients:

  • 12 large green bell peppers
  • 2 pounds of veal
  • 1/2 pound of beef
  • 2 Table spoons salt
  • 2 White onions
  • 2 Scotch (fracking hot) Bonnet peppers
  • 2 Table spoons of chili powder
  • 1 Table spoon of crushed red pepper
  • 4 Table spoons of Italian Seasoning
  • 2 (large) Table spoons of roasted minced garlic
  • 1 bag of extra sharp cheddar cheese (grated)
  • 3 Table spoons of olive oil
  • 3 Eggs
  • 3/4s cup seasoned breadcrumbs
  • 1 cup brown rice (Basmati is awesome)
  • 1 Medium jar of tomato sauce

Alrighty then, a look at the raw ingredients:

Raw ingrediants

Step 1: Cook brown rice (2 cups of water, bring to a boil for 10 minutes, set to low, cover and simmer for 30ish minutes)

Step 2: Chop onions into small pieces, combine with garlic, olive oil, chili powder, Scotch (fracking hot) Bonnet peppers, and 1/2 of the Italian seasoning.  Simmer until onions start to clear.

When you start, it’ll look like this:

onions

When you are finished, you may have something like this:

onions_finished

Step 3: While the onions are cooking, wash and de-cap the bell peppers.  Place them in a cooking tray so that they look something like this:

empty_peppers

Step 4: Combine meat, crushed red pepper, cooked onion mix, rice, cheese, salt, tomato sauce, remaining Italian seasoning, eggs, and breadcrumbs into a large container.  Mix vigorously.

stuff_em

Step 5:  Insert goop into peppers.

stuffed

Step 6:  Put into preheated oven at 365.   Go run Wailing Caverns or otherwise keep yourself busy for an hour and 10 minutes.

Step 7: Extract from oven, let cool, and eat.

upclose

Well, that’s it for now.  I’ll post again with my progress on other things later tonight.

food, fun