• 0 Posts
  • 755 Comments
Joined 3 years ago
cake
Cake day: June 16th, 2023

help-circle


  • It was originally written as a C DLL utilized by a Visual Basic front end. The C DLL used the Win95 API, though, so it wouldn’t have worked on anything but Windows 95 and onwards. I subsequently ported the entire thing to C# but still using the same API to do the actual playing of the audio (I experimented with using DirectSound instead but that was really not appropriate for an application doing its own audio mixing). Now I’m working on an iOS version and I couldn’t give two fucks about Windows at this point.


  • As a programmer, it’s pretty wild how much of Windows under the hood has remained completely unchanged. I started writing software synthesizer applications back in the late '90s, using a part of the Win95 API called “winOutX”. The functions are kind of clunky to use but they allow you to programmatically create your own audio buffer arrays filled with whatever sounds you’re up to creating and dump them into the playback stream for seamless audio. This shit has remained in place, working pretty much perfectly, for the last 30 years. It was even there in WinCE/Windows Mobile, which allowed me to write software synthesis applications for early smartphones circa 2005. And it’s still all there today.

    I like to rip on MS as much as the next guy (not least for them completely dropping the fucking ball as far as smartphones were concerned), but sometimes their incredibly long-term conservatism can work to your benefit.















  • I briefly wrote Blackberry apps circa 2010 (yes, I knew RIM was dying a quick death). The development process was insane: any module from the framework that you incorporated into your app had to be digitally signed by RIM servers every time you tried to compile your app and deploy it to a device, even if you had only made a one-line change to the code. On good days, this would make the compilation take 5-10 minutes; on bad days it would be upwards of an hour or never happen at all. Some wags had even set up a special website that would tell you whether the RIM servers were down or not (long gone now, of course). I got in the habit of making a large number of code changes before attempting to run and test stuff, which is obviously not the ideal way to do things but it certainly teaches you to be careful. It also make me think long and hard before including a new module into my code. As one example, for my GUI I needed to use trigonometry functions which were naturally (lol) part of one of the cryptography modules which took an especially long time to get signed. I ended up writing my own sin() function in Java just to avoid the hit of including that module.

    The great part of this was that I always had a ready-made excuse whenever I felt like taking a long lunch or going shopping or going home early. “Sorry boss, the signing server is down” and I made damn sure they never knew about isthesigningserverdown.com. It also helped that it was Blackberry circa 2010 and it didn’t make a shit bit of difference whether I got the app done or not.