Medium Business Blues

As I was heading to bed last night, I posted a question on twitter: “What should I blog about tomorrow”. My friend Joe Stump quickly came back with this:
What needs are not being filled by the web for medium size businesses?

It’s an interesting question that made it hard for me to go to sleep (thanks Joe). But I think I have an answer

It’s not just the web… it’s all of software

The web isn’t the problem. I think medium-sized (and a lot of small) businesses are really lacking in good software. Even worse, a lot of the software they use everyday makes what they do harder. Like most things, it’s partly social, partly technological.

Sally, the warehouse manager, gets a new piece of software, and because she’s always used other people’s stuff and never written her own, she’s used to “following the rules” on the computer, and ultimatly jumps through hoops instead of trying to find a better way. It’s not her job to try to figure out what the software should do. So she ends up copying & pasting into Excel. She figures out to wait one second before hitting enter in that form, or else it’ll beep and lock up. She uses the “location” field as the secondary inventory, because isn’t not being used.

It’s not your fault

Your core business is selling wine, not supply-chain management. Even if you could hire a coder or two to make your operations more efficient, you’d extract more value by streamlining the buying of wine than making your warehouse manager marginally more efficient.

Let’s take an example: Amazon. What’s their core business (or was a few years ago)? Selling?… Selling what? They started with books, but their core business was shuffling goods around. Supply Chain. So what’d they do? They wrote it themselves. Now they have teams of robots and the infrastructure to bring on new suppliers instantly.

Jeff Attwood (by way of Joel Spolsky) wrote about core business coding in Programming is Hard, Let’s Go Shopping!. The conclusion is that even if the software is out there, doing it yourself gives you an opportunity to have a unique advantage.

It is our (the computer folks’) fault

When I started at the Wine Library, there were about 20 employees and a really rickety old POS system. That POS system did inventory, registers, (very very basic) accounting, and exporting to the web. After 7 years, a lot has changed, but we still don’t have great software for ANY parts of our operation.

Software is hard. Let’s fix it

How do we get to there from here?

I think the Agile methodologies point in the right direction. Amazing folks like Amy Hoy are helping lead the way towards user-centric, easy to use software that can solve problems, and make everyone happier and more productive.

But, I’m a freelancer…

So? Find a local business that’s big enough to need you, and small enough to really dig the savings they’d get by having some major part of their day-to-day easier and nicer. Not a UX person? Find someone to team up with. Coding is the last step in the process. Drawings, storyboards, talking, paper-models, all that “touchy-feely” stuff is how great software gets made.

Eat the dog food. Use this “great” thing you’ve built and see where the sticking points are

Observe the people who know more than you do about this part of the business. See what’s hard for them. Just because you know how to navigate a form by keyboard, doesn’t mean they should have to.

What about the Web?

None of this stuff precludes the web. All kinds of formerly desktop software is moving over (and has been for years). Why can’t supply-chain or call-center software do the same? Just be smart! Use SSL where appropriate, don’t store credit-cards, try to break your software with bad input.

Why Summer School Rocked

I almost stayed back a year in high school.

There was a very good reason… One I can’t fault the administration for: I didn’t do any homework. My mom tried (bless her heart did she try… and try…. and TRY). Nothing worked. I just found it all so boring and pointless.

I wasn’t one of those overachievers that went to Summer School to get ahead

I went because I had to. I fought so hard and made life hell before I got there. What I realized after a week or so was that I was having a great time. I always had my work done. Finished everything first. Was engaged… a star.

What happened?

Was it that the work was a bit easier than “normal” school? I doubt it.
How about knowing that my butt was on the line, and it was this or repeat a grade. Not likely.
Super amazing teacher? Nope (she was good, don’t get me wrong).

The power of focus

Surprise, surprise, I have ADD. Old school, missing the “H”, honest-to-goodness ADD. What made me a star at summer school was that it was ONE class, with one subject for a stretch. I could put the weight of my mind on a single problem at a time and focus till it was done. No distractions from other subjects… No getting overwhelmed by the crush of homework from everything else.

So what?

By now, you dear reader, may be asking, “So what? Why do I care? How does this help ME”. Here’s how:

ADD, ADHD, Aspergers or just plain lazy, it’s easy to get overwhelmed. We’re in the age of GETTING THINGS DONE, with action lists, next items and TO-DOs. If you can isolate one thing at time, and here’s the key, block out everything else. Ignore the rest of it, you’re much more likely to get it done, and feel a whole lot better in the process.

Feedback

Let me know what you think. Leave a comment, or just tell me on twitter… You don’t need a whole new TO-DO here. Just “@kastner You’re so wrong it hurts”, or “@kastner I was stuck in the bathroom at summer school… the entire time. (my zipper got stuck)”

New Theme, new day

I have a new theme!

After migrating my blog to a different corner of my server, I forgot to put my theme back (A custom version of K2). I’ve also had this grand plan for a while to make the theme of my dreams.

Instead of just waiting around for me to “find some time” (not going to happen), I decided to bite the bullet and use someone else’s theme.

The theme is Rusty Grunge from Chris Wallace.

I love the theme, and how easy WordPress made it for me to get everything set up the way I wanted. However, this is how happy I am about needing to use someone else’s code:
long hair

The problem with Girl Talk

Out of nowhere, I had the need to hear Nothing Compares 2 U. After grabbing it and listening, I keep expecting to hear Stuntin’ Like My Daddy.

The same thing happened to me back in the day on a commercial for Modern Rock (from time life) if I remember correctly. To this day I can’t hear “Der Kommissar” without expecting “tainted love” to come in during the hook.

This happen to anyone else?

redirecting to a wordpress post based on custom fields

Over at Wine Library TV, we number each episode (episode #608 just went live). To make this happen on the WordPress side (beyond just the title), we take advantage of WordPress Custom Fields (a really awesome feature).

Recently, I had the need to take in an episode number and redirect to that episode’s post page. For example, if they enter 608, they should go here: http://tv.winelibrary.com/2009/01/15/the-wines-of-bierzo-spain-episode-608/. I did a little bit of searching and didn’t find what I was looking for, so here’s the script (more or less) I ended up writing.

(If you can’t see it, visit it here: http://gist.github.com/47701)

It’s pretty simple. I take the post number and do a lookup in the wp_postmeta table for an entry that has the meta_value of the number and meta_key of “episode” (our internal name, sneaky huh?). Then I make a call to get_permalink using the returned post_id. If all goes well, the visitor is redirected.

Tweet Row to History (obamaftw.org)

Some goals I’ve ignored, some I’ve forgotten, but one that keeps popping back in my head from the post I made in February of this year is releasing 10 projects. Instead of doing my own stuff, I’ve been doing a good amount of paid client work – which is a departure for me. I have found some time for little things here and there, but nothing worth writing home about.

Well that changed last night. My friend Bruce IM’d me about a micro app he wanted to make on the fast.

It turns out that Bruce is one of 200 people who is hanging with Obama tonight for the election results.

image provided by twictur.es | original tweet here

He wanted to make a scrolling tweet-viewer, twistori style to show his and Damon‘s (who is going with him) tweets related to the event.

So, we hacked a bit, and Damon (who is going with him) jumped in and we launched a few hours ago: obamaftw.org!

Tweet Row to History
Uploaded with plasq‘s Skitch!

If you’re interested in the code, check it out on github

I’m dressed… PUH-LEASE.

Joe, AJ and Gary recently launched PleaseDressMe – a t-shirt search engine. Being the awesome friend that I am, I waiting until they did a feature on me and what I wear to blog about it.

(I’m such a jerk.)

AJ approached me about a new feature they’ve been running “How They Dress,” and I’m featured as their second one (why not first dudes?!)

Without further ado, here’s… HOW. I. Dress: http://pleasedress.me/pages/how-they-dress-erik-katner-metaatem

Simple (syslog) logging with Ruby

Here’s a tip that took me a while to figure out, but is really easy in retrospect. So easy in fact that I just assumed I was being dense for not knowing it, and everyone else just “knew” this.

However, after a smart friend tweeted about needing a simple logging method, and not getting any replies that nailed it, I thought I’d post this up.

First, require syslog

require 'syslog'

Then, make a call to Syslog.open, with a block and send a message

Syslog.open($0, Syslog::LOG_PID | Syslog::LOG_CONS) { |s| s.warning "Danger!" }

In this case I went with a warning level message. Syslog also supports:

  • crit CRITICAL system level events (like “System is going down…”)
  • emerg emergency
  • alert
  • err
  • warning
  • notice
  • info
  • debug

These map directly to the syslog levels you can read about in “man syslog”

It seems that debug and info messages don’t make it to the os x console app, so I use warning.

Here’s the code all together:

And that’s IT! Pretty simple way to get logging into any of your scripts. Don’t want it in main syslog? Just edit your syslog configuration and divert all messages from your app into a dedicated log file (without needing to touch your script).

Teaching the Rails.

On August 18th, I’m going to be teaching an intermediate/advanced 4 day rails course with David A. Black in Edison, NJ. If you know enough Rails to be dangerous, sign up and we’ll make you deadly.

Signup

Visit RubyPal for more information and to sign up today!

Teaching

In a previous life, I was very heavily into Martial Arts – TaeKwonDo mostly. From the ages of 12-18, I taught almost every day. Young, old, strong, weak, I trained them all. While there is a lot about the martial arts industry I don’t miss – teaching isn’t one of them.

Now I’m being given an oppertunity to get back to teaching. Not only that, it’s teaching something I’m passionate about, and am good at!

YOU!

If you sign up (at RubyPal), you WILL learn, and you WILL have a good time.

Use rails at work? Get your boss to send you. Work for yourself? Write it off. Already an expert in Rails? Come heckle me ;)

Thanks

Without this great community, I wouldn’t even be in this position, hopefully, one of my students will be the next “Rails Rockstar” and I can give back to all the awesome people I’ve met over the past 3 years.

How I got started in programming

How I Got Started Programming

My good friend Amy Hoy has pinged me in the latest geek-cum-chain-letter-sucker meme. Since I am enamored with myself, I figured I should let the world know my answers to these.

How old were you when you started programming?

The answer to this depends on how you define “programming.” Not to mention how you define “started.”

It could be when I was around 7 or 8 with our Apple IIc.

It could be when I was 10 making pictures out of ascii.

Maybe it was when I was 15 making doors for BBSs.

Maybe it didn’t happen until I was 17 and scrambling for a class.

How did you get started in programming?

Again, this depends on a few things. However here are a couple of possibilities:

  • Sitting in my living room in front of our Apple IIc, a friend (George?) showing me the classic 10 print, 20 goto 10. I tweaked it to make different patterns in the offsets
  • The computer lab in 5th grade (I went to a private school for one and only one year… it’s a long story) making teletype ascii art (on real PCs, not on dumb terminals). They gave us instructions like “line 5: 25 spaces, 5 stars, 1 vertical bar, 5 stars”. When you were all done, you’d see the picture. The one I remember very vividly is a Space Shuttle with “USA” on the booster rockets. I would spend *hours* after-school making and tweaking these things. It’s fair to say that the teacher was programming us, and WE were the “computers”
  • Spending hours making frames for my Etch-a-sketch Animator 2000 Etch-a-sketch animator 2000 - image from Wikipedia

What was your first language?

BASIC was the first language I had any exposure to, but the first language I achieved any proficiency with was Pascal (Turbo Pascal 6.0). I still have a soft-spot in my heart for Pascal, it was my gateway to the beauty and elegance of Computer Science.

What was the first real program you wrote?

Then, as well as now, I didn’t finish many projects. Getting (or not getting, as the case may be) to the “crux” of the problem was my main goal. One project I did finish was in my senior year of high school. I wanted to understand Object Oriented Programming, and started poking around with C++ (I had learned a bit of C before-hand with a friend in school – Jason Kochel). What I ended up making was a program that took two lines of text, put them on the screen, then made them shrink and expand opposite each other. The lines I used were “I love” and some girls name (for a friend of mine – his girlfriend at the time).

What languages have you used since you started programming?

This question should really say something along the lines of “… more than once,” or “… for any period of time.” Here’s a short list of things I’ve messed with:

ASM, C, C++, BASIC, Pascal, JavaScript, Bash scripting, Java, processing, ASP, Visual Basic, POVRay, Ruby, Python, Perl, Objective C, PHP….

What was your first professional programming gig?

I think I made a few bucks from some BBS Doors, but the first real paycheck had to be from Pacific Bell Internet in 1997. I was working tech support for the ISP when I got bored and attempted to make a demo version of our customer management system (Vantive) in JavaScript. That got the attention of some people higher-up, and I was brought into a skunkworks project to implement our side of a web-based CRM we had just purchased (Silkenet eService). This was my first exposure to server-side programming, and taught me many lessons that I’m still trying to digest. From there, I moved around in the company a few times, picking up VIM, Perl, VB and a few other things along the way.

If there is one thing you learned along the way that you would tell new developers, what would it be?

  1. Don’t be afraid to break things
  2. Once you get past fear, find your joy and follow it completely
  3. NEVER STOP LEARNING OR CREATING.

I’ve made many, many, many mistakes while programming (Hey John, remember the 2 gig file I wrote out to your 200meg hard drive?) Having a group of awesome friends kept catastrophic computer failures to a minimum. And then having a supportive mother for when I did really mess things up let me explore.

The bigger advice is mostly don’t ask for permission. If you need to jailbreak your phone to explore your passion – do it. If you need to tear apart your Furby and solder his guts together to learn how he works – do it. If you need to stay awake 2 days straight just so you can impress someone – do it.

What’s the most fun you’ve ever had… programming?

There are far too many to name. Every time I stay up all night trying to get something out into the world, it is, to me, the most fun possible. Here are a few instances of pure joy from programming/learning:

  • When I was sans-home, I would hang out at friend’s houses A LOT. At a few of them, they had old computers. I’d load up BASIC, and make it draw circles and spirals. It was nearly an obsession. It’s hard to explain, my technical chops were far beyond sine, cosine and drawing dots. However – it was the first time I can remember that I coded 100% on my own. No books, no articles on line and no source code to crib from. It was truly liberating. To this day, opening up a blank editor and creating something without reference is a beautiful thing.
  • The night before my senior year of high school started…
    I was signed up for Advanced Placement Computer Science (the only honors level class I took in HS), a pre-requisite was the Pascal class the school offered as part of the Math Department. Due to circumstances outside my control, I wasn’t able to take that class before senior year. I lied and said I knew Pascal enough to do just fine in the class. I spent hours looking at all the source examples I could find and retyping them into a stolen version of Turbo Pascal at home. By the time I went to sleep, I knew as much as anyone else in the class (except for Jason.) I ended up getting a 5 (the highest possible grade) on the AP test, and finishing the class with a grade in the high 90s (which was totally unheard of for me.)
  • I recently made an application that I didn’t announce on here. It’s just for me, but complete and not missing any corners. I stayed up until the sun came up writing Ruby (with Sinatra), HTML, JS and CSS. It explores a few interesting concepts and scratches an itch I’ve had for years. If you can’t make yourself happy (and maybe a few geeky friends), then why bother fighting with these wretched machines?
  • “Hello World” on the iPhone.

Bonus Question: How do you get into “The Zone” for programming:

I added this question because I’m a tinkerer and couldn’t leave well-enough alone.

For me, it’s always been music. Not just music, but music on repeat. It filters out noise, and is repetitive enough to sooth the doubting part of my mind. Two times:

  • I had an old, beat up cd player that didn’t have repeat. It didn’t even start the disc over when it ended. I got up to hit play to re-start Jagged Little Pill a thousand times if I did it once.
  • During Rails Day 2006, I played “Unfaithful” non-stop for the entire time I programmed (I think it was 18 hours total.)

Tagged:

Without passing these things on, they’d die. Cold. Alone. Help stave off meme-death. Ping these people and let them know the fate of this meme is in their hands:

(wow, I could keep adding people forever. I need to know everyone’s story…)

For anyone who needs the list of questions, here it is in one easy to copy and paste block:

its a mirror… get it? Erik Kastner’s blog.