What programming/technical projects have you been working on?
This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's interesting about it? Are you having trouble with anything?
A few weeks ago, I bought a Wyse WY-60 serial terminal. Last week, my USB serial adapter and DB25 null modem cable came in. Since then, I've been having fun with it. This will probably come as no great surprise, but the software infrastructure for serial terminal support in modern free software unixen has… suffered some bit rot. =P Some of the issues I've had to fix include
termcap, which is… let's call it legacy, difficult to find documentation on and difficult to use.
terminfo(the modern replacement) is present in the packages collection, and some other packages will use it, but having software use different, slightly incompatible, terminal capability databases is not fabulous. (I specifically had the damndest time trying to puzzle out
tput—the one in base uses
termcap, but you can install
ncursesfrom packages to get an alternate that can use
terminfo—because spitting raw
xtermescapes into a monochrome serial terminal that's not a vt100 goes about as poorly as you could imagine.)
TERM? Did you know that a serial terminal from the early '80s for which "paste" is what users smear on the screen has no idea how to interpret those escapes? I didn't know any of that; guess how I found it all out. (If you find yourself in this slightly esoteric situation, you can prevent readline from sending those escapes by disabling bracketed paste mode: put
set enable-bracketed-paste offin
~/.inputrc.) Filing a bug about this is on my personal to-do list.
wy60-43-w(indicating the 43-line, 132-column wide mode). Mostly this either doesn't matter or means things just draw in a little 24x80 square in the top
rightleft, but drawing optimization routines occasionally take advantage of the wrap, and if it doesn't happen where they expect, they get very garbled.
I'm learning Lisp, to be specific MIT Scheme by following SICP book. Why, I don't know, but the concept of treating code is data is very intriguing. It is absolutely worthless to have Lisp on my resume, but I'm hoping it will be fun and might push me build some tooling around Emacs.
I don't know about absolutely worthless. It's definitely niche, but it might get the right graybeard-turned-hiring-manager's attention.
In my country, I don't think any college teaches Lisp. I seriously doubt I'll come across managers (people graduated between 95-10) know or care about Lisp. Most spent their lives as contractors in body shops, where it was Cobol, Java, .net or python at best.
A dative recently got on a syllabus committee of a college and asked me for suggestions. I told him to see if they can include Lisp in the course and he came back saying college has no options for professors with any Lisp knowledge.
I've been working on my Portal VR clone again (I posted about it a while ago, honestly I'm surprised there still isn't anything like this, it's been 2 years). I've made some major structural changes, including removing the VR level editor and just making it flat screen (having the level editor in VR was more effort than it was worth). Everything's been going pretty smoothly so far, so I suspect it'll only be a few weeks until I've added most of the level elements from portal and fixed the biggest bugs, although I'm really bad at time estimates so who knows.
Also, this time I've decided to make all the assets myself, so I've been getting better at 3D modelling (still haven't approached texturing yet).
Anyway, here are some in-progress gifs:
This looks great! Do you get a lot of motion sickness? Or you get used to it after a while? It must be something to jump into a portal and the gravity's direction changes.
Fortunately, I don't experience motion sickness. I suspect it would be uncomfortable for people who are susceptible to it though. I make sure to rotate around the heads axis instead of around the body, which makes things less disorienting.
This is super cool!
I’m just about fed up with AMD’s non-support of ROCm. I have been trying to get the higher level libraries working on NixOS, as I’ve posted about in the past, but was unable to do so. I decided instead to spin up a drive with Ubuntu 18.04.5 on it, just to run one of my old neural styling programs - lo and behold, it doesn’t even work (at least the beta 4.0.1 PyTorch wheel) on the supported OS! So I filed a bug report with the errors from the PyTorch tests on my machine over a week ago and still have not heard back from either the PyTorch team or ROCm support. I might try building from source to overcome the issue, but I don’t have high hopes that will work either. The last time I actually had ROCm working on a machine was at 2.8 - and I have not had any actual support that I can remember since then. On top of this, the documentation is so bad that I’ve been working on this in spare time for at least a year and don’t even know if there’s a sane, simple way to check if the ROCm stack is working properly - it’s an absolute mess, and I’m close to selling my GPU (for a profit???) and just buying a 3090.
Semi-relevant rant-y thing:
Even on a supported system with a proper install, ROCm is still crap in that it doesn't work with many things including Blender.
AMD, doing the dumb, first said "GUI Applications are unsupported" (so... you can mine cryptocurrencies, but can't render a donut?)
Now they have backtracked on it, saying they have "some plans"
But that was a month ago and no updates happened on the issue so far. I guess miners pay more than people who just want to make digital donuts, huh?
I am currently stuck with an old version of AMDGPU-PRO's OpenCL stack, because the newer ones don't work properly on Polaris cards, and ROCm is, well, still not there yet.
I am starting to think about plugging my old 1050Ti back in, solely for compute, but the market right now means if you don't have one on hand, good luck getting one!
I managed to snag a Radeon VII on release, so I have officially supported hardware and it still does not work at all. I have been considering selling it since it’s worth something like triple what I purchased it for, then just buying an Alienware Aurora R12 configured with a 3090, ripping that card out and putting it in my rig (the OEM Alienware 3090 is one of two 3090 cards that will fit in my case, it’s a smaller form factor), then reselling the rest of the R12. The only reason I have not done this is because I also don’t want to deal with Nvidia’s driver stack.
The lack of ROCm support is really making me regret buying a 5700XT. I'm deadset against buying Nvidia because I'm a stubborn fanboy, so I hope Intel can bring some compute-focused competition to the market with their upcoming discrete graphics.
Rewriting Moonlander in Vala. (Previous Thread)
Vala is, if you didn't know, a language made specifically for working with GNOME libraries (GLib, GTK, etc.). It's kinda like C# in syntax, but compiles down to C with GLib instead.
Why rewrite? Because GTK on Rust was too darn complicated and boilerplate-y for me. Also Vala compiles a bit faster and is overall a better Linux citizen regarding packaging and stuff IMO.
Currently, I got to the point of connecting to Gemini without any TOFU and rendering Gemtext pages as plaintext, but just in 2 days work this is really good (obviously some "architecture" work is ported over from the Rust Moonlander), but Vala does things a bit differently so it was still a fair bit of work.
There are some things I'm missing from Rust (enums with actual data, Result<>, match, etc.) but overall the language itself looks like a pretty neat Java/C# clone to me so far.
If you're planning to do any GUIs on Linux, do give it a shot! But be warned, it's documentation isn't as great as it could be, and while it can use C libraries, it requires you to write VAPI files and whatnot, so the small-ish library ecosystem can also be an issue. Still do try it out though, I like it.
For the past few weeks I've been trying to grok a way to use LibVGM in an Xcode project so I can make VGM player with a GUI.
The problem is that I really don't understand Xcode yet, and at the same time I'm trying to get this library working with either Swift or Objective-C (with this being the first time I've ever written any code that uses a C library to begin with). LibVGM has no real documentation, so I'm stuck reading the code, which is made more difficult by the fact that its build system is cmake, which I of course have no experience with. It doesn't help that the code seems to be absolutely everywhere in some sort of pattern that I can't seem to understand. Oh, also I've technically never written an application for MacOS.
So yeah, I basically have no idea what I'm doing and it's frustrating. It doesn't help that I've been depressed lately so haven't been able to focus on it much at all.
That being said, I haven't not made progress. It helped that I learned that cmake has the ability to generate Xcode projects, which will do a lot to help me understand how to get things running. And I should be grateful to the contributor who added Core Audio support, without which this would have been much more complicated.
I have quite a bit of experience using Xcode for macOS development. (It's actually the tag where I have the most points on Stack Overflow.) If you have questions, let me know.
What is LibVGM? I went to their GitHub repository, but there's no readme. I see references to audio stuff, but not much else.
VGM is a logging format for a wide variety of audio synthesizers used in video game consoles, arcade machines, and computers. Libvgm is basically a collection of emulators that let you play back the music written for them.
There are a few projects I've been working on.
First, since the beginning of Covid, I've been using AWS to spin up Minecraft servers for my friends and I to play on. I've found that Minecraft while voice-chatting has been the closest thing to physically hanging out with them. Recently though, I've decided to migrate to Dreamhost, since I'd rather not support AWS more than necessary. So I need to rewrite my scripts in Python to work with the OpenStack API, which will be a little bit of a challenge, but I think I'll learn a bit.
Second, I saw someone mention a pubnix that they set up recently using the Shizaru server, so I looked into it and saw that it blocks <script> tags. So I'm trying to use HTML entities to get a react page running, despite the blocking. I think it'll be a fun project that'll help teach me more about XSS and its limits.
Anyways, glad to hear from y'all.
Doesn't that cost you a fortune in bandwidth? I thought that the outgoing transfer prices for AWS would make this much more expensive than the alternatives.
That hasn't been my experience actually. Probably because I don't keep the server online 100% of the time, and because I don't normally play with many people at once. Normally, There's about 10GB out per month, and that's with roughly weekly playing sessions, so at 9 cents per GB, it's typically under a dollar a month. Now the real budget killer is accidentally leaving the server up lol
I'm diving into learning CAD using Fusion 360. I started out doing this so I could make designs for my 3D printer, but now it's so enjoyable I'm also designing things just for fun!
Coincidentally, I have also downloaded Fusion 360 recently, but I haven't used it too much simply because I've already gotten used to the math-based design workflow with OpenSCAD.
And to be honest, I'm also put off by the extremely locked-down proprietary nature of the program as well as the rather ugly and unresponsive interface. It looks really easy to use, though, so I'm sure I'll be breezing through it whenever I can get over myself.
The last time I tried to use FreeCAD, it was very unstable and had an interface that was terribly difficult to understand.
Yeah I tried OpenSCAD but it was a little un-intuitive for me. You may want to try FreeCAD instead, it's open source and has a similar feel to fusion.