Skip to content

Task-orientated email

I just don’t get it.

I mean, I get it, but I don’t get it. I’m old school email. This article recommends the mail client Mailbox. Note it’s only criteria for not using Mailbox is if you have an email address that’s not Gmail or iCloud, not that you don’t like task-orientated email interfaces. I’ve tried it before, on the iPhone and the Mac, and I hated it. Google’s Inbox is the same – blech. It’s stupid. I like the big-archive-of-email paradigm, it is old and venerable and well tested.

Perhaps I’m just trained to be a dinosaur. My first email client was mail (not “Mail.App” – mail the unix command line program) running on a System IV Unix machine at university. My second email client was elm, later on mutt, the first on SunOS 4.something, and later, on my personal Linux installation. I ran that way for years, all through out the time I ran @autonomous.org addresses; I nearly always had a terminal permanently ssh‘d into my machine, running elm. Every now and then I’d try some GUI based mail client, Mozilla something, Eudora, whatever, and within a week I’d switch right back to plain and simple mutt (I never understood people who used Pine). This persisted until right up to the time I got a gmail address and started to use that as my regular address. Nowadays I use Airmail2 on my Mac, after the Mavericks Mail.App on gmail disaster a couple of years ago. Airmail is old-school, and I like it. It also supports the Gmail keyboard shortcuts, which are heaven for old elm user like myself.

I’m just too old-school, I guess.

Fibre to the node – hahahahahah

My house, which was on the pre-Coalition 3 year NBN roll out, but was afterward nuked by the LNP when they won, currently has an issue with the copper that runs from the footpath to the house itself. The last 10 metres of the copper. This took two visits by a Telstra technician to verify.

So twice in the last two weeks I asked Lisa to wait for an indeterminate block of 4 hours, and twice the Telstra crew did not show up (big waste of time). I found out last week that I could get Optus HFC cable and arranged to get that installed yesterday morning. This corresponded to the second booking of the Telstra crew. The Optus contractor turned up half an hour early and installed in less than two hours. All working nice and fast(ish). Telstra crew didn’t show up at all, again.

The Telstra job was rebooked for today, I told them go ahead but no-one will be home. No one was home. Apparently they came anyway, and determined that yes indeed the problem is the cable that runs the last ten metres in the ground from the hole in the ground on the footpath with a concrete cover (to call this thing a “pit” or a “junction” is an overstatement, unless you mean, a pit, as in “the pit of hell”). Now they’ve rebooked a different crew to replace the copper next Tuesday (i.e. a week away). No one needs to be home but I might try to be – to stop them ripping up the garden or the driveway. I’m only doing this so as to inflict the cost of repair on Telstra so that they day after they fix it I can ring them up and cancel the service.

Truly, how the coalition things the FTTN solution improves this situation is completely beyond me. The copper lines are rotten. The cost of repairs to my one line just in the last two weeks would probably have paid to have the whole street wired for fibre.

And we probably won’t even get FTTN seeing as (both Optus and Foxtel) HFC is available – forcing even more people onto the HFC network and slowing it down even further (29 mbps off-peak, 12 mbps peak) and doing nothing for upload speed anyway.

It’s beyond a joke.

Google Chrome Notification Icon – how to get rid of it on OSX

If you use Chrome on MAC OS X you may recently have noticed a really annoying “bell” icon that has appeared in the menu bar, which also had the super-annoying property of not obeying the usual rules for OS X menu-bar icons (such as being draggable off the menu bar entirely). There were a set of recommendations to get rid of it such as the ones found here on osxdaily.com … here’s their picture of the annoying non-standard icon:

Annoying bell icon

I just noticed this icon had re-appeared today. I had a poke about in the preferences and have found how to get rid of it, it looks like Google have added a more permanent control for it than the suggested workarounds.

In your URL box type

    chrome://flags/

You’ll see a long list of various preference items. Leave them alone unless you know what you’re doing.

But if you search for “Notification” you’ll find this setting:

    Notification Center behavior Mac
    Alters the behavior of the system level icon for the notification center. 
    #notification-center-tray-behavior

Set that to “Never Show” and the icon is once again gone.

Python, XML, and databases

People who read this blog regularly (all two of you) might know that my day job involves lots of “enterprise” level technology such as Java, JEE, Spring, heavy duty messaging systems, and Webservices, both of the limber REST species as well as the well-lumbering SOAP type. Also the more attentive reader of the pair of you might be aware that I am doing a PhD in the decidedly non-comp.sci discipline of Classics & Ancient History. This has given me the opportunity to combine these two areas in the area of what’s called “Digital Classics”, (a species of Digital Humanities) which is the application of computer technology to solving problems in Classics.

And although it’s not in anyway part of my PhD (which is a rather traditional historical-literary type of Classics thesis), I’ve also been using this combination to expand my technical areas of expertise, i.e., by learning new languages. My first effort in that area was the simple Latin word parsing tool and dictionary,LatinOWL, written in Objective-C and running on iOS devices, available on the App Store (for free). For my second effort, which I will discuss in this and some future posts, I’ve been using Python and Django, the Python based web app environment, to build the “crowd-sourced” commentary web app for ancient texts, De Commentariis. It’s my intention, to use this blog to document and share the technical experiences I’ve had, in learning the Python language and the Django framework, re-engaging with web application design, figuring out issues of application hosting and the like.

XML data sources

The first problem I faced building De Commentariis, was the issue how to access the XML format of the original text datasources. The source of most of my primary data (the ancient texts) would be the TEI-schema XML files from the Perseus Digital Library of ancient texts. I work a lot with XML in my day job. Rather than decompose the XML documents into a relation database, or even a non-relational datastore, I decided to in the most part, work directly with the raw XML files.

I used Python’s lxml extension to read the XML with xpath queries. There are two parts the XML parsing. The first is the “off line” processing of the XML data to extract metadata about the document, e.g. title and author. This stage also involves an examination of the TEI XML headers to discover the underlying document structure. Each ancient text has a different structure. Some works are organised simply by a single dimension, e.g. by chapter. Others have a more complex division imposed onto them, for example, by book, chapter, and section. Poems are typically organised by book and line, or book, poem, and line, and so forth. My pre-parser reads the structure data from each parsable file, and then counts through the sections to determine how many of each division the document contains, and stores the extracted metadata, as well as the newly built table of contents, into a database structure.

However, once a user selects to view any text, the metadata is of the text is used to apply an xquery which extracts the data directly from the original XML. I have found that xpath exhibits perfectly good performance in this case, and seems to cope well under what little load-testing I have subjected the application to.

I rejected the idea of putting all the text data directly into the database for a number of reasons, but mostly because it would involve a complex system to glue the text sections back together, or, duplicating the sections into the database. This would vastly increase my disk usage footprint, because the texts can be accessed at multiple levels. Consider that a text which uses the book, chapter, section style of division can be accessed either as “1” (the whole of book 1), “1,1” (book 1, chapter 1) or “1,1,1” (book 1, chapter 1, section 1). And for some texts there is sometimes text attached at, say, the book level, without that item of text being in any sub-division, so it’s no good to store all the leaf sections and concatentate them when someone asks for a parent.

The commentary items that users enter, and all the other management data, like voting data, are currently stored in a traditional database. I’ve been thinking about throwing away as much of the SQL database as possible and using raw XML to store as much of the data as I can, but for the moment this idea is on the backburner while I add features more directly useful to my users.

People have asserted to me that “databases are faster than files” but I think this isn’t strictly true (in fact I know it’s not). A database’s i/o is typically constrained by the disc speeds that underlie it (which is why the goal of a lot of high-performance tricks for databases is often to serve as much of the data as possible from RAM rather than discs). A database gets its performance by enabling the quick access of data via indices which use additional disc space to store quick pointers to the location of the data record in the real database file. Alternatively, and much better for large datasets, are the distributed in-memory hashing techniques headlined by Google’s MapReduce function. But, if you know the key by which you’re going to directly access the dataset (i.e. the filename) then a disc-bound database is never going be faster than a good filesystem. Perhaps in the future, I should move to replacing the database with a file based structure and moving the remainder pre-parsed-out metadata off into a MapReduce style system (possibly Amazon Elastic MapReduce).

However for the moment, a SQL database (postgres, for the record, my favorite open source relational database) was the simplest possible thing that could work.

In my next post, I hope to write about my choice to use Python 3.3 and not 2.x, and how that affected my hosting choices to the point that put it on Amazon Web Services, and have not (yet) once regretted that decision.

Code

Some code I wrote – a plugin that’s useful to you if you write Pandoc with Sublime Text. It’s on github but you really want to install it via Sublime Text’s Package Control plugin.

Scalability of self-service employee review enterprise integration

generic employee review

[employee name] is excellent at scalable self service in adapting customer experience deliverables. He/she anticipates all competitive advantage adaptations in changing market frameworks. His or her key focus areas over the last fiscal year has demonstrated talent to continually improving capabilities for proactive mitigation in risk culture policies for stakeholder collaboration and and knowledge sharing outcomes. Their contribution to deliver in timeframes of positive automation in actioned domain engagement for cross-functional standardised engagement forum practise and cycle time stability in adding value for technical debt multi-skilled trend analysis demonstrates outstanding committment to root cause analysis of business value quality.

How to explain backend changes that support undelivered features

My current work environment is in a cost-pressured large national transport enterprise with a familiar internationally-recognised brand name. We have to build a lot of systems that model many real-world, highly-regulated, parameters and states. This data is often used to feed into other systems that feed the voracious information maw of an often severely critical public who usually only rarely understand the large numbers of contingent variables that effect the operations of this transport enterprise, which they nonetheless apparently expect to cost about the same as a bus. Many of the applications used to convey this data to the public aren’t often in the control of those of us who design, build or maintain the core systems used to manage the data that is fed to the externally integrated vendors. Our business users often don’t understand why their “feature”, often concocted without anyone in IT ever knowing about it, can’t just be implemented at the vendor-driven edge system, when the data originates or is highly dependent on, the core operational systems of the enterprise. The business users deciding these edge features often only poorly understand the domain language of the core business, which is often highly technical and dependent on domain and messaging solutions decided industry-wide from the 1930s onwards.

In order to overcome this understanding, I created the following parable to explain why sometimes adding new feature in the core systems is necessary before the feature can be exposed to the “edge” systems, that in the business user’s mind, actually deliver the feature (which is to say, display it on the customer’s smart phone).

Therefore, I give you:

The Parable concerning Necessary Work and Desirable Work

Imagine you’ve got an old computer, very old, with an old almost-vintage operating system and attached to this computer is a Black & White laser printer.

You want to print a colour brochure. The problem, you may think, is that you need a new colour laser printer. You call your local techie in to buy and install a colour printer for you.

But the underlying problem, the techie explains, is that the vintage operating system you’ve got doesn’t support colour laser printers! So first you must buy and upgrade your operating system to a new system that supports colour laser printers. Also on the way, you replace the computer with a shiny new laptop.

So now, you’re sitting there with your new lovely computer and sleek easy to use operating system that supports colour laser printers.

Can you print your colour brochure? Of course not! You still have to buy and attach a colour laser printer!

The problem you see, is two-fold. Without the operating system that supports colour laser printer drivers, buying a colour laser printer is a waste of money because the vintage operating system can’t send the colour data to the printer. And upgrading just the operating system alone (even though it might also have lots of other nice new features that you’ll like) doesn’t upgrade the old B&W laser printer – it just makes sure you don’t waste your money when you buy the colour laser printer.

And let’s just talk about the inevitable “work-around” that people love to demand is done instead of doing it properly: In our parable, the “hack” is don’t upgrade anything. Instead, colour in the B&W print with a crayon. But it hardly looks professional, and you have to engage in an arduous manual colouring-in process with expensive crayons on each and every individual sheet of paper!

More about Mail in Mavericks

Well, that’s been nothing but a huge disappointment. It’s confirmed that Mail.app and Gmail in Mavericks don’t get along. Mail behaves absolutely abominably with the non-standard IMAP of Gmail. I’ve tried the number of tricks listed in that article to get the ship righted again but it’s looking pretty dire.

At this post you can see another mail provider (Fastmail) complaining about Mail.app’s broken IMAP behaviour.

One of the major issues that I have with this is that most of the alternatives available are all crippled in some way or have major flaws or blind spots of their own. For the moment I’m using Mailplane – which is a thin wrapper around the actual Gmail interface. It doesn’t seem to play real nice with the Apple Calendar.app though, which is absolutely essential for me.

Currently the best mail client that I have is the Mail program in iOS, on the iPad. Perhaps the OSX Mail.app team could ask the iOS team to port that to OSX for them!

Tim Cook, fire the bastard who is responsible please. And get the bloody thing fixed this week please.

UPDATE The fastmail bug was not caused by Apple’s Mail.app – however its busted Gmail behaviour still stands.

The Mail.App in OSX 10.9 is buggy and awful

The Apple Mail.app in Mavericks is a terrible step backwards.

Smart mailboxes behave flakily – I’ve got one that’s called “All unread” (it’s rule is simply “message is unread”) and it said that there were 5 messages unread, until I click on it and suddenly there’s 21 unread messages. This is true of any Smart Mailbox, as best as I can tell – it won’t report the new number of unread mail that match the Smart Mailbox rule until you select it. This defeats the point! The Mail.App in 10.8 used to report this number accurately, long before I selected the mail box.

Also if I login to Gmail’s web interface, I can see that I have three unread messages sitting there. None of these messages have turned up in my Gmail inbox in Mail.app. I tried synchronising mailboxes, Get All New Mail, nothing seems to make it turn up.

The old Apple.mail I had in 10.8 was reliable. This one IS NOT. It’s damaged, and awful.

See my prior struggles — previously all overcome — with Mail.App here.

Update: just before I hit save on this blog post the three unread messages (plus one that I read earlier in the Gmail web app) turned up in my Mail.app inbox. The earliest received was more than three hours ago, and i’ve been sitting here with the Mail.app open for an hour and a half. And now I’ve written this paragraph the computer finally made the ping alert for new mail. Seriously, screw that s–t.

OSX 10.9 ‘Mavericks’ and ‘Spaces’

One of the more interesting changes in Mavericks is the way it now handles multiple screens and what was called “Spaces” (is it still even called that?)(yes, yes it is).

Previously if I had a second monitor attached to my MacBook Pro, both screens always changed when I switched Spaces. It was like each Space each had two monitors attached to it (the one on the the laptop and the attached big monitor).

But now, each screen has its own set of spaces. These are independently switchable. It took me a minute or two to suss this out. Mavericks gave my laptop screen (for the purposes of a two monitor desktop, the secondary screen) only one space by default, and put the default four spaces only on the large, external monitor (which in my multi-monitor setup, I have designated as the primary display). So now instead of four spaces each with two monitors I’ve got five spaces, four on the external monitor and one on the laptop.

I also suspect that’s why when I installed Mavericks it took off my customised wallpapers and applied its default “surf” image.

Update: it’s controllable in the System Prefs – Mission Control – Displays have separate Spaces