Had I Known ...

Earlier today I was asked to take a look at a piece of code that was written a couple years ago to solve a very specific problem at a European branch of the day job. It was just a simple Python script that called a series of SQL queries to correct some information that was missed by a sync mechanism between three applications. There was no documentation for how the code was supposed to work, nor was there any specification document providing the gist of the tool. However, being the organization's predictable fool, I agreed to take a look in an effort to discover and fix the reported problem.

Some Python Code

When the .zip file came through I was quick to get started on the debug process. The problem was that, after running well for two years, the code would throw errors galore and quit. In with the source files were some log files, so I started with those and quickly found the cause of the problem. The next challenge would be to resolve the problem, which naturally involves looking at the source code. I fired up a text editor and started digging into the Python, but something seemed a little off with what I was looking at. The coding style and terse comment blocks looked incredibly familiar.

It was my code. The attribution block at the top of the page had been completely removed, and any reference to specific GitHub issues to explain why certain code blocks did what they did were scrubbed, but the code was most certainly from a project that I had written in 2015 to work as an "interim solution" to a problem here in Japan. Locally, the Python project was certainly a short-lived fix. However, it seems that someone shared it with the German team in 2016 to solve a similar problem they were having and this temporary solution became a permanent one.

Less than 20 minutes after receiving the code from my European colleagues, I fired off and email outlining the proper fix to their problem, which would make this malfunctioning code completely irrelevant1. Had I known this fix would have been shared outside of the country, I would have written the tool a little more intelligently. There would be better error checking and more links in the code pointing to the GitHub wiki page where the software was most certainly documented. Then again, had I known this fix would have been shared outside the country, I would have likely followed up with international teams to make sure they did not use the sync hack after a proper resolution to the problem was found.

This does make me wonder just how much of my code has been handed out to the various international teams without my knowledge2. A lot of it was designed for a very specific internal purpose, so I doubt much of it would work elsewhere without a bit of effort.


  1. The problem turned out to be the code was moved to a new server running an incompatible version of Python. I had written the code for Python 3, but the server Germany set up was running an older version.

  2. and my name. Why delete the name of the developer? Why remove GitHub issue numbers from comments? I have a feeling I know who did this, but it doesn't make the unnecessary editing of comments any more understandable.

Let Golden Week Begin

As of this moment, I am on vacation. There will be no need to check the work email, Slack, Teams, or other communications platforms until the morning of May 7th when I make my way to Tokyo for an afternoon of back-to-back meetings. Ten consecutive days off. What the heck will I do with all that time?

Believe it or not, there will not be very much coding taking place.

Out of Office

As much as I would like to invest a couple of days to iron out some rough spots with 10Cv5, the family will make sure that I don't spend more than a handful of hours each day looking at a screen. So while I might be able to tackle some of the lower-hanging fruit, there will be some challenges tackling the bigger things, such as getting the new account administration screens prepped and the signup pages activated.

Lack of coding aside, one thing that I will be working on over the coming days is a more clearly defined plan for 2019 that will ensure I'm in a better place to be self-employed by 2022. There are a few ideas that I've been kicking around in my head the last few weeks, but there just hasn't been a proper amount of time dedicated to thinking through the ideas. Transitioning from a "safe" job to something that is 100% dependent on consistent success is not an easy thing when there are mortgages that need to be paid and family members who need to be fed.

What I have been planning on doing is creating a pair of useful applications that can be offered to the world for a fair price. Hopefully this will provide a bit of recurring income in a manner similar to what is seen with applications like Sublime Text and other tools put out by independent developers. I have no expectation that these applications would have an audience large enough to warrant a full-time commitment. The first of these applications will be made available for purchase this year, with the second appearing relatively early 2020. Both of these tools can expect updates at least once a month.

However, the main idea that I've been thinking about involves leveraging a lot of the knowledge I've amassed over the years to help smaller educational institutions. I've built two LMSes already and have spoken to a number of small school owners about possibly creating a third. In these conversations, I really listened to what sorts of problems the schools faced on a regular basis. By better understanding a problem, a potential solution has a better chance of becoming an actual solution. What I heard time and again wasn't that the schools were having problems organizing their data. The number one concern that small school operators had, aside from maintaining enrolment rates, involved communication with the students or parents. Despite the plethora of platforms available, this is the problem to solve.

Any potential solution cannot be "create another platform", as this generally does not work. There are better options, but can they pay the bills?

This is what I'll be working on during the holiday when not out and about with the family or blogging in the park.

Ideal Working Spaces

Given the opportunity to design your ideal working space, what would it look like? This is something I've thought a lot about over the last few years, particularly when employed as a developer, and is a topic that came up quite often during the design phase of the house Reiko and I are having built. In this home I'll have a bit of a dedicated space where it will be possible to set my computer down to do some work and — most importantly — leave the machine where it is at the end of the day. While a lot of people take desks and personal working space as a given, it's something I've not really had for well over a decade. At the end of every day, I need to put everything away so that my working area can be used by other people. This is true both at the day job, where I work inside a seldom-used classroom, and at home.

Given an unlimited budget or a very lenient employer, my ideal working space would be inside a library. One with large windows, row upon row of books, and clean tables where people come and go while respecting everyone else's space. Something along the lines of the image below, which is one of the many reading rooms at the University of Zurich, would suit me quite well.

Reading Room 2 at University of Zurich

What's unfortunate is that this sort of environment is quite difficult to have in one's home without vast reserves of wealth; something I will never possess. So, to keep things a little more realistic, my ideal working space for now would be a wide desk next to a window, where I could have my notebook connected to an external monitor or two, my podcasting equipment out and ready at any time, and a decent chair that would not make my body start to hurt after a few hours. Something like the image below, only in a better-lit room.

A Clean, Decent Working Space

What's great about having a dedicated workspace in the new house, aside from the fact that it's actually dedicated, is that Nozomi's sleeping mat will be right beside the desk. This will make it easier for her to remind me to take regular breaks and to get outside for some fresh air. Wins all around!

Of course, I'll be sure to share some pictures after the house is complete and everything gets set up. Only another few weeks to go!

Eight Days

So it is, after much deliberation, discussion, and doubt, that an eight-day business trip to the day job's global headquarters in New Jersey has been booked. This will be the first time I've left Japan since landing here almost 11 years ago, and it'll be yet another trip where I'm on a plane without Reiko1. This trip is something that I've struggled with internally for a couple of reasons, none of which seem to make sense to people when I try to enunciate them. Perhaps this means that the stuff in my head is utter nonsense. Perhaps this means that I'm just a poor communicator. Maybe it's a bit of both. Either way, there's no turning back now. Documents have been submitted. Forms approved. Money spent.

The Flight Plan

By all accounts, this trip is expected to be a really big deal by the participants. For the meetings and discussions I'll be a part of, we have five days to come up with the technical direction and strategy to implement the new business directions and goals while making extensive use of a new set of tools that — ideally — will give the company the flexibility it needs to be more responsive and more aligned with student and customer needs than ever before. Lofty goals for sure. The trick will be to devise a near-flawless execution of all the changes that will be necessary, while being careful to not alienate half the organisation along the way.

While I try to stay away from the whole corporate politics time sink, I can't help but wonder how many people will stand in the way of any decisions made during this week in the US simply because they were not invited to be part of the discussions.

On a more personal note, though, I've had reservations about this trip for a while because it's happening very close to the time when Reiko, the boy, Nozomi, and I are planning on moving into our new home. Construction will be completed while I'm on the other side of the planet or soon after, and this means that a lot of things need to happen between now and the time we're officially cleared to take possession of the house. Reiko has put in an incredible amount of work to ensure everything is being done efficiently and in a timely manner, but the eight days I'm gone will put a stop to a lot of productivity.

There's not much I can do about this, though, aside from ensuring that as many ducks are in a row as possible before and after the trip.

Fortunately, while I'm in the US, Reiko will bring our son and puppy to her parents' house. There she'll have the help she needs to look after everyone, while also being afforded a little bit of time with her parents. The boy will likely be spoiled like he hasn't been in a long time, and that's okay. Hopefully he'll not miss it too much after we return to our home to resume "normal life".

I think I worry too much about unknowns, and maybe not enough about things I consider routine. This trip will ultimately be a good thing for the career, allowing me to learn new skills while also solving very complex problems. I'll get to network with people who could open doors to other possibilities in the future and, even better, it will be easier to learn how some of my colleagues in other parts of the globe went about solving their own unique sets of problems. The more a person learns, the more questions they'll have, and the more answers they'll seek. I strongly feel that life is not worth living if there are no further questions to ask, so this is certainly a positive. I just hope that my family here is able to enjoy their week while I'm overseas, and I hope that I can return safely without any problems.

Alas, the mind is still clouded and foggy. I should stop writing ….


  1. despite all the flying we had done early in our relationship, we've yet to fly on the same plane

Sometimes I Just Want to ...

My inbox is full of questions from people who should know the answers before they even hit send, and it makes me wonder whether I should respond to the queries at all. What value do I provide when the same 5 people ask the same 10 questions day after day after day? What could possibly change so drastically in the software they trained me to use less than one year ago to result in people who seemingly, in the not-too-distant past, had all the answers to send messages that deteriorate the confidence I once had in their ability to understand our systems? I do not know.

As priorities, projects, and people's expectations of me stack up, new waves of confusion and confoundedness wash up in unexpected places to interfere with irrational schedules and illogical deadlines. I'm asked to answer questions about things that are outside my scope and responsibility "ASAP", as though none of the twenty other items on the day's priority list are actually priorities. It's weird.

Lately people are bypassing "the process" within the company and sending messages directly to me, trying to get answers for things that others either do not know or do not wish to know. While it's nice to feel wanted and to have people think I have the answers they seek, it's also a sign that maybe people at all levels of the company could do with a little follow-up training and support to help remind them of how things work, and why they work the way they do … be it logical or otherwise. This will never happen, though. Managers do not like to think they're in need of this kind of support, and middle-management hates it even more.

Sometimes I just want to ditch email, as very few messages are ever positive. Rarely will a person write to say "Here's this awesome thing I found that you might like!". Instead it's people who want something … or companies that want something … or spam connoisseurs who want something.

Do we even need email anymore? Doing away with it would instantly drop the stress levels of millions around the world. It would also get rid of those annoying four and five-digit notification counters on people's phones. People who, admittedly and unashamedly, never read their email. This certainly sounds like a win-win.

It won't happen, though. Email, for better or worse, is here to stay. Even if I remove the work account from my mail clients. And sometimes I just want to …

December 2017 Review

At the beginning of December I wrote a short little post that looked at the rising popularity of monthly reviews as a way for people to set and — hopefully — reach realistic short-term goals. At the bottom of the post were a few of my own goals, and so now it's time to see how well I did against my own objectives.

ToDo List

Under "Creativity & Hobbies", I laid out the following objectives:

  • write 10 blog posts
  • publish 5 podcasts (probably Doubtfully Daily Matigo shows)
  • read 2 technical books and 1 fiction novel

By the end of the month I had written 11 blog posts, published zero podcasts, finished one technical book and made it through about 80% of another plus a recently published Star Trek novel. Not great, but not bad, either. With regards to the podcasts, that's something that I've actually started to do since January 1, and the daily publication of episodes is going swimmingly thus far.

With family, I had the following goals:

  • spend 8 days this month "computer free"
  • get Christmas stuff sent to family in Canada by the 6th

The 8 days without using the computer was easy, as there were 11 days last month where my notebook was left in the work bag. Sending stuff to Canada by the 6th was a bit too optimistic, but stuff was sent last month and should have been received in Southern Ontario by now.

For work, there were two LMS-related items:

  • finish development of v4.2 updates
  • begin work on documentation of v4.2

I received the last of the data I needed from a couple of departments on December 30th and, with this data, I can now begin the 8-day process of building the necessary functionality. Suffice it to day, I have not yet completed the 4.2 updates and am quite a bit overdue. As for documentation, I have begun work on it. The process will take several weeks, so it's not even close to being complete.

So there we go. Not a particularly successful month despite everything that was done. With this in mind, January's goals will be much less ambitious.

Creativity & Hobbies

  • write 10 blog posts
  • publish an episode of DDM every day this month
  • read 1 technical book and 1 fiction novel

Family

  • spend 4 days this month "computer free"
  • bake something new

Work

  • complete the core 4.2 updates
  • prepare the 4.3 "Portal" demo to knock some socks off in Tokyo on the 16th

This shouldn't be too hard to meet. The challenge will be the 4 computer-free days, as there's a lot to get done.

9:13am

Non-Productive

Full-sized Image (5616×3744px)

Skunkworks > Startup?

Over the last few years I've been working on a number of projects that I've hoped could generate enough interest to warrant founding a new business venture, hiring some smart people, and earning a decent income for everyone involved. While some projects have been more successful than others, none have really caught on in any fashion. The two I'm most passionate about — 10Centuries and Green LMS1 — seem to have very little traction anywhere. This could be due to the terrible names. This could be due to the terrible marketing. This could be due to something I'm simply not aware of. That said, what I do know is that I can't really expand on Green LMS anymore without potentially risking my position at the day job, as that project is literally an earlier version of the current project I'm working on for the employer.

All in all, I really feel that Green LMS can have a very positive future given the resources and energy. Schools around the country and all over the world could tap into the various functions that make the system nice — such as the integrated blogging, scheduling, homework submission, and lesson history views — and focus more on the people acquiring skills than the systems they currently use, which either look like something from the late 90s or are completely built on custom Excel files that have evolved over the years. What I'd really like is a block of time to really polish the product, make it available, generate awareness, earn customers, and begin the next phase of the project's development. But how can this be done without upsetting the people who pay my salary?

The term "skunkworks" often refers to a department of a company or institution, typically smaller than and independent of the main divisions. The name was originally given to a team of smart people at Lockheed’s Advanced Development Projects Division during World War II. Since that time, companies around the world have borrowed this technique to give some of their best people the freedom and space needed to solve the next set of problems facing the organization. Could I pitch something like this to the powers that be and successfully acquire the talent and financial backing required to take the LMS to the next level?

This is something that I've been seriously considering for some time. I've been researching the competition, speaking to potential customers, considering layouts, and planing how it would go from being a cost centre at the day job to breaking even. As one would expect, a number of hurdles would stand in the way of the project's acceptance, but this doesn't seem to be an impossible request given the proven track record for the existing project. Senior managers are not so easily convinced, though. If they were to approve the creation of a small team that operates outside the existing structure of the organization — something that's almost unheard of in Japan — then there would need to be a huge payout at the end.

But what would that payout be?


  1. a lesson management system for independent schools

We Shouldn't Be a Fan of Our Work

Last year, after almost a decade of circumventing rules at the day job to help people serve students better, I was moved out of the classroom and into a full-time development role to continue doing what I was doing as an instructor, but without all the cloak and dagger to make it happen. A lot of people were happy with the news, including myself. It meant that I could play a role in making something that colleagues all over the country might find value in, rather than something that just a handful of schools would use without really saying much to upper management about it. Over the last 15 months, though, I've come to dread going to work. I despise checking email. I want to be invisible on Skype all the time or, better yet, just shut the distraction down so that I can make it through the day without wanting to hurl a computer five stories to the pavement below1.

The problem is not with my colleagues. The problem is not with the endless complaints from people who storm into the little space where I do my work. Believe it or not, the problem is not even with the sound of silence from human silos within the organization who refuse to share their knowledge of the home-grown CMS my project must interface with. The problem boils down to a very fundamental issue that will never be resolved so long as I am working for someone else.

The issue is the result of an unsharable vision.

Steve Jobs and the First iPad

Way back in 2010, soon after Steve Jobs walked on stage and showed the world the iPad, I started thinking about how such a device could be used in education. By that time I had been teaching for almost three years and had the hubris to think that I could write software for a tablet that would make education easier for teachers, students, and all the support staff that are required to make a school function. Looking back at the early design sketches, I almost cringe at the naivety on display. The concepts I was dabbling with were far too similar to the way Microsoft approached tablet software in 1999.

Suffice it to say, the sketches went nowhere and I shelved the idea for a few years, revisiting the idea whenever I'd read an article about how tablets were being used in education.

Fast forward to 2013, I was asked to create a special kind of report for a new type of class that was being trialled in the area. Excel was a mainstay at the day job, and every report we gave to students or their sponsor came from this spreadsheet software. Me being me, I was one of the few people responsible for writing all of the reports in the region to ensure that every student and every sponsor would see a consistent message with consistent formatting and consistent quality. This new kind of report, though, needed something that Excel was not particularly good at without a complex series of macros. Instead, I used this opportunity to push through an idea that had been bouncing around in my head since the year before: build a data-collection website that is designed to be finger-friendly so that teachers simply tap-tap-tap their feedback and let the database do the heavy lifting.

Selling the idea was not easy, as people "just wanted an Excel report", but I used a long weekend to prototype the site and build some dummy reports. I presented it to the managers the following week, and they loved it.

This was shortly after my employer had rolled out iPads to all of the schools in a bid to make us seem more efficient and professional. Both counts failed and the project was bleeding money but, again, I had enough hubris to think that I could push through my own agenda while using company resources to solve company problems. Within six months the project had expanded to include several different types of reports, and people were generally happy with the system. A few times the project came close to being shut down when certain members of IT learned of the project2, but there was always just enough pushback from the local schools to keep the project alive.

In 2015, after a redesign of the iPad software teachers were supposed to use in class, a number of people gave up trying to use the tablets in the classroom. We still had to use them to record attendance, lesson goals, homework, and other details, but a large portion of the teaching staff gave up trying to use the tablets beyond the bare minimum. The problem was that the software was poorly designed for the job it was hired to do. The textbook application was nothing more than a frustrating PDF reader that stuttered and crashed every 15 minutes. The pedagogical tool was sluggish, hard to look at, and buried all of the student profile information, making it very difficult to learn more about students — or record updates — before walking into a classroom. Despite transitioning from paper to digital two years beforehand, people were pining for the day when we'd drop the iPads and go back to paper records. The older textbooks that made use of cassette tapes were easier to use and less embarrassing than the iPad software.

So I decided to do something about it.

Again, over a long weekend, I mocked up a new pedagogical system that would work on the tablets while making the system easier to use for teachers and staff. Information would be easier to find and filter. Textbooks would be searchable and come with custom lesson plans to help inexperienced or fatigued teachers. Reports — my specialty — would be built in to the pedagogical system meaning that teachers would spend less time writing them while students and sponsors received more data from them. In the space of four days the demo was ready and I started to show it around to people at the day job.

People loved it. Managers loved it. Even some of the students commented and said that it looked simpler. HQ, however, wouldn't hear of it. There were processes and procedures and hierarchies to obey, and I was bucking the system. They demanded it be shut down, even though there was zero student information in the system. I "conveniently forgot" to do so.

Then, in the fall of 2015, an interesting thing happened. The president of the company caught wind of these projects I was working on and asked to see them. He then asked why I "was being wasted". A week later I was approached with the opportunity to transfer to do software development in the IT department and, in March 2016, it became official. That 4-day design of the pedagogical replacement system is still being worked on and refined today, and people are generally happy with it … except when they aren't.

Back to the Problem

Earlier I said that my problem boils down to a very fundamental issue that will never be resolved so long as I am working for someone else, and this is completely accurate. I have been working quite hard on the problem of creating effective software for use in education for almost five years, the first four years of which was in near isolation where I was able to design and implement features and functions as I saw fit. When I would watch people interact with my software, I would find problems. These were often actions they would do that I never once considered, and I would go back and find a better way to support their goals while also ensuring mine were met. People would come at me with ideas or complaints, and I'd listen and find ways to make the system better for them, again ensuring that my goals for the system were not lost along the way. The way I looked at the tool was very simple: the UI is for the teachers, the printed reports are for the students, the database is for me.

By doing this I was able to create something that teachers actually liked to use. Students were happy. I had a nice database full of numbers from which to quickly answer questions from managers.

Since moving into a role with IT this has changed. People at HQ are accustomed to working with software that fights you every step of the way. Want to record someone's attendance? You'd best have 3 minutes to spare, because what used to be a circle or an X on a piece of paper needs to be infinitely more complex in the name of "security". Want to know what textbook your student will be using after they finish their current book? Go ask one of the school's support staff, because the teaching software will not let you know that information without a fight. This is the state of corporate software in the world, and the previous solutions for the iPad and schools all came from this group of people. My software with it's opposite approach to the same problems is completely alien to the way they think about the job. This isn't a criticism or a disparagement. It's a fact. They're looking at problems as A⇢B⇢C⇢…⇢Z, and I'm looking at problems as A⇢F⇢Z.

It's no wonder there is a great deal more confusion at head office than at the schools. It's no wonder that when members of the various departments in Tokyo report "bugs" in my software, it's because they're not accustomed to software understanding a person's job and performing a bunch of steps transparently on their behalf. From a big picture point of view, I completely understand this. In the heat of the moment when I'm reading that email or new issue on GitHub that has nothing to do with an actual bug and everything to do with making the software harder to use, however …

Flip that Table!

I'm too close to the project. I've invested a great deal of time and effort into making something that is designed to be used by people who really couldn't care less what the corporate interests are. That's why I invested so much time into making the UI for the people who would actually use the software rather than the people making snap decisions months after the initial decisions had already been made. This is why I call people people instead of using the same language as other people in the corporate structure. The whole thing has been designed to serve the people at the bottom of the totem pole. HQ wants things changed to serve their interests3, and I am growing tired of pushing back.

There are, of course, a lot of people that I've worked with over the last year at HQ who do understand the goals of this project and have gone to bat on my behalf more times than I can count. A lot of very smart people with very sharp insights have helped take a rough idea hammered out in 4 days through to the state it's in today. Many of them are just as frustrated with the various emails, non-issues, and Friday 5:30pm deployment cancellation calls as I am. But there's not much that can be done to change this. The vision of the project is simply too foreign at the moment for people, and the sole developer is too angry all the time to cast it in a positive light. I really need to take a step back …

… and another step …

… and one more.

Because it really doesn't make much sense to continue dreading going into work. There is a lot of good about going in, too. I like a lot of my colleagues. I like the ridiculous amount of freedom I have within the organization. I like seeing people use my software without realizing they're doing more in 30 seconds today than they did in 5 minutes last year. It's a great feeling! I just need to stop being so attached to this specific project.


  1. This would be especially bad, given that I'm using my computers at the day job.

  2. these are the same people I work with now

  3. 15 months into the project, mind you …

Not Doing Too Good

The last few weeks have been pretty rough as it seems there are too many people vying for some of my time, my experience, my presence, or some combination thereof. These things are often freely available in moderation. When there are too many demands for the same resources, though, constraints can drive a person's stress levels through the roof. This is where I find myself this week.

The Sacred Bridge in Nikko

Being angry and frustrated is not a wonderful thing. Creativity cannot thrive under these conditions, yet it seems that whenever a person is under the gun to deliver before a bunch of arbitrary deadlines, creativity is needed in excess. While it's not at all realistic, I'd really like to take all 26 of my banked holidays at work and go for a walk with Nozomi every morning rather than head into the office where it seems artificial problems wait and artificial priorities jostle for artificial expedition which results in a very real lack of time for larger priorities. When asked why the larger priorities are yet to be completed, people are told about the other items that managed to jump the queue … not that it matters. Apparently, when items are deemed "too important to wait", they are to be resolved alongside the larger projects, as though we all carry with us two or more extra arms that can be deployed in such a scenario.

It's ridiculous.

How many times must a person refocus during the day before they can begin to work on the things they're expected to complete? Given that very little of what any of us does today will be remembered in five years time, why is there always so much of a focus on artificial priorities?

We spend so much time stressed out over the imaginary objectives of people who pretend they own us that we ignore the very real objectives that drive us to get out of bed in the morning. Looking at all the things that are stacking up in front of me, I'm not even sure why I even leave the house in the morning.

I'm not doing too good.