Personal Projects Thread

I have seriously reconsidered my career choices. Perhaps the career path of a programmer has not changed for me. But I am very tired of working on websites. So I am focusing my attention from providing product/services to chosen clients, to providing a product/service to the public. Video games is one such product. I have two projects in mind. One way more ambiguous than the other.

The ambiguous project is what I call Magia(website is just a teaser). A 3D game where players use an existing constructed language called Lojban to do magic. I thought I could develop it through alphafunding. But could not get enough variety possible spells to publish it and a similar game called Code Spells got crowdfunded, even though it uses code which I thought would scare away non-programmers. This game is still my main objective. Might make it as a mod for Minecraft first though, in order to create a community around it.

My current project is a third-person telekinesis survival game for Xbox One Kinect called Telezerk(IndieDB page). Game features a short story setting in which the protagonist continuously resists arrest for a crime he/she believes to be entirely innocent of. No matter. Law enforcement won’t stop and the attempts are never ending. Even if the protagonist has telekinetic powers.

Telekinesis/Psychokinesis mechanics are heavily influenced by the movie “Push” from 2009.


It might be nothing fancy, but I do tend to spend some of my free time writing little javascript mods for forums I am active in, to add functionality. Like “ignore user” on discourse (I do know the reason why the discourse devs decided to not include this functionality, but that doesn’t mean I have to agree with them on that point).

Here’s a screenshot without the script:

and here with the script, where I ‘ignore’ myself:

I kind of want to keep tinkering with it, as there can be done some interesting stuff with it, like adding random facts about I:B to it, or a random I:B screenshot…


I just got Logic Pro X. First order of business was figuring out how to make a good harpsichord sound. Here’s the stock version:

Here’s the super modified version of the same sound, layered 6 times:

Techniques included making a track that had the equalizer emphasizing the very high frequencies of the twanginess, while I also slightly increased the attack and reverb on those to give it that nice harpsichord crispness. I also had different tracks emphasize different parts of the instrument to help “widen” its sound to make it sound more like it’s right in front of you.

That’s the same track of me playing, so the midi output files are identical in each.

Oh, and both recordings are in a well-temperament. Also… This still doesn’t sound as good as it does right in logic, so I’ll have to figure out how to up the quality.


That feeling when you squash a bug that’s been pestering you for weeks (in this case a memory leak that rendered the program kind of not fit for purpose)


Working on making my own transcription of The Imperial March from Star Wars by ear for the piano. I played this at just over half of the tempo you hear here, which I sped up:

The stumbles are kind of because I just decided to add in playing an additional octave for most sections with the 16th note triplets. Later on towards the end it’s because I’m doing a “roll” but it’s from an octave up to a chord to be played on the same beat, essentially. It is permissible because orchestral music often has a longer attack time, and the rolling conveniently manages to capture both additional notes and the attack time. But, it has to be done with the left hand to make sure that the right hand has the precise timing.

Using this recording as reference:

It’ll take me a while to reverse engineer the rest of it while I get the stuff I know clean and up to tempo. It’s actually been a very good exercise in getting my finger dexterity up. I especially need to work on some of the the rapidly repeated notes with my left hand in a pattern of 4321 and 1234 because if I am playing an octave I have to start my thumb on 1, and 1432 just has too much of a lag.


I know what you mean. It’s been too long, and my fingers feel stiff when trying to move quickly.

I don’t know if you need help, but I’d recommend “Hanon: The Virtuoso Pianist in 60 Exercises”. It’s helped me a lot in the past, and I really ought to go through it again lol.

As to the piece, it has potential, keep working on it.

1 Like

I’m at a point where I am about to say to Hell with it ever having gone to shit and to Hell with it ever going to shit again.

At least I can play some of the passages I developed at full tempo already.

1 Like

A 3 hour mouse mod:


Goal was to be able to play at really high DPI … because preference.
Initial friction as well as friction significatly decreased.

Works well on my PTFE sheet.
Works ok on my table.
Does not work ok on my Glass mousepad. (Probably due to increased distance to sensor)


Nice work @Lomsor, didn’t expect this thread to get bumped, don’t forget to update us of design flaws in 6 months (“I bought a new desk” or something.)

So I’ve been pretty busy getting divorced to make anything substantial, but I did spend some time on modding IBS with the help of @inovaeflavien who let me into the pre-alpha modding testing. The result was an radar mod overlay for IBS, in the same project I learned how to draw a Unity project over another game and published that as an asset on the Unity asset store. Some vids are below.


I thought I’d give intro to my coffee making process here. I do pour-over coffee, and I’ve been doing it for about three years now.

Recently, I think I perfected my pour technique. I start out hot when the beans haven’t fully degassed. After they’ve degassed, I pour in the rest of the water slightly cooler, which changes the flavor profile of the remaining coffee. But, I use less water for that phase so that it isn’t underextracted in the final portion of the brew. The resulting coffee tastes so good that I have a hard time processing what’s happening. Like, today was the best cup not only that I’ve ever made, but that I’ve ever had in my life.

It was a combination of finally perfecting my pour and having beans that were roasted yesterday by the best coffee roaster in town.

It was like the coffee was having sex with my tastebuds, and right now I have a buzz that feels like a euphoric post-sex buzz. I’m pretty sure Mozart’s Dies Irae sort of migrated into my mind while drinking it. It’s almost annoying and distracting because of how good the buzz feels. It feels more like I smoked a bit of pot, but without the gross feeling or confusion.


Wow I’m sold

Got any tips or a good guide for beginners?

1 Like

Find a good coffee place/roastery in your town. Try each of their pour overs. A lot of places are not that great and you really just gotta find the places. A lot of places aren’t actually serious coffee places despite being local businesses. And, what’s funny is that the price isn’t actually any different.

Then, after you get a sense of which place you like the most, buy a Chemex (most beginner friendly), a food scale, a digital thermometer (mine is a meat thermometer). And get a cheap gooseneck pot.

My technique is a combination of techniques. So, how he talks about “dirtying up the flavor” at 200 degrees. I figured that going in a little hot a little early pulls out a few of those “dirty flavors” but not too much. I was so right.

Note: whatever thermometer you’re using, calibrate it by measuring the temperature of boiling water at the altitude you’re at.

Final ratio: 13 ml water/grams of coffee. 1 ml of water = 1 gram of water. The water you use is important, I use Crystal Geyser because it’s cheap and lacks other flavors and seems to extract properly.

  1. Grind your beans (medium coarse) while you heat your water.
  2. Place the filter in the chemex, the side with three layers should be on top of the pour channel. Then pour your boiling water into the chemex to rinse the filter. Discard this water into your cup to heat it up.
  3. At 201 degrees, pour in 2 ml per gram of water, covering the beans first, then finishing off this step by pouring with more speed in the middle. This takes a bit of practice.
  4. Once this step has passed, start pouring slowly in the middle and gradually moving outwards (202 degrees, gradually cooling as you pour). This is that dome that I is referenced in the video.
  5. Once you’re at half to 2/3rds of the total volume of water you use, let the dome dissipate and let the beans fully saturate.
  6. Pour the rest of the volume in at 200 degrees. This cooler temperature extracts no offensive flavors. Try to get the coffee that sticks to the sides of the filter here.
  7. Swirl the coffee around fairly well, with plenty of agitation. This mixes and aerates it. Then pour it into the cup from a height to finish it off, giving it a nice frothy head.

Enjoy the deliciousness.


My joystick is a 17 year old Saitek Cyborg 3d.
It’s had a lot of use over those years controlling submarines, land vehicles, planes and helicopters and of course spaceships! and the only issue it’s ever had is the grippy pads on the bottom falling off!

The result is that I can’t really use it one handed as it moves about a bit. A second hand on the throttle and lower buttons prevents this, but for Battlescape I wanted to try using it left handed with the other hand on the mouse.

So… As well as getting some grippy pads for the bottom, I thought I’d see what I could do to make it heavier.

Originally there were 4 weights inside weighing a total of 220g (7.76oz). I guess the whole joystick weighed under 500g (1.1lb) (See edit at the end).

I had some roofing lead which I figured was the densest stuff I had access to and is also easily malleable.
Malleability was important because the insides of the stick were pretty compact with not a lot of spare room. As the axes are manipulated some of the internals move around so I needed to allow room for that as well. I was able to cut and fold the lead to make use of the available space as you can see:

There is one layer of lead covering most of the bottom, and three more layers where there was space.
On the right you can see the four original weights which were stacked two high on either side, where the screws are now holding the lead.

Reassembled the whole thing now weighs 1350g (2.97lb) and feels significantly heavier.
Even without grippy pads on the bottom it feels like it’s not going to move, even on my glass desk surface.

Here you can see the sheet of lead that I cut from

One day I might get a new stick, but until then the Cyborg lives on!

Edit: I just weighed the top half on it’s own and am surprised that it is 418g making the original total mass about 640g. So my efforts only doubled the mass. I thought it felt a lot heavier. :confused:
I guess the only important factor is the difference between the force required to actuate the joystick and the force required to lift/move the base unit.


Hey guys!

Finished this too late tonight to do a full write up but here’s an update and if there’s interest I can dive into the details. Last semester I wrote a full 6dof simulator for a class but only for things happening on/near Earth’s surface and we ended up simulating an attempted launch to orbit. We all love space so I wanted to convert to an orbital simulator.

After battling bugs from the last semester I realized that when I changed my quaternion conventions I forgot to update my simulator(but changed the integrator for my other class so I didn’t notice it earlier).

Anyways…my first goal was to model a BDot controller for detumbling. Essentially, when a cubesat is deployed from it’s launch vehicle it’s typically imparted some random angular velocity. For more sophisticated cubesat missions pointing is required. Whether that’s pointing at the Sun for solar power or accurate at Earth for pictures is up to the mission Type. Before the cubesat can phone home, it needs to detumble and stablize itself to sunpointing to recharge it’s batteries before entering its operational life. We do this with what’s called a Bdot controller. As the spacecraft rotates it measures an induced change in magnetic field due to it’s changing orientation. If we can torque in the opposite direction we can slow our rotation. We can do this using magnetic torque rods which are just coils of wire that we run a current through. By actuating these at the right time it’s possible to slow a rotation.

Here’s a high level view of my simulation for those interested. The dynamics blocks simulates all the physics(dynamics and kinematics) and feeds into any sensor models I might(They’re perfect right now…I haven’t added random noise yet) which gets fed into the controller.

The most important part of this test was the body rates of the rotating cubesat. I gave the initial conditions of 0.1 rad/s which is ~5.5 degree/s for each axis and let it run.

The vertical axis is rotation rate about the xyz body axis in rad/s and the x-axis is time in seconds.

This sim ran about 24,000 seconds and was brought below .01 rad/s (.57 deg/s) and well within the momentum storage of a typical ADACS system allowing its reaction wheels to take over. It converges to this in about ~16000 seconds which is roughly 2.7 orbits at it’s orbit(~650km circular, 98deg inclination). Pretty good!

I was pretty damn stoked on finally getting this to work because I spent the last week pouring over ever inch of the sim to find why my rotations were adding energy to the system. You can see my energy checks in the high level diagram where I have a block calculating KE+PE totals as well as orbital energy to ensure that they match and stay ~relatively constant. One interesting thing to note from that is that over 24,000 seconds the satellite loses ~8.5(Gasp) joules to atmospheric drag and solar pressure.


What do you do when you don’t have money but want a nice sounding harpsichord? You spend 8 hours turning the shitty harpsichord sound the comes on logic to make it sound halfway decent. I am pleased enough with the outcome when I have decent speakers to play on, but I feel like I was just polishing a turd for 5 hours.

Eventually I created three tracks of the harpsichord sound to capture different parts of it so that I could try to get around this really awful metallic sound that it gets when you try to boost the “twanginess” of it. It turned out that making a separate track that had only the sounds of the plectrum plucking the string and the jack resetting it made it a lot easier to get that percussive sound of the harpsichord without the metallic clanky sound, which is still slightly present. The other track was there to actually capture the high pitched twang that I was actually trying to produce.

I didn’t just use the equalizer on these tracks, which would be silly since you are better off equalizing one track. I went and played with the available options for updating the sound.

I also found a well-temperament tuning online. That’s what the Well Tempered Clavier actually means - the specific tuning you’re supposed to use when playing the pieces.


Nice work. Did you try to model the sound off a particular harpsichord family? It sounds reminiscent of a Flemish harpsichord. I like it!

If you have Spotify, I used this recording:


But then I kind of let the natural voice of whatever was there also pull through a bit when the sound was finally decently balanced.

I am on-and-off working on getting into discord bots. So far the thing I made uses just webhooks, as I want to use it to post announcements in a channel using a message template. I use a crappy html form where I can input dates for the event etc, which on submit fires a javascript that then posts the announcement to a predetermined channel.
The next step is to save n announcements and scheduled posting of those at predetermined times.


thank god, that’s an impressive resume they got !
Great stuff ! It’s amazing how bringing money to virtual worlds gives vastly better results than attempting to bring virtual worlds to the existing money system crap.
Im in , those guys are more than serious !

There are some pretty good bot libraries out there. I’m using personally, but there’s a library for pretty much every language.

1 Like