Interrelated personal side projects can be a goldmine of learning opportunities

Some people struggle to find ideas for working on side/personal software development projects for learning (and fun!). I’ve kept a running list of ideas in an online notebook and if I’m struggling for an idea for a new project I refer back to this list.

Over the past couple of years I stumbled across a series of inter-related projects that’s been a goldmine of learning opportunities, from frontend to backend to serverless.

This series of projects started with a question “Can you solve a problem without understanding the problem?”. tl;dr? No. The problem for this activity was solving Sudoku puzzles, and you can read more about this here:

This lead to the next step, researching more about exact cover problems, and how they can be solved with well established algorithms:

After building an implementation of Donald Knuth’s Algorithm X, I packaged it up as an AWS Lambda, and then built a React frontend for it:

I have one other project in progress for the frontend, replacing Flux with Redux. I’m still working on that one.

After building my solver and the frontend, I starting thinking about how to generate new puzzles. This is in progress here: https://github.com/kevinhooke/sudoku-generator

If you’re generating new puzzles you also need a way to grade the difficulty of puzzles. The unusual thing about this is there’s no established algorithm for grading the complexity of Sudoku puzzles, they’re typically graded by applying human solving techniques, so this led to this: https://github.com/kevinhooke/sudoku-human-grader

This string of related projects has kept me busy of the past couple of years. Not every idea will lead to a series of related projects like this, but if you can find an idea that does, it will keep you busy with plenty of problems to solve and many learning opportunities.

Corsair Force M.2 MP600 500GB Gen 4 SSD benchmarks

I’ve never seen any disk read and write throughput values measured in multiples of GB per second before, this is really quite astonishing. This is the performance benchmark in CrystalDiskMark of my new Corsair Force M.2 MP600 Gen 4 SSD in my new PC build. The motherboard is an Asus X570 Plus:

I’m used to seeing typical 500MB/s reads and writes on a SATA SSD, but these M.2 format SSDs are outstanding.

Comparing screenshots of Microsoft Flight Simulator 2002, 2004 and FSX

Microsoft Flight Simulator 2020 is almost here and I thought it would be interesting to look back at how the scenery has evolved since early versions. I have FS 5.1 (DOS), FS 2002, 2004, and FSX as well as numerous scenery add ons.

Here’s a side by side comparison over Southend, England:

FS 2002 Over Southend
FS 2002 Over Southend with Just Flight South East England VFR Scenery
FS 2004 Over Southend
FSX Over Southend

The Just Flight VFR scenery is pretty good in comparison to the stock scenery. The water textures definitely improved in FSX, but what is it with the colors? Pretty sure the sea at Southend does not look like the Caribbean.

Ok, one more comparison, let’s take a look flying out of Napa in FS 2004:

FS 2004 flying West from Napa
FS 2004 flying West from Napa

And now in FSX:

FSX flying West from Napa

And now with Blue Sky Scenery:

FSX with Blue Sky Scenery, flying West from Napa

It’s about 2 weeks to go before FS 2020 is released. Will be interesting to compare how good the Bing satellite image based scenery is compared to previous FS versions.

Planning a mid to high end new Gaming PC build for MS Flight Simulator 2020

I’m excited about Microsoft Flight Simulator 2020 that’s launching next month.

I’ve been and on and off flight simmer since first playing my first flight sims on a ZX81, ZX Spectrum, Atari ST, and almost all recent versions of Microsoft Flight Simulator.

FS 5.1, 2002, 2004, FSX and various add on scenery

While Flight Simulator X has been updated to easily install via Steam, it’s been 14 years since FSX was released… that’s a long time between releases, but that’s not my focus of this post. If I’m gonna play FS 2020 I’m going to need some new hardware.

I’ve been mainly a Playstation console gamer for the past few years, but for playing Elite Dangerous and a few other casual games, a 2008 Mac Pro with a GTX 750ti has been more than enough for casual gaming, but it’s far from the minimum requirements for the new FS 2020 release.

From: Microsoft (link)

So, the first question, the age old PC builder question: Intel or AMD? AMD Ryzen have a slight cost advantage for comparable performance right now. I’m not looking for i9, or i7 performance, so even a comparable Ryzen 7 seem more than I need, so I’m going for a (current) top end Ryzen 5, the 3600XT at approx $250.

Ok, going AMD, so what chipset? M450, M550, X570? The best comparison of these chipsets I’ve seen is here.

  • X570 has support for the newer/faster M.2 PCIe x4 SSDs and is the latest chipset for AMD CPUs, so for the sake or $50 difference of so between slightly older M550 chipsets and X570, I’m going with X570

For RAM, X570 mobos support upto 4000MHz DDR4 RAM and faster with Gen3 Ryzen CPUs. What’s interesting is the prices (understandably) increase with speed, so doing some quick lookups: for 2 x 8Gb

  • 3200: $69
  • 3333: $99
  • 3400: $104
  • 4133: $229
  • 4266: $239
  • 4333: $264
  • 4400: $348
  • 4500: $499

I was initially thinking fastest RAM as possible, but there’s some lofty premium for those fastest (overclocked?) speeds, so rather go for the fastest 16GB I think I’m either going to go with some 3200 or 3400 and jump to 32GB instead (which is the ideal spec).

For motherboards I’m considering:

ASUS AM4 TUF GAMING X570-Plus ATX Motherboard with PCIe 4.0, Dual M.2, 12+2 with Dr. MOS Power Stage, HDMI, DP, SATA 6Gb/s, USB 3.2 Gen 2 and Aura Sync RGB Lighting

  • dual M.2 PCIe v4 slots
  • DDR4 upto 4400 (DDR4 4400(O.C.)/ 3466(O.C.)/ 3400(O.C.)/ 3200(O.C.)/ 3000(O.C.)/ 2933(O.C.)/ 2800(O.C.)/ 2666/ 2400/ 2133 MHz )

I ruled out this alternative:

MSI X570-A PRO Motherboard AMD AM4 SATA 6Gb/s M.2 USB 3.2 Gen 2 HDMI ATX

  • has 2 M.2 slots but only one 1 PCIe v4, but the other is PCIe v3
  • DDR4 upto 4400

For storage, I’ve already committed to a motherboard with PCIe v4 support, so I’m going with Corsair Force MP600 M.2 2280 500GB PCI-Express Gen 4.0 x4 NVMe initially, then I could always add more later.

For PSU, I’m going with a 650w modular from EVGA which should be more than enough power with some to spare.

Ok, that’s it for now. Parts are ordered from Newegg to arrive sometime next week, more updates to come later.