Software feature shout-out

As a software developer, I’m keenly aware that the tools we create both empower and frustrate those that use them. I guess after what feels to be four or five internet lifetimes by now, I’ve gotten used to adapting to the features – and the quirks – of whatever software packages I use myself.

My development, both at work, personal, and contract deals with MySQL. And for a long time, I’d run a local instance of phpMyAdmin so that I could get at the DB. And I’m grateful for phpMyAdmin – but most of the time I just need something that will help create db’s and users, and give me a nice interface and history for queries.

And that’s when I started using Querious for the Macintosh. If it all it did was give me a native application to do the routine stuff, and a query window, I’d be fine with it, and it would be worth the $30.

One feature in particular though that stands out, and that has come in amazingly handy is their CSV import. To assist some friends and colleagues of mine in a simulated baseball draft league, I wrote a web app that manages the baseball draft – and allows custom rankings of players for individual league owners. Importing that data though involves trying to get an excel spreadsheet of stats into the database – and for anyone that’s done this, you know it can be a major pain to line up stat columns and types with the db columns.

Not so with Querious. The app has what might be one of my favorite features in a software program ever – a drag and drop association of import columns to db columns:

I don’t have to do this a lot, but man when I did, this came in extremely handy.

The application also has the built in ability to create ssh tunnels for connecting to remote systems, which is also an extremely handy feature.

It’s a great feature, and a great app, and one of the most useful tools I own. A big thanks to Araelium for developing it.

Dear Lazyweb : Your thoughts on the values of software?

In two weeks, the organization that funds our grant is hosting a conference for Extension personnel. At the time that conference submissions were being bandied about, I submitted a proposal that I’ve had a kind of amorphous interest in for quite some time – the idea that software has values. My abstract submission was the kind of thing you crank out in a few minutes, with the hope that it would become more clear over time where I might go with it:

**More than a tool, software reflects organizational values **

While we most often think of our computers and networks as tools, the software that we use and create codifies a set of rules and instructions that reflect the values of the designers, the programmers, and the organizations that commission that software. In this session, we’ll explore the attributes of well known web tools and the features that reflect the values of their creators. We’ll also discuss the implications of these inherent values on the software tools created by eXtension and explore how different features represent the values of the organization and the Extension system as a whole.

However, a dash of out of sight, out of mind, and a healthy wallop of procrastination finds myself with two weeks to go and still not much clarity – and I’d like your thoughts and ideas and feedback.

I’ve certainly been thinking about this in broad strokes for a long time, and I’ve mentioned it before – highlighting a quote from Mark Pilgrim about Amazon having to have designed the software feature that let them delete 1984 from Kindles (yes, that’s going to make it into this presentation). But I’m going to need finer detailed items too. I lean toward generalities, and I’m going to have to work hard to be specific.

My Audience, and the background

My audience is mainly Extension specialists and administrative professionals in subject matter support roles. These are mainly land-grant university staff, some with faculty appointments, others involved in some amount of research (or supporting the content production of their colleagues) – most likely all with an outreach/Extension focus. A very intelligent crowd with a number of ideas about features and functionality, but not usually very much experience in technology implementation, and often with a mix of experience and skills in technology use.

It would be an understatement to say there is not universal agreement on a set of organization values – hence not really a foundation to say “these values we all hold, here’s how you might implement those” And as a technologist, I’m a bit of an outsider to the difficult process and pressures that many of my subject matter colleagues go through in the university. I can speak to them, I’m aware of them, but only really with an outsider’s view.

Additionally, the academy has ironically not been very progressive on the social changes that have occurred in technology mediated communication (built on the internet and the software that their academy colleagues – and their students (!) – created). We are behind the publishing industry. Some days it feels like we aren’t terribly different than the Recording industry. (You might be able to see where my own values lie in such statements, but I’m not intending this to be a bully pulpit for those at all).

But there’s hope. I believe that all in the room will share the educator’s value – that desire to share with others what they know in the hope that the science and the research will help other’s lives, or inspire them to learn more.

What would you convey?

If you are a software developer, or a technologist or an application user and you have the floor to speak to those using your applications, brilliant in their own fields. What would you want said about the values of the software that you create and implement?

What core ideas would you tell to a group of educators both in practice and who likely all hold education as a core value, but many that are skeptical about the technology enabled changes in the last few years?

What stories do you have about customer feature requests that often resulted in the completely opposite impact that was intended?

What would you want to hear?

Maybe this is even more important a question.

If you were hearing a presentation on the values of software – if you read that abstract and your curiosity is piqued enough to attend such a session – what would you want to hear? What are you expecting to hear?

Are there formats that you would find more interesting (believe me, I can talk for 30-45 minutes without problem, but I don’t want to do that if it doesn’t meet the audience expectations).

Inquiring minds want to know.

What Amazon’s 1984 Incident has wrought

Dear Amazon:

Here’s what you 1984 incident has wrought.

Exhibit A:

I wanted an ebook reader, I wanted a Kindle even. I’m an iPhone user of all things, I’ll compromise my DRM and sharecropping principles over a good technology package experience every time. Yet, the idea that you coded the feature that would delete books I’ve already bought? Even Apple hasn’t done that yet. I won’t be buying a Kindle, or any of your Kindle books.

Exhibit B:

My darling wife, who understands my feelings on most DRM and closed platform issues, but gets a bit bemused when I get all passionate about them, just looked a bit crestfallen when I told her that Zappos just got bought out by Amazon – she said “Really?!? but I liked Zappos

Software has values. Misusing them has consequences you would never predict.

Software has values

In light of things I’ve said before and hope to be presenting more on later this year – I want to highlight a tweet from Mark Pilgrim yesterday

“Oh, the publisher made them do it.” Bzzt. Code doesn’t just appear. Amazon DESIGNED the Kindle’s remote wipe. Someone coded it & tested it.

This is in reference to Amazon removing paid-for copies of 1984 from Kindles

Whatever the eventual debate about that will turn out to be. This is where software embodies a set of values, and the software developers code those values.

Was it a cool problem to solve to figure out how to issue a command to delete content off customer kindles? I bet. Heck, I’d be totally interested in the protocol and software design of that.

But the truth of the matter for my colleagues – and the companies in which you work – just because you can, does not mean you do.

Absolutely Astounding

Dear WordPress devs.

I really appreciate the work you do on WordPress. I appreciate your open source philosophy – I appreciate your contributions to the community of a relatively easy-to-use software package that has been a part of a revolution in how people communicate. Long ago, I threw away my own blogging platform, because I was attracted by the community and ecosystem surrounding WordPress (once it got going out of a languishing b2 product).

But I continue to be mystified by your continued obstinate behavior about helping the product’s users actually pick a standard way of syndicating their data. I know that Uncle Earl cares not about what text strings are formatted where and in what way. But as programmers you should actually get the fact that standard ways of consuming and sharing information really do matter – and they are going to matter more and more for Earl and Millie both when they begin to realize the power of mixing, mashing, and aggregating information.

I was so impressed that you enlisted the community help with implementing Atom support – including the publishing protocol. But why on earth did you not write a few lines of code to make it easier to change the default format from the InternetJerrySpringerDrama that is rss2 to atom?

Oh, I see, you “didn’t think this option should be part of the UI, because for almost all people the option is not useful.”

Of course, because my timezone offset and my encoding preference and whether or not I use “wp-hacks” support is stuff that more people care about than using an actual standard way of syndicating our content.

I really, really do in all sincerity appreciate that WordPress is Open Source – because it give me a chance to route around your damage to it.

For the rest of the world – the quick hack – until plugins show up to make this a little more seamless is to (I THINK) replace line 845-846 in wp-includes/functions.php from:

if ( $feed == '' || $feed == 'feed' ) $feed = 'rss2';

to

if ( $feed == '' || $feed == 'feed' ) $feed = 'atom';

That was only a quick, cursory examination on my part, I’m sure others will be coming out with better solutions.

I realize that open source means putting your coding fingers where your mouth is, but some coding choices in life just seem better off in the core – and this is certainly one of them. The WordPress devs apparently disagree, and it’s their software and their prerogative to do so. I respect that – I just don’t have any respect for it.

And this is what you changed your ticker to?

This is one of the reasons I absolutely loathe java. And it has nothing to do with the language. It has to do with the culture.

There are a few services that we run that are java-based. History shows that most of these seem to run happier using the JVM from Sun – so every so often as I reinstall systems or move the services around – I need to install the Sun Java software.

However, Sun makes getting Java the biggest pain in the arse out of most of the software packages I need to obtain for our services.

One, because it’s not open-sourced – at least not in any semblance of open-source like most of the other language environments – and because of whatever technology politics between Sun and RedHat – Sun’s Java doesn’t come in the set of packages distributed with my Red Hat Enterprise Linux Systems. Fine, there’s a lot that Red Hat doesn’t provide.

However, it’s not in any add-on repositories either – again, because Sun doesn’t allow for redistribution. I can’t manage Sun’s Java through my standard OS package management utils. Fine, that’s life, other software is the same way.

And Lo, Sun provides an RPM install right?

Yeah right. First, I can’t just wget the thing to the system(s) I need to install it on. Why? Because I need to accept the damn license agreement for the software. I could partially understand this, if not for what comes later.

BTW, the damn license agreement is some time-sensitive based token. My acceptance goes away if I close the browser or navigate away from the download page. I have to accept the license agreement each and every visit to the page.

And the download URL after license agreement looks like this:

…/ECom/EComTicketServlet/BEGIN5FC6679326C19D083B94612B83494088 /-2147483648/2329383831/1/838358/838202/2329383831/2ts+/westCoastFSEND /jdk-6u2-oth-JPR/jdk-6u2-oth-JPR:3/jdk-6u2-linux-i586-rpm.bin

You’d freakin think that somewhere in that that encoded token that I could use it from another browser just for a time to download the software so I could save myself some data transfer steps. But nope.

I get that. I get that I’m downloading precious cargo and you want to make it a complete pain in the arse to download the software that YOU NAMED YOUR COMPANY’S TICKER SYMBOL AFTER.

Second, it’s not really an RPM, it’s a shell-script wrapped rpm that guess what it does when I execute it? – that’s right folks IT MAKES ME ACCEPT THE DAMN LICENSE AGREEMENT AGAIN.

I won’t get started on the other problems – like where the RPM sticks all it’s files. But that’s fine, I don’t expect that the company that changed its ticker symbol to match it’s flagship product would actually spend engineering time on making sure that the flagship product conforms to the operating system standards of all the platforms they want that flagship product on.

Dear Sun. Please get a clue. Use the Schwartz in a way that matters

Facebook and OpenID

So, after finding the only webform contact I could find to contact facebook – I have to say that I was impressed that I got an answer:

Hi Jason,

The Facebook Platform does not currently support the method you are requesting. We are always making improvements to our platform, and we will certainly keep this functionality in mind for future releases. Keep your eye on the Developers Homepage Latest News section (http://developers.facebook.com/) for new information.

Thanks again, Greg Customer Support Representative Facebook

[jason.young@ncsu.edu – Mon Jun 18 07:53:59 2007]:

Hey folk,

We are looking to build on Facebook with as much of the Cooperative Extension system as we can try to evangelize about the platform.

We really would like to grow our FB use on our OpenID provider – who in FB can I contact about any possibilities for OpenID integration?

Thanks, Jason Young Systems Manager, National Extension Initiative

Which is nice that they actually answered, but it’s not quite good enough. Like Kevin said I’m all for them becoming a provider. But what they really need to be is a consumer. They lose nothing (other than having to support people’s passwords. And we gain a lot.

So come on Facebook – do OpenID.

Designing Content for the Web

Shelly Powers resurrected a post a few days ago on javascript “widgets” (without much thought you could extend this to any blob of javascript doing http requests and fun little rendering things with local and server data without refreshing the page).

It’s a long piece, that I think boils down to “web designers should use them responsibly”

I’m going to extend this in another way. Shelly said something in particular that I want to point out:

The same person who wrote the comment about widgets also mentioned how browsers load top to bottom, left to right. It’s been a long established policy to make your web pages more accessible to screen readers by putting the changing material first in the page layout, and then the more static elements. In a weblog, this means putting the content first, and then the sidebars. The bars may appear to the left, but in the actual physical layout design, they should physically exist after the content, so that the content is always first.

You can’t design content for the web unless you know how the web works. I mean at least at a high level – about the fact that browser software uses HTTP to request data, web server(s) return that data, and the browser software is responsible for beginning to parse that data as soon as it arrives back from the web server(s), and follow its instructions – either make more requests, start rendering text and graphics in the data, or start running code embedded in the data in whatever code parser/compiler the browser supports. And add on top of that how other software (xml clients/”feed readers”, embedded browsers, screen readers, the code that browsers execute, other web servers even) also will request your data and follow its instructions.

Well, I mean you really can design content for the web without knowing any of this – but if and only if you trust the guidance of the people that do.

[Updated: The more I read and re-read my original post, the more I realized that it was one big long “duh” So I just decided to edit the thing and get to the heart of the point I wanted to make.]

Computing Expertise

In higher education, and I imagine within IT support in most small organizations, where the “IT Gal” or “IT Guy” is called upon to do everything from run the servers to manage the routers to “doing the web page” to answering “how exactly do I do that in Word again?” they’ll find that people that aren’t the “Eye-Tee” person attribute computing expertise to one’s proficiency (or even beginning-icy) in the company’s/organization’s software packages.

Let me make something absolutely, positively clear. Knowing how to create a table of contents in Microsoft Word is not a function of computing expertise. Knowing how to do anything in any given consumer software package is not an activity reserved for “eye-tee”

Knowing how to use a hammer and a drill does not make me an architect, or a builder

This myth, that somehow software expertise is an Information Technology function, is one of the worst myths that ever pervaded the currently-heavily-dependent-on-software society. It means that ordinary, hard-working people that in every other area of their life would roll up their sleeves, break out the instruction book and learn whatever task (and tool) they have in front of them, give up, and ascribe some mystical, magical wall that even being a beginner in a piece of software is a scarce, specialized skill.

Yes, being an expert in a given software package is a scarce skill. But the best qualified to learn that are those that the software was written for. Just like a Chemistry PhD is going to know far more about the intimate details of their field, but everyone has the ability to understand that Dihydrogen Monoxide is safe in low doses.

Quite honestly – those of use in “eye-tee” are actually the absolute worst people to rely on for specific expertise in software – be that word, or photoshop, or Google Reader, or whatever the software application. It’s like the faculty member in Math answering Physics questions. Of course they get the math, but it’s not like they have the same expertise.

And for those of you that are proficient in a given software package and have proficiency in several or beginner knowledge in several? You aren’t computing experts. So give up thinking that – and stop trying to tell people otherwise. Because you are just as bad as the people that aren’t trying. (there are no computing experts, btw, the more you know the more you realize that there’s way more that you don’t know).

I have specialization in certain areas of computing technology. I know the fundamentals. I know how programs are constructed. I know how the operating systems work – at least a certain level of their architecture. I can make use of software written for folks like me to deliver services – but like I told a colleague today: I use software like everyone else does – one menu option or button at a time. The only reason I know how to use Photoshop, or use Firefox, or use anything, is the fact that I clicked on it and I started exploring menus, and trying things. I don’t use them 1/10th of the power they hold, but my beginner level usage has nothing to do with the fact that I have computing specialization.

It just means I tried.