1. 20

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.


  2. 8

    Trying to wrap up a bunch of partially finished projects. XCB for Myrddin is working, for example, but has a rather deadlock prone API, and I want to fix that. Libdraw on Plan 9 works, but the font cache just errors when you have too many glyphs, instead of flushing old glyphs to make room. I’ve been doing a bunch of work on the libcrypto code, but there’s a known cache timing attack in the GCM multiplication. I’ve started trying to implement vt plumb handling 9front, but scope crept and I should redo the way selections are handled as part of that. I want to try to get that done. Realistically, not going to have time for too much more this week.

    I also need to put a talk together for Papers We Love, where I’m signed up to ramble about slab allocation.

    If time permits (ha), I’ll probably also work on automatic C binding generation, based on ac’s qc C compiler.

    1. 6

      For the past weeks I’ve been trying to fill a gap by adding outline/vector font support to xcb: https://github.com/venam/fonts-for-xcb. This stems from a research I’ve done about the font stack on Unix and how I realized knowledge around this topic was lacking. At the same time I’m going to write more articles related to the X windowing system and other graphic related topics such as this one about drawables, regions, and others.
      The font library still misses newline support, better font fallback (if requesting monospace we should also search for monospace), it doesn’t have kerning support yet and I’m unsure if I want it included, I didn’t do anything yet for vertical font support, the dpi is currently hardcoded but I’d like to have it in the Xresources like Xft, and it’s missing more documentation. Overall, it’s moving in a good direction, projects based on xcb can now include this mini header to get the font support.

      1. 6

        For as long as I set my eyes on the Keyboardio Model01, and started contributing to its firmware, I wanted to run the same firmware on my ErgoDox EZ too. I had a handful of unsuccessful attempts in the past, but a few days ago, I sat down, determined to port it well this time. And I did, so my ErgoDox EZ is running the same firmware as my Model01, which is awesome. The porting allowed me to put mouse keys back on my keyboard, because the Kaleidoscope-based firmware uses considerably less space. =)

        Lots of people seem to be happy about this too, so much so that one of them even put it on his Dactyl! This hit home hard, and made my heart smile, because the Dactyl is the reason I became interested in keyboards.

        The coming week will likely see a bit of polish on this, and a bunch of other, Kaleidoscope-related work.

        1. 2

          I’m going to buy Ergodox EZ Shine next month (still undecided about switches, but looking towards MX Clear or Kailh Gold). Could you please write some words from the user (or, more specificaly, as this is a “pro” product – “power user”) point of view? Both on the mechanical and software side, as I’m also interested in hacking on their QMK FW or moving onto something else if it fits, like that Model01.

          1. 2

            On the mechanical side, the EZ is a sweet keyboard: being split and tentable is amazing. Having a thumb cluster, and being able to move a lot of stuff from pinkies to thumb is a huge relief. I’m using Gateron Browns in mine, fairly happy with them (but I wouldn’t mind a bit heavier switch, with a more pronounced bump, closer to Matias Quiet Click). Been using an EZ for over 2 years, and while I moved to a Model01 at home, I still use an EZ at work, and am still very happy with it.

            The big thing for me was the programmability, being able to customize the firmware, and make it do things no other keyboard could do. It allowed me to make the keyboard work for me, instead of me getting used to something. This post of mine is - I hope - a reasonable explanation why programmable firmware is such a big thing. I try to highlight some of the features I grew so used to that I can’t live without them anymore.

        2. 6

          What I should be doing: cleaning up and refactoring NixWRT (my experiment to build images for embedded MIPS SoCs using NixPkgs) so that

          • the configuration is in one place and not splatted randomly across the entire codebase
          • it builds using upstream nixpkgs and doesn’t need my slightly-changed-but-exceedingly-outdated fork

          What I’m probably going to find myself distracted by: learning Haskell by working through the Cryptopals challenges

          1. 6

            Since I’m graduated, I have loads of free time now before starting my new job in a few weeks :)

            As an exercise to learn D, I’ve been working on reimplementing MPD in D (https://github.com/charles-l/mop). I am really liking it so far - I feel far more secure in the correctness of my code than with C or C++, and the compile-time code generation is the most flexible I’ve seen for a systems-level language.

            I’m writing some bindings for the Zumo 32u4 robot for microscheme (https://github.com/charles-l/zumo-32u4-ms), and hoping to get most of the sensors working this week.

            Also, I’ve been messing around with J, hoping to learn it well enough to use it sort of as a desktop calculator on steriods for writing throwaway scripts. I wrote a Kalman filter with J last week, and will probably write an Extended Kalman filter or something similar this week.

            I’ll probably also work a bit more on my graphics engine (https://github.com/charles-l/ugg) and possibly a new language project.

            1. 3

              All of that sounds really cool. :) On desktop calculator, anyone interested in calculators mixed with programming should check out Frink. It’s a neat, little project.

              1. 2

                Neat - I’ll definitely check out Frink if only because its unit conversion is really nice :)

                1. 1

                  That’s the main reason I kept it. I was thinking having common units in mainstream languages would be a good idea. Frink would be a reference if I ever tried to add it to my own.

                  1. 2

                    Here are a few other languages with support for units of measure:

            2. 6

              Work: Yesterday I finished the first draft of Practical TLA+. I have another 10 days to add new chapters before the official deadline, so I’m working on stretch goals. I’m also trying to find an accountant and a contract lawyer in Chicago. Want to start consulting in formal methods but gotta work out the business aspects first.

              Fun: Collecting all the proofs of leftpad people sent me and putting them in one place. It’s not ready yet but here’s a sneak peek.

              1. 6

                I am writing a simple book on SQLite - funSQL.

                1. 5

                  A plugin for WeeChat that automatically expands YouTube links - https://github.com/antekone/youtube-autoexpand :D

                  Slack and friends already have this feature since probably the very beginning. Why not IRC?

                  Other than that, I’m trying to create a fully functional hex editor, mostly for my own use cases. It’s already in a state that can be used, so feel free to try and comment: https://mydatasoftware.com

                  1. 2

                    I think it might be beyond your feature scope, but I’ll be really interested in plugin which un-shorts links and displays their <title/> tags in buffer context (without logging or anything). The only plugin related to this case is a shortener which needs additional backend software running on your server with resolvable domain.

                    1. 1

                      Actually I was thinking about it as well. Maybe it’s not such a bad idea to merge this feature into the plugin :)

                      1. 1

                        But it won’t be youtube-autoexpand anymore if we broad the scope to every URL.

                        1. 2

                          Yes, it will be maybe just link-autoexpand or simply just autoexpander script.

                          Another thing is that i.e. Slack has autoexpansion for Spotify links, both “http://” and “spotify:” cases, and eventually I would like to have that as well.

                  2. 5

                    I am starting work on a hobby, web game development project. I have a bunch of design documents scribbled over the years, and I am currently looking into what I want to use for the backend stack (leaning towards python and graphQL, but it may change). For the front-end I haven’t done any research yet, so any recommendations for good front-end frameworks (game-specific or not) that makes supporting a tile-based, scrollable map would be very welcome.

                    The game is inspired by HoMM, implemented as a tick-based system (every X hours you get resources, movement is done, etc.) in a shard-based world (image 100 players in a huge map). The idea is to have a game you can log into every 3-4 hours for 10 minutes during the day (8AM - 8PM or similar), in short a game I would have time to play myself. It will have a greater focus on diplomacy, zones and sovereignty to make it more interesting (only taking some basic concepts from HoMM).

                    1. 5

                      I’ve been spending a lot of time on resurrecting an old PBX I initially set up in 2012. I’ve done a fresh installation of Incredible on a first-gen Raspberry Pi and have configured incoming/outgoing calls with my SIP provider, as well as a hard phone on my LAN utilizing an old Western Electric phone and an OBi100 adapter. I plan on making some IVRs similar to the “Callin’ Oates” hotline so you can press something on the keypad and it plays music for you.

                      1. 2

                        I’ve been thinking a lot about doing the same thing as you are and using SIP to handle the land line. I would like to re-use my existing phone too. Is the OBi100 a good recommendation or should I have a look at something else?

                        1. 2

                          I think it’s a great device and reasonably easy to configure. I believe it has been discontinued by the manufacturer, but it still seems relatively cheap on the secondhand market and plays nicely with Asterisk and FreePBX. It has worked pretty well on the few phones I have tried it with, but I did notice some instability when I tried to hook two phones up to the unit with one far away. If you have more than one phone, I’d get more than one OBi and try to keep each phone as close to it as is reasonable. It’s probably some voltage drop over long runs.

                          I’m also purchasing an HT502 which has two lines and supports pulse dialing. I’m sure there are a ton of SIP adapter devices out there at about the same price point and they’re so inexpensive you could just throw them away if they don’t work for you.

                      2. 4

                        For $CLIENT, I’m trying to resolve the remaining issues in a dev environment that have cropped up with a slightly different DB version/environment (from RDS mysql 5.6 to self-hosted Percona Cluster 5.7).

                        For $COMPANY, I’ve started work on a new DB migration tool (because reasons) called Mallard. Given that it’s pretty simple in terms of what it actually does, I’m hoping to get at least a beta or RC version complete this week, if not a proper 1.0.0 release.

                        for $HOME we’ve started proper ‘planning’ for our home improvement project - we’ve basically decided on the new front door we want, and the windows too, still need to decide on lights, and do some basic plans on paper for the builder to work from (this is Thailand, so I’m sure that’ll be a new experience for him).

                        1. 4

                          Made some progress on my rss feed news analyzer. It has a name now: Praegustator, as it will pre-taste news for me.

                          It saves content is encounters, as the NLP part is mostly non-existent yet (there is language detection and language based stemming and basic text feature extraction, but very basic.), as the pipeline will need to be run lots of times from the start, so the saved content will be reprocessed as the NLP pipeline evolves. The persistence part is OK, and after having ran it for a few weeks the amount of data was more than anticipated. I have tested some compression algorithms, and finally decided to use brotli to store the corpus. Migrated the collected data, and tested it a bit.

                          I have set up CI in GitLab (pretty neat experience overall), as their free plan is more than enough for me, and will move away from BitBucket as they are slow, and expensive.

                          Overall the foundations are in place, I need a deployment solution, and then I can start working on the training part, and do the really boring stuff (well, CI was also not so much fun, as It was too similar to work). There are already 1000 items to categorize. Probably will need to write a simple app for it to quickly grind through it.

                          So mostly basic stuff yet, and the boring stuff I also do at work, but one must get through this to get eventually to the dessert. :)

                          1. 4



                            A terminal takeover and auto-debugger of processes that you want to examine.

                            1. 4

                              Working on PWAifying some toy apps I’ve made. Knocked out https://unicode.pizza/ this weekend, now on to https://www.gliffic.com/.

                              1. 3

                                We released Merit about a week and a half ago. I’m working on integrating our newly released pool miner into Merit Core

                                1. 3

                                  This week on my free time I will try to build a simple page (with the respective feeds and calendar options) aggregating all the online challenges/competitions related to blockchain, smart-contracts and dApps, that I can find on the web.

                                  The reason I’m doing this is because I think participating in these contests is nice and fun way to learn more about the subject and the different approaches and technologies out there, and still be able to earn some tokens if the thing goes well.

                                  1. 3

                                    Not technical, but I spent the past couple weeks studying the incel phenomenon, and wrote a couple essays on it: Incel: the Strange Identity That Became a Weapon Against Feminism and The Green Pill.

                                    In my continuing qust to unite the anti-corporate left and the anti-corporate right, I thought I might have some success showing incels the truth of their predicament– that, in fact, their sorry situation is not the fault of women, but of corporate capitalism leaving them with no sense of esteem or even distraction– but I found the results disappointing. Most of these guys really are hateful extremists, beyond hope. Sad!

                                    They have energy, but I don’t think it can be redirected in a useful way (i.e., against corporate capitalism) because of their complete lack of insight and their thorough indocrination.

                                    1. 3

                                      Last week

                                      • Prepared some presentation slides and demo
                                      • Fiddled with lldb. Realized I might want a very different design.

                                      This week

                                      • Think about what’s actually needed for a debugger. Try different things. Still want the debugger to be general and work externally.
                                      • Think of ways to sustain my activities.
                                      1. 2

                                        I’m in my company office this week to pair program with my coworkers and some consultants on our new React and Node tech stack. While I’m here and have fewer family responsibilities to take care of, I’m going to work on more improvements to my personal productivity system, as well as a bit of writing on my current novel.

                                        1. 2

                                          Personal - I spent most of this weekend working on a fork of the ODMA reference implementation source. All of the code compiles but the test application throws an MFC assertion failure when run. I have decided this is nature’s way of encouraging me to learn how to use a native code debugger.

                                          Work - I have the usual mix of user support issues and DMS administrative tasks. I will be spending a lot of this week covering for other people who are on vacation.

                                          1. 2

                                            Last week and this one:

                                            • Got my motorcycle running by jumping it. The Clymer manual’s troubleshooting steps were wrong; f you haven’t used a Clymer manual, this is a shocking betrayal. Now waiting for April showers to go away so I can ride more; I feel like seasonal lag in Chicago has increased by 2-3 weeks over the last 30 years I’ve lived in Chicago, but will probably never make the time to research this.
                                            • Formed my LLC for the TBA project. This week I’m testing the three key tools and prototyping my integrating code.
                                            • Met with a potential client, very unlikely to come to anything. Contacted out of the blue with an excellent opportunity I am cautiously optimistic for.
                                            • Migrated from irssi to WeeChat as the Slack IRC gateway was disabled. (I thought I had to the end of the month, oops.) Now WeeChat handles my IRC, Slack, Twitter, and Fediverse chatting and I’m very impressed with WeeChat: great docs, a polished interface, meets all my needs. Minor win: merging buffers is great for tidying a dozen+ very quiet chatrooms; minor loss: bitlbee’s Twitter integration can’t follow saved searches, so I’ve lost useful alerting for my name, interesting conferences, and Lobsters.
                                            • Didn’t redo the calendar, turns out radicale is Python and pip didn’t want to cooperate. Going with DAViCal instead. Bunch of other similar yak-shaving of tech setup.
                                            • Finishing the Aubrey-Maturin series I started reading during my batch at Recurse Center. I’ve really enjoyed the period language, manners, and plotting and am sad to have reached the end. Probably going to read through Terry Pratchett next; I’ve only read Good Omens.
                                            1. 1

                                              Finishing the Aubrey-Maturin series I started reading during my batch at Recurse Center. I’ve really enjoyed the period language, manners, and plotting and am sad to have reached the end.

                                              Those truly are great books. Did you read the last (incomplete) one? I didn’t think it’d be worth it.

                                              1. 2

                                                I’m about 50 pages from the end of book 20. I probably will look at the incomplete one out of curiosity.