This is the weekly thread to discuss what you have done recently and are working on this week.
Please be descriptive and don’t hesitate to champion your accomplishments or ask for help, advice or other guidance.
I’ve recently created a little programming language, that unexpectedly blew up on twitter.
This week I’m working the tools ecosystem to help people learn that language.
I had watched someone do a screencas with ORCA (this one), it’s really fascinating stuff.
Watching the part where she introduces U-Turn makes me want to write a musical Galaga style game in it 😂
I’d love to see that.
Is there a programmatic API for ORCA?
Not yet, the spec still shifts and changes slightly.
The closest thing we’ve got is: https://github.com/hundredrabbits/Orca-c/blob/master/sim.c
Oh that is beautiful!
I’m working on crates.rs, which is a showcase of Rust libraries and applications. I’m tuning the new crate ranking algorithm, so hopefully it’ll be easier to find the little gems that are there.
Apart from work I’ll continue hacking on my 7.5” e-ink display, hacked it together in an ikea photo frame this weekend. This week I intend to clean up the code, write documentation and hopefully speed up writing an image to it which was particularly slow.
Project is on Github https://github.com/jelly/e-ink-status-display
I’m making a fast reading device with 2.13in e paper and raspberry pi zero - something like spritz but without giving me headache and making my eyes sore. My first ‘low level’ project ever. I have managed to reduce refresh time from over 2s to about 0.5s, that’s about 240 wpm.
I have three projects in the cooker at the moment:
My day to day at work involves PHP, Node and a substantial amount of front end JS in the form of Vue and Angular; I am a backend developer at heart so I need these personal project just to keep my sanity.
I can relate to you. I did quite a bit of PHP and AngularJS work at my last job. Now I’m just starting up on a job where I’ll be doing a lot of Python and React. While react is alright, I still prefer backend and Python is much more fun for me.
The past 5 years of my career I’d categorize as “trying to avoid web dev at all costs.” It is possible, just depends on your shop.
In spare time:
Applying for jobs :( My company is going out of business in slow motion (CEO just went to prison, company has run out of money, people are being asked to work for free) so I’m pretty much a full-time job seeker now. I hate to be That Guy, but if anyone is looking for a person who knows software engineering, graphics and geometry really well, message me!
I spent last week laying out PCBs for an experimental neuromodulation device, which was frustrating, because the PCB layout tool I use is an Australian monstrosity written in Delphi which is stonkingly expensive, and it’s chock full of inexplicable design choices and weird bugs… (I’m an Australian monstrosity too, and chock full of weird bugs thanks to my toddler, but at least I’m written in C.)
The neuromod device is particularly interesting because it’s driven by an FPGA which I’m writing in Python via Migen. Having worked with VHDL/Verilog over the past decade it’s a really refreshing way to design logic. Migen has its faults - chief amongst which is lack of documentation - but it’s a very good tool. Being able to structure systems in a high-level language, and automate crappy jobs like memory map assignment, is fantastic.
Now I’m getting my hobby project moving again, which is a plug-in cartridge for a Sega Saturn that hijacks its CD-controller brain and streams “CD content” from an SD card instead of a disc. The core hackery has been working great for years but now I’m trying to turn it into something people can pick up and use. I’m slogging through manufacturing and production test systems, which feel like 10× more work. I’m glad I don’t do manufacturing or test for a living! Some interesting problems but they’re just not up my alley.
A few things:
GSoC proposals are due in less than 24 hours, so I’m finishing those up, then hopefully chilling out a bit as I’ve been absolutely swamped!
At work, I’m implementing a DSL for high-speed pattern recognition in streams of data. Right now, it is a simple AST-walking interpreter. I’m transitioning it to a compiler + bytecode interpreter, hoping for a 3-5x speedup. I’d like to wrap that up this week. Additionally, I’m banning all dynamic allocation once we are running, which should reduce variance in the latency from input to output.
Outside of work, I’m just focusing on resting better. I made it to see Muse last week and they were amazing, but I haven’t quite recovered from the trip and the show.
Have you looked at Hobbes?
I have not. That’s pretty cool! I need to take a closer look I think :)
Working on wrapping up and releasing some personal projects I’ve had mostly ready for a while.
I just pushed skiparray, an unrolled skip list library for C. It has roughly the same relation to a regular skip list as a B-Tree has to a basic balanced binary tree.
Aside from that, getting back to learning TLA+, working through hwayne’s book.
This irc bot in lua: https://github.com/HalosGhost/irc_bot Its been fun hacking on it
Playing around with actually making a game with ggez, a lightweight 2d game framework for Rust. This has helpfully motivated me to actually work on ggez a bit more as well as some add-on tools, which has been nice. I want to keep going on this a little bit longer, then return to Cargofox.
A new (to me) gigabit switch should be arriving from eBay today so I can re-network my “lab”. I had been working on reimaging all my SOCs, but realized I outgrew my current switch setup. A week prior I ordered a very similar model switch (24-port, gigabit, unmanaged) for $30 that was DOA, but got refunded swiftly when I brought up the issue. I snagged one with the same specs but the added bonus of some fiber ports for a dollar or two more, so that’s looking on the bright side. I also got some nicer usb and ethernet cabling, so hopefully this means things will be slightly more visually appealing.
I also ordered a Dreamcatcher board from Othernet.is last week that should also be getting here. It seems to be aimed for devloping countries so the user can aim an antenna at a satellite operating in the ku-band and suck down data to make something of an offline data store, all for free. It’s not traditional web with 2-way communication, more like multicast where you just put your lips up to a hose and suck what comes down. I’ve gotten into amateur radio over the past few months, and this seems to marry that with my long-standing interest in off-grid communications.
I’m confused. You’re buying from eBay but it’s a weekly cost…? I can’t say I use eBay but I always thought it was a pretty straight forward classifieds site where you either pay a fixed price, or bid and then pay that price?
Oh no, no weekly cost, all fixed “buy it now” costs. I’m not sure where the confusion is, so I’ll summarize it this way:
2 weeks ago, I ordered a switch for $30 fixed from seller X.
1 week ago I got the switch and noticed it was dead. Got a refund from seller X and ordered a similar switch for $32 fixed from seller Y.
Today the switch from seller Y arrives and hopefully works :)
Ah. I misread the for $30 a week prior part, as I re-read the sentence now it still sounds like it needs a comma in my head, but I understand your meaning.
Good luck with it!
Thanks! Just made an edit for clarity.
Working on my pet programming language more!
I’ve already rearranged the base library into something resembling organised and given it a basic module system; this week I’m cleaning up the compiler, making it understand more of the language, and (hopefully) adding an inliner so the test program compiles itself in less than 2 seconds.
A whole bunch of stuff (and super excited for it)!
Finishing up an extension for Ueberauth to make both e-mail sign-in and IndieAuth more feasible. Then I’ll work on finishing up the hosted service for Koype and its ‘hub’.
Then I think I’ll sit down and make a ‘template’ Elixir/Phoenix project since I’ve built like six of them with a companion post.
Last week, I worked on integrating llvm’s Speculative Load Hardening (SLH), a SpectreV1 mitigation, into HardenedBSD. Due to its large performance hit (10% to 50%), it’s disabled by default.
FreeBSD recently gained an incomplete Address Space Randomization (ASR) implementation. This week, I plan to start work on allowing FreeBSD’s ASR and HardenedBSD’s Address Space Layout Randomization (ASLR) to co-exist in the codebase, allowing users to switch between the two implementations with a boot-time tunable.
At home, I have a fibre media converter coming from Amazon and I’ll swap out the terrible Bell basestation out when that arrives (for a couple of perfectly cromulent Netgear doo-dads). I’ll also trade down to 1Gb/s from 1.5Gb/s, because honestly without bonding two interfaces we don’t see the 1.5Gb/s, so eh. I also picked up an almost unused 2015 MBP with all the bells & whistles, so I’ll be spending some time getting that thing set up exactly right.
At work, there are some organizational changes coming, so I’m prepping for those. Doing Scala code reviews, because we’re badly understaffed at the moment – attrition and vacation collided this last two weeks, and there aren’t enough hands to go around without drafting in the managers.
I’m working on more of my Site to Site WireGuard series. This week I hope to tackle the custom TLS CA (with minica to manage certificates) as well as setting up custom endpoints with Caddy. I have a map of some of the custom endpoints I am playing with here.
I am also about to move from the Seattle area to the Montreal area. If anyone has any Quebec French textbook ePub or PDF links handy (or a place I can buy them), I would be most grateful.
Be well, all.
I’m working through Finding Success (and Failure) in Haskell today. I bought my copy this morning and I’ve finished most of it. So far not much is new to me, but I’m now up to the chapter on applicative, and I’ve never really understood applicative so this should be useful.
For my currently “stealth mode” startup I’m essentially doing chores; implementing features in Haskell with an event-sourcing approach.
For NewBusinessMonitor I’m going to send out about 1,500 sales letters to businesses in the UK and try and drive some more sales. NewBusinessMonitor automates the enveloping, printing, and sending, so this is pretty simple. I just select 1,500 businesses I want to target and click send. It will merge the recipient details into my sales letter template for me.
On my own time? I don’t know yet. (begins ruminating)
I’m an avid Matrix user. What type of discussions are you most interested in? I might be interested in joining.
I think I’ve got it set up correctly. I started by making a community, but that’s not what I wanted. So then I made a room, but I was unsure of whether to encrypt it or not. I’d like for my friends and I to experiment with the idea participating anonymously (except for me, of course), then having some kind of promotion/voting/vetting system to a room where actual names are required. The idea is to let people demonstrate what kind of room participants they are and if they consistently avoid low-effort posts and are able to follow Chatham House Rules, move to a more relaxed, trusting conversation.
I have no idea if it’ll work or not. I figure it couldn’t hurt to try.
At work I’m working on manual testing for our next release.
Outside of work, I refactored the main data structures in my quadtree library, and I want to benchmark against the old implementation.
I’m also going to start on a Common Lisp binding to the Blend2D library that was posted a few days ago. I started on Friday, and got the code built on Linux, but ran into a problem building on OSX. Apparently at some point Apple broke compilation on Mojave with the XCode command line tools. The compiler can’t find any standard header files. I’m getting very close to just installing Debian on my macbook and being done with Apple software altogether.
over the weekend I figured out a way to make mocking a nicer experiment in Python (well at least CPython). I want to document the library I wrote to do this and set up building it
my Chinese classes started again and I’m trying really hard to get back in the rhythm and study
Mostly still trying to get my footing as a Dev Lead. Couple months ago, I got moved officially into a Dev Lead role and that’s been interesting - trying to determine costing and coordinate a team is a new and fun ball game I’ve not played yet.
Besides that, writing a lot of Rust which isn’t new.
I’m making a little Hacker News to Discord pipeline system. I implemented SMS too, now refactoring all that to be able to add more sources and destinations.
Wasted quite a bit of time reimplementing the Discord API/Websocket because discordrb didn’t work as well as I need to. Also something similar to FactoryBot (rails app) except that it’s just ruby so there is no before(:create) ordering bugs.
Built a tiny thing to get some muscle memory and scratch my own itch.
It finds a random point in a city of your choice (for exploring, which is a lot of what I’m doing right now).
Rewriting an old PHP + JS web interface with Flask + JS.
My goal for midweek is to deploy it and ensure it is both responsive and minimal.
Making sure my other Flask apps are secure and following best practices in regards to security.
I made a little text to image toy over the weekend https://wolfadex.github.io/thousand-words/. Looks best with large amounts of text
Using property-based testing at the “integration” level. Put differently, testing the entire application stack with minimal stubs using properties, runnings housands of cases. Also working on a series of articles on this very topic, where 2 out of 5 are published so far at https://wickstrom.tech/blog.html. I love this stuff!
After the weekend’s success with the Redis production environment I now have to see how well Qless works in a replicated Redis environment, and I’m already roughly elbow deep in ruby trying to make the provided qless-web mini-app work with non-default connection details (our main app is not ruby so the recommended ‘just mount it via rack’ isn’t an option).
I also need to move user sessions off the web server’s local disk into either the Percona Cluster or Redis, so we can finally run a fully redundant (within this DC at least) stack (we already have redundant LBs and PXC/Redis nodes).
And I need to start migrating the current cron-based faux queues into actual Qless workers & jobs.