07.18.08

Subversion checksum mismatch

Posted in Uncategorized at 7:20 pm by Jim

Early on on a project we had an class called ‘document’.  As things went on, not only did that object become more of a ‘file’ but a new class came along that really was more of a ‘document’ but we called it an ‘exhibit’ (since ‘document’ was taken).

Well, the other day I finally bit the bullet and renamed things.  Unfortunately, somewhere in the middle of having the old class vacate the ‘document’ name and the new one move in - subversion got thoroughly confused.

There are some scary ways out there to get around “checksum mismatch” in subversion but this one really made it simple and worked just fine.  I figure a solution that fixes a potentially scary problem in 5 minutes (and without the need for a helmet) is worth passing along.

In other news… git will be coming soon to our project.  To be continued…

(and no, we didn’t really name a class ‘File’)

07.14.08

Klingons need not apply

Posted in Utility tagged at 8:26 pm by Jim

I ran Monolingual on my machine the other day - it basically clears off languages that you are never going to use to save space.

If you’re like me you’re thinking: For a small amount of space… I might as well just keep Spanish around.

The thing is… we’re not talking about a small amount of space (I gained 2+ GB).  and we’re not talking about Spanish.  We’re talking about… Kannada… and yes, that’s right: Klingon.

Note:  Make sure to surf around for some recommendations before you run this puppy.  It’d be a shame of you removed all your English stuff and had to re-install the OS.  Thanks, The Mgmt.

07.07.08

Rails Upgrade Bumps

Posted in Ruby/Rails tagged , , , at 8:18 pm by Jim

After skimming the “What’s New” posts for several Rails versions without finding anything worth jumping at, it was time to upgrade.  While JSON enhancements (fixes) are the driving reason for the move, there certainly are a few “nice to haves” that I’ve been looking forward to checking out.

 

Partial Updates

Unfortunately, one of the things I’ve been looking forward to completely falls flat in my book… Partial Updates (to some extent: Dirty Objects).  

When I first read the paragraph-blurb about this addition I was pretty impressed and was looking forward to seeing how it was implemented.  I was much less impressed when I got my head under the hood.  Relying totally on use of ActiveRecord setter methods is a pretty big fail in my book.  Tracking down every place that a field is edited “in place” to specially flag it (xyz_will_change) is completely unreasonable and maintaining that rule going forward is an annoyance that I just don’t need.

I played with several ways of attempting to set flags when changes were “likely” (ex: when getters were used) or always flagging “likely to be edited in place” attributes (ex: serialized fields) but just was ending up with lots of additional complexity, reduced reliability, and basically voiding out any gained efficiency.

Having this enabled by default (apparently the plan) is just plain confusing:  Seems much more reasonable to enabled this when you know it’s going to benefit you.  I also don’t like that it adds another question for a new developer to ask (or get tripped up on) when joining a project.  I really don’t want to have to read every line of the new guys code for the first three months to make sure that he’s sticking to the rules (and setting up tests to verify it explicitly).

 

XML handling

Null values are now flagged as such instead of just being blank, like they would look if they were… uh… blank.  This is a good thing - it also tripped me up for a bit.

 

Eager Loading

It seems eager loading has been changed a bit.  Statements that used to result in :include items being joined right into a single large query now (may) result in several smaller statements.  

Does it make queries more efficient?  Probably.

Does it increase db traffic?  Probably.

Is it a bad thing?  Probably Not (overall).

Is it a bad thing that stuff that worked before doesn’t?  Yeah, that’s annoying.

My specific problem is on an association defined with a :select => “distinct labels.*”.  I played around a bit with potential changes down in the AR guts but in the end (unfortunately) I ended up basically tricking it into running it as a single statement.  It’s not at all difficult to make it happen but it’s also not at all straightforward - and I hate it when the framework makes me write a big comment.

For me, I added an :order to my find that would make it order by something in a different table, which scares the thing into running a single statement.  Ideally, I’d like to have something explicit (maybe on the association but more likely on the find itself) that would allow an optional param to say “run this as one statement”.  That would let someone reading the code clearly see what’s going on - instead of wondering (or more likely: not noticing) that I’m ordering by some pointless field.

 

Overall

Not nearly as bad as I had expected.  Felt good to get some deprecated stuff fixed and get some of my old TODOs out of there in the process.  Also good to have it (almost) over with and to, at least temporarily,have caught up with the Joneses.

06.14.08

Flood 1.0

Posted in Utility at 7:40 pm by Jim

Too bad that it’s come to this but having this mashup available is *really* nice.

WI route closings

 

Now if only I could have my 45 min drive to Milwaukee tomorrow instead of a map that shows me how to get there in 2 hours…

06.09.08

Legal Blogs

Posted in Legal at 11:36 pm by Jim

I’ve been following a dozen or so legal-industry blogs (mostly with a “technology slant”) in an effort to learn more about Nextpoint’s clientèle and some of the issues on their minds.  Of course it’s been a struggle to find a list of sites that are regularly providing me with things I find interesting but I don’t mind rotating candidates in and out.

One of the least surprising things I’ve found in my search for good sources is that the Wall Street Journal has a law blog feed that routinely holds worthwhile articles.  One of the most surprising things has been that apparently the feed is primarily monitored by kindergarteners.

Check out some of the comments on these posts (note: I’ve noticed that they normally do remove a lot of offensive comments, so they may not be as bad when you get to them)…

Appeals Court: Al Qaeda Defendant Confronts Accusers (Through Video

Crane Shame: Bribery Charges That’ll Make You Collaps

04.17.08

Blindfolded recruiting

Posted in Job at 6:15 pm by Jim

We’re looking for a Software Engineer in Madison, WI (posting here).  Let me know if you’re interested (halbergj@gmail.com).

A cohort of mine was asking recently how he might identify a “good development resource”. Never an easy question to answer, but even more difficult when it’s being asked from the perspective of someone who is admittedly not a “good development resource” himself (aka “blindfolded recruiting”).

Here’s a few quick things that can be evaluated by a non-technical resource and are likely to add up:

Passionate/Not -People who care about their jobs (and maybe even *gasp* like their work) aren’t necessarily better/worse than others…. but it’s a pretty solid indicator.

> What is the best (work related) book that you’ve read? and why, of course.

If the answer is something nerdy, great. Something else that could be someone related would be fine too though (especially if they came up with a way to tie it in on the fly).

> What blogs/sites/podcasts do you follow (and “do you blog”)? I’d throw “how about nontechnical ones?” in here to get a better feel for the person too.

Write the nerdy ones down and ask your nerdy friends about them later. Obviously if they blog you need to be out there reading their stuff to get a sense not just for their work (if it’s a technical blog) but for their style and personality.

> What sites embody “good usability” to you? Who would you try to emulate if you were building something?

Extra bonus points if they worked on the sites that they named. After they named something - pop open your laptop and have them point out what they like (and don’t). Maybe visit a couple other sites that you like +/- don’t and go through the same exercise.

Past Experience - If you’re not able to really analyze answers to technical questions, you’re probably going to have to trust their “track record” to some extent.

> Have you worked on any publicly available sites?

If yes, again: go check them out during the meeting/interview and have them walk you through some things that they worked on. What did they do? Why did they do it?

If no, frown at them and pause awkwardly for a couple seconds… but don’t take away any points. Bust the laptop out and go to your own site - have them talk a bit about what they like and don’t.

> References Available Upon Request.

Maybe you’re the kind of guy that doesn’t normally call those people… If you fancy yourself “good at reading people” but not good at “reading technical talent”, this may be a good idea this time.

Other Stuff and Misc - Of course, you’re going to need a bunch of other stuff to ask about or this is going to be a pretty short interview (not that that’s a bad thing).

03.26.08

The new Lab

Posted in lab, nextPoint at 7:48 am by Jim

We’ve been in the new office for a few weeks and have pretty well settled in. We’re in the perfect location in downtown Madison (the Machinery Row building) with a great space. We’re also hiring… if you’re interested drop me a line (halbergj@gmail.com).

my_desk.jpg
larger_view.jpg

03.12.08

Shell games

Posted in bash_login, shell script, svn, svnupall at 9:13 pm by Jim

Rob Sanheim’s productivity talk got me thinking about a shortcut that I’ve been meaning to create but never seem to get around to.

For quite a while I’ve had a line like this in my login script:

alias svnupall=”svn up /code/project1; svn up /code/project2; svn up /code/project3″

Normally it’s not that much of a pain to open that puppy back up and edit when I add/remove yet another project or branch that it should manage, but the cumulative effect finally got to me so I wrote a little shell script to just do it automagically:

all_np=”"
cd /SourceControl/nextpoint_source

for i in *
do
alias “cd${i}”=”cd /SourceControl/nextpoint_source/${i}”
all_np=”${all_np}svn up /SourceControl/nextpoint_source/${i};”
done

alias svnupnp=”${all_np}”

I decided the easiest way to come up with “which of these directories is actually a work project” was to add the “nextpoint_source” level… which made “cd /SourceControl/nextpoint_source/foo” annoying, so I dropped in that “cdfoo” alias. Of course, there are a hundred other little things that could be added there but we’ll see if I actually end up wanting them.

I’m sure there’s a better and more succinct way (what is it?) but this is already going to be much nicer.

Update: I forgot to mention that I don’t cd back out after what you see above, so I start out in my nextpoint_source dir (where I want to start 95% of the time).

02.20.08

So, uh. Which is it?

Posted in Usability, vimeo at 11:21 pm by Jim

Of course, the answer is: both, but there must be some way to restructure this thing.progress.png

02.19.08

blog love

Posted in blog, nextPoint, trialmanager at 12:11 am by Jim

Nextpoint (TrialManager) got some great attention recently over on Ajaxian.  Check it out.

The videos for the demo (more to come) can be found out here on Vimeo.

Nextpoint also has a couple of blogs running of our own.  Both are pretty young - hosted on wordpress, still using default URLs, styles, and all that good stuff - I’m sure they’ll be evolving shortly.

The company blog (aka “Frank”) is here and will contain content from our management team.  Should be some really interesting content on the direction of the company and how we’re positioned in the industry. 

Our Lab blog (here) has mostly been used for introducing and/or explaining functionality so far.  We’ll see how much it ends up to sticking to that vs having a feel more along the lines of the company blog.  I haven’t contributed out here yet but hope to in the near future.  

« Older entries