Apr 9

Claymore

Apr 9

When I started at my previous job, we were small-time. Sites were ASP or (horrors) ColdFusion talking to an Access database, and even that was only for fancy clients who wanted a record of the Contact Us form submissions from their site. We got a little bigger and a little better and we started rolling out small tools to manage pieces of sites (typically press releases or job postings). Again, ASP talking to Access. Like Mike Mulligan and his steam shovel, the more we worked, the better we got and then, like Mike, we dug ourselves into trouble. We built a site for a client with enough web traffic that Access couldn’t keep up (hard to imagine, I know).

Enter SQL Server. We tried to keep up the pretense this expensive piece of software was a one-time thing, but success here bred more work and attracted more clients who could justify the expense of a machine and a SQL Server web connector license or whatever the hell it’s called. This left reusable bits of code all over, but we didn’t have that many clients who needed their own server. We sucked it up and added a shared SQL Server for mid-sized clients so we could keep using the same code. At this point, some of the most inventive work being done in development was justifying why a new site wouldn’t work with Access. It wasn’t long before that second shared SQL Server came on line. Our codebase was driving our hardware and platform decisions.

This ossifies a company: if you can’t take on jobs smaller than six figures because you can’t hide the software licensing costs, you lose out on smaller jobs. That doesn’t look like a problem to a company in this state because they’ve developed a mindset that says, “We only work on projects that are worthy of our time and platform” (at The Daily WTF, this would be called “enterprise-y”). There was no reason we couldn’t have put MySQL or Postgres on Windows and gotten 90-100% of the same performance for free.  Small projects don’t add a lot to cash flow, but they can be portfolio pieces, they can turn into bigger jobs, they can create connections that lead to bigger jobs. If they do none of those things, they do wonders for development teams. They’re calisthenics. Clients with small budgets don’t have small plans; they want everything the guy at the next table is having, they just don’t want to pay his tab. “Do more with less” was the derisive slogan of the final season of The Wire; when it comes down from management, it is worthless. But when it’s baked into a (well-managed) project, it can force developers to step back and figure out how they can recreate the code they’ve been cutting and pasting in a smaller space. That’s the kind of challenge that not only keeps developers learning, but keeps them interested and in fighting trim.

Apr 9

Because, why not?

Apr 2

Pre-History

I didn’t make it for ‘81. ‘82. “Beat LA” is where I got my start. In ‘84 I was still young enough that I wasn’t allowed to stay up and watch the pre-Championship playoffs. I think this had more to do with my Dad’s MBA study group meeting at our house than my age (8+) or the time, given I was allowed to listen to the radio in my room. And tape the broadcasts, for some reason. Tree Rollins and Sidney Moncrief appear on casette tapes somewhere in this house, along with that George Carlin “Occupation: Foole” tape I made that ends a little early and reveals an old Celtics/ Pistons tilt in which Rick Mahorn dumps Johnny Most’s beverage all over the scorer’s table.

I made it to ‘84 and ‘86. Was there for ‘85 and ‘87 too. There for the rise of the Pistons (’88-’90), the faux threat of the Pacers, but all of that was terrific stuff for a sports fan.  Len Bias died, Larry’s back turned more trick than back, Kevin’s ankle turned into Home Depot, Reggie Lewis’ plumbing failed and the next thing you knew, it was just you, Tommy and Rick Fox. When I left for college in 1993, there wasn’t anything to leave behind. Gone, there were no reminders the Celtics existed once you left New England.

Restart

By the time I got out of college and got settled into something like adulthood, the Celtics were what the Bruins are now, Lucy with the football, just begging you to kick it this time, for reals. I signed on to the Pitino Era, as much out of loyalty to him (who’d made PC basketball into something to respect again) as them. Wiff #1: no Tim Duncan. Wiff #2: they beat the Jordan Bulls on Opening Night, get you hooked and then turtle. For about 5 years. They get Antoine, they get Paul, Paul gets stabbed, they make a fantastic playoff run, if the Eastern Conference Finals were your end goal in life. Even that gets blown up. Rinse and repeat.

Which makes this year so amazing. It’s out of nowhere. It’s a full-on Victory Garden blooming in a bombed-out alley. Forget Paul, Ray-Ray and KG’s amazing intensity. The people that make this year fun from game 1 to whenever it ends are guys like James Posey, Big Baby, the Hollywood story that is Leon Powe. Character guys who show up and go to work. ‘EEI callers are insistent on comparing this team to the Patriots even though the Celtics haven’t won a thing yet. It feels premature, it feels unnecessary (and it’s a little uncomfotable to have Murf the Surf from Dawchestah calling up to talk about “character” black guys, but that’s a different history). This run can probably last another two years, but if they don’t win a thing and fall apart next year, it was still a hell of a ride.

Apr 1

Where do I sign up for local weather alerts?

Mar 26

Dearest Self,

When designing and building a system, don’t just treat the base-level objects as black boxes (”as dumb as they can be, but no dumber”), but the modules they roll up into should be black boxes as well. That way, when you get pulled off progress on one of the modules, you can just tie things off and leave them. If they don’t support the few places they interact with others, they’re not done yet. Also, documentation never hurts.

Mar 21

I’m coming to (near?) the end of what can only charitably be called a “difficult” project. Unfortunately, I don’t think I will be working with any of the parties involved in the future. For future readers and my present sanity, this feels like a good time to define what I don’t do for a living; sometimes that negative space tells more about a thing than the thing itself.

I don’t work without specifications (requirements). Real specs, not three pages of bullet points in Microsoft Word. You don’t have to know it all when we start and it’s part of my job to get those requirements right, but it is a bad idea to put hands to keyboard before I know exactly what I’m doing. Every development project changes in definition from when it starts. That’s the beauty and pain of requirements. You sit down thinking it’s stupid to have to tell me what to do and then we start talking about what to do and the conversation chases dozens of tangents. Ratholes appear. Better to find them up front and deal with them (or pour concrete down them) than find out “Later”.

I don’t put together the requirements without talking to you. I don’t know your business, you do. Even if you just got hired last week and this is your first assignment, you still know better. You know who to ask (and who the office gossip says to avoid), you know where to go for answers outside your company and you know how to ask relevant questions that get helpful answers (compare and contrast with my: “So how do you guys ship stuff to people?”).

I don’t build the system for you. I build it for your customers, your users. It’s rare that you’re going to be a perfect example of your customer and even then, no. You can’t serve two masters (the application vs. career success). This doesn’t mean every project has to involve one-way glass, video cameras, white lab coats and a testing facility, but it does mean putting together some kind of test, even if it’s just simple hand drawings of screens to show to random folks in the hallway to make sure we haven’t missed something glaringly obvious. Oh, and about those paper protoypes: I don’t work without some kind of screen mockup. It doesn’t need to be the Sistine Chapel. It doesn’t even need to look like the final screen. We just need some kind of reference so when I hand in my work, there’s an agreed-upon set of things that should be there. This also saves me bugging you in the middle of the night, so invest in your sleep up front.

I don’t know anyone that handles scope creep well, but let me define that in my terms: changes or additions to the requirements after they’ve been fully thrashed out and after work has begun. Even as an hourly contractor, I get skittish. “Hey, it’s just more work for you.” Sure. But if it affects things that have been finished and vetted, it’s A Bad Idea. However, things come up and needs change. My rule of thumb is that if the change would alter how data is stored, then let’s suck it up and do it now. Otherwise that means the work has to get done later and data migration will have to be done. Better to do one difficult thing now than one difficult thing and one risky thing later. If it doesn’t change the data, we should talk about creating a “Things for the next version” list.

I don’t work without a QA person or team. This doesn’t have to be anyone with a degree and 100 years of experience in Quality Assurance. It just needs to be someone other than me who can run through the system as a user, spot things that don’t match the requirements and tell me about them in a meaningful way, e.g., “Here’s what I did, here’s what should have happened, here’s the big explosion I got instead” as opposed to “COMPUTER BAD!” I’ve never met a developer who could qa their own work, myself included. After spending weeks or months or years designing the flow of things, we have a bad habit of “testing” the system by using it in the exact fashion it was designed (”Click on this button, then give it a value between 1 and 10 but never a decimal and then wait five minutes”) instead of beating on the thing until it can withstand all challenges.

After all that, surprisingly, there are some things I do do*. Email me at tclancy@gmail.com if you want me to do them for you.

I know it comes out like “doo-doo” and I know that was a poor way to phrase the fact I know it, which was even more fun.

Mar 20

Digsby shows up just at the right time for me. I like Pidgin fine, but it’s not a Windows version of Adium and it feels clunky. While Digsby’s Twitter/Facebook/Email integration is nice and I appreciate being able to sync all of my logins so it works on any machine I use (at the price of giving up all my logins to some machine in the sky), some of the subtler features are what sold me (for the 60 seconds more I’ve been using it than you have). I like being able to only accept IMs from contacts since I get IM spam most of the times I sign into Yahoo. I’m sure Pidgin offers most of the useful features, but well, this is new so it must be better. More useful details at Lifehacker.

I’ve got to rein in all these windows it’s popping up though. It doesn’t seem to understand the concept of multiple monitors or when it has focus. I have no idea why I added my Facebook login since all it’s going to do is generate a stream of shit aggregated from elsewhere. Facebook feels like a half-assed version of FriendFeed given the way my contacts use it. Oh, there. It just popped up with a status update I don’t care about. Hooray for Facebook invading my desktop. Time to live: 2 minutes.

Mar 18

In the interest of patching up, E from the eels has invited the President to a concert (or three). No word from W’s lady-in-waiting yet.

Mar 16

« Previous Entries Next Entries »