This post is a quick TIL* (sidenote: “Today I Learned” ) for posterity. I’m building a side project* (sidenote: It’s called FeedSync , and it solves a very niche problem: subscribing to RSS feeds, and piping new entries into Discord. I’d love it if you tried it out ❤️ ) , and I’m contributing from two machines: my MacBook Pro, and my Linux desktop. The problem I…
Leaving logistical plans until the last minute leaves you with fewer decisions to make, fewer options to compare, and more importantly, more time to enjoy yourself. If you accept that the future is in flux, and things won’t always your way, you’ll end up stressing less, and going with the flow. All this to say: don’t feel bad about booking international flights and trains the day…
If you use Discord on Linux, and installed via a .deb , you might have seen this annoying pop up every time you start Discord: This seems like Discord requires you to upgrade before you can start the client, but that’s not the case. To skip updates on start up, add the following key to ~/.config/discord/settings.json : 'SKIP_HOST_UPDATE' : true Next time you start Discord, it won’t…
I didn’t write a single post on this blog in 2023. I don’t feel bad about it. A summary of the year: I helped plan a wedding with my fiancée.* (sidenote: She’s now my wife. ) I invested more time in exercise, mostly rock climbing* (sidenote: I did a lot of rock climbing, and I’m still loving it. ) and yoga. I learned more about photography. I learned to surf. I worked hard…
What is split DNS? Split DNS is a mechanism to route DNS records differently depending on the network. It’s easier to explain this with an example. Given a domain, example.com , we can route it and all its subdomains to an IP address: 1.2.3.4 . Performing a look up on foobar.example.com will return 1.2.3.4 : dig +short foobar.example.com 1.2.3.4 Performing the same look up via private DNS…
Last month I was lucky enough to hop on a call with Oliver Schöndorfer . He runs the Pimp My Type blog and YouTube channel . I have been following Oliver’s channel for awhile, and tweaking this blog based on his tips and tricks. If you’re interested in learning more about typography, I recommend checking it out. Oliver runs live sessions analysing the typography of his audience’s websites, and I’d…
Flying I opted to pay a fraction more to enjoy some extra legroom. I’m 6'1, and the extra room is always worth it. The window seat provided a wonderful view over the Alps as the plane began its descent just after sunrise. Klosters Dorf, Graubünden Looking east from the top of the Schaffürggli lift. Looking south-east from the top of the Schaffürggli lift. Geneva, Vaud Swiss-French fields in…
I recently installed Tailscale on my Umbrel node, so I can access it remotely without going via Tor, because Tor is so slow . It’s one of the few services I’ve used that I can say just works . They also have a reasonable hobby tier . Tailscale and Umbrel Sign up to Tailscale Install Tailscale on your Umbrel node, following the Linux instructions, and on your phone. Once set up, you can…
I’ve made a few changes to this blog’s theme over the last few weeks, and I thought it would be nice to summarise them in a post. Here’s what has changed: Add support for post translations* (sidenote: You can see this in action here . ) Remove the link to the git SHA in the footer* (sidenote: I doubt anyone was using this, and it’s obsolete with a link to edit on GitHub. )…
This is post number 13 in my 100 Days To Offload challenge. View all posts or subscribe via RSS . This blog is now available on the Handshake blockchain via blog.hugomd and on the Ethereum Name Service (ENS) via hugomd.eth (or hugomd.eth.limo if you don’t have an ENS resolver). Why? I’ve seen a few people on Twitter sporting $name.eth handles, and thought I would see how ENS has…
This is post number 12 in my 100 Days To Offload challenge. View all posts or subscribe via RSS . Hugo* (sidenote: I keep having to specify, so it doesn’t seem like I’m referring to myself in third person. ) (the static site generator ) supports static syntax highlighting. Instead of using a JavaScript based highlighter, you can perform highlighting at build time, rather than pulling…
This is post number 11 in my 100 Days To Offload challenge. View all posts or subscribe via RSS . I’ve recently set up PeerTube for personal use, after native support for object storage was merged. It’s running on DigitalOcean Kubernetes, and using DigitalOcean Spaces for object storage. I quickly ran into issues. Any video uploaded to PeerTube was inaccessible, because the object ACL…
This is post number 10 in my 100 Days To Offload challenge. View all posts or subscribe via RSS . A few weeks ago, I wrote a post about rendering static tweets . I’ve made a few important improvements, worthy enough of a new post. In my original post, I described using a proxy to inject Twitter API headers. This is hacky, and leads to flaky builds, because the build server needs to handle a…
This is post number 9 in my 100 Days To Offload challenge. View all posts or subscribe via RSS . Traditionally, I’ve exposed my homelab directly to the internet. I point a DNS record to my home IP, updating it with cloudflare-ddns as I don’t have a static IP, nor do I wish to pay for one. The downside of this, is that you need to expose a server to the internet, exposing your IP, and…
This is post number 8 in my 100 Days To Offload challenge. View all posts or subscribe via RSS . Today I caught up for coffee with a good friend, Renlord . He’s convinced me to move this blog to Cloudflare Pages . Earlier in the year, I wrote about migrating to Vercel to improve performance by caching my blog at the “edge”. Vercel is great, and feels pretty seamless to use. I can…
This is post number 7 in my 100 Days To Offload challenge. View all posts or subscribe via RSS . I bought a Magic Keyboard for my 11” iPad Pro yesterday. It arrived today. The travel on the switches is great, and the keyboard itself feels nice to type on. I was worried about the size, but it feels right. Sure, it’s on the smaller side, but the keys don’t feel squished together as a result, despite…
This is post number 6 in my 100 Days To Offload challenge. View all posts or subscribe via RSS . Following on from yesterday’s post about static tweets , I’ve also added a shortcode for fetching posts directly from Pleroma 1 . You can check out the code here . Unlikey for the Twitter shortcode, I don’t have to proxy requests, because the Pleroma API does not require authorisation…
This is post number 5 in my 100 Days To Offload challenge. View all posts or subscribe via RSS . Update (12/09/21): I wrote an update to this post here , which describes a much less hacky way of doing this . I recently wrote about shortcodes , describing a way to avoid duplicating text all over the place. Delving into shortcodes got me thinking about static rendering. In an ideal world, this site…
This is post number 4 in my 100 Days To Offload challenge. View all posts or subscribe via RSS . I’ve known about custom shortcodes in Hugo for awhile, but I’ve never had the need to use them. Now that I’m taking part in 100DaysToOffload, it makes sense to create one, because it makes it less cumbersome to write posts. I only have to make changes to one file to update copy across…
This is post number 3 in my 100 Days To Offload challenge. View all posts or subscribe via RSS . I’ve disabled comments, again. I was using Disqus comments, but removed them due to privacy concerns and to decrease load time, as Disqus was pulling in a lot of third party dependencies (see: Disqus, the dark commenting system ). Then I switched to web mentions , using Micro.blog as the source…
This is post number 2 in my 100 Days To Offload challenge. View all posts or subscribe via RSS . I wrote this post in GitHub Codespaces , which looks like Visual Studio Code but in the browser (it even supports Vim mode!). You can set up a new Codespace by logging into GitHub and navigating here , then creating a new codespace for your repository. In my case, I chose my blog repository:…
This is post number 1 in my 100 Days To Offload challenge. View all posts or subscribe via RSS . Over the past few months I’ve made a few changes to my blog, prompted by this comment on Lobste.rs. This part really got me going: “Definitely feels more like “underperforming CMS with database” than static site.” Since then, I have: Moved from DigitalOcean Kubernetes to Vercel…
Webmentions is a relatively standard for federating comments and mentions across websites. When you mention someone or like a post, you own your data, but it can show up on their site — neat! I use micro.blog to post short messages to the internet and push them to my Twitter , Mastodon , and otherwise interact with internet friends. Micro.blog supports webmentions out of the box , which means if…
I’ve made a few tweaks to my blog theme, so it now adapts to changes to the macOS system theme. I believe this works across operating systems, although your browser may not support it yet! Here it is in action: Your browser doesn't support the HTML5 video tag :(
Download Kotlin.tmLanguage from here Open Sublime Merge, click Preferences -> Browse Packages Create a folder called Kotlin and place Kotlin.tmLanguage within the folder Restart Sublime Merge and enjoy! 🎉 Alternatively, if you want to use terminal and you happen to be running macOS , you can run: cd /Users/ $USER /Library/Application \ Support/Sublime \ Merge/Packages/ \ && mkdir Kotlin \ && cd…
Despite using FZF with Neovim for a few years, I’ve only recently found out about :Ag which lets you perform searches across your folders and files. Until now, I never realised that you can use Tab and Shift + Tab to select multiple files, then press Ctrl + T to open them in a new tab, with a quicklist. From there you can navigate between items in the quicklist using :cn and :cp .…
This was originally posted on Medium . As a passionate software engineer at Localz, I get to tinker with fancy new tools (in my own time) and then annoy my coworkers by evangelising said tools in the workplace. Kubernetes is just one of those tools, and we’re currently exploring it for use internally! 🐙 Here’s a little tutorial I’ve whipped up for getting Kubernetes up and running on your Mac,…
This was originally posted on Medium . At Localz, we use Docker as the building block for all of our deployments. We like to think of it as a single unit of deployment. If it runs in Docker, it can be deployed and horizontally scaled, and requires less maintenance than running on bare metal. In this post, I’ll go through the techniques we use to keep our Docker images lean — including using base…
I use GPG verification for most of my commits so that people know that it’s really me (don’t worry, I debate the difference between authentication and identification with friends and coworkers all the time). If I’m on my Mac, I’m using Tower , a fantastic Git UI, and I set it up to sign my commits by following a post by Stefan Zweifel : Check out Stefan’s post here:…
One weird trick to reduce build time! CI services hate him! This is a fairly simple way to reduce your build time if you spend a lot of time bundling dependencies prior to performing tests or deployments in CI. The trick is to bundle any build dependencies into a Docker image so that you don’t have to install them each time you run a job. Let’s take a look at my .gitlab-ci.yml file…
Earlier this year (06/05 to 07/05), Nathan Malishev , Josh Parnham , Daniel Sykes-Turner , and I attended the Facebook Melbourne Hackathon — located in Facebook’s beautiful, and brand new, Melbourne office . Our team, ‘ Moji ’, ended up taking home first prize — a trip to San Francisco to compete in the Facebook Global Hackathon finals. We built an end-to-end product, moji.cool , consisting of a…
Over the past couple of months I’ve received numerous messages asking me how I’ve made this website respond to cURL requests with JSON (a little like JSON Resumé ). If you’re out of the loop, you can either curl -L hugo.md or check out this GIF: It’s super simple to setup — I’ve done it with nginx and with Caddy. All it does is: Check the user agent on incoming…
Zeit is a great little company that aims to “Make Cloud Computing as Easy and Accessible as Mobile computing”, and they’re doing that just with their relatively new service, Now . Now aims to make deploying Node and Docker apps as simple as typing now into your terminal. It also allows deploying static websites, which is what I’ll be using it for in this little tutorial. Prerequisites This…
Bréf: where I try to explain something briefly. This weekend (9 to 11 Dec.), I competed in the Telstra Cloud Hackathon , in a team with three friends ( Gabriel , Terence , and Daniel ). We built Jift , a product recommendation engine that uses your friends’ Facebook likes to recommend products, along with a (unbuilt) Secret Santa component. Our hack used ReactJS on the frontend, with some…
I have a pretty terrible habit of buying new apps very frequently. My friends can vouch for this. Following new purchases, they’re often inundated with messages from me about how ‘good’ an app is, and that they should go buy it ASAP, even if it’s not relevant to them at all. Recently, my friend Theo bought a new Mac, and asked if I had any recommendations for him. I wrote…
Today, I acquired a new domain name. It’s two letters short. Launch control, this is Houston, we are go for launch! 🚀 👉 youtu.be/zVf-rehP4b8 "> youtu.be/zVf-rehP4b8 👉 hu.md "> hu.md is live! 🚀 — hugo@melb.social (@hugojmd) November 29, 2016 I’m pleased with it. Short, succinct, concise, small. A two letter domain is something I’ve wanted for a long time, and I’m…
Surprisingly, I spend a lot of money on subscriptions every year. Unsurprisingly, I haven’t tallied how much I actually spend, partly because I’m a little lazy and partly because I’m scared of finding out exactly how much I spend.. So here it is. Monthly Expenditures Google Play Music & YouTube Red I pay $5.99 AUD per month for Google Play Music, now inclusive of YouTube Red, as…
What we’re going to be doing Setting up a subdomain Setting up Amazon S3 Setting up: Preliminary Setup ShareX (Windows) DropShare (Mac) Setting up Amazon S3 If you already have an S3 Bucket created/setup, skip this section. Login to to your AWS Management Console . Go to Amazon S3. Create a new Bucket and take a note of the bucket name. Open bucket properties (in the top right) and add a…
I always find writing like walking up an endless flight of stairs and, as you reach the thousandth stair, using every ounce of energy to pull at your legs to move up just one more stair. Obviously I’m exaggerating, or using a bad metaphor, but what I mean is I have a hard time writing. I don’t think I’m bad at writing; I was a surprisingly good English student, I just ..…
What is Monash Ninja? Monash Ninja was week-long treasure-hunt-like event (14 Sept. to 21 Sept. 2015) run by Wired Monash . The concept and code was created by me (then Vice President) and the design for the website was created by Terence (then Secretary). I purchased the monash.ninja domain in April 2015 on a whim and then decided to come up with an idea for it. I had been thinking it would be…
Email has always been something that I’ve needed to keep track, something that since in the back of my mind and something that I feel like I’m always worrying about. When I receive an email, it normally means I have to do something, and I think that’s always been the issue. Early last year I made the switch from Gmail to FastMail (one of the best decisions I’ve made so far)…
UNIHACK Melbourne is a Melbourne-based hackathon that was run last weekend (August 8/9) and is open to all university and TAFE students in Victoria. Over the past few years, I’ve heard lots about hackathons, particularly the ones run in the USA, and the amount of creative potential they seem to unleash. You hear the stories about how Facebook Video and Chat emerged from hackathons . This,…
Update 13/08/15 I’ve been getting a few emails asking for my configuration files so I’ve uploaded them: weechat.conf , irc.conf (temporarily unavailable). “weechat.conf” contains general configurations for looks but “irc.conf” contains a setting that lets you create indented channels, under their respective server. What we’ll be doing Important things to…
In my final year of schooling, I worked out how I could bypass my school’s proxy. A shame that I discovered it so late, but hopefully those reading this may be able to get a bit more use out of it than I did (only a few months!). This idea/hack will really depend on your school’s proxy system but it should, theoretically, work on most networks (don’t quote me on this). My school…
I’ve been working on a pretty big project on Github with a couple of developers. It has a lot of potential and requires a lot of work. We happen to be using a Content Delivery Network (CDN), because we’re hosting files. I thought I would be smart, and route all traffic via the server before routing to the CDN. This would then allow me to restrict access to the files so that they could…
Disclaimer: this is old and doesn’t work anymore, but I’m going to leave it up here for posterity. I can’t say I’m amused by the changing from .sx to .ac and then to .pe. It’s annoying. Open up Terminal, type sudo nano /etc/hosts , add a new line with the following: 194.71.107.80 thepirate.bay Now you can browse to http://thepirate.bay/ instead of having to remember…
Last night I made a blog post on how to screen record. This morning, I decided to make toggles with Tasker so that I could do it all from my phone easily, without a computer. Install Tasker . Install BusyBox . Copy this file to /sdcard/ with ADB; ./adb push screen.sh /sdcard/screen.sh Next you can use ./adb shell to get into your phone’s terminal. Type su , a super user prompt should appear…
I’ve just tried it out and it is absolutely awesome! Before I start, I’d like to thank Android Police for the initial information on how to do it, in this article . There are two ways to go about this, the first is to use a terminal emulator (you’ll need root) on your phone to execute the commands and the second is to download ADB and execute the commands through your terminal.…