Imagine there was an API where you could get random cat pictures from the internet. This sounds like an amazing idea, but it doesn't exist! So I decided to build it myself.
The basic idea was as follows. First, train an AI to differentiate between cats and not-cats. Then, I could feed it random pictures off the internet, and it would discard non-cat pictures. The cat pictures would be saved, to be served by the API.
Most of the AI work was already done for me. I found this project, which is designed to classify cat and dog pictures. Nothing really had to be done to the code. When training the model, I just gave it non-cat pictures, rather than dog pictures. My computer is not optimized for AI training(I used my CPU) so I was not able to train the model as much as I would like.
I was also planning on distributing the classification over many computers. For this, I set up a Rails API that would a...
This is another project from the backlog that I hadn't had time to post about. Written sometime in summer 2019 is my interactive universe map. It is a Google-Maps-like interface for browsing a 600MB image which was created by astronomers by stitching together many pictures from the Hubble telescope.
Originally, I wrote a Node.JS server to dynamically generate each tile as it was requested. However, I was unable to manipulate a 600MB image quickly enough for this to be viable. I ended up writing a Python script to generate every tile, which could be served st...
This is not a new project, but I hadn't posted it yet so here it is.
Victr is a site that finds houses and apartments(and land) on Kijiji and makes it extremely easy to search through. The main feature is that you can put in an address, and filter based on houses within X minutes driving or walking distance. As far as I can tell, no other sites do this; probably because it would be expensive if using an API.
To get around the whole API issue, I'm hosting everything myself. Even the map tiles are generated by me. The address lookup and routing engine are running on Nominatim and OSRM, respectively.
The backend is written in Ruby on Rails, and the frontend is written in Angular. I'm not very good at Angular so the code base is a huge mess. I'm pretty happy with the backend, though it could still be cleaned up.
I originally started writing Victr over the summer, but I have not done much lately. The next big feature would be to scrape realtor.ca. I am not sur...
I have switched my website yet again.
The first version ran on Wordpress. Though it had many features, I found it to be bloated and slow - and very overkill for what I was doing.
The second version was entirely static HTML. Although much more minimalist and faster, it didn't look great, and it was tedious to maintain.
This is now the third version of my website. I have written a blogging platform entirely from scratch in Ruby on Rails. This makes it a lot more convenient to use. It also opens up the possibility of comments, which I am happy to have back (I have not had them since Wordpress). I call this new platform Pressr. It is open source.
I am still working to add features to Pressr every day. I would like for it to be a powerful platform, while still being lightweight and efficient.
A few weeks ago, I stumbled upon an ad for a Kaypro II with dead floppy drives. For the cost of shipping, they were willing to give it away. As someone who loves luggables, I knew I had to have it. The Kaypro II has the following specs:
The seller was also nice enough to send a stack of 5.25" diskettes. I believe they have lost their magnetism, as (after fixing the Kaypro drives) the files on them were corrupted. So, I have to find another 5.25" drive that I can use to put images on the disks. In the meantime, why not hack the ROM?
Now, ROM hacking is new to me. I understand the concept, but do not have any of the required tools, such as an EEPROM reader. But I do have an Arduino, so I figured I could ...
I have written my own gravitational engine! Although it started in python, I quickly ported it to C for a huge performance benefit.
The general idea is that it starts with a large array of 'stars'. Each is given some angular momentum. Then, the stars are gravitationally simulated over a period of time. This has led to some really cool effects!
Here is a simulation I did with n=1000 stars:
Here's another one with n=10k stars. This one turned out really well. The stars quickly form two galaxies, one much bigger than the other. Not only does the big one appear to be a spiral galaxy for a short period of time, but it also rips the small...
First things first - I have sourced a CRT! It was delivered for free and works great. Since the PS/2 System 50 has a weird VGA port, which was common in this time period, I had to break a pin off the monitor cable.
Even though the plastic colours do not match, I prefer it greatly over the LCD I used before.
I also received a USB floppy drive in the mail. I tried both MS-DOS and an IBM initialization disk image I found, but it kept dropping me into BASIC. After more troubleshooting, it turns out the floppy drive in the unit is broken. It's a common problem, and should be fixable by replacing its capacitors. When trying to get the drive apart, however, I found out that a few of the screws were completely stuck, and made out of a very soft metal which couldn't handle my screwdriver. I will probably have to drill them out and find repl...
An IBM PS/2 model 50 computer showed up on Kijiji about a week ago and I knew I had to have it. For only 20 Canadian rupees, I got a 286-based machine with one megabyte of RAM. Its 40MB hard drive was blank, and I do not have a floppy drive, so I can't create a 16 bit boot disk.
Surprisingly, though, it still boots - there is a BASIC interpreter stored on ROM. I never learned BASIC, but the language was intuitive, and I only used a minimal amount of documentation. I manually retyped a mandelbrot generator I found on github, which worked perfectly! Unfortunately, the built in interpreter only supports 4 colours - which I configured wrong, resulting in a monochrome program output - and I only allowed it...