Over the past two and a half years that i’ve worked at my current job, we’ve had a white board where every now and then someone will scribble up something a member of the team says. Some are profound. Some are silly. Some are complete inside jokes that nobody else would understand. But i thought it would be fun to present a few of them here (perhaps with a little commentary) to share our wisdom with the world.

We’re going to untickle the tickle – HM

In code-speak, when you exercise a portion of the program in a new way that causes a bug, you’ve ‘tickled a bug’. It’s something that doesn’t normally happen, but due to whatever circumstances, this particular time the bug rears its head.

Try to preserve the inert functionality of existing code – anon

We were rewriting a piece of code – doing a replacement because the existing codebase was not maintainable. Why in the world would we want to keep functionality that wasn’t even used by the old code when the whole point is to clean things up? Shows you where old management’s head was at the time.

Stoppy stoppy is bad – BX

Yes it is. We don’t like stoppy stoppy. Things must GO!

FATAL by default – MP

It sounds like a cool name for a rock band. In this case it’s nothing so glamorous. It simply refers to the fact that in our logging system, we only log fatal errors by default.

Did you pull a D? – GR

One of those inside jokes. D is a great programmer. However, he would often do a very large checkin on Friday night and then go on vacation for a week. Inevitably he would introduce a bug that we’d have to deal with while he was gone. He wasn’t the only one to do this. Hence the saying.

Qualify the fact that they aren’t qualified – PC

When working with incompetent 3rd parties, it’s important to be able to let management know exactly WHY they suck.

It’s hard to quantify with numbers – GR

Uh, who hired this guy? :)

I give you my word that you can trust me – anon quoting Lex Luthor

Referring, of course, to Product Management and their ability (or lack thereof) to stick to the agreed upon schedule/task list regardless of customer pressure.

‘Can I ask for a translation?’ (Guy); It’s the bomb! -SH

I guess the dazzling slide show and tech speak just wasn’t cutting it. Had to dumb down the presentation to get the point across.

Watch with detached amusement – DM

On how we should be thinking about the company and its pursuit of funding after it almost shut down and 90% of the workforce was laid off.

Simple to use for the un-nerdly – anon

On what makes a great UI. This is in direct contradiction to one of my personal favorite quotes:

If it was hard to code, it should be hard to use – Klingon proverb


We will let you know our findings as soon as we find them – SH

When in doubt, this is the answer.

You can’t solve an organizational problem with a technical solution – MP

Referring to differences between engineering teams and difficult personalities and management putting their head in the sand rather than making some hard decisions that might offend someone.

Snazziness comes from snappiness – DM

A fast UI (that might not be super flashy) is preferable to a UI that looks amazing but is sluggish. Of course, the worst of all worlds is an ugly UI that’s also slow.

Share

Many people may have heard that the company I was working for laid everyone off.  Let me just say that the reports of my joblessness have been exaggerated.  I am employed and happy as ever (in fact, more so than before.  More on that in a bit).

Here’s what happened.  I knew that there were funding and financial troubles ahead at the company where I worked.  The previous management had burned through piles of cash and completely mismanaged things.  Combine that with a poorly executed business strategy switch and a soft economy and it all amounts to: We ran out of money.  Like i said – i knew this was the case.  But i assumed there were 2-3 months of life left.  And to be fair – there were 2-3 months left.  But rather than run right to the end, the CFO and the board shut the company down ahead of that in order to pay out severance and vacation to everyone.

Which means … we all showed up one day, got herded into a meeting, and told we no longer had a job.  They then handed us our final check (which included our regular check (pro-rated of course), our vacation payout (which was really nice for me since i had my vacation maxed out), and a bit of severance).  Well, after the initial reactions wore off, i began the job hunt in the afternoon.  I had several interviews lined up in no time.  It seems the software developer job market is doing ok at the moment.

During all this, my wife was out of town at girls camp (and also out of phone range).  So she had no idea of anything going on.  I was going up there that night to help out with an activity, so i was debating whether to even tell her about this.  Should i ruin her girls camp trip, or keep mum and catch hell on the flip side for not telling her?  Decisions, decisions.  In the end, i felt she deserved to know.  And she took it in stride.  She wasn’t worried and had confidence in me to get another job soon.  No stress … but thanks for the faith :)

The very next day i get a phone call from the founder of the company (the only guy who’s had a level head through all this).  He actually had the guts to show up to the lay off meeting.  Kudos to him for that.  He had been working very hard on getting more funding and was close – but some of the board members (who were also major investors) just wanted out.  As a result, he wasn’t able to keep things going.  But back to the phone call.  “Good news – i’m going to personally fund a small group of people to come back and keep this thing alive while i finish my funding efforts.  Wanna job?”

Let me give you a little history and context for my answer.  Just so we cut the suspense: I accepted and came back the next day.  In fact, i even got a raise out of it… Go figure :)   But why did i say yes?  I mean, the day before i’d been laid off.  Shouldn’t i be a little annoyed at everything?  To be sure, i was slightly put out.  And i had one firm job offer and several other interviews lined up.  But as was previously mentioned, i’d seen it coming and was somewhat prepared mentally.  And we were SO close to releasing the product.  This is probably the main point that brought me back.  In all of my career, i’ve always been “so close” to having something out in the world that i’ve personally worked on.  But it’s never actually made it.  In other words – nothing i’ve ever coded has seen the light of day.  I may as well have not bothered and the world would be the same for it (except for the obvious fact that some of you might mention: i got a paycheck and fed my family).  So i couldn’t resist another chance to bring this to fruition.

So what’s it like now?  There’s a grand total of about 20 people here.  It’s like a ghost town.  But man – it’s fun.  Ghost town, wild west.  No process, no red tape.  Just pure start-up mode.  I go into work, i write code all day, i go home.  Previously, i was in meetings and phone calls and responding to email, doing presentations, talking to engineers.  95% of all my time was doing management tasks.  Now i spend about 5% of my time managing, and the rest just coding.

In short – i’m happy.  And the mood around the office is positive and upbeat.  We’re all hopeful that the funding will come through and we’ll get a chance to see this thing come to fruition.  Stay tuned over the next few months to see how it turns out.

Share

I’m in a weird slump at work. I enjoy my job, generally. But i’ve really missed coding of late. I rarely have time at work to do anything coding-wise. And usually when i do get some time, it’s a half hour here, an hour there. Not enough to really get into anything. So i write emails, update documentation, go to meetings, wander around and make sure nobody is blocked on something, etc.. Typical managerial life i suppose?

Lately, however, i’ve really been getting the bug to code. It’s what i enjoy most. My only solution is to spend time on the weekends or late at night after everyone is in bed. The problem is … code what? I don’t have any ongoing projects at the moment. My website is stable and does what i want. I’m sick of rehashing my inventory program over and over (although i probably will create a mobile version eventually). So i’m sitting there on Saturday trying to come up with something to do when i decide to play around with the twitter api’s.

They’re really simple – just fetch a url with a couple of parameters and parse the results. Easy peasy. So i decide to start playing around with writing a twitter application that will fetch all of a persons tweets, retweets, mentions, and replies and store them in a local database. It will be smart enough to be able to run incrementally after that to only retrieve new stuff since the last update. Stick it on a cron job, let it run, and the database fills up.

Not sure what i want to do with the data once i have it, but hey – that’s a problem for another day. I could create a webservice to fetch it and display on a webpage. I could integrate it into my blog. I could write a mobile app to view it. Maybe link to something on facebook. Whatever. The important part is to just make sure i have the data now before it’s inaccessible (twitter only lets you go back so far via their api calls).

Great – i did that. But it didn’t satisfy me. I wanted to do more. Enter Chuck Norris. He’s the man. You know all those awesome Chuck Norris “facts” floating around? No … well, go look up “chuck norris facts” on google. Or better yet, do a twitter search for “chucknorris”. Suddenly i’m hit with a great idea.

I want to write a widget for android. A widget is a small app that runs on your homescreen that does some specific function. My widget will be a picture of Chuck Norris’ face. When you click it, it will do a twitter search for “chucknorris”, grab a random quote and display it to the user. How awesome is that? And since i’d already done all the hard work of figuring out how to deal with twitter, that only left learning how to write a widget. Turns out it’s not that hard. I had one up and running in 3 hours.

Next dilemma – free or for-pay on the market? i’ve got a free app already. It’s got around 9,000 downloads currently. People generally seem to like it. Would they pay for a Chuck Norris fact widget? Maybe i’ll make version 1.0 free, and i’ll create a for-pay 2.0 version that adds something, like the ability to share a quote. Hmm … ya – that could work.

Share


I can’t remember how many times i’ve heard one of my co-workers say “i had this great idea while i was in the shower this morning”. Seriously. Come to think of it, i’ve said it a few times myself. And they actually are good ideas! I think every office should make it mandatory to take a 30 minute shower during the day.

Let the ideas flow!

Share

Have you ever worked on a project on your own time just for fun and then had it go horribly wrong? I started work on a project for my Android phone that dovetails nicely with the project i’m doing at work. Unfortunately, my boss got a little overly excited about it and sent an email to the executives telling them all about this cool side-project i’m working on and now their expectations are set that it’ll be this great thing. Suddenly something i was just doing for fun is now an obligation with unrealistic expectations. And to further complicate the issue, i’ve run into a technical difficulty which could take a long time to resolve. And it’s not something i really even want to delve into. If i’m doing a project for fun at home, it should be fun. I just don’t see this going anywhere, and i don’t want to continue doing it. Thus my grumpy mood as i try to decide how to proceed.

Share

Today at work we had a company meeting in the morning where the CEO gave a speech and big hoora about what the company accomplished last year, etc..etc.. (there were refreshments and videos and speeches and lots of clapping, you know how it goes).

Anyway, the funny part comes later in the day. Our group is sitting around just chatting (it’s 6pm, most everyone has gone home) and one of my co-workers is talking about how he played solitaire on his new iPhone all during the meeting and didn’t win a single game. As he’s saying this the CEO is walking up behind him (turns out he was looking for one of the guys in our group to ask a question). I can see him approaching, but my not-so-lucky co-worker is facing the other way and doesn’t see anything. As my co-woker finishes his solitaire rant, the CEO walks by and asks “how did you like the meeting this morning?” We don’t think the CEO heard the solitaire comment and all got quite a laugh out of it (of course, mr. solitaire was a bit nervous for a few minutes).

Share
Feb 112005

At work I’m in the midst of a large project and we just got some breathing room (the initial release was pushed back by two weeks), so I decided to do a little refactoring1. When we started this project, it was a group of simple applications, and for each one we needed a small database to back its functionality. As the project was fleshed out, we discovered that there were many common elements between the data elements of the applications. So now, rather than continue to duplicate effort, I am in the midst of combining the seperate databases into one that will handle all the common functionality.

So what? Well, I decided to try something a little different. Rather than just have a bunch of sql files with my database creation syntax, and other files with er diagrams2 and other files for the data dictionary3, I wanted a single file that contained all of the information I needed and the ability to view it in different ways.

The solution? After a little thought, it became obvious: Use an xml document to describe the database and all relevant meta data, and then use xsl to transform the data into different views. This, in itself presents a few problems, but nothing that can’t be sovled.

Problem 1: Come up with an xml structure that will adequately contain all of the information I want to capture. I assumed that at least one, if not many such defintions already exist, so I did a few searches on the net and came up empty! How can this be? “Well, perhaps I’m not asking the right question,” I decide, so I take a different approach and the second time around I do find what I’m looking for. Unfortunately, it’s a spec by Microsoft that’s so … bloated … that it’s incomprehensible. It handles every possible thing that anyone might ever conceive of doing with it. Great … not what I’m looking for. I want this to be easy and useful. I don’t want to spend a week learning some xml definition; that would defeat the whole point of the exercise. Finally, I decide that I know exactly what data i’m trying to capture, so I will simply come up with my own xml definition. Here’s what I came up with (this isn’t an xml schema, but I think it gives you enough detail to get the point):

<database schema="">
  <tables>
    <table name="">
      <description><![CDATA[ ]]></description>
      <columns>
        <column name="" datatype="" size="" precision="" unsigned="T|F"
          allowNull="T|F" autoIncrement="T|F" primaryKey="T|F"
          defaultValue="" minValue="" maxValue="">
          <comment>
            <text><![CDATA[ ]]></text>
            <enumValues>
               <value val="" description="" />
              ...
            </enumValues>
          </comment>
          ----- OR -----
          <comment><![CDATA[ ]]></comment>
        </column>
        ...
      </columns>
      <constraints>
        <foreignKey name="" column="" foreignTable="" foreignColumn="" />
        ...
      </constraints>
    </table>
    ...
  </tables>
</database>

Obviously there are many different directions I could have taken this, and some people would argue that the attributes of “allowNull”, “autoIncrement”, etc.. that I have on a column are really constraints and that the enum values are also constraints, but the whole point is to keep it simple for me. This captures all the data I need. I could also in the future add sections for stored procedures and triggers, etc.. etc…

Problem 2: I need three different XSL translators. One to convert the XML into a series of SQL create statements, one to convert it into a readable data dictionary (presumably an HTML document), and one to convert it into an ER diagram (presumably an SVG image). My partner in this project opted to take the weekend and write the three xsl documents. He loves that sort of stuff so more power to him. When I get them, I’ll post them here and also show a sample xml file and the resultant output.

I’m excited about this. It will be useful on all sorts of projects. I often find myself working with databases and anything that makes my life easier in that regard is a bonus. (Plus this is a fun little thing to do as a side-project; i realize i can always go and buy some software tool that does all this for me).



1: “Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure.” — c2.com


2: “An entity-relationship (ER) diagram is a specialized graphic that illustrates the interrelationships between entities in a database.” — about.com


3:: “A data dictionary is a collection of descriptions of the data objects or items in a data model for the benefit of programmers and others who need to refer to them.” —
techtarget.com

Share
Feb 012005

Catch a new dilbert every day at dilbert.com

Share

I was just taking a break from work and ran across a Dilbert comic that
really describes in a funny (as in funny, that’s too close to reality
for comfort) way something that recently happened to me at work.

I was tasked with doing Project A.  It had an arbitrarily tight
deadline of November 1st.  Why?  Because one of the execs
went out and made a stupid statement saying “we’ll have such and such
by Nov. 1!” and it was quoted in a few articles.  Joy.  At
the same time, Customer X says “We are really excited about this
product of yours and want a demo .. and we want it by November 1st or
else we’ll go with someone else.”  Well needsless to say, I
suddenly find myself working 12 hour days for 2 weeks, weekends
included.  At the same time, I’ve got my regular workload that
still needs to get done, and people bugging me all the time about
stupid stuff that they don’t seem to want to bother trying to fix
themselves …

What happens?  Well, Project A gets completed ON TIME, and then
… the lawyers jump in and say “woah, you can’t do that mr. executive;
we haven’t reviewed this yet. put the project on indefinite hold”. . .
great – so i just wasted a hell of a lot of time on that for nothing…

The project for Customer X gets done on time as well, but Customer X
says “that’s great that you finished but we don’t actually have time to
view your demo for about two weeks.  Check back with us then”.

GAAAAHHHHH!!!!

Oh, and here’s the comic that reminded me of this:

Please mr. dilbert people don’t sue me – i love your comics but i can’t link directly to this comic because it won’t be active in a month

Share
© 2013 The Hawker Squawker Suffusion theme by Sayontan Sinha