28 May 2019
The work I was doing on Highrigg wrapped up. Between weeks 332 and 333, I wrapped up my end-to-end demo, with a fully working backend, front-end authentication, and some basic live updates. As well as the text documentation, I recorded a quick screencast of the demo in operation – that’d make it easy to share with colleagues who couldn’t run the software on their setups.
And with the alpha goal hit, my contract came to an end. So I’m taking a bit of a breath, and wondering what’s next. For now, that involves wrapping up a variety of small personal pieces of work – notably, an up-to-date version of this website with several years’ worth of projects written up!
I’m also moving studio. Not very far – a new space has come up at Makerversity, so, after several years sharing with current studiomates, I’ll be moving a few doors down into a small space with some freelancers I know. It suits my needs well right now, and will be a lovely bunch to share a space with. Many thanks to Ben, Sam, and the rest of the PAN/Location Games crews for the past five years.
I also had a prospective meeting about a small workshop which sounds positive, so I’m working out how best to fit that in around studio change-around and some upcoming travel.
And, of course, this all means that I potentially have upcoming availability. If the sort of thing I do – technology strategy, prototyping engineering, interaction design – sounds like a fit for you, now’s a good time to get in touch!
12 May 2019
A short week, owing to a bank holiday at the beginning and a day largely not working at the end.
Over at Highrigg, I worked on the spec from last week, getting something closer to a list of things to be achieved, as well as making it easier to specify what other assistance we’d require. I met with some colleagues to share that and understand how best to secure that assistance.
I also had some technical successes: fleshing out my GraphQL service backend and, after some assistance spinning up some Google Cloud services, rewriting a service to store files there (rather than locally) and auto-update them. All the
yarntasks to do that are all completed – now I just need to set up whatever the equivalent of a cron job is to run it. And, on another piece of work, I deployed some updates around error logging. Finally, we reviewed some colleagues’ excellent UX research around some changes we were proposing, and gained useful insight into both those changes, and wider issues effecting a particular slice of end-users. A productive couple of days!
On Thursday and Friday, I reached feature-parity on my port of this site to Hugo, and also managed to port all the legacy content over, I think. So at some point, I’ll consider swapping over, and possibly refining the appropriate
rsyncincantation. But I’d also like to spend some time writing up all the projects that have happened since Rubato, if only to see if this new platform works a little better.
Anyhow, a good few days.
06 May 2019
Highrigg continued: a series of meetings with partners, an excellent lunchtime lecture and discussion, and more programming.
After a day spent wiring the backend I started putting together last week with the front-end, I ended up with a shell of an appplication, and at least one screen with real live data. Which was the time to hit the pause button. Why? Well, I was beginning to tip over from learning (about the project) and into production, and it’s not quite the right time for that yet. What I was learning was that it was probably not a one-person job, and it’d go a lot faster with a more experienced React engineer focusing on the client implementation. I was also learning what pace of work would be like on it, and already gaining some confirmation that the architecture I’d settled on was sensible. I was also exposing some of the requirements not captured in our initial documents – for instance, approaches to live updates and data push – that only became more obvious as I began implementing. So that’s something to turn into specification in Week 331.
In the rest of the week, I spent some time exploring updating this website. I’m aware that there’s a long backlog of projects to write-up (especially Selworthy), and I’d like to make it easier to do that. At the same time, I also think I could probably move to something like a static site generator, if only I could find one I could settle on. That’s some work, but would then mean that all my content exists as files, and is relatively easy to port to other platforms in future.
28 April 2019
A four-day week after the bank holiday.
Two days at Highrigg. Last week, I was forcing myself into a deep dive on in React, building a prototype front-end that talked to a third-party API. This week, I decided it was worth introducing our own server-side API between us and the third-party.
This decision – which my colleague Lachie helped me come to, in a highly useful brief rubberducking session – came about for a few reasons. Firstly, so we could separate some responsibility, and make the front-end code a bit less brittle. It also meant that if we wanted to start using other service – notably, some internal data-sources – rather than making growing number of calls on the front-end, we could keep front-end calls down and instead combine all the data from multiple server-side calls into a single payload. That also means we can take a little bit of responsibility for caching in the right place – the server-side.
With that decision made, I wanted to write just enough code to confirm that I’d picked appropriate tools, as well as architecture. I began exploring building a small GraphQL service. GraphQL is very trendy right now, but it feels like an appropriate fit. I’m making something resembling a small mobile app, and being able to serve up all the data for a ‘page’ or ‘view’ in a single lump is ideal. My data model is also fairly hierarchical, and largely read-only, which made life simple.
Unlike last week’s battles with React, this work went more smoothly, and it turns out that I don’t just like the idea of GraphQL, I also really like the implementation. By the end of the second day, I had the beginnings of a service shelled out. More to the point, I’d done enough to decide that this felt like a viable technology to use for the project going forward. I finished up my technical review documents with this knowledge, and updated some architecture diagrams.
On Thursday and Friday, I finished bagging up a run of Foxfield kits for Thonk, and spent some time in the workshop – firstly, starting to brush up some woodwork skills, and secondly, building up an electronics prototype. This second electronics prototype was another SAMD21-based build, which I’ll probably write up, to share my approach for building these boards. It worked first time – and also confirmed that a new footprint was highly viable for what I wanted to do with it.
22 April 2019
Lots of meetings at Highrigg, across a range of projects; some good time thinking through design interactions with colleagues, and then, around that, spelunking an API I’m coding against.
At the same time, forcing my brain through the React mincer possibly faster than is ideal. I am finding getting up-to-speed with React challenging, and often end up frustrated.
Learning new things is hard, yes, and it’s of course sometimes the work of a technologist to stay up-to-date. What I’m finding hard is the gulf between the basic tutorials and guide (which I’ve completed and re-read a few times) and the real-world project I have to operate in. I know this means I haven’t fully internalised the information – going from knowing to knowing – but it’s a while since I’ve felt like this. It doesn’t help that it feels like something I ought to have some faculty with, as a former front-end developer.
Why am I putting myself through this? Because I think it’s important even if I’m spelunking or prototyping to work in the platform other colleagues are most familiar with, and inside a React+Typescript shop, I think it’s reasonable to work with those. (They also, lack of familiarity aside, seem like highly reasonably technology choices). There’s real internal value to playing ball, especially in a larger organisation, and so a balance between ‘output from prototyping’ and ‘lasting value of prototype’ needs to be trod.
We’ll get there. But a frustrating few hours trying to achieve things I know I could do in other platforms or languages, and resisting the urge to chuck in the towel.
On Thursday, I found that Fedex had failed to deliver parts for a Foxfield run, so delayed that until next week. I spent some time in CAD and lasercutting, wrapping up a prototype panel, and then finishing the electronics of the prototype I’ve been working on. This went well: my workflow from panel to cutter is much tighter now, and a single iteration got things spot on. The prototype is working well, too. Time to make a decision about that prototype soon.
And then, a long weekend. Back Tuesday for a four-day week 329.