Part 3 – Breadboard Implementation (you’re already here!)
Part 4 – Final Implementation (coming next Monday)
So this project has really been gaining some steam! I’ve figured out the design and managed to get a software implementation with two separate interfaces. Now though, I’m entering uncharted territory; the world of hardware electronics.
Now I say uncharted territory, but I’d be remiss if I didn’t mention that I’ve previously watched a Pluralsight course called something like “Introduction to Electronics” or “Electronics Fundamentals”, although it’s also worth mentioning that I remember approximately 5% of the content. Actually, one of the few things I did remember was how a breadboard works, which is a place to start at least!
So although I’ve owned a number of Raspberry Pis over the years and have a lot of HATs/pHATs to go with them, I’ve never ventured far enough into the hardware electronics side of things to have bought any components. As such, I ordered a pretty generic looking “Electronics Fun Kit” that had pretty much everything I might need for this project; a breadboard, wires (especially wires that I could use to connect the Pi directly to the breadboard), buttons, LEDs, resistors etc. I’m sure there are higher quality components out there, but since this is all for prototyping I decided that in this case cheap and cheerful was what I was looking for.
So now that I’ve prepared what I can, it’s now the step that can often derail the whole project: implementation.
For context the “Plan” section of this post was written before I started writing any code and “Implementation” was written shortly after I’d put the first version together.
I know, I know, I’ve already done the planning in the first part, “when are you actually going to start writing code“?
Well, except for tiny projects (usually single file, one-off scripts) I like to spend some time considering how the different parts will interact. The reasoning is that as soon as you start working with multiple modules and classes you’ve really got to consider how the parts will hang together, including what should “own” which parts of the logic, what the different interfaces should be and how the code should be laid out.
So I’m a guitarist in a band (shout-out to #DemocracyManifest). Not a particularly good guitarist, but nonetheless it’s a whole lot of fun and a great excuse to hang out with some friends for our weekly practice.
One of the issues that we have is that there are only three of us in the band; a guitarist, a bassist and a drummer. This is the dream when it comes to planning practices, but we’ve always had trouble with feeling our sound is “full” enough since a lot of the songs we cover have way more instruments and numerous subtle elements like small synth riffs, choir aahs and audio clips that we can’t really replicate in any appreciable way while trying to also play our instruments.
So “hey” I thought, “let’s try to over-engineer build something that can”!
The recent Twitter account takeovers that are all over the news right now are yet another entry in the long list of hacks, exploits and security problems that have hit major social media platforms over the years, but this particular attack was different and really piqued my interest. There’s a few reasons for that.
First of all, the number of incredibly popular accounts that were hit (on one of the biggest social media platforms in the world) is absolutely mind-boggling. These sort of takeover attacks have happened plenty of times before, but usually on a far smaller, much more targeted scale (such as the SIM swap attack that hit Twitter CEO Jack Dorsey in 2019 for example). In yesterday’s case, these attackers managed to take over the accounts of some of the biggest companies and some of the richest people in the world on a scale I’ve personally not seen before.
Important context/timeline for this post:I live in Guernsey, which went into a full lockdown at the end of March (although I started working from home about a week before that occurred). Lockdown was slowly lifted in phases which meant increasing ability to go out and see other people, with things largely returning to something resembling normal (being able to go out to shops, see friends casually etc.) around phase 4 (end of May).
If I’ve done this right this post should be published on the first day that I’m back in the office since this global pandemic started, which by my calculation means that I’ve been working from home for the last 16 weeks(?!). While it’s been a tough experience overall, I’ve learned a lot from it and wanted to get some of those thoughts out of my head and into a post.
Flexible hours were a game changer
One of the biggest and most notable changes when working from home was how flexible my hours became. Instead of trying to get into the office for a strict 09:00 start ever day, my schedule was based a lot more around what hours worked for me. Was I ready earlier than usual? I’d just jump online at 08:00 instead and finish earlier. Forgot to put on a load of washing? I’ll down tools for 10 minutes mid-morning and make that time up later on in the day. This is definitely something that is heavily dependent on/needs to be supported by your company, but I’m very lucky that the work I do is really flexible and that my manager is awfully accepting of my ever-changing work hours.
Late on Sunday night a few weeks ago I was sat hunched over my computer. My girlfriend and I were going to be flying out the following morning on holiday and that meant that I was knee-deep in the task of printing out the reams of tickets we would need while we were away: flight boarding passes, hotel reservations, train tickets, event bookings etc. The only useful information on them is often just a QR code or a confirmation ID, but I always worry about forgetting important information and so I tend to just send it all to the printer anyway. The whole process takes ages, wastes paper and ink and generally feels unnecessary.
Although I was already most of the way through the printing, I’d been in the same position so many times in the past that I decided that enough was enough and it was time to switch to the alternative: digital tickets. Almost all of the documents that we needed could be downloaded as a PDF, and even those stubborn ones that demanded a printer could be fooled by printing to PDF as well.
I was quite anxious about trying this out; I’ve always relied on having physical tickets so this was an entirely new experience for me. While I kept copies of the most important print-outs, I decided that I was going to see if I could avoid using them for the whole trip and instead rely wholly on the digital copies on my phone.
Fun fact: I wrote most of this blog post on the two flights back home!
For Valentine’s Day this year, I wanted to go a bit fancier than my usual shop-bought present, deciding instead that I would handmake a cushion and embroider our names on the front. My grandma taught me to sew many years ago and even though I’d not really used those skills much in the intervening time, I figured that it shouldn’t be too difficult.
Oh how naive of me.
If I’m going to be honest, my original plans were probably about as detailed as:
Embroider names on the front
As you might imagine, this wasn’t really sufficient planning on my part. By the time I was finished, my original plans had ballooned out to a frankly ridiculous number of individual points that I hadn’t even realised would be relevant at the start. As well as that, I began a couple of weeks before Valentine’s Day, worked on it whenever I had any spare time and still only finished it late in the evening the day before. In all, it probably took me about 15-20 hours of work to go from an initial idea to a finished project (what can I say, I’m apparently incredibly slow at sewing).
Accessibility is such an important topic, but it doesn’t always get as much attention or focus as it should, often because people don’t realise how much of an impact it really has. As such, I wanted to write this post and cover at least a few of the reasons that accessibility is important and why you should care about it.
I originally wrote this with a mind towards the accessibility of digital content (such as documents, websites and software), but hopefully it proves useful to people looking at accessibility in other contexts too.
In no particular order:
Disabilities are more common than you probably realise
On Friday night I went to the pub with some work colleagues and while we were there, I received a few words of wisdom that inspired me to think about 2019 and how I want to approach it. Self-assessment is very important to me and I felt like posting my plans as a blog post would help me come up with something more concrete, keep me accountable and make it easier for me to review my progress at the end of the year.
As such, in 2019 I want to:
Finish the things that I’ve started
As I write this blog post I currently have 19 others sitting as drafts. While the majority of them are still in their early stages, there are more than a few that are very close to being finished. I have a habit of getting excited about a new idea for a post and dropping my current drafts to work on that instead, even though the hours that I spend on a new blog post could easily be used to finish multiple current drafts (the irony of writing a new post to say this is not lost on me). This year, I’m going to try to focus more on actually completing the things that I start. I’ll finish the software that I’ve started writing, publish the blog posts I’ve already got and generally try to start new things only after I’ve finished the old.
A couple of weeks ago, I was at the first conference I’ve ever attended: Microsoft’s Future Decoded. Hosted at ExCeL in London, it was a two day event that looked at where technology is heading and how, in some cases, the future is already here.
Although there were many different official tracks (with names such as “Empower Employees”, “Grow Culture” and “Transform Products”), the overarching theme of the conference seemed to be artificial intelligence (AI), ethics and accessibility. Curiously, although mixed reality was referenced a few times in the keynotes and talks, it didn’t seem to me like it was a major focus for the event which was odd considering the direction that Microsoft are travelling in with their work on the HoloLens (which, as a side note, I finally got to try in person!).