Categories
Development Learning Weekly

Weekly: MySQL benchmarking

Been busy with work and life that did not have the time to explore new things. Or maybe I did just that I forgot. Either way, the plan for the weekends is to explore Caddy as an automated way for me to deploy my portfolio/landing page, either that or cheating and using Netlify instead. The current flow I’m using relies on Ansible to deploy the page, which is a little bit manual in a sense. Hoping to change that.

We started doing benchmarking on our DB because one of our search queries has been slowing down significantly lately, and it’s affecting our user experience. In order to optimize the performance, we need a way of measuring the changes that we were going to implement.

Categories
DevOps Keyboard Learning Weekly

Weekly: AWS and Keyboards

As I am helping another team part time to setup some infra on AWS, I felt my fundamental AWS knowledge being tested all over again. I’ve gotten so used to doing the more “tricky/complex” things that when starting from fresh, got tripped up by some basic setup.

  • Internet facing ELB must have public subnet associated
  • As long as the each AZ has a public subnet associated, the ELB will be able to route to the AZ
  • Public subnets must have IGW, NAT not counted
  • NAT instance must be created in a subnet which has IGW
  • ELB does not need to be in the same subnet as Target Group to route to it
  • ELB needs at least a /27 subnet
  • ELB reserves 8 IP in the subnet for autoscaling
  • NLB does not load balance cross-zone by default
  • ALB load balance cross-zone by default
  • Smallest subnet in AWS is /28
  • OpenVPN Access Server needs EIP
  • OpenVPN Access Server needs to setup through SSH first

While I wasn’t the one who setup the bulk on the networking, I wasn’t able to quickly pinpoint the exact reason why I was unable to get connectivity for the VPN that I was setting up. Just proves that there are some fundamental concepts that I need brushing up on.

On happier news, I finally bought/receive the lube for my future keyboard. Over the weekends I decided to try lubing my current Filco TKL keyboard without disassembly to see how it works/feels.

Categories
Keyboard Learning Weekly

Weekly: diving deeper into keyboards

This week I finally made the plunge into the slightly deeper end of the mechanical keyboard community. I made the pre-order for Drop’s Ctrl Keyboard (Halo True switches). Total damage after shipping: 201.05 USD.

It’s my first step into the custom keyboard modding community. I was contemplating for the longest time if I should build a totally custom keyboard from scratch from sites like kbdfans for example. But the high cost of entry and the fear of screwing up made me decide to go for a semi-custom route instead.

However, while waiting for the keyboard to come, I decided to do some slight modifications to my Filco keyboard to see if I could improve the feel and sound of it.

Categories
DevOps Learning Thoughts Weekly

Weekly: It has been a week?

The past week has been pretty hectic changing between roles as a dev and ops, helping out with other projects till 2-3am every day has really taken its toll and I feel old.

Unsurprisingly, I haven’t been able to really work on any of my own projects but I did learn something interesting that I wish to write about.

Recently facing an issue on Gitlab CI pipeline, where I want to run integration/regression tests on the latest docker build. However, since each image is meant to be production ready, it means that it will be ran as a non-root user. Which means that it will restrict what the user can do when the container starts. Here’s why this problem has caused me such a headache.

Beware, below is really more of a rant about the troubles I faced.

Categories
Learning Weekly

Weekly: Fixed images not loading on blog

This blog has went down twice in the past week. Which seems rather unstable. But I always have to keep in mind that it’s a $1 web host after all.

That 86 mins downtime right there ¯\_(ツ)_/¯
Averaging 1 second for response time, not great but not terrible

I know this because I use this service called uptimerobot which is a freemium service that can help you keep track of your services uptime. I’ve been using it for the past couple of years but I don’t think I’ve ever mentioned on this blog. It’s great because it will send you email notifications when it’s unable to reach your site!

It’s interesting that when I was self-hosting it, it only ever went down for 2 mins over 6,500 thousand hours. It’s a bit insane when I think about how far tech has came.

The logs only shows so far back on the free plan

Not sure if anyone noticed but the images has not been loading consistently on the blog, it was due to the image optimiser + caching + CloudFlare. Decided to simplify everything by relying on WordPress’s Jetpack CDN to load my images instead and it’s loading pretty much instantly now!

Categories
Learning Weekly

Weekly: Circuit Breaker

It has been 3 weeks since Singapore went into Circuit Breaker mode, which is pretty much a semi lock down situation. Been working from home a month or more now and I’m slowly getting really bored of the stay home lifestyle.

That said, I am thankful that I’m in the line of profession that allows me to WFH without much issue and business still goes on as usual. On brighter side of things, mentioned that I bought a new NAS last week, and it arrived this week. It’s definitely a huge upgrade over my old WD MyBookLiveDuo. (2 bay NAS). I remember that when I bought it over 7 years ago, it was the most expensive purchase in my life.

Synology DS918+

Why did I get something that was released in 2018? Well, because the new refresh for it was $200+ more and the only advantage was that it has an extra drive bay. I heard that there will be a new edition for this probably this year or next, but based on the past 5 years or so, there’s really not much performance improvements to expect from a NAS.

The configuration I ended up with was

  • Ram: 4GB
  • Drives: 4 X 6TB WD Reds
  • Cache: None (TBD)
  • Raid: SHR2 (similar to RAID6)
  • Usable space: 10.5TB
  • Network: 2 X 1gbps bonded
Categories
Development Learning Weekly

Weekly: SG calculator

This is a side project that I’ve been working with my friend since last year but haven’t gotten many hours into it because … procrastination. But hey we finally have a MVP deployed onto Netlify and for the rare few people who somehow stumbled upon my blog, this is something you can check out.

TLDR; this is a quick calculator online designed to answer complicated questions regarding CPF and HDB (tbd).

https://sg-calculator.netlify.app

Even though I call it MVP it’s really still an early alpha and we’re still trying to figure things out and add more features to it. So there’s a high chance that things will just break from time to time.

Inception

We decided to work on this because planning for finance and housing in Singapore is quite a pain. While there are many calculators online that can give you numbers that you’re looking for, nothing is as simple or specific as, “How much do I have to save to retire with XYZ sum at the age of N?”.

Categories
Learning Optimization Weekly

Weekly: New hosting provider!

Another attempt at reviving my blog after only 7 posts for the entire year. But I finally figured out what this blog can be used for.

So the history of my blog started with me just ranting about my thoughts and feelings, that was many many years ago when I first started blogging, there was barely any filter to the things that I wrote and it was a rant every single damn day. That changed when I became more concerned with privacy.

It started with writing my inner thoughts and feelings on a self-hosted WordPress instance inside of a VM, then that transitioned to pen and paper and I almost completely stopped blogging altogether. Last year, I made the choice start journaling on a very regular basis, using a journaling app called Journey. It was great! I wrote on a near daily basis and I felt like I have a better grasp of my life.

Then I started writing Medium articles to have a better reach to tech audiences, which was the original intent of this revamped blog in 2018. But this blog quickly died down cause it’s not easy to pump out articles like that quickly.

So what is the point of this blog then? This will be where I just spam/rant/note down the interesting things that I’ve done over the week, just purely tech related, because a lot of these thoughts and experiences have been omitted in my journal (it’s boring to write about those in a journal). I’ve set a goal of writing one per week, to consolidate the fun things that I’ve been up to.

Categories
Development Learning

New personal pet project: Telegram Bot

So technically I have been working on my own personal projects now and then but haven’t really written about it for a variety of reasons. But mainly because there are stuffs that I prefer to do a grand unveiling of, or that I don’t really feel like it’s interesting/special enough for me to share.

Finally I have some inspiration to do something new and interesting (personally), with the inspiration coming mainly from work and the workshops that I’ve been to lately.

What I plan to do, is basically a extremely personalized assistant that would basically alert me whenever my services does something automatically.

The first of which is my automated torrent/flexget setup that has been working beautifully for over 2 years now. I also want a really easy way of sending new torrents for my server to download through the bot.

Secondly, I want scheduled information that would be useful for my daily routine. For example, since I go to work around the same time everyday, I would like it if the bot automatically tells me about the next bus timings without me having to check it. This could be extended with a custom app that can trigger actions base on my location. The whole point of this is just to reduce the amount of apps I need to open to get the information I want.

Lastly, I want to have important weather information alerting me when it happens. E.g. if there’s >XX% chance of rain, or if the haze goes beyond a certain PSI level.

For the weather one, technically the app I use already does it, and I know a lot of people have already done it. But this also means that there’s plenty of information to teach me how to do it, and it wouldn’t be that hard to implement it, right?

Oh and of course it will at least be slightly interactive, so being able to send some commands to get the information I want on demand. So there’s a pretty simple list of requirements and I would try to update the progress here as I build along.

So to be honest, it wouldn’t be that hard if I just go about doing this normally, but that wouldn’t be that much fun. Which is why I am determined to make most of this server-less, especially the API controlling the telegram bot. I’ve already sketched out some designs for the architecture which I’ll talk about it the next post!

Categories
Docker Learning Microservices

Things I’ve learnt about microservices

Over the past couple of months I’ve been working on and reading up extensively on microservices. Numerous medium articles, and 2 books* later, here’s just a quick summary of the important points that I’ve learnt.
*Building Microservices – Sam Newman / Microservice Architecture – O’reilly

Is it suitable for me?

Organization

The organization that you are part of is a very huge part of whether the microservice architecture (MSA) is suitable for your project/product or not. Conway’s Law states that software design often reflect the organization communication structure, unsurprisingly, the inverse holds true as well.

While not a fact set in stone, there is less resistance when implementing MSA if your organization embraces the agile culture. I feel that this is mainly because MSA is an evolution of Service Oriented Architecture (SOA). Having small teams with defined roles and objectives helps with separation of concerns and works in line with the technical aspect of MSA.

Sense of ownership

This is also closely linked to the organization and culture in general. MSA is not a magic bullet that could solve all the issues with the moving target problem. The team(s) need to take ownership of the service that they are building. There is no hard and fast rule that one team should only handle one service, but the team that built the service should be the one in charge of maintaining/improving it.

There are many other factors that I won’t delve into as the books do a much better job as putting the information across. But briefly, the other factors are as level

  • Location of team (across countries)
  • Team size (2 pizza rule)
  • Outsourcing (cultural fit)
  • Competency level

So you’ve thought through all of these factors and decided, “I think my team/organization is ready for MSA, where to start?”