Boyleing Point

7/11 was an inside job

I do a lot of complaining about privacy and annoying products, but there are some that I believe really do a good job. These are some companies whose products and missions are appealing enough I'd want to work there.

YNAB (You Need A Budget)

YNAB is a very interesting take on budgeting. I used to swear by my old way of using a spreadsheet, but it sort of falls apart when your pay is irregular (like for self-employed people or freelancers with variable income). You can connect your bank accounts for automatic transaction feeds but I prefer doing it manually as it seems to make you more mindful about your spending.

Reporting

I'm a real metric head, so I appreciate some good graphs.

Age of money

Age of money tells you how long between getting paid do you spend your money. It's very encouraging to see yourself breaking the cycle of pay-cheque to pay-cheque.

age of money 7 days

Net worth

Net worth is pretty self explanatory. It tracks your assets versus your debts and gives you a nice net worth graph over time.

Spending

You also get a categorical breakdown of your spending which you can click into to see more specific information about each category

Free budgeting resources

The bulk of their blog posts are not YNAB specific, but include general advice for budgeting, so if you're struggling, it may be helpful for you.

If that sounds appealing, there's a link below which includes a referral (if you sign up I get a free month. If you aren't cool with that, just search for YNAB). They offer a month long free trial if you feel like giving it a shot.

Read more here

Cloudflare

According to their website, Cloudflare now powers nearly 10 percent of all Internet requests. I've been using them for a few years now and I'm still in awe of them. First of all, when I started using them I was still paying for SSL certificates, then here comes this start-up that offers DDoS protection, SSL and caching and it's free... Where's the catch? I do find it somewhat suspicious that they're able to offer these services for free. Presumably the money they make off enterprise accounts offsets the usage at the free tier.

The DNS settings are really easy to use too. I use the analytics on this site and it seems to block a few threats a week.

They are now offering domain registrations which I haven't taken advantage of, but they seem to be cheaper than your run of the mill registrar.

They also do a lot of very interesting technical writing. Curious why their office has a wall covered in lava lamps?

Technical version - https://blog.cloudflare.com/lavarand-in-production-the-nitty-gritty-technical-details/Non-technical version - https://blog.cloudflare.com/randomness-101-lavarand-in-production/Article about it - https://www.fastcompany.com/90137157/the-hardest-working-office-design-in-america-encrypts-your-data-with-lava-lamps

Check them out: https://www.cloudflare.com/

1Password

Password managers are certainly rising in popularity and it's a good thing. The password is a very flawed authentication method especially when you re-use the same weak password across multiple sites. If you can instead remember one very strong password, you'll be able to generate strong, unique passwords for every service you use. They also now have built in support for the Google Authenticator protocol with TOTP tokens.

I really like the mobile and desktop apps and they have recently released a browser only client. Along with their provided cloud sync options, they also offer personal cloud storage syncing.

You can also enable travel mode for when you're overseas which stops syncing sensitive vaults.

I use the shared vaults a lot to share with coworkers.

I'm planning on keeping this list updated should anything change, so keep your eyes on this post.

Agile development is something that has evolved to become a bit of a joke in the software industry, much like an obscure gag amongst friends that evolves over time to the point where the humour is incomprehensible to anyone on the outside. Today, we may find ourselves being handed little laminated cut-outs with clipart of t-shirts on it and being implored to stick it on the wall, playing estimate poker, or writing love letters to team members in a retrospective meeting. In my experience, it seems to be common understanding amongst programmers that the ceremonies associated with Agile err on the side of bizarre, but businesses love it. In my estimation, it’s the idea that they are fostering a collaborative environment. Whether or not it’s just an illusion is another story, but in the age of Blockchain, chatbots, and machine learning, Agile is king.

"Agile" in its current sense appears to be derived from theAgile manifesto, however, agile practices have roots through the last 4 decades of programming history. Recently I read the Mythical Man Month (Brooks, 1975) and in it Brooks extolls the virtues of things like disposable prototypes, testing as you build, and always having a working program.

One of the most recognisable and user-friendly explanations of this concept is "The Agile Bicycle" illustrated by Henrik Knilberg

mvp bicycle

This is a great example of delivering a minimum viable product (MVP). There are many benefits to this method:

Regardless of how rough around the edges your product is, if it is functional, then people can use it. It may not have the appeal to gain significant traction, but you can start getting at least some ROI, and - perhaps more importantly – user feedback. If a product is fundamentally flawed, it should be visible at any stage. According to Brooks, an incremental build method is better because:

  • We can begin user testing very early, and
  • We can adopt a build-to-budget strategy that protects absolutely against schedule or budget overruns (at the cost of possible functional shortfall)

The most important part of that is that while we may not deliver the full feature set at the initial release date, at the very least, we’re not going to be giving people a car without a steering wheel.

So, how does a company selling pre-packaged meals relate to software MVPs?

I’ve been using them for around a year. I picked them because unlike similar competitors, they offered meals with higher calorie counts for a similar price point. My first delivery came in an unmarked Styrofoam box. Styrofoam is good at insulating contents; however, it requires specialised machinery to recycle and takes untold millions of years to degrade, it’s not a great material. The meals came in take-away style containers with a sticker slapped on which were easily broken in transit and they were all frozen. On the technical side, subscriptions were not manageable by the user and had to go through customer service, which added some friction. It wasn’t a mind-blowing experience, but the meals all tasted good and most importantly, the business model worked.

the beginning

Over the last 12 months I’ve observed various improvements to their offering.

  1. They replaced the Styrofoam boxes with wool insulated cardboard boxes

new box

  1. They replaced the take-away style containers with vacuum sealed containers to allow the foods to last longer without being frozen. This paved the way for them to start offering fresh meals (which they have as of this week)
  2. They upgraded their online services so that users can edit their subscriptions and more easily delay or cancel orders.
  3. They improved their distribution to where they are now sold in retail spaces around the country, rather than simply being a drop at the door delivery service

While people starting to use them now will see the last year of enhancements as the norm, people who have been using it for a longer period will have gradually had improved service, thus increasing satisfaction. Rather than overreaching and increasing the risk of being crushed by their overhead, My Muscle Chef took an iterative approach and gradually built a loyal base of customers which enables further innovation.

In my eyes, iterative development is inarguably superior to traditional waterfall project management where oftentimes budget, schedule and feature set are inflexible. As the saying goes, "you don’t know what you don’t know", and as such, progressive discovery will often prove many of your initial assumptions incorrect. It’s very refreshing to see companies with more tangible products embracing Agile principles and prospering. As they say, the proof is in the pudding.

To be clear, I am in no way affiliated with this company, I just like eating their food. If you do end up signing up, consider using my referral code (S1HKD51IM) and we’ll both get $15 credit. Love those free meals.

Mac Miller

I was drowning but now I'm swimming

In an interview with Zane Lowe, Malcolm said "Do you ever feel invincible? I lived a certain life for 10 years and faced almost no real consequences. I had no version of the story that didn't end up with me being fine". He had recently been arrested for crashing his car while under the influence of alcohol. He took this as a wake-up call, but it appears it was too little too late. Perhaps if he had faced consequences sooner, he wouldn't have been allowed to fall so far into the hole.

Fame is a double-edged sword and for Malcolm being 20 years old with a Billboard topping debut album, he was thrown into the spotlight and things really didn't stop for him since then. Imagining myself at 20 becoming wealthy and famous, I doubt there's any chance I would exercise any level of restraint. At that time, being known as a producer of "frat rap", it almost seems like a self-fulfilling prophecy that that would lead to out of control partying and substance abuse. The entertainment industry has a habit of dragging people in and beating the shit out of them. When you consider the story of Avicii and the adversity he faced essentially being forced to tour and perform even when he was begging his manager to cancel the shows, it's easy to see why so many people don't make it. Other artists such as Deadmau5 and Earl Sweatshirt were able to see the warning signs and they took breaks to take care of themselves. This year Earl Sweatshirt cancelled a tour to Australia following the death of his father. With any luck he will emerge having dealt with his grief healthily and be better for it.

Not everyone is so lucky, though. Look no further than the27 club; a sprawling list of people who likely garnered significant fame in their late teens or early 20's but didn't manage to see the decade out. It is a systemic issue that doesn't have a clear root cause. Is it the idolisation of relatively young adults? Or is it a result of an abusive industry that chews people up and spits them out?

It was as early as 2012 that Malcolm spoke about how he didn't want to die of an overdose, but how sobriety was just boring. In the few years after his career took off, it was clear to his fans that he was not doing well. 2015 marked the release of GO:OD AM, he took the opportunity to check in and let everyone know he was doing alright. The dark period was seemingly over. Contrary to what most people will have you believe, there is a voluntary element to depression. There's a very fine line between living with depression and living in hell. If you allow your self-loathing tendencies to consume you, you will be in hell. Alcohol is a well known depressant, but it's hardly the only thing people commonly abuse. I don't imagine anyone comes out of the other side of an opiate high and thinks "wow, that was an awesome time, I feel great about doing that". Giving in to substances is just one way we sabotage ourselves.

Life is full of peaks and troughs and it's a true tragedy that Malcolm (and so many other people for that matter) didn't make it to their next peak. For me, this is a lesson about the fragility and the tragedy of life. The pain that we feel from his passing will eventually be eclipsed by the gifts of his music and positive energy. The world has changed as a result of what Malcolm accomplished during his short life. I think it's well worth waking up in the morning and being a part of it.

I don't think I'll ever understand why his death affected me so much. It's quite bizarre how connected we as fans were able to feel with him, never having met him, but I think that's just a testament to the artist and person he became. From a frat rapper to a soulful musician expressing himself honestly and uninhibited, he touched fans and artists alike. We are truly fortunate to have had the opportunity to listen to his magnum opus Swimming.

I encourage you to watch the Mac Miller: A celebration of life concert and to donate to the Mac Miller circles fund

Rest in peace Mac Miller.

The last iteration of this website was a truly insane infinite scrolling carousel that was very overwhelming to anyone who dare behold it, so with this version (which recently had its first birthday) I decided to go with a much more content focused design since I actually wanted to start writing more publicly. There's also something to be said about not confusing people or forcing them into epileptic fits.

At the time, I didn't want to sink a lot of time into it, so WordPress was identified as the path of least resistance. I used Bedrock by Roots to version control my plugins and WordPress with Composer. It was working well and was quite fast (for a WordPress website), but it still suffered from a fairly fundamental issue of not being able to version control content. WP apologists might tell you to store your database dumps in your repo, but to them I say; "yeah, nah". If you ever have the misfortune of looking at a WP database dump, you'll realise there’s about a billion lines of muck which is totally irrelevant to the content and composition of your website and I don’t particularly like the idea of storing my users table in a public git repository anyway. In spite of my whinging, the version controlled content pain point was more of an under-the-tongue ulcer type of pain than a broken arm so I didn't worry about it. One day I made the mistake of upgrading the WP version on my server and I hadn't copied the install to my local, so there was a lot of out of sync content. So you can imagine I was pretty happy when I found out my login no longer worked, I couldn’t reset my password and changing the password directly in the database didn't work. I took an sql dump of the database and loaded it into my local only to find the Advanced Custom Fields don’t appear to be stored in the database, so when I salvaged the content it was totally broken.

Then it hit me. What if I get a JSON dump of my posts from the database and turn that into a static version? So, what output format would be most suitable for an archive of text posts?

Markdown: A New Hope

Markdown was invented by notable 'f-word' writer John Gruber in 2004 and it has since become a staple in the development world. I chose to use Markdown as the output because it provides simple shorthands to represent markup so I knew I could get tidy archiving in Github that would be nicely rendered as html in the web view, but the posts would still be readable (and writable for future posts) when looking at the source. I created a node package for generating an archive and published it to npm in the hopes that it might address the problem for other people too.

Now I have my posts nicely sorted and stored in a repo, but the problem with generating an archive of Markdown files is then you just have an archive of Markdown files to deal with.

The website is built with the static site generator "Gatsby", so all pages are React components which really adds a lot of flexibility. For example, when generating blog post components I can make the title render as a link to the blog post slug but only when it appears on the front page.

The ingestion strategy is to add the blog-posts repository as a submodule so I can then update and push those independently. Then, at compile time, I would read the archive of blog posts and generate:

  1. A root blog page that lists the content of posts in reverse-chronological order with pagination
  2. An individual page for each blog post.

The script that is responsible for this is really something to behold (you can see that here). The process is such that all markdown files are grabbed from the archive, then for each post, the script will parse out a metadata table in the top of the file that has the post title and whether or not it is a draft. That post is then passed to the markdown renderer and we generate a blog post component with that rendered content. That blog post component is then given its own page component and it’s stitched onto the aggregate blog post list. The blog post list is then parsed out into pages which are output as components and voilà. I suppose if there’s a gap for it, I could publish a "WordPress Markdown archive to React static site" package, but it may be a bit too niche.

The end result is an overall slimmer repository since all of the blog posts are stored in a different repository and the generated pages are not committed which lends itself perfectly to an automated deployment service. It also allowed for much less human intervention in the creative process.

The main caveat I’ve discovered in this transition is that I didn't have a solution for porting assets (such as embedded images) to the markdown archive. Currently, any embedded images will 404 until they are added manually. This definitely isn't ideal and if I ever get a chance I plan to package all the linked assets down into each blog post.