Wednesday, June 17, 2020

Interviewing Developers

My preference is to have the candidate bring in their own laptop if they have one, or to use one of ours if they don’t, and not to work on a whiteboard at all, but rather, to work in the development environment the candidate’s used to, with full access to the Internet and all that implies. I believe I’m a rarity in the world, though, as I’ve never been interviewed in this particular way, and I’ve written a lot of software standing at a whiteboard.

Tuesday, June 16, 2020

Interface or Abstract Class?


I primarily write server code in Java, for context.
I write interfaces in 2 primary situations:
  1. Any time I need a contract between major modules, or between my code and code someone else owns. The contract includes the interface definition(s) and all the types that pass through that interface. That’s a package, and is declared as such.
  2. Any time I design a general-purpose process which takes different implementations. Right now, for example, I am working on a machine that executes tasks in a sequence depending on the outcome of the previous task. The interface for each task has a single execute method which takes a process status object and returns one of 4 results, all of which are defined in an enumeration.
I seldom write abstract classes—but when I do, they generally implement an interface, and are intended to remove a lot of boilerplate code so implementers don’t have to fully understand the interface behavior to use it effectively. Abstract classes are a lot more common (and have a lot more use cases) in frameworks. Framework developers do this more than server engineers because their software is intended to be extended by others, whereas my software is usually intended as an end in itself.

Friday, April 19, 2013

Sometimes You've Just Gotta Draw a Line

I needed a short line in my HTML UI.  Turns out, you can do it with CSS. Here's the code that draws the specific line I needed:

<div
  style="height: 14px;
  color:white; background:white;
  position:absolute; left:77px; top:8px;
  transform:rotate(27deg);
  -ms-transform:rotate(27deg); /* IE 9 */
  -webkit-transform:rotate(27deg); /* Safari and Chrome */
  width:1px"/>

And here's a general-purpose kit for drawing lines a lot, which provided the clues I needed:

http://monkeyandcrow.com/blog/drawing_lines_with_css3/

So now you know.

Saturday, February 2, 2013

An Unreasonable Man

I was having a frank discussion with my boss this evening, trying to work out what's keeping our tiny development team from performing better.  He, nice man that he is, pointed out that "you are a reasonable man, he is a reasonable man, (the third member of the team) is a reasonable man--what is it that keeps you three from being an effective team?"

It wasn't until about 3 hours later that I realized what at least part of the answer is, and it's the root of what's been "wrong" with this team, and indeed, what's "wrong" with many development teams.  I am emphatically not a reasonable man. Where making software is concerned, I'm a distinctly unreasonable man. In fact, I'm pretty sure I'm a complete son-of-a-bitch. And the people I have loved working with the most are, themselves, unreasonable people. As you might imagine, this can cause a lot of friction in a development team, if the rest of the team is full of reasonable people who expect reasonable behavior.

In my defense, I'm pretty sure you can't make adequate software by being reasonable.

Monday, July 23, 2012

A Scout is Trustworthy

I was an Eagle scout.  I also held all the posts a troop of Boy Scouts of America could have, up to and including Scoutmaster. My folks made sure there was a Scout troop I could join wherever we lived; I believe (my memory is fuzzy, and I haven't asked) that they started my cub pack.

They say once and Eagle, always an Eagle.  I always believed that.  The latest overt action by the BSA has caused me to rescind that belief.  I'm sending my badge back, and I'm explaining my reasoning here.

Wednesday, May 16, 2012

OO, Ward, and Creole

Some interesting reading if you care about code:

Some solid reading on what OO means, and how to test it:
http://www.drdobbs.com/testing/240000411

Ward Cunningham on wiki, languages, and doing the smallest possible thing that works:
http://www.drdobbs.com/jvm/240000393

and finally: how to make your wiki talk to others' wikis:
http://www.wikicreole.org/

Tuesday, February 21, 2012

Software Fragility

I've been working on the same medium-sized application since March--about 6 months. It's been frustrating. The app is built in JBoss Seam, which I didn't (and mostly don't) know, it has several configuration errors and one serious coding error that has pervasive influence and will be extremely hard to undo, and unbeknownst to me, it has been locking up daily for over a year.