Yesterday I decided to try something crazy and disabled JavaScript on my phone. The reason for this had more to do with how hot the device would get every time I'd try to visit popular websites than privacy or any other concern that would justify disabling the scripting language. As one would expect, a number of sites stopped working, such as Nice.Social and certain elements on this blog. What was not expected, however, were the number of heavily-trafficked websites that just would not show a single character on the screen without JavaScript. Engadget and The Verge both presented blank pages, which probably shouldn't be that surprising given their parent companies, and so did some of the local news sites that I read, such as The Hamilton Spectator. Other news sites loaded just fine, but were devoid of advertisements, custom fonts and, most interesting of all, warnings about how many articles I've read in the last 30 calendar days.

The experiment ran for just over 30 hours before being put to an end so that I could go back to using Nice on my phone, but there was one other interesting benefit to having JavaScript disabled on the device: the battery life was amazing.

My phone is a 4 year old iPhone 6S that sees a good amount of use every day. Safari is the most commonly used application followed by PocketCasts, Byword, Evernote, and Galaxy on Fire 2. In an average day, I'll see the battery drop from 100% at breakfast time to 80% by lunch, then 70% by dinner, and end up somewhere around 40% by the time I crawl into bed. When JavaScript was disabled, the battery never dropped below 80%. Mind you, I wasn't really "incentivized" to use the device for much beyond listening to podcasts, but it's still interesting to see that the battery is barely touched when JavaScript is disabled in Safari.

Of course, with some of the things I've learned by using the web without JavaScript, there will be new issues recorded into GitHub for me to tackle when time permits. The Anri blogging theme on 10C really should be able to work without any JavaScript, as that was one of my targets. Nice should also have some basic support for people who choose to use the web differently. Given the current workload, I'm not sure when I'll get to these updates, but they will be tended to.

Coffee and Rain

Coffee and Rain

In what feels like a lifetime ago, when I had plenty of time to spare, one of my favourite things to do on a rainy day was to walk to the nearby coffee shop with a book, order a hot cappuccino with a Nanaimo bar on the side, and sit at an uncrowded table next to a window to watch water fall from the sky in relative comfort. Soft music would be in the background, generally Nora Jones or someone playing an alto sax. Everyone who entered the cafe would do it the same way, bursting in as though wearing a wardrobe made of sugar, loudly commenting on how wet they were, then walking with squeaky shoes up to the counter to order a drink. After an hour or two of this, I'd grab my umbrella and head back home in the rain, choosing to walk for the simple pleasure of it.

The last time I remember doing this would have been some time around 2004 when I still lived in Richmond, BC and would frequent the nearby Blenz Coffee at the corner of Blundell and Garden City Road. I was friends with the owner and would often head there after work just to chat, read, and spend some time around people. It was the rainy days, though, that I enjoyed the most.

Every so often when a typhoon hits the area and the house is quiet, I like to pour a cup of coffee and sit in my little workspace with Nozomi while everything is off. The only sounds to be heard, aside from the random noises from the puppy, is of the storm. An unfathomable number of rain drops falling against the side of the house and the insulated windows. The distant rumble of thunder. The low howl of the wind interspersed with short gusts that test the rigidity of the house's frame. It's a pleasant sound, though one I generally enjoy in isolation now.

Closing Up Shop

One of the first freelance jobs I did after moving to Japan involved creating some management software for a bed and breakfast in Hakuba, a popular ski town in Nagano prefecture. The system was incredibly simple and, to the best of my knowledge, is still being used today. Since then, I've helped restaurants, taxi companies, shuttle companies, two banks, a music shop, five language schools, a confectionary store, one kindergarten, and a church with their digital needs. The work has allowed me to learn how other companies go about solving problems and it's directly funded quite a number of my personal projects. However, I've made the decision to stop accepting new work as of this month and will not renew any of the support contracts that I have with companies. After almost a decade, it's time to put this sort of work aside.

Closed for Business

The decision is one that I've been struggling with for a while now, as I've generally enjoyed most of the projects and have developed a good relationship with some of the people who have trusted me to help solve problems and keep their data safe. However, the burdens of business management have become a bit too much lately with all the other responsibilities and projects that I try to juggle. In the last six months I've done work for three customers, who of which have yet to pay their invoice and won't respond to email or Skype messages. My phone calls are generally directed to voice mail and, when I call the business directly, I get a minion who takes a message and nothing more. The outstanding amounts are just a few hundred dollars, but this seems to be the standard process with a lot of people I work with. With 50% of my clients, I tend to spend just as much time chasing them down for payment as I did writing the software in the first place.

This is a poor use of time and energy.

More than this, the accounting rules and regulations in Japan are incredibly complex and designed to confuse the heck out of people. The amount of non-development work I do for the small amount of money earned every year just isn't worth it anymore.

This doesn't mean I'm giving up on being self-employed by 2022, though. Freelance work was never going to allow me to be properly independent as I do not market my services nor do I actively seek out new customers. The plan for 2022 involves a very different business model. This is also true for 10Centuries. The project is a little more than seven years into it's 1,000-year mission and there's no plan nor desire to ever shut it down.

Looking back, freelancing has allowed me to accomplish a lot of very interesting things and learn skills that I continue to use to this day. That said, it's time to use my time a little more wisely to ensure future goals are met on time.

A New Collar

Thanks to the excessive rain over the last couple of months, Nozomi's walking vest started to carry a rather peculiar odour that wouldn't go away no matter how much it was washed. So, given that this particular vest was a couple of years old, it seemed like a good time to replace it. However, as with anything that is actually decent, the model that fits her best is no longer available. Even Rakuten, the abominable website where you can find everything from a Wayne Gretzky rookie card to BitCoin on a USB stick, couldn't find a single seller in the nation. It was time for something new.

Nozomi was a lot more energetic when she first joined the family and would often pull at her leash every time we went outside. Back then she wore a collar, so pulling against the leash meant she'd be choking herself in an effort to explore the world. I really didn't like seeing this, so picked up a vest that would fit nicely around her front torso. Pulling against the leash would result in putting the resistance against her breastplate instead of her neck, and this was much better for both of us. Given our past success with this type of harness, it made sense to look for something similar. Unfortunately, it seems that people with miniature dachshund's like having their pets wear gaudy colours, horrendous patterns, or just plain uncomfortable plastic. Nozomi is by no means a princess, but I won't have her looking like a court jester every time we head to the park. With time counting down before her next walk, though, she needed something that didn't smell foul.

Perhaps she's ready to wear a collar again?

Nozomi in the Grass

Photographing the puppy is still quite difficult, as she loves to look away from the camera, but her pink leather leash has worked out quite well so far. She doesn't pull nearly as much as she used to and the free mobility around her front legs seems to have encouraged her to enjoy slightly longer walks in the evening, so long as there's a breeze to help her stay cool.

Nozomi by the Path

We both needed a couple of days to get used to the new collar — Nozomi had to learn that pulling would not feel very nice, and I had to pay close attention to make sure that I wasn't accidentally pulling on her1 — and now we've got our patterns down. The only time I'm nervous about the collar is when we're crossing the road between our home and the park. Cars tend to cruise at around 60kph, which gives us very little time to maneuver if they catch us off guard. I don't want to pull on her neck to get her out of harm's way, so it's become necessary to carry her across the road … just to be safe.

Sometimes I wonder if I worry too much about this furry friend ….

  1. This can sometimes happen when the leash gets slightly tangled around a bush or thick weeds.

Five Things

A number of recent posts on here have been about a work-related project involving digital textbooks and today's post will be along the same vein, albeit with a different angle. Last month five schools in Japan were selected to trial a digital textbook system that I had developed as an alternative resource for teachers to use in the classroom. The system they were expected to use was quite a bit different from the tools everyone has gotten accustomed to over the last few years and, as one would expect, there was quite a bit of friction as a result. My alternative was released while still very much an alpha build1 and the response was rather muted, in that there was quite literally almost no feedback unless someone was specifically asked for an opinion. The silence was incredibly atypical, given that teachers are generally very vocal about their needs and expectations to deliver quality lessons2. So, not wanting to release the software nationwide without a good bit of feedback from the people using the tool, a survey with five questions and a free-comment box was put out to collect feedback from the 5 schools. Of the 90-odd teachers at those locations, 38 responded.

This is what I learned:

People Think It's Ready

84% of respondents said that the software should be released nationwide with the expectation that there will continue to be updates and refinements every couple of days. Given what's in the development pipeline, I can certainly live up to this expectation for the next couple of months.

People Love a Feature that was Created on a Whim

Audio scripts are incredibly important for teachers, and these were built right into the textbooks of the system my software was supplanting. However, one of the concerns that people had raised was that the textbook pages were just too long. So, because the audio scripts were built into the HTML pages, I simply rolled them up to ensure they'd be invisible unless explicitly requested. Despite some of the more complicated features built into the new system that I thought people would like3, this was not one I expected anyone to comment on.

People are Not Tied to the Web

The new textbook system from HQ had one specific feature that should have made it superior to the textbook systems I've developed locally over the last few years: everything was HTML. In the LMS I had developed a few years back, the digital textbook system used a combination of Markdown-formatted text — which was rendered as HTML — for the teacher's book, and high-resolution images for the student's book. This was because the source material came in PDF, and I'll be darned before I ask teachers to load a 90MB PDF and scroll to the page they need before teaching a lesson. To get around the PDF limitation, the student book was converted to a series of 2,300-pixel-wide JPG images and called only when required. This mean that when a person opened a page, they only had to load a subset of the textbook. This resulted in an average download of about 3MB in 5 seconds when opening a textbook on a school wifi network. The system from the US, because it uses HTML, can theoretically serve the same information in a fraction of the bandwidth and, because it's mostly text-based, the data transfer could be measured in the kilobytes.

Unfortunately, this never seemed to matter to teachers. While some said they very much prefer the HTML rendering, which would make font-resizing and whatnot possible, two-thirds of respondents said they wanted the high-resolution images instead. This surprised me.

People Prefer My New System Over My Legacy System

Despite being just an alpha, respondents clearly preferred the new system over the textbooks that are built into the LMS that I invested so much time and energy into. This intrigues me, as I've heard very little feedback from the schools about the textbooks in the LMS. There were issues with pinch-to-zoom and swiping between pages reported from time to time, but that was about it. Nobody asked for new features to be added. Nobody seemed to complain. It was just something everyone quietly used. However, after seeing two newer ways to deliver digital classroom materials, the feedback is pretty clear: people weren't all that interested in the first thing I created for them, either. They just weren't particularly vocal about its shortcomings.

Which leads me to the main thing that I'm seeing across the educational industry.

Most Teacher Resources Aren't That Great

There are a couple of developers I know who work at competing schools. We generally don't share the details of our work with each other for obvious reasons, but we do tend to identify patterns and trends across the industry. Ever since the iPad was released, textbook companies like National Geographic and Pearson have worked pretty hard to put out digital versions of their books. Some companies have been toying with implementing augmented reality into their titles4 and just about everyone is talking about using some form of Artificial Intelligence or Machine Learning without actually providing a sound use case for the technology. The pattern is pretty clear, though: the focus is on the students and the sale of textbooks. Everything else is secondary, including the support for teachers.

Looking at my LMS a little more critically, I can see now where the digital textbook system falls down and could be improved5. While the textbook tools that I wrote for use in the classroom back in 2014 scratched the itches of the time, they are an incomplete solution for today.

In addition to the five questions on the survey there was a free comments field where people could write whatever feedback they wanted. In order to encourage honest feedback, all responses were kept anonymous. Some people were straightforward about what they disliked about my software. Others offered suggestions on how to improve it for their specific use cases. This feedback will be absolutely invaluable in the coming weeks as new features and fixes are written to address the issues raised. More than this, though, it shows the importance of reaching out to the people who use the software more often. I've always encouraged teachers to get in touch when they find a bug or want to see a new feature added, but people will rarely do so due to the very real time constraints they face during their days in the classroom. If I really want to build better tools for schools, I need to actively reach out and make the feedback systems as painless as possible. This sounds like common sense, but how often does anyone get an invitation from a software vendor to provide meaningful feedback beyond a request for ratings in an App Store somewhere?

A lot of software targeted at teachers really isn't that great. By reaching out and including them in the process, it might be possible to change this … for my employer at the very least.

  1. An "alpha-build" is generally considered a very early version of a piece of software. So early that it's not even a beta, as beta comes after alpha in the Greek alphabet.

  2. And thank goodness for this. If my colleagues in the classrooms weren't passionate about teaching, then it would lead to the demise of the entire organisation.

  3. The feature I thought most people would like was full-library search. However, looking at the API, this feature has been used exactly 6 times in three weeks.

  4. There's an interesting history book I've seen that will show army movements through a phone or tablet when the accompanying software is installed.

  5. The system is due to be shutdown and scrapped at the end of this year, so I doubt any time or effort will be expended on improving the textbooks in the old system. The newer system, however, is a playground that can see experimental features rolled out and tested.

The Wrong Risk

Last week I put in a formal request at the day job for a new Mac, as the one I'm using is a personal device and does not have the necessary internals required to keep up with 20% of my tasks this year, and roughly 50% of my tasks next year. I was torn between requesting an iMac and a 15" MacBook Pro, given that I tend to do all of my work from home. Portability is unimportant and, for those rare days when I'm called up to Tokyo or sent overseas for meetings, I could bring my 13" notebook. In the end it was decided for me that a MacBook Pro would be the way to go, outfitted with 32GB RAM and a 512GB SSD. Before the request could be submitted, I needed to provide a list of software that I use on a regular basis in order to show why I was requesting an Apple device rather than a company-standard Dell. Xcode was the star of the show on that document, along with Pixelmator, Automator, and Sequel Pro1 Paperwork completed, I sat back to let management do what management does.

This is when things became interesting.

Apparently one of the managers who I have regularly and openly argued with over the years took offence to my request for a $3,400 computer when a "perfectly good" $3,800 Dell could be ordered, pending approval from the company president2. The argument was that, because the company's system management software didn't run on macOS, the company couldn't adequately manage the device remotely. This was quickly shot down as a justification thanks to the hundreds of unmanaged Windows-powered Dells that continue to circulate throughout the organization. Not willing to give up, the next argument was that the support staff in IT didn't have the requisite knowledge to configure and maintain a Mac, so one couldn't be ordered. This, too, was shot down quickly by pointing to an order for a replacement iMac that would be used by someone at HQ. But then came the argument that would apparently solidify the attempted veto of my hardware request: I have too much access to the corporate databases, making me a risk to the company. Therefore, I should not get a Mac but, instead, a very locked down Windows 10 machine that would monitor everything I did and send a detailed summary of my activities every hour.

I had to laugh.

Yes, I do have a great deal of access to company data. I have access to a lot of databases for schools around the globe3, all of which contain information that is none of my business. A leak from any of these systems would be cause for serious concern and would result in a lot of bad publicity and, potentially, lawsuits. A lot of my colleagues would find themselves out of a job, and I would likely be unemployable for the rest of my life. All of this is true. But it's also the wrong risk that any manager should prioritize for employees who have proven themselves time and again to be very aware of the responsibilities they've assumed.

A Greater Concern

Many companies succeed not because of what's in a database but because of the people who invest time and skill in the pursuit of something better. The greatest risk that I pose to my organization is not as an information thief. Selling student lists or employee passport numbers is neither interesting nor worthwhile. If people are going to worry about what damage I might cause, they need to think a little grander. They need to consider what would happen if I left to start my own business4 and took some people with me. This is the risk that I pose my employer, and it's a risk that a lot of companies have to deal with when ambitious people think "Hey, why am I playing the corporate game when four of my hard-working, intelligent colleagues and I all really want to do something else?"

Many of the successful entrepreneurs I've met over the years have the same story. They were unhappy working for someone else for whatever reason, so they left to do their own thing. Some were able to hire former co-workers after a year or two. One that I know of founded their business with two colleagues5. Given my track record, this is what people should be looking out for. Not low-brow theft6.

The manager in question, clearly having nothing better to do with their time this week, has invested quite a few of her hours — and those of her staff — by trying to find all the reasons I should not receive the hardware I requested. She's even gone so far as to investigate ways of either limiting my access to systems I am 100% responsible for or tracking everything I do that is related to the day job. The last bit I can kind of understand, despite the horse leaving the barn years ago, but the rest is just pettiness. Our history of disagreements have been documented on this site and at the day job to some detail but, at the end of the day, the risks identified are nothing even remotely close to reality.

  1. These are the core Mac-only applications that I use. The others I can find decent alternatives for if running Windows or Ubuntu.

  2. All hardware purchases over 300,000円 (about $2,800USD) must be approved by two mangers and the president. Fortunately, he and I have a pretty good relationship, so there shouldn't be any concerns in that regard.

  3. This access is all done through secured, monitored, remote desktop sessions where copy/paste has been disabled. It's a right pain in the ass, but this means the data never physically resides on my computer. Moving data from the servers to my machine would be spotted pretty easily unless I'm siphoning off a couple of kilobytes of data per hour.

  4. I've openly stated on this site that one of my goals for the near future is to be self-employed.

  5. Their managers must have been quite upset to lose not one, but three competent people at the same time.

  6. I've often said that if I do turn to a life of crime, it's going to be worthy of a Hollywood movie featuring Jason Stratham. If my line of work runs the risk of spending years in prison, it better be worth it. Have you ever wondered what might happen if a country's largest bank suddenly lost all of its money in a well-executed digital heist? I have.

Just One More Thing ...

How do people manage to put things away when they're in the middle of the creative process? I've met some pretty interesting people over the years who are able to do a bunch of creative work, get in "the zone", start to make headway … then glance at the clock and head home, leaving the current efforts in a half-complete state. The next day they come back in, look over what they were doing, then pick right up again.

This has always amazed me, primarily because I despise putting things away just because the clock says it's time to do something else. In my mind there's always just one more thing that I'd like to finish before calling it a day. However, as one would expect, there's just one more thing after that. Then another. And another. Eventually the sun comes up on another day ….

Being 40 generally means I'm supposed to be smart enough to know the importance of having a good balance in life. Unfortunately this is something I haven't quite mastered yet.

Rolling Thunder

The weather this summer has certainly been different from the last couple of years. The area had a record rainfall for the month of June, receiving twice as much water from the sky as had ever been recorded1 for the 30-day period. Our winter was much warmer than average and we even had a weak typhoon hit rather late into the rainy season. It's been said before, but something is different.

Looking Westward

Late into the afternoon today we had some rolling thunder. The clouds coming from over the nearby mountains stretched across the sky to the east, leaving the west a nice summertime blue. Every few minutes there would be a rumble that would start low and slow, like a bowling ball gingerly making its way down the lane. Thirty seconds into the buildup the sound would either disappear or sound like a wave crashing into the side of a rocky pier. For two hours we were treated to this odd performance while the sky turned pink from the sunset.

Looking Eastward

Nozomi didn't seem to mind the noise, as the unstable weather made for a pretty decent breeze while we were out in the park. Generally the heat and humidity of the season tends to reach unbearable levels by 9 o'clock in the morning, with air so still that walking through it feels like pushing into a closet full of pillow fluff. Any amount of breeze is better than none, and the puppy certainly enjoyed having her fur cooled a little better while we made the daily trek along the evening course2.

Weather certainly changes over time and anomalies can make for some irregular patterns. What I wonder more than anything is how the farmers are being affected. Vegetables and fruit at the markets have almost doubled in price in the last three years, with apples and peaches selling for about $2 individually. Broccoli is generally sold for $3 while a pack of four tomatoes is $5. Bananas from the Philippines, however, have been stable at $2.50 a bunch for the better part of three years. Higher food prices will drive people to consume more of the processed foods, which is just a poor substitute for farm-fresh products. This isn't a good cycle.

Today's unusual atmospheric show took place at a safe distance, but the changing weather patterns are hitting very close to home.

  1. According to the city, temperature and weather records started in the mid 1800s, though the first 75 years of data is not at all accurate. Temperatures are +/- 5˚C, and rainfall was measured in boolean Yes/No terms.

  2. Nozomi and I have five "courses" that we can take in the park depending on the weather and how energetic she's feeling. Generally in the evening we walk around the baseball diamond as there's plenty to keep her nose busy without tiring her out too much before dinner.

Building Tables from Temp

This week I've been handed an almost impossible task at the day job: build a database containing a subset of information from our current SQL Server-based CMS using the table structures required by the new cloud service. On the surface, this doesn't sound too complicated. So long as a person knows the data structure of both systems, SQL scripts can be written once and used multiple times. The difficult part comes down to time as there are just three working days to get this done for 100+ data tables containing as many as 300 columns of data each, and the documentation for the Cloud objects is … incomplete1.

In an effort to build as much as possible in the least amount of time, I've decided it would be best to "cheat". The first set of SQL scripts that I am writing will collect as complete a dataset as possible for each object and write to a temporary table. As this can sometimes be an iterative process to refine the output, pre-defining the data tables does not seem like a good use of time. Instead, I'd like to simply write a query in an INTO #tmpWhatever command to generate a temporary table. When I'm happy with the output, the data is then written to the new table where it will sit until exported.

Now here's the fun part. Because the data is already in a temporary table and because SQL Server makes it really easy to query table definitions, one can have the database pretty much write a table creation script for you.

This is how I do it:

SELECT '[' + col.[COLUMN_NAME] + '] ' + UPPER(col.[DATA_TYPE]) +
       CASE WHEN col.[DATA_TYPE] in ('numeric', 'nvarchar', 'varchar', 'nchar', 'char')
            THEN '(' + CASE WHEN col.[DATA_TYPE] = 'numeric' 
                            THEN CAST(col.[NUMERIC_PRECISION] as VARCHAR(3)) + ', ' + CAST(numeric_scale as VARCHAR(3))
                            WHEN col.[DATA_TYPE] IN ('nvarchar', 'varchar')
                            THEN ISNULL(CAST(col.[CHARACTER_MAXIMUM_LENGTH] as VARCHAR(4)), 'MAX')
                            WHEN col.[DATA_TYPE] IN ('nchar', 'char')
                            THEN ISNULL(CAST(col.[CHARACTER_MAXIMUM_LENGTH] as VARCHAR(4)), 'MAX')
                            END + ')'
            ELSE '' END +
       CASE WHEN col.[IS_NULLABLE] = 'NO' THEN ' NOT' ELSE '' END + ' NULL' +
 WHERE col.[TABLE_NAME] LIKE '#tmpWhatever%';

This query will return as many rows as there are columns in the provided temporary table, which can then be copy/pasted into a partially-written CREATE TABLE statement. This query is going to save me hours of pain this week as I rush to complete things that should have been done weeks ago.

  1. When I use this word to describe something used in a professional setting, I mean it's untrustworthy or poorly defined. In the case of the data migration documentation, "incomplete" means both.

Why This Place?

Of all the places people can go online, why does anyone come to this place? This question rolled around in my head today while in the shower as a follow-up to other questions regarding my efforts online. Curious about how many people visit, I checked out the stats collected by Cloudflare and found the following:

Web Traffic

Traffic the last couple of weeks has been up, and about six thousand visitors have come to this site in the last 30 days, some of which are likely digital in nature. What's interesting about this is that it's about the same number of visitors I used to see between 2007 and 2009, right before Twitter really took off and "killed" blogging. Looking at the "Recent Popular Posts" down at the bottom of every page, that blasted post from 2009 continues to receive the most traffic followed closely by a long out-of-date tutorial and an editorial that seemed to raise a number of eyebrows at the day job … which was actually the trigger for the question posited at the start of this piece.

People around the world have much more interesting places they can visit, so why come here? Despite efforts to improve my writing style over the last 11 months, there doesn't seem to be much difference in anything published here since 2013 when I gave up long-form writing. The range of vocabulary might have increased as I try to become more precise in my speech, but the excessive comma and relative clause usage that has dogged these posts for years persists. Helpful articles and tutorials have long-since disappeared. Rarely is there a joke or keen insight shared. Very little that is published on this site would look out of place in the opinion section of a small-town newspaper run by volunteers.

To be clear, I'm flattered that there are readers who come here. The chart shows that a minimum of 426 people have visited every day and a little over 6,000 in the last month. Doing this math, this means that a good percentage of visitors are return readers. Clearly something is encouraging people to afford me a couple minutes of their day; I just wish I knew what it was.

The rational side of me generally asks the irrational, inquisitive side what value this sort of knowledge would offer. Would knowing people's motivation result in better articles? More focused writing? Encouragement to carry on? Given the patterns on display over the last dozen years of blogging, it's obvious that none of these would happen. Instead there would likely be a less-diverse range of topics and a more critical eye on the perceived value of a given piece. Published content already goes through at least two rounds of vetting before going live, so a third would just sap the fun out of this ongoing project. So the rational side of me knows that there is no long-term value in understanding why people come here more than once.

The inquisitive side, however, is irrational. Maybe it's this that people come to see. By observing my irrationalities, visitors can feel that much more confident about their own sanity.