Where I Am

So, part of the purpose here is to figure out and communicate where I am, where I want to be, and how to get there.  So let’s start with the easiest of those three.

Currently, I work for a county agency as their primary technical employee.  I have someone who ostensibly reports to me.  The county structure is such that there is a primary IT department, the Data Center — they handle the network, server management, mainframe computing, and set standards for PC deployment, etc.  Our agency is large enough that we have unique needs.

So our IT department was born.  We do primary support for people — fixing computers, both hardware and software. Part of that is just customer service, some is figuring out who in the Data Center can solve this problem.  We do this because we have other systems — everything from trouble ticketing to security systems to signage — that we handle instead of the Data Center.

I am the primary — and only — coder on many of those systems, and I also make purchase decisions about what kinds of software — from small to enterprise — that we buy.  I or my employee run the projects for install and maintenance on them, and I create and manage the IT budget for our agency, which — ignoring payroll — has been as much as $1 million in the six years I’ve been here.  We get our money from sales tax, so the past couple of years have been lean,  and that’s a different challenge.

Every day is a bit different, I’ve got my hands in a lot of different kinds of software and uses for things.  I’ve fixed computers in jails, repaired a 20 year old computer (that was still mostly running!), migrated our systems from really old ColdFusion and horrible database designs to more modern PHP based systems. I work with people who know computers really well, and some for whom they are alien and strange, and domy best to  support them all with all my knowledge and respect.

It’s a great job, really.

So, why am I unhappy? Why am I looking for work?  Well, when I got here, that wasn’t the description for the job.  There was less to it, and it was mislabeled and underpaid.  So I came here as a temp — first as a 1099 employee, then through a county-approved temp service.  Then through another when they lost their county contract.  Since I’m a contractor — or more accurately, a temp — I don’t have all the real authority I should have.   I don’t have those wonderful county benefits that are the real lure  to working here (as the county government has probably the lowest salaries for positions in the area).

And I’ve been in this position for six years.  My boss who was trying to get me hired is retiring, and the new boss is understandably busy getting her feet under her.  It’s going to be months before they open the position up.  Honestly, I’ll apply if I’m still here.

But I’m tired of waiting.  So it’s time to move on.  To where, though, is the question. Running away is bad, but running toward is good.  I’ll post that on Monday.

A letter to my congresspeople.

Today I sent this to my two senators and representative in the US congress.


I am a constituent and I urge you to reject the Internet Blacklist Bills (PROTECT IP Act in the Senate and the Stop Online Piracy Act in the House). Yesterday, many sites went dark to protest these two bills, and many of you have surely heard from other constituents, such as myself, who oppose these bills on both political and technical grounds. I hope you will join me in opposing these bills which are poorly constructed and won’t have the actual effect that they purport to have, not to mention the chilling effect they will have on innovation and expression as a side of effect of their passage.

Perhaps you have already decided that this is the proper course of action after yesterday’s protest. If so, I applaud you, and warn you to be vigilant. Last year COICA was defeated because it has similar bad effects, and next year there will certainly be another bill attempting to stop online piracy, but which will almost certainly have a deleterious effect on ordinary citizens who are merely trying to share their ideas, experiences, and their culture.

You may feel that there is some way to write a bill which can somehow separate the two. However, I believe that no law will be able to do this: neither PIPA nor SOPA can achieve it, COICA couldn’t, and the DMCA certainly hasn’t worked. In fact, the DMCA has been routinely mis-used and mis-applied by those with more resources and power against those with less — even when those every day citizens were doing something that would be considered “fair use” or acting in ways that the IP holder condoned.

I am both a published writer, and a technical professional who has over twenty years of experience working with and on Internet technologies. Copyright has been an issue since the early Internet, and continues today, by virtue of the way the Internet and general purpose computers work. I’m typing this on a computer, and when I email it to you, every machine it touches — the machines which serve as mailboxes on both ends, and all the servers in between will make a copy of it before passing it on. Unlike a regular letter whose physical presence passes from mail box to mail truck to mail box, this letter will leave copies of itself everywhere.

I do this without thinking, and without pause. But any other form of digital copying is just as easy, given the right tools. Just as once I know a song I can sing it, once I’ve got an mp3 on my computer, I can copy it — and do, every time I play it. In order to circumvent this process of copying, you have to break the way the Internet works, and the way computers work. And that means breaking computers and the Internet, neither of which is a goal I think you desire.

The real problem here is that we are looking for solutions in the wrong place. Copyright was created in a time when copying was difficult, and only available to those with means. It was created in order to enrich our culture, and to reward those who choose to create and add to our culture. Today, however, copying is easy, and those very individuals who want to make use of their culture are being told that it is not possible, and is in fact illegal to participate in their culture. Copyright is working at odds to its intended purpose, and it is here that we must focus our efforts to enrich our culture and reward those who would make the works of art that add to our culture.

I am a technical person and a copyright holder, but not a legislator. I can see that there are problems, and can tell you what they are, but I don’t know how to fix the function of copyright. From where I sit, it doesn’t seem to work very well at all — and doesn’t perform its original purpose. Please oppose and continue to oppose these bills that break one of the best tools for freedom and expression in our modern times, and look for solutions to fix the real problem: intellectual property law.


Java[Script] Online Learning

I’ve been doing the codecademy.com JavaScript classes, and following along with Code Year.  I don’t really need to know how to, say, code a function in JavaScript.  But JavaScript has intrigued me for a while now, particularly after I got over my early animus against it, back when I felt it’s name was just a confusion for Java, and a dangerous new development. [I have been online for a very long time.]  I think it makes an interesting choice as a first language,  much like BASIC when I was first learning programming, JavaScript is there on every machine available to the budding programmer.  And also on their tablets, smartphones and any other device which has a graphical browser.

It’s also just good for me to see how other people program– perhaps especially those who know their code and style will be visible.  In my current position, I manage a single other tech employee, and while the county does have other programmers, we are organizationally separate from them.  IT professionals (or as I usually cal l us “Geeks”) learn from each other.  It’s hard to get that kind of training from college, because just a  few years out of college and the tech has changed, the best practices have altered, and things are new again.  We have to always keep learning, and we do that primarily from each other.  Thankfully there’s an Internet full of us geeks out there to learn from. so I’m not completely isolated.

A friend pointed me to CodingBat which has both Java and Python coding puzzles and practice.  I’ve been working through the Java ones, which highlights even more of the differences it has with JavaScript, even without considering object models or language style and ethos.  I have been fighting with Java’s substring on several of these (often going about the code in a different, if equally efficient method) but I’ve hit several that really need to make use of substring.

In PHP, which is the language I’ve spent the most time in, substring takes three parameters: the string, the start index, and the length of the substring you want.  (Strings aren’t objects in PHP like they are in Java and JavaScript.)   This seems reasonable to me.  I want the four characters starting with the second one, in php I say


And if I pass in the string “Hello World”, I get “ello” out.

JavaScript opts for a different implementation, taking the first index, and the final index.  So in the same example, but in javascript I’d get something that looks like this:


That seems reasonable to me, start and finish.  It’s like an interval in math (although a closed one).

Java pretty much confounded me though, I tried both of those and neither worked, so I finally did what I should have started with, and searched the docs.  Now I’d looked at it, but it was just substring(startIndex,endIndex), which matched my understanding so I hadn’t looked further.  But when I read it today, I realized  that endIndex is actually not inclusive in the Java implementation.  Which means that the proper code for Java is:


Of course, in Java I also have to make sure my string is at least 7 characters long before invoking that. JS and PHP will do something intelligent (returning “”, for instance, or just returning what is there, and not necessarily 4 full characters).   Which makes me wonder sometimes at the mindset of the Java people.  I’m not saying boundary checking is bad — it’s necessary.  But it could have been in the function, and built into the language instead of elsewhere.  I guess this makes sense because substring length = endIndex – startIndex. But somehow it seems counter-intuitive to me.

Ultimately though, it’s what it is.  Languages all do the same thing, or so my college COBOL professor said,  “Input, Processing, Output.  Learn that and you have the key to all languages.”  Most things are just syntactical sugar, so program with your help docs handy and you can do pretty much what you want with any language.  You’ll just stumble occasionally, which is one more reason why you keep learning and testing your skills.


Here I Am

I’ve been online since before there was a web, but I’ve never written as me on the web before.  I come from a generation of alias users, shocked by the “younguns” who give their real names on Facebook, and we’re pretty cagy about our privacy.

And yet, I’m a technology person, and I have daily struggles and triumphs with it, which I’d like to write about and share.  I’m also starting a job search — even if I get hired in my current temp position, that’s part of the search.  That’s stressful and uncertain, and it’s hard to get across in 800 characters exactly what it is I want to do and what I’m good at.

I’m not naive enough to think people will read this and learn it, but I’ve found that writing honestly about something is a good way to figure it out for yourself.

So, I’m Bill Farrar.  I live in Columbus, OH, and I’ve worked in technology for 19 years.  I’ve been online for over 20. This is my home, and I’ve got things to say.