A better WannaCry advisory for schools

The Ministry of Education sent out a very poor advisory to schools about “WannaCry” today, based primarily (from what it seems) on the poor information coming from CERT-NZ. The advisory contains several factual errors, which the Ministry should not be spreading to schools.

I’ve written an improved advisory (I’ll update it as required).

Continue reading

Too much spin at the spinoff


I try to bring some facts to a very poor post at a site that I typically very much enjoy reading and supporting.

I very strongly believe that nearly all teachers have the best interests of students at heart, and that the same is true for nearly all employees of the Ministry of Education. I also believe that the various Ministers of Education are, at minimum, not opposed to improving outcomes for students.

To the detriment of our children, these groups cannot get along. All of them have made poor decisions in the past, and none of them seem able to get past it. It’s far past time for this to be remedied, so that everyone is able to agreeably work together to improve education in New Zealand. Teachers need to realise that the Ministry isn’t always out to get them, and the Ministry needs to realise that teachers have much to contribute to guiding how education is shaped.

Communication is particularly a problem. When honestly examined, much of what is presented by teacher unions is propaganda, often filled with misunderstanding, half-truths, and paranoia. On the other side, the Ministry’s messaging is so bad that many people believe that this is deliberately so – to distract from some dastardly plan. Personally, I think that Hanlon’s razor applies.

(It’s ironic that Communities of Learning are designed to encourage collaboration between schools, when nearly all schools were already engaged in such collaboration, and it’s collaboration between the policy section of the Ministry and schools that is lacking).

First, some things that this post is not about, to get them out of the way:

It’s incredibly difficult to run a school on the funding that they get from the Ministry; schools are extremely dependant on donations (both time and money) from parents and other fundraising, and doing more than the bare minimum is nearly impossible relying solely on a school’s operations grant.

I do believe that there are improvements that could be made in how the funding that is available is distributed. I don’t pretend to know what the answers are.

There are seven (3 main, 4 supplementary) proposed changes to how education is funded, and the “global budget” is only one of those (and only a supplementary one). I do have concerns about some of the others, and it’s not entirely clear what the impact of them all will be. The Ministry is also pushing a very large amount of change in a very short period of time, which I don’t think is ever wise.

A rough guide to how teaching staffing currently works in NZ (for state, non-Partnership, schools)

Each school is allocated an amount of staffing, based on a formula that’s mostly to do with the number of students expected to be attending the school as of July 1st, which is expressed in full-time teacher equivalents (FTTEs).

Schools are permitted to “bank” staffing. This allows flexibility in when during the year the staffing entitlement is used – for example, if you have an entitlement of 5.5 full-time staff, you could have 5 full-time staff and one half-time staff member for the whole year, or 5 full-time staff for half the year, and 6 full-time staff for the other half.

Schools may also elect to not employ as many (equivalent full time) staff as they are entitled to, and get a refund of actual cash, or (far more commonly) employ more staff than they are entitled to, and pay for those staff from their other funds. There are limits around how much can be “banked”, and you may only overuse or underuse by 10% of your entitlement in a year.

In the school’s accounts, there’s a total amount of money that was spent on the teaching staff (for example, this was $358,570 at Ahuroa School in 2015), and a grant of exactly the same amount of money from the Ministry. Although this shows in the accounts, the school never actually comes into contact with this money, other than with staffing over or under use. For banked staffing, if you have underused you are paid out at $54,500 per FTTE, but if you have overused, you need to pay back at $68,500 per FTTE (2016 rates).

For example, if you’ve been allocated 3.9 staff members, but you decide to top that up to 4.0, then you’ll need to pay from your other funds $6,850. If you’ve been allocated 4.1 staff members, and you only employ 4.0, then you’ll be given $5,450 in additional operational funding.

Schools have no control over how much any teacher is paid, and, for the most part, it makes no difference to a school how much their teachers are paid. You can have all your staff at the top of the pay scale and you consume the same number of FTTE as a school whose staff are all at the bottom of the pay scale.

Where this gets particularly complicated is that Boards can decide (subject to various conditions) to employ staff directly from their operational funding. When this is done, the school still has no control over how much the staff member is paid, but pays the real cost of that staff member’s employment.

The lowest pay for a full-time primary teacher is currently $47,039 per year, and the highest (other than ‘units’ and other additional payments) is $74,460.

Going back to the example where you were entitled to 3.9 FTTE and employed 4.0 – if you have a teacher at the bottom of the pay scale, and employ them (for 0.1 of their time) from your operations grant, this will cost you $4,703 (plus various other incidental costs).

This is around $2,000 less than if you simply overused your staffing entitlement, so all around the country principals employ this technique – as long as you have staff that earn less than approximately $68,500 (which is quite high on the pay scale) you pay them via the operations funding (it makes no difference to the teacher) and balance your staffing entitlement to zero.

If you don’t have any staff earning less than that then you can overuse your staffing (up to the 10% limit) and pay less than you would need to otherwise.

This is all rather complicated (and it doesn’t even go into paying for other types of staff, casual staff, units, holiday pay, study grants, or anything else like that). One of the reasons that Novopay was such a mess was that the system is overly complex.

The “global budget” proposal in reality

The intention is to simplify the system, so that instead of having staff paid from both a staffing entitlement and from operational funding, there’s a single staffing credit system.

Schools would be allocated a number of staffing credits each year. There’s no more or less money available, and the formula for credits would be (other than changes from the other 6 proposals) essentially the same formula as for FTTE.

A staffing credit would be valued at the national average teacher salary. For example, if the average was $70,000, then rather than 3.9 FTTE, the school would receive $273,000 in staffing credits. It’s important to note that it’s irrelevant what the teachers at the school are paid – only the national average matters.

Schools would still never touch any of this money. When teachers are paid, schools would be charged at a rate equal to the national average teacher salary. So if your school employed 3.9 equivalent full-time staff, then the school would be charged $273,000.

You can see that this balances in exactly the same way that FTTE does. From the Ministry’s point of view, the amount of money that they are paying stays exactly the same. They also don’t care whether any individual school has low-paid teachers or high-paid teachers, because it’s only the national average that makes any difference.

If all the high-paid teachers in the country were replaced with low-paid teachers, that would save the Ministry money (and make no difference to the cost to any individual school), but there’s an admirable separation (both now and in the proposed system) between the people that decide to hire someone and the organisation that bears the cost of that decision.

A “banking” system would still be available, so that you can spread your staffing credit usage throughout the year. There would still be limits on how many credits can be banked, and how much of your credits could be turned into cash if not used for employing teachers. You could “purchase” additional credits to employ extra teachers, just as you can overuse your staffing entitlement or employ staff from the operational funding.

There are two key differences:

  1. Support staff get incorporated into the same staffing credits system. Schools still determine what these staff are paid, and would “purchase” enough staffing credits to cover whatever is required.
  2. The complex system where all the principals share with each other the trick about making sure you have the right staff paid by the operational funding and by your staffing entitlement goes away. This is cleaner, but will cost most schools a small amount more, because most schools overuse rather than underuse, and most schools have enough teachers earning less than the national average that they can currently save through this loophole.

Realistically, the Ministry could decide at any time to close this loophole by just adjusting the rules around banked staffing. The Ministry could also decide to improve the funding proposal by charging instead at a much lower rate, to encourage employing more teachers (just as they currently discourage underuse of the staffing entitlement by refunding at a low rate).

In the existing system, you’re able to employ the most “expensive” teachers you want, and as long as you have enough “cheap” teachers to cover your employment beyond the staffing entitlement, you “win”. In the new system, you’d be able to employ the most “expensive” teachers you want, without needing to have those “cheap” teachers as a balance. However, this does come at some additional cost.

(For what it’s worth, all the principals I have worked with believe that there are benefits to employing teachers at all positions along the pay scale).

Theoretically, a school could employ many support staff instead of teaching staff, but it’s likely that there would be limits around this (just as there are with everything else).

ERO are still going to be reviewing that schools are using their staffing entitlement appropriately, principals (and their management teams) are still going to be the ones deciding how the staffing entitlement is used, and boards (who have a majority of members elected by parents) will still be monitoring and approving what management does in terms of staffing.

There’s a reason that this is only a supplementary proposal, and not one of the main ones. It changes very little. It’s basically just intended to clean things up.

A rebuttal of the spinoff article

Firstly, this is not bulk funding, and the Ministry is very explicit about that. The fundamental aspects of bulk funding are that it matters how much each of your teachers are paid and that if you employ fewer teachers you have money available that you can spend elsewhere. Neither of those are true under the proposal “global budget” system – you are funded and charged at a national average regardless of the true cost of employing the staff member, and you cannot simply convert your staffing credit into operational grant funds (other than in the limited way that you can already with FTTE).

Eden says that the proposal will result in fewer teachers (and therefore larger class sizes and everything that goes with that). There is no evidence to support this. The same amount of funding will be provided for staffing and schools cannot simply take the cash instead.

There is evidence that counters this. Right now, schools can choose to understaff by 10% and use that additional money for whatever other purposes they wish. Almost no-one regularly does this (you can ask if you want current numbers), and in reality boards are doing exactly the opposite.

Eden says that there will be fewer teacher aide hours. Teacher aides are (generally) not paid from the staffing entitlement, but from operational funding (typically provided by grants from various organisations). The global budget proposal contains no suggestions that the funding amount for teacher aides would change in any way (other proposals could result in changes). The amount spent on teacher aides would not be impacted by this proposal in any way.

Eden claims that it would likely mean untrained teachers in the classroom, because they would be cheaper. Firstly, schools cannot employ untrained teachers – there are strict regulations about teacher registration, and there are requirements for beginning teachers to demonstrate not only that they are trained but are qualified and meet all of the expected standards. Assuming that she is disparaging trained, qualified, beginning teachers instead, this is also untrue. There is no benefit to a school to employ a beginning (‘cheap’) teacher over an experienced (‘expensive’) teacher, because the school pays the same for them either way, just as they do now. The opposite is actually possible, because the need to have ‘cheap’ teachers to use for paying for staffing overuse will be removed.

The section “So what is the Ministry of Education’s proposal” is flatly wrong. So is the idea that there are “caps to class sizes” (staffing is based on a class size that the Ministry believes is appropriate, but it’s up to each individual school to decide how the staffing is actually utilised).

There will be no decision about whether to pay for power (which is funded separately and adequately in the heat, light, and water component of the operations grant) or a teacher. Her points around property funding changes are to do with one of the other funding proposals (supporting #2), not the global budget. Changing the decile system is also an entirely different proposal (core #2). The rest of the post then devolves into a rant about how education is insufficiently funded, which is true, but nothing to do with the global budget proposal, since that does not change the amount of money available in any way.

It’s great to discuss how we can improve education in New Zealand, including how funding works. But let’s do it with carefully researched facts, not something that you’ve half-heard in a union meeting.

My background: I taught in the tertiary education section for a while, my father was a teacher, my mother and sister are teachers, and many other family members are teachers or work in some sort of education role. I have been on the Board of Trustees at Ahuroa School for around 7 years, as chair for around half that time (including currently). The facts above are sourced either from publicly available information directly from the Ministry, or directly from the Ministry staff that are overseeing the funding review, at one of the workshops that was held in July 2016.

This post is not a statement from Ahuroa School; please contact chair@ahuroa.school.nz if you would like to have one that is.

Ahuroa School BoT Candidate Statement

For the third time (once in a by-election, the previous triennial election, and now), I’m standing for the Board of Trustees at Ahuroa School.  For anyone that’s interested, here’s my statement:

My son, Samuel (Year 5), and I have lived on the Puhoi/Ahuroa border for a year now, but have been members of the school community since 2011. I’m self-employed and work from home, doing software management, design, and development (in security and organisational management).

I’ve been a board member since February 2012, was associate chair in 2013, and have been chair since February 2014. I enjoy learning and have completed multiple board professional development sessions every year since joining the board, and have endeavoured to continually build relationships with board members at other schools.

Much of my life has focused on education in some way: my parents, grandparents, sister, and various other family members are or were teachers and I’ve spent over a decade teaching, primarily at Massey University, Lifeway College, and Northtec.

I strongly believe that a passion for learning is the most important gift that a school can give to a student. We also have a duty to make sure that the basics of learning are covered, and that students know how to learn, and understand their learning.

There is immense value in all of the contributions that parents/community members make to the school, and serving as a board member is where I feel my skill-set is most useful. I believe I’m well placed to provide continuity and guidance to the incoming board.

The next year is critical for Ahuroa School – we’re due for extensive community consultation again and a thorough review of the school charter, ensuring that we have a common vision for the school going forward. We also need to figure out what the community wants for Year 7 and 8 students, and whether that’s at Ahuroa School. We’ve got a great principal that’s now familiar with the school and community, and the board needs to support her and the rest of the staff in implementing the vision that we create.

If you’d like to know anything else, feel free to email me (tony.meyer@gmail.com), find me on Facebook (facebook.com/tonyandrewmeyer) or Twitter (twitter.com/tonyandrewmeyer), or find me at school (I’m usually at whānau time).

Continue reading

Copyright of IP created by school employees

The June issue (paywalled, also looks awful online for some reason) of STA News (the NZSTA periodical) included an article “Collaborative Copyright”, regarding the ownership of intellectual property created by teachers and other school employees.  This topic has been getting a lot of attention (on Twitter, anyway) for a while now.

To be clear, I’m a big fan of Creative Commons (and have released things I’ve created under CC licenses for a decade now), of collaboration, and of giving education employees control over intellectual property that they create.  In 2012, not long after I joined the Board at Ahuroa School, I made sure that the board considered this issue, and suggested Creative Commons licenses as one possible way forward (the board decided to go with another option I suggested, of gifting the property to the staff in exchange for a permanent license to use it).

However, there are parts of the article that bug me.  The worst part is in “setting the scene”:

Under New Zealand law, like many other countries, anything that is created by an employee in the course of their work for their employer is regarded as belonging to the employer. This makes absolute sense in the context where, for example, the employee is producing biscuits or cereal at a factory – the factory and its output logically belong to the person or company.

It all makes rather less sense though when the work being done is “knowledge work” that depends on the employee’s own personal skills and experience to create something unique or to provide professional services – like an inventor, a painter, a professional sportsperson, a surgeon or lawyer or teacher.

I am one of these “knowledge workers”, and employ others, providing professional services (software development, design, management, research).  Just because I’m not producing a biscuit that you can eat, doesn’t mean that my employer should be required to give me ownership of what they pay me to make.  The same applies to these other jobs – if a sportsperson develops some sort of innovative gameplay, then the employer is just as entitled to the product of their paid work as of the surgeon that develops a new technique or the software that I write.

It’s great to share – e.g. I contribute work as open-source projects when I can, and encourage people that pay me to produce work to do the same.  However, that choice belongs to the person that is paying for the work to be done, not the person who does the work.  The biscuit isn’t owned by the employer just because they provided the raw ingredients, but because they provided (by paying for it) the labour it took to make it.  If you take away all the ingredients except for the labour, that doesn’t mean that the ownership should suddenly transfer.

I realise that there are people who disagree with this, and have fairly extreme views about all knowledge being free.  However, I don’t believe that NZSTA are fairly representing boards by espousing that view.

There are much better reasons for intellectual property that is created by school employees to be ‘naturally’ something that should be shared.  In particular:

  • Although the board is the employer, the vast majority of employees are funded via the government (a few will be funded via some other source of income that a board has, but I’ll ignore that for now).  The government’s money comes from (approximately) the people of the country, and so it’s reasonable to expect that anything that the government produces should be available at reasonable cost to the people of the country.  For example, this is the same argument that says that government-funded research findings should be freely available.  I absolutely agree with this, and it is a convincing argument for making teacher output freely available.
  • Most of what these employees are making is incidental to their primary work, educating our children.  I am specifically employed to create intellectual property; teachers are not.  A painter is specifically employed to create intellectual property – a sportsperson possibly not.  I don’t think that being incidental is a compelling argument for sharing on its own, but it adds weight to an argument.
  • The majority of the intellectual property that these employees are making is of low or no monetary value (which is not to say that it is worthless).  Those blog posts, tweets, and Facebook posts that teachers are writing are most likely not going to be a source of income for the school.  The worksheets, assignment outlines, and plot summaries are fairly unlikely to generate any income either.  If you can share something at no cost to yourself, then that’s also a compelling argument to do it.

If you are going to try and convince someone to make a positive change, then it works much better if you start from a balanced, accurate, position.

Note that these are my views, not necessarily those of Ahuroa School.  IANAL.

Kiwi PyCon 2013

Kiwi PyCon 2013 was held last weekend at AUT in Auckland.  This was the first time I’ve been able to attend; although I’ve planned to in previous years, the timing never worked out (even this year was very tight).

I missed Michael’s keynote, unfortunately, and also the first session, because it’s also the end of the winter sports season, and so I had to attend prizegiving that morning.  If the conference had been somewhere else, I probably couldn’t have attended at all, but since it was only ~65km from where I live, I could still attend most of the two days.

The first talk I attended was Integrating Javascript with Python Web Frameworks.  This is an interesting topic, and was well presented, but seemed more novice than intermediate to me. Unfortunately, most of my interest in this topic is more on the side of light Javascript integration (i.e. where the bulk of the work is still done on the Python side), and the talk focused on the other area.  However, that wasn’t a flaw in the talk, just a limit in what I got out of it (it seems likely that by the time that I ever do something that’s Javascript-heavy, if I ever do, everything will have changed considerably by then).

Next up was Testing and OpenStack.  I’m only vaguely familiar with OpenStack, and the abstract is very poor, but I don’t like changing tracks mid-session, and testing is of interest, so this was the talk to attend.  Again the presentation was fine, but the talk seemed more novice and less intermediate (some familiarity with OpenStack was assumed, but I don’t consider that means that the talk itself was at an intermediate level).  I didn’t really take much away from this.

The final talk in the session was Python and Creative Data Analysis.  This was a novice talk, and for someone at novice level, probably well worth attending (it was presented quite well).  For someone not a novice, even someone with nearly no matplotlib experience (like me), there wasn’t much to be gained.

For the final session of the day, I started with Dissecting Memory Mysteries of Python.  I had a lot of hope for this presentation, because this is an area of interest for me, and practical advice would be really useful for work that I do.  It was labelled as an intermediate talk, and I would say that was accurate (but I was probably hoping for more of an experienced level talk).  The presentation was ok, but suffered from having two speakers, one of whom spoke too quietly.  The talk did cover some of how memory management works in Python, but concentrated too much on reference-cycles for my taste (which I find in practice is  never the problem when short on memory), and their practical suggestions for improving memory usage weren’t really that good.  For someone with no previous understanding of how Python manages memory, this would probably have been a good talk.

The final talk of the day, Using Cython for distributed-multiprocess steganographic md5sum-collision generation. For… reasons, was the best of the conference.  The speaker was excellent – far superior to most of those at the conference, and the talk was entertaining and somewhat informative (mostly entertaining, but that’s exactly what it claimed to be, and those are often the best talks at a conference: pure information is better found elsewhere).  The only negative was that the abstract was pretty poor – it doesn’t really reflect what the talk was about at all.  If the conference had 5 talks of this quality, I would have no hesitation towards attending again.

The second (or third, if you count the tutorials) day was opened with a keynote by Jessica McKellar.  Jessica is a very good speaker, and the topic was suitable for a keynote, especially from someone with her background.  Essentially, she was advocating increasing involvement with and usage of Python, and going over what she saw as the key barriers to entry at the moment, and therefore what should be targeted in order to help Python remain popular (her brief explanation of why popular is important was well done).  Although I certainly agree with her central tenet (everyone needs to do a couple of small things and that’s enough to make a significant difference, and that difference is important), I don’t agree with all of the examples she gave.  Her four points were Windows, games, mobile, and science (the latter being an example of something that is working well; i.e. where we can copy ideas from and remain strong).

I started with Python on Windows, although I almost never use it any more.  There are some difficulties, although I think that if you’re the sort of person for whom programming is a good match, you can work through the issues without much difficulty – the challenge would be more with ‘casual’ programmers – e.g. a scientist that could use Python to do something, but isn’t really a developer.  Most of the challenges here I think can be addressed by documentation – e.g. the Python Tools for Visual Studio are excellent, fairly simple to use, and familiar to a lot of Windows developers.  All that they need is more people pointed towards them.  I don’t know enough about the casual programmer to know how they get started, but it seems like better documentation would help them too.  However, the core of my disagreement here is that I’m convinced that Windows use is imploding – this is going to happen more rapidly than people realise, and so putting a lot of effort in here is not a good use of resources.  It would be far better to target mobile instead.

Although Python isn’t necessarily the first choice one would make for games, I think the examples that Jessica gave were really just a re-hash of the Windows issues, and those will also just go away as fewer games are developed on/for Windows, in favour of mobile devices and possibly consoles.  I would argue here that again the resources would be better spent on making sure that developing games on the web, iOS, and Android is as straightforward and well-supported as possible.

Her last two points, mobile, and science, I do generally agree with, although I think she undersold the mobile issue.  For example, there are many people that will only be using a mobile device – they need to be able to actually develop on iOS or Android (or maybe Chrome OS), not just build for it.  There are some tools for this – some that are really pretty good, but more would be better.

The first proper talk of the day was Exploring Science on Twitter with IPython Notebook and Python Pandas.  Again, this was labelled as intermediate, but really was novice.  It was an ok introduction to IPython Notebook in particular, but not a lot more than that.  For a novice, or someone that had never heard of IPython or Pandas, probably valuable.  For others, not so much.

The second talk of the session was From nothing to daily use: How Python changed my work life.  This was correctly labelled as novice, but was by another excellent speaker.  There wasn’t much to take away in terms of Python development, but it was a great insight into non-programmers (sort-of) coming into Python, and how Python is in use at a central New Zealand organisation.  Again, if there were five talks of this quality, then PyCon NZ would be an easy recommendation.

The final talk of the session was Advanced methods for creating decorators.  This was correctly labelled as experienced (one of only two at the conference), and was exactly what it claimed to be.  The speaker read the presentation, which is never great (I’m not sure what I got from it that I wouldn’t get from reading an essay), but otherwise it was informative and well done.  More talks like this, especially if they were better presented, would be excellent.

After lunch I attended Publishing Theology with Python, again labelled as intermediate but actually novice.  For a novice talk, it was fine.  I was hoping for more practicalities, and more focus on getting Word documents to ReST (when actually that step is done by a raw copy and paste and manual markup), but it was moderately interesting.

Prior to afternoon tea were the lightning talks (around 12, I think).  These were generally very low quality – there were a couple that were worth listening to, but many that I would rather have skipped, and some where the speaker was both not good at speaking, and didn’t really appear to have anything to say.  Too many people used it as a “share what you are doing” opportunity, rather than something that would be of interest to the group.

The final session of the day started with Computational Advertising, Billions of records, and AWS – Lessons Learned.  This was listed as experienced, but was really intermediate (at best).  A poor abstract (just throwing together a lot of words, really), but an ok talk.  Either more practicalities (exactly how were things done), or being much more general would have improved this, rather than the middle ground that was taken.

The last session of the conference was the third-best: Testing for Graceful Failure with Vaurien and Marteau (actually Loads).  This was accurately intermediate (although on the novice side rather than the experienced side), and very well presented.  The two tools sound interesting, and definitely something that I’ll be checking out (these are the only two tools that I learned about at the conference that sound worth investigating).  It would be great to see more talks like this.

There’s not much to say about the rest of the conference – it was fairly typical (venue, food, etc – although the swag-bag was very light).  There were a lot of giveaways (t-shirts, books, licenses, etc) that took a lot of time and were a bit odd.  I don’t really understand why people would applaud someone who was just randomly selected to get some free stuff, or why the giveaways needed to be drawn out so much.  In general the organisers did a good job, though – it’s not really their fault that the quality of talks (and speakers) wasn’t as high as it could be (unless they turned down the good talks, which is unlikely).  It’s possible that I missed some great talks – I’ll be watching the videos once they are available (most of them, if not all).

Two issues that should be addressed for next year are the “audience level”.  Of the talks I saw, there was only one that was actually experienced, four that were actually intermediate, and six that were actually novice.  Many of the novice talks (and one of the intermediates) claimed to be higher.  The first problem is that the level need to be accurate, so that people can go into a talk with a realistic expectation of what’s required.  The second problem is that this skews far too far towards novices – there needs to be more experienced talks in particular, and more truly intermediate ones as well.

Overall, I wasn’t particularly impressed.  Since the conference was close to home, it only cost me around $400 (travel, registration, food), which is very cheap as far as conferences go, but could instead pay for a new iPad Mini (which I’d use for much more than a weekend), or several books, or licenses, or various other things where I think I would get better value.  If I was looking for work (or workers), or for collaborators on an open-source project, then I can absolutely see value.  However, I’m not doing any of those right now.  If the conference had more experienced-level talks, more inspiring talks, and more great speakers, then I would absolutely attend again.  If I was a novice, or low-level ‘intermediate’, then I would certainly see value.  The venue for 2014 wasn’t announced (Dunedin was two years ago, and they tend to alternate, so I would guess that Christchurch and Wellington are the two most likely, although Hamilton might be a contender), but as things are I’m not really sold on attending again, unless the speaker line-up looks particularly good, or something else changes (e.g. if I am looking for workers).

An option that I would be interested in, but I doubt will be done, is a “green” option for attending.  I would pay a discounted registration (90%?) to get access to live streaming video of the presentations and a posted t-shirt (or even the whole conference bag).  I can still interact with other attendees in real time (via Twitter, ADN, etc – questions can also be handled this way), if not to quite the same level, get much the same out of the conference, and save a lot of the cost (e.g. even this year with it so close to where I live, I would still save 75% of the overall cost), and be much more environmentally friendly (i.e. reducing wasteful travel).


Codea (formally called Codify) is an $11 iOS application in which not only can you develop applications, you can run them (you can’t run them outside of the app – i.e. this isn’t a way to develop iOS applications).

The application is very pretty – and that counts, this is iOS!  At launch, you’re presented with a set of example projects, and you can create your own (I don’t think touch-and-hold is a great way to get the contextual menu for delete/duplicate/copy into new project, but it works well enough).

Inside of a project, there are two views: the code editor and the execution window.  The editor is good – it’s not as good as Textastic (and there’s no configuration possible – not even changing font size via pinch & zoom), but it’s perfectly usable (the worst part are the tabs at the top where you can switch between files, where the tabs are bizarrely small).  There are elements of the editor that are superb: if the editor can tell that the function arguments are a colour, then you get a colour wheel, if the argument is a sprite, then you get a sprite picker, and so on.  That’s the way to make coding on an iPad faster and more enjoyable.  The keyboard, like Prompt and Textastic, has an additional top row with keys you’re likely to need (paired quotation marks and brackets, +=, and so on – it’s interestingly a very different set of keys to Textastic (both have their advantages).  Also available via this extra keyboard row is a very nicely formatted set of help documents that explain the methods that are available and how to use the app in general.

Applications are developed in Lua – this isn’t a language I’ve done a lot in, but I’ve seen enough and it’s similar enough to other languages that it’s easy to get familiar with it.  I sincerely hope that the developer plans to offer additional languages (Python!) in the future (perhaps as in-app purchases?).  Most importantly, there are methods available that expose the iOS interface to the code (especially touch information and drawing routines).  These are somewhat limited compared to writing an iOS Objective C application in Xcode on a Mac, but perfectly usable in this context.

Once the application is complete, you can switch to an execution window.  Two thirds of the screen are the application’s display, with a sixth for textual output (e.g. debugging) and a sixth for parameters (e.g. sliders that you can use to pass values to the application – these are extremely easy to use in the code).  Unfortunately, given Apple’s restrictions on apps, this is all that you can do with an application at present.

The app is well made and does what it aims to do very well.  There’s clearly room for expansion (minor interface tweaks, more languages, more access to iOS features) as well.  The remaining question is whether there is any practical use to the app, given that you’re restricted to running your applications within the Codea app itself.

(It’s possible that this restriction will be lifted or weakened in the future – with Apple it’s difficult to tell.  It does seem likely that there could be a version of the app that allowed you to export (as a collection of text files) and import code, just as an application like Textastic can – or even some sort of seamless sharing via Dropbox or iCloud.  This would make it easy to share applications, but you’d still need to run them in Codea itself, unless they were pure Lua and didn’t use iOS at all.  However, it seems feasible that someone could then write an emulator/interpreter for Codea apps for OS X (replacing touch with the mouse), so you could run your apps externally if you liked.  It seems very unlikely that you’ll ever be able to turn them into full-fledged iOS applications).

The app demos very well – it shows a glimpse into the future where not all development is done on traditional desktop/laptop systems.  However, I can’t see how it can be of any practical use – except for education.

For education, this seems like an extremely valuable application.  In an educational context, it doesn’t matter if the app can run standalone or not (it would be nice if you could easily share it with someone else, like a teacher).  The interface is approachable, and the language friendly, and there’s potential for creating very impressive apps.  I would love to teach a short course where the students did all their development in Codea (perhaps on a beach away from a typical “lab” environment…), assuming that the students all had iPads already (and we have an AppleTV and large TV to demo things to each other).  I hope that someone does do this (and writes it up somewhere where we can read about it!).

This application is amazing.  Even if you have no interest in programming, you should buy it to support the developer.  If you do have an interest, you should have bought it already.


Textastic is a programmers editor for iOS.  It’s not perfect, but it’s very close to the app that I was waiting for ever since the first iPad was released.

Even before I had an iPad, I’d mostly stopped using my laptop.  The only time I did use it was when travelling overnight (I’d take it if I had to work while away, or in case there was an emergency and I had to work on something).  I don’t need a full computer for this – typing on a software keyboard on a 9.7 inch screen is perfectly adequate for emergency work, and when combined with a bluetooth keyboard (which is small enough to easily pack, and I already own) and a monitor (now a TV via AirPort mirroring) it’s quite useable as a work-while-travelling device.

The only missing component was the software: for a very long time there was nothing available.  There are oodles of word processing applications, note takes, and there are even a few HTML editors – but nothing designed for real programming work.  I’m not sure why this is, but I suspect that most professional programmers already have something along the lines of a small MacBook Pro or Air and find it convenient to travel with that, so wouldn’t use an iPad, even in these situations.  The best available was, unfortunately, using SSH (this was before Prompt, too) and doing the word in a command line on a server somewhere.

At $14, Textastic is expensive for an iOS app, but cheap for a programmers tool (it’s definitely worth the price).  This is a text editor, not an IDE, so you don’t get a debugger or interactive prompt or anything like that – it would be difficult to do that anyway given Apple’s restrictions, and I prefer a dedicated programmers text editor to an IDE anyway.  (You can easily switch to other apps that together provide most of what an IDE does).

It’s a good editor – it does syntax highlighting for many languages (including Python and everything else I’m interested in), shows line numbers, and you can switch the file’s encoding and line ending choice.  You can quickly jump to “symbols” (e.g. method), although I generally just scroll since I know where I’m going.  There’s a decent find (and replace), and you can choose from DejaVu Sans Mono, Courier New, Luxi Mono, Monofur or Inconsolata for the font.  There are a variety of colour themes, there’s control over tab settings (including soft tabs) and word-wrap.  Although you can set the font size, you can also just pinch & zoom to get the size that you’re after, which is far superior to manually picking a size.

Generally the app does what it should: it gets out of the way and lets you get on with writing/editing the code.  There’s an additional top row in the keyboard that offers symbols that you’re likely to need (this oddly scrolls horizontally to fit everything in) so that you don’t have to toggle between keyboards often (except for numbers) if you’re not using an external keyboard.

Where the app falls down for me is where iOS in general performs badly: moving data between applications.  You can share files to the app (e.g. from Dropbox), and there are actually many ways of getting files in and out (via WebDAV, iTunes, creating local files), but you’re left with the same issue that lots of iOS apps have: you end up with duplicates.  To its credit, the app tries to address this (e.g. it can know that a file you’re editing belongs in a particular Dropbox location and sync the changes back), but at the end of the day it’s clearly a hack.  The app is still useable, but this does mean that I more often read code in it than write it (it’s far better for reading code than the Dropbox app is).

It seems obvious to me how to fix this problem (I don’t understand why it isn’t already the case).  Surely nearly every programmer that would use this app has their code stored in some sort of repository (CVS, SVN, Git, Mercurial, Bazaar, etc).  The repository is the file system.  The app has a working copy checked out, and you can commit changes back to the repository.  The app doesn’t need to support every action that the VCS/DVCS offers – really just (in SVN terms) add/remove/update/checkout (and perhaps propset) – if you need to do something else, then you use a dedicated SVN/Git/etc app).  This completely solves the issue of multiple copies of files, because that’s exactly what these tools are designed to handle.

Unfortunately, the app would need to support at least SVN, Git, Mercurial, and Bazaar since there’s a lot of diversity at the moment.  However, it seems likely that there are libraries that can be used (even in iOS) that would handle a lot of the grunt work.  If the app let me check out a SVN working copy, make changes, and then commit them back, it would be absolutely perfect (I’d pay ten times the price if the app supported this).

If you need a programmers text editor on iOS, then I highly recommend Textastic.