Category Archives: QI Software

Fundamentals of Programming

In November of last year I turned into a new sort of creature: a middle school teacher. It was inevitable, with my healthy store of dad jokes and juvenile disposition, that I would find work with people of a similar maturity level to my own (teaching pre-schoolers was out of the question, apparently).

The gear
The gear

The whole thing started as a camp for kids aged seven-ten in the summer of 2015. I was sitting around, teaching the odd adult how to program in iOS, showing the kids Hour of Code-like stuff, and my wife asked why didn’t I try showing the kids how to program. The kids and a friend each, run it like a week-long summer camp, the kind that cost $700-1,000+ a week. It was May, the kids would be off in a month. Would I be able to throw together a syllabus for the week to get the kids a basic introduction to computer programming?

Continue reading Fundamentals of Programming

Introducing… Write-O-Matic 9000

So, over the years we’ve gotten many complaints about Writer.app’s name. Many many many.

So we decided to change it.

Write-O-Matic 9000
Write-O-Matic 9000

Introducing the Write-O-Matic 9000, available on the Mac App Store.

It’s our first experiment in paid software. For the low low price of $0.99 you can get all the functionality (or intentional non-functionality) of the original Writer.app, but support a small software shop by doing so.

It’s like the local, organic, sustainable version of getting and using software — the tool will still help you stay on track by focusing on the words to come, rather than the words past, and you’ll feel amazing for helping a very very small development shop.

As a blessed App Store app we can’t create a network location which will shut off all internet access for you any more, so we have a tool, which you should only have to run once, to do that, called the Empty Network Location Creator. It will guide you through the process of creating a very productive Network Location, or do it for you. Write-O-Matic 9000, like it’s predecessor, will try and switch to this location before you start typing, to help you stay focused and away from the big bad internet.

Coding Horror: You’re Doing It Wrong

[From Coding Horror: You’re Doing It Wrong]

Jeff Atwood talks about templating engines (for generating html) being wrong… and I agree, with code like this:

<%foreach (var User in Users) { %>
<div class="action-time"><%= ActionSpan(User)%></div>
<% if (User.IsAnonymous) { %>
<div class="gravatar32"><%= RenderGravatar(User)%></div>
<div class="details"><%= RepSpan(User)%><br/><%= Flair(User)%></div>
<% } else { %>
<div class="anon">anonymous</div>
<% } %>
<% } %>

But, and I might be biased here, the WebObjects approach is much more pure, much more clean, from a markup vs. code point of view.

A quick crack at something similar in WebObjects would look like:

<webobject name="UserRepetition">
<div class="action-time"><webobject name="UserActionSpan"/></div>
<webobject name="IsAnonymousConditional">
<div class="gravatar32"><webobject name="UserGravatar" /></div>
<div class="details"><webobject name="UserRepSpan" /><br/><webobject name="UserFlair" /></div>
</webobject> <webobject name="IsNotAnonymousConditional"> <div class="anon">anonymous</div> </webobject> </webobject>

With a bindings file looking like this:

UserRepetition: WORepetition {
    list = users;
    item = currentUser;
}
UserActionSpan: SomeOtherCustomWOComponentToDisplayThisThingMaybe {
}
IsAnonymousConditional: WOConditional {
    condition = currentUser.isAnonymous;
}
IsNotAnonymousConditional: WOConditional {
    condition = currentUser.isAnonymous;
    negate = true;
}
...

Not too bad, eh? If you’re looking for separating your presentation from your code, well… I don’t think there’s anything better. But then, like I said, I’m biased.

It’s such a shame, with all the comments, that not a one has brought up the Old Lady…

Writer.app One dot Four dot THREE

Tinkering in Writer.app last night, I had a couple of usability niggles that kept digging and digging at me. So, of course, I had to tinker with the app. And Acorn. The result was this:

200811122055.jpg

[From Writer.app]

A set of new icons for the toolbar that look startlingly better on Leopard, and a new delete mode where, if you press the delete key twice, instead of it sitting dumbly by, doing nothing, it’ll delete the entire word just before the cursor. You can turn this behavior off… you just need to do it from the command line, for the moment. [defaults write com.qisoftware.Writer BWRetainOldDeleteWordsOnMultipleDeleteKeyPressesBehavior -bool YES for the terminally curious]

At any rate, I figured I’d push this out in the middle of November, as this thing is really the sort of thing that helps writers (well, one at any rate) focus on just pushing forward. No worrying about little mistakes, or going back over the story and editing incessantly, you just are forced forward, forced to get a whole lot of words on the page which you may just mass delete later, but at least you got them down somewhere, first. Or you might run the product by an editor (I’m available at very reasonable rates for editing small to large fiction, non-fiction projects, papers, resumes, grocery lists, you name it).

So go check it out. Get writing.

Turns Out I AM a Baby…

Turns out I am a baby, I guess:
200811112349.jpg

Had to take that “I’m not a baby, for the love of Pete, please let me switch between apps” option off because I was switching between apps far too much. While I don’t think I’m quite doing NaNoWriMo, I managed to get in a good session of NaChildrensBookWriMo this evening (2k words or so), all thanks to Writer.app and that blessed preference to not trust the writer in any way, shape, or form.

Announcing…. Horos

So that suspenseful post didn’t last long…

Horos is out now… For those of you who are huge, huge fans of the Sane Magazine horoscopes, who also happen to have a Mac. Which has the latest and greatest version of Mac OS X (10.5) installed on it. Which also has access to the Internet. So for my wife and myself. Maybe. Maybe it’s just for me.

At any rate, it’s a very 1 dot oh piece of software which will fetch down the specially formatted (and long under-used) XML version of the horoscopes and display them on your desktop. Just in case, you know, you were too lazy to click on the link above each week to get your fill of horoscopes with no real bearing on your life (even less if you’re a Libra).

There are some features planned for the 2.0 release which include popping up when new horoscopes are published, choosing your horoscope to be displayed when new horoscopes are fetched, sending people’s horoscopes to them via email based on their birthday.

But that’s 2.0. Not 1.0. Which is what this one is. And it has significantly less features than this imaginary 2.0.

200810311111.jpg
So go enjoy… if you’re into that sort of thing. And by “enjoy” you might find I mean it in a very, very watered-down sense of the word.

UPDATE: This release is Leopard-only. Part of the reason is laziness and just playing around with some features available to developers only in Mac OS X 10.5. That’s just the way it goes.

QIClock 2.1.1

QIClock:

v. 2.1.1 You can now update timezone based on the timezone name or abbreviation (this feature requested by L. for easy lookup of Australian timezones).

This app, in its current incarnation, was driven by a little lunchtime musing with L (from L) about what a pain it was, sometimes, working across timezones, and wouldn’t it be nice to have a simple app to let you quickly figure out what time a meeting would be for different folks in different timezones.

And this latest feature is in there just because she’s ramped up some Australian project lately, and AEST isn’t in the [NSTimeZone abbreviationDictionary]… Exciting, isn’t it? The life of a software developer.

QIClock

QIClock:

QIClock was written primarily for the developers, who found themselves dealing with coworkers on all sorts of different time zones, particularly those with the gall to reside on the other side of the international date line (should you, like the sun, only conceptually travel East to West).

It might also come in handy if you’re attempting to watch the opening series of the Major League Baseball season and for some reason or another they’re playing it not in the home team’s ballpark but somewhere five thousand miles or so to the left of it.

200803251350

It’s not an earth-shattering type of application, but it works for what my needs. This version was actually written for L, who needed to organize conference calls across GMT, JST, EST, and PST.

It is, as all Q.I. Software stuff is, free.