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!
I’m hoping to get some time to spend on a CP/M computer I’m designing. I have to get a full Eagle CAD licence to do it. It’s going to be in the shape and size of a 5.25” floppy disk. I know I could try to learn KiCAD but I’ve had a go in the past and it’s really just not for me. I’m too used to Eagle CAD’s quirks.
I have some interference problems with Wifi and VGA to sort out. Basically the last revision foolishly had hsync run under the wifi antenna so when I turned it on the screen started jumping around. I’ll have to reroute HSYNC or possibly use a different Pin. I want to have Wifi for things like time sync over NTP and to be able to use it as a telnet client for BBSing.
So hopefully by Monday I’ll have an order at the fab, parts on the way and I’ll be ready to test in a couple of weeks.
SO EXCITED to see all this new interest in 8 bit computer design!
I really want a Commander X16 when it finally arrives :)
Probably gonna do some art of cute sharks and try to finish version 0.3.0 of my homebrew tabletop RPG system.
I have been watching twitch.tv/ster while he creates a tabletop RPG. (It’s more art, than programming) I don’t know what systems he’s using, though.
The first half of this weekend I’m going to do some technical essay/content stuff.
The second half I’m going to do my best impersonation of a potato.
Thanks for the laugh :D
Trying to find the optimal algorithm for a problem I came across during a work hackathon. We were replacing Donut, a random meet-up Slack bot that tries to pair two people together (+ one trio if odd total of users).
Given a history of user pairings, match everyone up in this priority order:
a) Match people who haven’t met before
b) Match everyone else by who met each other least recently.
I don’t know if a) affects b). I haven’t given it much thought as we just used a naive solution on the day.
I’ll also bake some brownies.
You only need b) and set ‘never met before’ as ‘met $BOTTOM time ago’ (bottom is usually -infty on paper but you can use MIN_INT for the same effect). If you don’t have to find the best pairing but are satisfied with approximately the best pairing then you can just do a greedy matching and then hillclimb, simmulated annealing is also an option.
Thank you for the ideas (thanks @JulianWgs also!) — good fuel for research.
The problem is both steps are NP hard. You dont know if the people you already paired up, might come in handy later. I‘d first find the people wo never met just to reduce the problem size. The run b) multiple times and just the solution with a certain metric. Id go with maximum minimum time they did not meet each other.
Andrew, Is this going to be something you are going to make it open source? Would love to try this at our work too. Thank you!
I’ll have to ask my manager but I’ll let you know!
Thank you Andrew!
I start a new job on Monday and will be going from C++ to Rust, so I’m brushing up on the language: finishing reading a second book on it, finishing rustlings, that sort of thing.
I ported my C99 ray tracer to Rust for some extra practice. After a little tweaking it’s ~15-20% slower, so if I find time I want to dig into that and see where I’m losing performance. A cursory look didn’t show anything stupendously wrong (bounds checks aren’t killing me, inlining looks pretty good, etc.), so I need to diff the asm and see what’s going on. It feels like something in my ball of floating point calculations is very slightly worse, and that adds up quickly.
I’m learning Rust at the moment (literally taking a tea break from working through chapter 12 of the rust book as I write this) and I hadn’t come across rustlings, but it looks fantastic! Thanks for mentioning it :)
Attempting to get old C compilers running on either MS-DOS or CP/M to work in a local instance of Compiler Explorer. It’s nothing but ugly hacks!
Trying to get my Pinebook Pro back to booting.
In an errant attempt to get sleep to work (errant because we’re now pretty sure it’s actually a mis-positioning of the lid close magnet in my PBPro batch) I somehow scrambled the crud out of the laptop’s emmc contents.
It boots from micro-sd currently with the emmc enablement toggle switch set to off, but only slowly and never completes. I’m burning a fresh micro-sd card now.
I’m choosing to treat the laptop as a crash course in ARM SoC hardware, software, and firmware, and from that perspective I’m rather enjoying the process!
Once I get it booting again, I’ll likely try the procedure for re-positioning the lid magnet although I can’t lie I’m a bit daunted as it contains several turns of phrase like “There’s no easy way to do this” :)
I will in fact write all this up in a blog post when I have it running smoothly. I’ve already refined my setup and workflow quite a bit, and was using it quite productively before I accidentally blew its tiny mind :)
Oh, and for more immediate gratification fun, I’m REALLY enjoying working through Bytes’N’Bits - Learn To Code Space Invaders Youtube series.
It’s aimed at folks who’ve never programmed before so I end up doing a fair bit of skipping forward, but it’s IMO a beautifully done very gentle introduction to how a simple old school shm’up is put together.
Apropos, tic-80 is just a delight to work with. I definitely plan to contribute back my Pinebook Pro build changes, and I notice that our very own @technomancy added parens matching in the latest release! Super cool :) (And also probably very useful when writing scripts in fennel :)
I was able to successfully get it booting off of a Micro-SD card! I have the 128GB emmc and teh USB emmc adapter coming from HK. We’ll see how long those take to arrive.
This thing’s been an adventure, but I’ve been learning a TON about ARM SoC in the process so it’s all good :)
Finish reading The Last Astronaut by David Wellington. I recently learned how to write a naive multi-armed bandit algorithm in Python. I’m going to write it again in a different language to get a better understanding of it.
Thanks for mentioning this book. I started reading it and am really enjoying it.
Withering away on an old depressant, ‘server side text rendering’.
The major layers are working - clients can request buffers to be interpreted as a “mostly” i8n friendly packing format. Server can communicate glyph offsets, font data (GSUB+index lookups work poorly if they take round trips) and cell dimensions back. Windows responds to changes in output density and switching out fonts. The savings are huge even with near zero optimizations/caching server side. The big but is that somewhere in all of this some metrics are for unknown-but-not-fenv reasons inconsistent between the two sides, leading to subtle glitches which blocks the more fun parts.
Reviewing my ebook for typos and improvements. This time I’m trying to note down some of the interesting changes, might do a blog post someday - here’s a tweet thread for now
Started reading The Cybernetic Tea Shop by Meredith Katz. It a short novella, so I’ll likely start Queen in the Mud by Maari afterwards.
I’m porting a 30 year old Unix app to work on modern systems.
Sgtty, the terminal interface it uses, disappeared 25 years ago.
Documentation is scarce so I‘m using the source of another old application to translate it to termio.
Aside from that I will be rethinking my life.
Edited to add the following.
I’m also posting too much about locales.
Bikepacking! Heading out for a sub-24hr adventure first thing Saturday morning.
Making Vim on my PinePhone usable.
Right now, I replaced Ubuntu with Mobian which is closer to Debian.
Mobian makes a great impression so far.
Working through the Linux From Scratch book.
I will be building a house so that I have a place to write computer programs. Had to tear my house down after becoming very sick from water damage. Luckily I’ve been studying residential construction and code for years on the side.
I’m working on a Lobsters reader app in SwiftUI
It is my first SwiftUI project so I am learning a lot. The app is iOS 14+ and it supports everyone’s favorite new iOS feature - widgets. I made a custom HTML to View class so the story description and comments aren’t just WKWebViews.
I’m preparing for my first ever technical interview* for an internship at a computer graphics R&D lab.
Any tips on how to prepare would be greatly appreciated. What I have to go off is that “they’ll deep dive into your projects and code samples to understand why you made the decisions that you did.”
* = 1 hour Zoom call scheduled for 2 weeks from now
I am working on my project TeXMe this weekend. I resolved a Markdown code rendering issue in this project a little while back. Next, I will explore if I can switch to a more featureful Markdown parser such as marked.js. So far, I have been using CommonMark.js for it because it is the reference implementation of the CommonMark Spec. Switching to Marked.js will allow me to support GitHub Flavored Markdown (GFM) Spec which has several useful extensions such as tables, task list items, strikethroughs, autolinks, and disallowed raw HTML.
I created this project a few years ago when I was taking some mathematics notes and I wanted to distribute the notes with my friends easily such that they could edit it too and render it immediately without being required to install any rendering software.
I’ve had issues porting Markdown from one platform to another in the past. Several implementations of Markdown handle several corner cases (e.g., Markdown within HTML tags, indentation required for items within nested lists, using triple backticks within code fences, etc.) in different ways. CommonMark specifies the behaviour for these corner cases very precisely and very well, so I chose CommonMark for TeXMe. So far it looks like GFM supported by Marked.js is going to be straightforward to add to TeXMe because the GFM spec is a superset of the Markdown spec.
Marked.js v1.1.1 emphasizes *Baz* whereas Showdown.js v1.9.1 does not. The behaviour of Marked.js is correct as per CommonMark Spec: § 4.6 HTML Blocks. Here are some code examples that show how CommonMark.js v0.29.2, Marked.js v1.1.1, and Showdown.js v1.9.1 render the above input:
Good question! Get out and enjoy the weather, get some chores done, work on more CNC metal-cutting stuff at $HACKERSPACE, fix the water line leading to my refrigerator’s ice maker if I can. Maybe write some stuff about Rust async, maybe work on OpenGL stuff. Brush the cat a lot. Scheme how to get my boyfriend to move to my city in an affordable fashion.
One thing I want to continue doing this weeking is cleaning up my home. Reading “The Life-Changing Magic of Tidying Up” by Marie Kondo really gave me a new perspective on what I want my home to be, what things are important to me and how much of the stuff I own just clutters my life that should be discarded. I sincerly recommend this book (and the Netflix series) to anyone who, just like me, struggles with cleaning up and discarding stuff.
Thanks for the rec. I think I will give it a try.
I’m writing a small tool in Forth to convert my Markdown format documentation into an epub file.
Which forth, out of curiosity?
Thinking to get started with Org Mode with Doom Emacs. Anyone has any preferred resources?
I’m planning to work on cross-chain cryptocurrency swap project, where user will deposit the Bitcoin and will be able to get Ethereum or other cryptocurrencies, in an almost decentralized way.
There will be a 2-of-3 multi-signature wallet where 1 key is held by the seller, other key held by the buyer and last key held by the project. In case of any disputes, project key can be used to recover the funds, that’s the main idea of having 2-of-3 quorum instead of 2-of-2. I’m searching for a way to improve this, but haven’t found one so far (except smart contracts on Ethereum network, but it is likely to require more research for the atomic swaps).
If you have any recommendations for this project, please let me know :)
Refreshing Tcl knowledge for some reason
After spending a few weeks with the Remarkable (v1) tablet, I’m starting to get the itch to start hacking it.
Really surprised/impressed that they ship with root resonably accessible.
Also finishing up a vertical server rack prototype.