Feel free to tell what you plan on doing this weekend and even ask for help or feedback.
Please keep in mind it’s more than OK to do nothing at all too!
Starting my first business, and meeting the first (potential) client.
Congrats! What’s the business? :)
Basically statically generated websites (à la. Jamstack) for small & medium local businesses in my city.
I’m working on a website, and it is coming up well: https://ema.srid.ca (still a WIP; and Ema is the name of the software, as well as the business).
Learning more Ada. “Programming in Ada 2012” (and all of John Barnes previous Ada $YEAR books) are pretty much the K&R, Rust Book, or Stroustrup’s “C++ Programming Language” of Ada. In less than a week from starting I’m already super productive, and I’m leaning towards using Ada as my default hobby language, replacing C, C++, Rust and Python. It’s not glitzy, but it gets the job done well. I mentioned it to a few people, and the response I got was, “Seriously… Ada?”
It’s C with safeties on the foot guns, verbosity on top which actually saves me time later on by preventing mistakes, and a free single download IDE that just works out of the box. There’s very few symbols to remember and most keywords do exactly what I expect.
This will be my last note so I don’t tire people about it, unless I want to make a real blog or something to write a real article about learning it.
Yes please, I’d love to know more about what Ada does better than something modern like Rust or Zig.
Seconding this. I’ve been considering learning Ada for a while now.
In short, you express an idea once and the compiler does a lot of error checking for you. Things which would be prohibitive to check and you’d have to do manually, the compiler just does on it’s own. Usually people refer to specifying checked ranges for floats/integers, but here’s a different and huge one for me: Pragma Pure(MyPackage); prevents that package (module) of code from having any side effects, and the compiler will also throw an error also if MyPackage depends on any package which has side effects, such as I/O. There’s also inline pre/post conditions and static/dynamic predicates on types. Another example with predicates, you could say type Normal is Vector3 with Dynamic_Predicate => (abs (1.0 - Normal.Length) < 0.01);–“Normal vectors are 3D vectors which shall always be within a specific error of a unit length” and have this checked whenever Normals are assigned to or used.
type Normal is Vector3 with Dynamic_Predicate => (abs (1.0 - Normal.Length) < 0.01);
For the 4-day weekend I’m taking part in an Esperanto conference with 250+ other speakers: https://retoso2021.tejo.org.
This sounds really neat! How’d you end up learning Esperanto?
Latest reply ever, but I blame 🦞 for only just notifying me about this reply… apologies. I wrote about some of my earlier experiences and what got me hooked on the language here: https://martinrue.com/seek-out-new-experiences and https://martinrue.com/the-equality-of-esperanto, if you’re curious :)
Enjoying a long weekend and relaxing. I’m not back at work until Wednesday. Maybe I’ll get some writing done, maybe I’ll get back to working on my UEFI bootloader (now that EC2 has a serial console, I’d like to see if I can get something running on Graviton 2), or maybe I’ll just lie around and keep playing the Witness which I picked up on steam earlier in the week. I have no real plans at all, and it’s great.
Nice! Definitely enjoy your weekend.
Oh, man. I am stuck with a problem with dual boot while upgrading HDD to SSD. Boot mode is UEFI. Can you help or point me in the right direction to troubleshoot it?
Maybe building some spreadsheets around Leaving Earth. I’ve been playing solo, and I’m starting to get the hang of it. But I feel I lack observability.
Going to play around with RetroForth and maybe fix up some old retro machines.
Plugging away on some pyinfra improvements for the upcoming 1.4 release mostly.
Thinking about hacking together a static copy of Thunderbirds ISPDB with a basic ui because their hosted copy is flakey. All so I can then use it for Kanmail!
Working on https://muboard.net/.
I wrote this tool initially for our analytic number theory book club. We meet roughly once everyday and study a couple of pages of an analytic number theory book together. During the meeting sessions, I often share my screen and use this tool to scribble some mathematics to expand some steps not explained in the book or illustrate a new theorem we are trying to understand with some examples. The tool also supports archiving the scribbled mathematics snippets as distributable, self-rendering board files too.
After a couple of weeks of using this tool, I released it as an open source project at https://github.com/susam/muboard and received good feedback on the tool. In this weekend, I intend to expose some of the internal properties of the tool as configurable options to the user and expand the documentation to explain these configurable options in detail.
Nice work, I love seeing new tools for writing math on the web! My side project recently has been prosemirror-math, which is my attempt to make wysiwyg math editing on the web a little more tolerable. It’s a plugin for ProseMirror that others can hopefully use / modify to add better math support to their markdown editors, etc..
ProseMirror Math looks great. Thanks for sharing. Good luck with your project!
Interesting. I just finished basic IntelliSense support for MathJaX for a vscode extension that I use with my SSG to render math on the server side. Unfortunately, most of my math is handwritten, and it’s too painful to typeset it, so I’m currently investigating a way to convert handwriting from my tablet to the MathJaX subset of LaTeX automatically.
For OCR, there’s some freemium software called MathPix, which does a pretty great job. However they limit your monthly snips on the free version.
Celebrating my birthday in quarantine for the second time. Hanging out with my family and playing video games will be the bulk of my weekend.
Maybe I’ll finally organize the garage.
I’m working on my currency calculator/math notepad https://numbr.dev
Celebrating Easter with my girlfriend’s family and tinkering with a new FreeBSD installation on my home server – first impressions are very good! Otherwise, I’m planning on taking it very easy.
Going to see my family and implementing notifications for my app (never did that and it looks a bit complicated)
I am learning about setting up replication and cluster in Postgres. I sorta “broke” MongoDB by inserting duplicate records on a collection which had unique constraints. Now I am wondering what would happen in case of Postgres.
I am also trying learn cgo and rust FFI, trying to use a rust library in go.
Postgres doesn’t have a multiple-writable-node configuration, so the consensus mechanism is much simpler (and not subject to that class of bug).
Even if it was, the indexing would take out a write lock lock (unless you used the recent “concurrently” option, in which case it’d fail right at the end of the index build).
Postgres doesn’t have a multiple-writable-node configuration
Postgres doesn’t have a multiple-writable-node configuration
My mongo setup also didn’t have multiple writable node config, all the changes had to be made via primary only. Or what I am missing?
I misunderstood. Now that I’ve gone back and reread the relevant bits in more detail:
Postgres has “Logical” and “Streaming” replication modes builtin.
In “Streaming” mode, it transmits the changes to the on-disk representation of the database (including indexes) in order. This is expensive (network bandwidth use = disk write bandwidth use), but easy to make correct.
In “Logical” mode, it transmits the statements, along with enough information to reproduce the order of operations & volatile data they need. There’s lots of ways this could go wrong under the hood!
In practice, I’m not aware of anyone finding bugs in “logical replication” in any stable release; the order-of-operations stuff lets postgres sequence all the same obtain lock/release lock code to get the same result.
Celebrating Easter with my family! This is a 3-day weekend in France (Easter Monday is a public holiday), so I’ll have some time to learn more Rust I guess.
Learning myself C. I just started going through the iconic K&R book. It’s going okay so far but I’m constantly battling the feeling that a mentor or a fellow peer would help in my learning journey.
Working on Garnet, my “what if Rust, but simple?” programming language experiment. I have type inference almost working, at least of a sort, so once I polish that off I can go on to more interesting and complicated type-related things like… structs! And arrays! How sophisticated.
That said though, on a long walk I asked myself the question “what is the difference between modules/namespaces, and structs that are guaranteed to be known at compile time?” And the answer turns out to be “not a lot”, as demonstrated by things like Zig and SML. So that seems like an interesting approach, and will continue to be Interesting as I start to get into things like ABI.
Got vaccinated this morning, and spent the afternoon with family digging up roots at our allotment.
If there’s any computer time left over I’d like to try improving indentation for plantuml-mode’s indentation of sequence diagrams.
Lots of chocolate! Chocolate eggs and chocolate koalas. Also getting a new fence installed.
Gonna be working a bit more on bcalc, a pure-bash calculator that I wrote a lexer and parser for meaning you can do things like ./bcalc '(1+2)^2' instead of ./bcalc '(' 1 + 2 ')' ^ 2.
./bcalc '(' 1 + 2 ')' ^ 2
Going to be playing Mirror’s Edge for a while tomorrow, I have to watch my parent’s house while they’re out all day. It gives me a chance to play it, plus it’ll give me a reason to play music off of their awesome sound system, so I’m not complaining.
I’ve also renovated my site quite a bit, made use of flexboxes and all that so things are actually proportioned right. And I’m still in the process of updating it, it’s just taking a little longer than I like because flexboxes are weird and don’t make sense like half the time.
A lot of the if/else chains can be replaced with a case. Neat, though.
I’m actually not sure, because I use regex in a few of them (which are only supported in [[ ]]), not in case statements.
Some of the ones I could, are only single if/else statements in which there would be pretty much no point in converting to case statements.
Just finished the final touches on my website, and writing documentation for the SSG that powers it. The weekend will be dedicated towards correcting and finishing some of the notebooks in the math section.
Getting familiar with Asperite, as well as colours and palettes, shading, perspectives and everything else that makes the craft part of arts and crafts. I’m making some “artwork” for two games, a Godot-based Thrust game I’d like to take beyond the proof of concept stage, and a Sokoban clone I’m making just to kick DragonRuby’s wheels.
While I’m inexperienced, inefficient and impatient, and my RSI flares up within minutes after clutching the mouse, I love getting to know the crafts part of arts and crafts. Back in the day, when summer vacations were counted in months, I spent days playing around with a pirated copy of Deluxe Paint II on my Amiga 500. Shouldn’t have stopped…
I spent the last year making my darts scorer app remote-friendly. Basically, that people from all over the world can play darts together and everybody enters their score. The most requested feature is a new game mode, cricket to be precise. It’s very intimidating to go from 1 to N without rewriting everything. The first tiny step is adding a game mode selection, after that, I hope that the TypeScript errors will guide me through the tunnel.