Author Archives: seanw

Making OO Better

I read “Object-Oriented Programming — The Trillion Dollar Disaster” recently, and I have some thoughts on it I’d like to share. I’ve written a lot of code over the years in a lot of languages, and while I agree with some of Ilya’s argument, I don’t fully agree that existing OO languages are inherently broken — just their current usage patterns are, and usage patterns, the way we think about using our languages, are something that can be fixed.

Sit back. This is gonna be a long one.

Continue reading

Comments Off on Making OO Better

Filed under Uncategorized

Decaf

I’m apparently a person who now drinks decaf.

I didn’t drink coffee at all for most of my life, and honestly for a long time I couldn’t stand it. But back in 2016 when my daughter was born, the options were “learn to drink coffee and survive having two kids,” or “die now.” Wisely, I chose coffee, and now, I can’t get through a day without a hit of caffeine in the morning.

This morning, after my first cup of coffee, I wanted something to sort-of maintain the alertness, but I didn’t want yesterday’s jitters from coffee, so I dared to brew a cup of decaf. I’m drinking it now, and it’s actually pretty good. This is a revelation to me: Not only have I taught my taste buds to tolerate coffee, but now I drink it just for the flavor.

Young me would be aghast. But young me isn’t young anymore. And here we are.

Comments Off on Decaf

Filed under Uncategorized

Hello, Suvoda!

I started my new job this week, working for a company called Suvoda, in Conshohocken, PA. They run clinical drug trials, which means that in a literal sense in my new job, I get to use advanced computer science to help cure cancer.

ROCK ON.

The place is really neat, and while I’m still getting used to it, I love the vibe there. We’re doing good things for the right reasons, and I get the absolutely delightful side benefit of working with a few old friends, too. The company is healthy and growing, and everybody’s been incredibly friendly. I’m looking forward to doing great things with their teams there and helping them to have no end of successes.




So why Suvoda? Why not somewhere else?

When I left my last job in April, I was looking for three things: I wanted to find a place (1) where the people were smart and dedicated, (2) where there was a focus on making good-quality software, and (3) where my job would be beneficial to humanity: Where I was doing good things for the right reasons, and not just to benefit the company’s bottom line. I interviewed at a lot of companies over the last six months, dozens and dozens of interviews, and while some jobs had some of those three criteria to varying degrees, Suvoda was the only one that really nailed all of them.

“Curing cancer” is a set phrase for “doing good in the world,” and Suvoda is literally in the business of curing cancer. I get the privilege to be a part of something that unequivocally makes the world a better place. My part is a small part of that whole equation, but if I can even slightly tie my work to somebody someday no longer suffering a terrible disease, I’ll be living a life that I can be proud of, and that matters: When you someday have to stand before Saint Peter at the Pearly Gates and he asks, “Well, so tell me, what did you do down there?” you want to have an answer far better than just, “I made lots of money!”

That said, there are a few downsides — no job is perfect! — but they’re small and manageable. The first is that the commute is longish, averaging about 45 minutes each way (best this week so far is 35 minutes, worst was about 70 minutes). I’ll be spending a bit more on gas than I used to.

The second is that since the commute is longish, my personal time is much shorter than it used to be: If you don’t hear back from me during the work week, it’s because we have kids to feed and water and put to bed in the evening, and 6:00 AM comes around pretty darn fast in the morning if you don’t get your keister heading to bed by nine. (Today’s a Saturday, and I “slept in” — I woke up at 6:30.)

And the third and final notable downside is that I’ve signed dozens of nondisclosure agreements this week, mostly for legal and safety and patient-privacy reasons — all of which are good reasons to be signing NDAs, and I’ve signed them quite willingly.

But that means I can’t tell you pretty much any more than I’ve already said about what I’ll be doing at Suvoda 🙂




But my job search is finally over, and I’ve found myself a new place to call home, a place where the people are nice, the pay and benefits are good, and the work is meaningful and the right thing to be spending my time and energy on. May all of you find such purpose.

1 Comment

Filed under Uncategorized

The Search Begins Anew

I had myself a nice break of a couple months after leaving HomeNet — and I really needed that break! — but it’s time to go back to being employed somewhere. I miss having a source of external purpose in my life, and a team to make things with. So I’ve updated my résumé (or CV, for you Brits in the audience), updated my LinkedIn profile, and here we go off on a new adventure —


My résumé, July 2019.

I’m now talking to everybody, any recruiter willing to take my résumé, because I’m hoping that if I cast the net wide enough, I’ll eventually find that place that’s right, whatever it may be. So if you’re a recruiter or hiring manager and you think you have a good opening and you want to say hello, please don’t be shy about calling or e-mailing!

What am I looking for in a new job? I’m looking for three things:

  • I want to work with a team of dedicated, smart colleagues, who genuinely care about what they do and who really want to make great things. Don’t tell me you’re “working for the weekend.” It’s quite okay if you work nine-to-five — and you should have a life outside of work — but I want to be with people who when they’re in the office are truly passionate about what they do.
  • I want the company to care about quality. Lots of companies will give lip-service to quality work — of course we want to make good things! — but whenever there’s any pressure, quality goes out the door, and we have to ship yesterday. I don’t mind the occasional crunch time, but the intent matters: The company should care about making good products and should be occasionally willing to put their money where their mouth is.
  • I want the job to matter. Not just be necessary for the company’s bottom line, but to be meaningful in the world. That doesn’t mean we have to be curing cancer, but it does mean we have to be doing more than just fattening the CEO’s paycheck: In some small way, the company (or at least the role) should be making the world a better place. I need to be able to look in the mirror at the end of the day and say, “You did something important today.”

That’s it. It’s not really about technology: I’ve worked on dozens of technologies and technology stacks in my years, and I’m sure I’ll work on dozens more. Pure tech for the sake of tech doesn’t excite me anymore, if it ever really did. What I’m looking for is something a little bigger than that: It’s about making good things, with good people, for good reasons.

Think that’s something your company offers? Think you have a place for someone who’s a 10x programmer, who speaks dozens of programming languages, who likes writing documentation and unit tests, who likes training and mentoring others, and who thinks fixing bugs is an absolute delight? Feel free to send me an e-mail or call me!

Comments Off on The Search Begins Anew

Filed under Jobs

Goodbye

Today is my last day here at HomeNet.

It’s strange, surreal, and unbelievable; but it’s necessary.  I don’t know what’s next for me, but I know that it’s time for next to happen.  I did many good things here, some even worthy of note, and I think I had a good run — but everything must someday end, and the next page must be turned.  This chapter ends — but a new chapter begins, and though much of the wild cast who enthralled in the last will be gone in the next, I still hope my next will be as amazing and crazy and wonderful as this chapter before.

So to all of you, to all my friends and colleagues, to those whose stories continue here, I offer one last aspiration, one last wish, one last hope:  We each get only one chance to tell our story — a few short years in this world, and then our story is done, to make room for the stories that must come next.  So whatever it may entail, whatever future you may follow, whatever goals you may pursue, make your story amazing — because the great stories are the only ones worth telling.

With love and respect,

Sean Werkema
Principal Software Engineer
HomeNet Automotive

sean@werkema.com

Comments Off on Goodbye

Filed under Jobs

Tonight’s lovely phone call

Thick accent. “Hello, my name is Ree-chard Lee and I am calling from Department of Computer Support.”

Me: “Er, I didn’t really hear that, who are you again?”

“I’m sorry. My name is Ree-chard Lee, and I am calling from Department of Computer Support about your computer. Are you seeing white dialog box on your computer?”

Pause.

Me: “Er, for the record, you do know you just called a computer scientist with thirty years’ experience, right?”

Click.

I probably should’ve kept him on the phone longer just to waste his time, but dang, it’s been a long day, and I’m too tired even for that kind of fun.

But maybe if he calls back…

Comments Off on Tonight’s lovely phone call

Filed under Uncategorized

Chapter.Next()

I quit my job today.

Well, to be specific, I gave three-week notice, but by the end of this month, I’ll be a free agent — which is to say: Unemployed.

The time was right for moving on. I don’t have anything next planned yet — there’s no job waiting in the wings, no next gig, no next source of income — and that fact leaves me a little nervous. But I have some savings, and it was still time to leave. You can, at least, reasonably hope to see a few long-overdue blog postings appear here.

For those still at HomeNet, I wish you all the best, and I’ll miss you. There is a new place out there somewhere that needs me, and after a little break, I’ll go find it. I have some savings, and I desperately need to not be involved in anything for a while — good, bad, or otherwise.

What happens next? I don’t know. I guess we’ll all find out together.

Comments Off on Chapter.Next()

Filed under Jobs

NPM

I swear there is no part of the Node ecosystem that isn’t a flaming tire fire. Does anyone ever design anything before implementing it anymore?

Try this example:

  • NPM is a package manager. But you can’t install packages from local source (i.e., on this computer) in older versions because NPM was only really designed to work with a single remote repository. (New versions at least let you add multiple remote repositories, as a somewhat hacky extension.)
  • There’s a workaround hack feature called npm link that lets you set up a symbolic link — a pointer — to a local package. It doesn’t work like a standard link command, so you’ll have some relearning to do if you want to use it.
  • But nevermind that learning, because npm link has no shortage of problems and bugs and failings and workarounds and workarounds to the workarounds. Also, it has disastrous data-destroying bugs on Windows.
  • But nevermind the bugs, because it’s not compatible with the normal npm install commands anyway, so the one use case you’ll have for it — installing packages from a local directory to make sure your design works — isn’t really usable with it anyway.

None of that would have been an issue with a little more advance thinking and a little less advance typing. Two small design changes early on — (1) allow multiple repositories to be listed in .npmrc and check them in order, and (2) allow the file:// protocol to point to a local directory of .zip files or tarballs as a repository — would have been enough to obviate all of this. NPM scopes, link, yalc, lerna, and a dozen other things built on top of the initial bad design would have been completely unnecessary.

But, no, can’t spend time on that! — you gotta move fast, be first, break things, change the paradigm, own the market, declare your IPO, and retire like a king. Never, ever design or plan anything, because that takes too long! Just shove something barely-passable out the door, and if enough people use it, make a slightly better layer on top to hide the roughest parts, and then if that gets used, another on top of that, and after enough layers, you might not even notice the sand you built on. After all, when you’re changing the world, who cares if anything actually works?

Comments Off on NPM

Filed under Uncategorized

SpaceMonger Redux, Part 2: The Project

I’ve wanted for a long time to describe in detail how SpaceMonger works. It’s been more than twenty years since I wrote SM 1.0, and there were a lot of innovations in SM 2.1 that I still really haven’t seen appear in any discussions elsewhere: I worked really hard to make SM fast and as smooth, even on the ridiculously limited computer hardware of the early 2000s.

Part of the work in making SM 2.1 was finding and using unusual algorithms that aren’t given much attention outside computer science literature — and part of that work was discovering and inventing new algorithms that, to the best of my knowledge, haven’t been published anywhere since. In this series of articles, I aim to fix that fact: It’s bothered me a lot that I’ve been hoarding some knowledge over the years, and it’s well past time that I share it.

Continue reading

Comments Off on SpaceMonger Redux, Part 2: The Project

Filed under Programming

SpaceMonger Treemapping Redux

I was asked recently (for the 97,000th time), “I loved the treemap layout algorithm in SpaceMonger. I’d like to implement something similar. How did that algorithm work?”

I’ve been meaning to write a few articles on this for a while now, so here we go with the first one: How did SpaceMonger 1.x’s treemapping work?

Continue reading

Comments Off on SpaceMonger Treemapping Redux

Filed under Programming, Uncategorized