I've been making excessive amounts of bread.
Currently I'm working on an Electron app for automatically importing/managing screenshots and recordings from your Nintendo Switch, off the SD card. It matches the file name IDs (Nintendo uses these seemingly random IDs for each game) with the actual game name, moves it into a custom folder structure, etc.
https://github.com/gedrick/SpotifyKaraoke (live)
https://github.com/gedrick/nintendo-switch-screenshot-manage... (still a WIP)
It's great that this is web based and can be used on a device that you're not listening on.
First I'm starting with just a software version because cross-compiling for the pi-zero is kind of annoying.
Intended to be used by our team as we work remotely, but hopefully it'll be open-sourced soon after.
The hoped-for result is that you can run the tool on a directory and it will identify the files correctly and insert the metadata so that it is all consistent and correct. You can then copy the files to your favorite devices, and easily find what you want, make playlists easily, etc.
My current stage is researching the current tools, which are all (so far) partial solutions and IMHO cumbersome to use.
OMG, yes! While I know this is one of the classical (ha!) bikeshedding problems, and you'll never make everyone happy (and piss off a whole lot of them), I can only applaud your efforts. I'm as OCD about classical music metadata and code formatting as anyone, but when I saw that Go had a language formatter with an official indentation style, I loved it for settling a tired debate, even though I hate tabs for indent.
Have you thought about saving to the file system and then letting a different app handle Git (such as WorkingCopy)?
Are you actually rendering the SwiftUI components like VStack and HStack or "pretending" to?
And yes I’ve thought about that, but I don’t know how to share a file system...yet.
And it’s real. I have a general solution for tricking SwiftUI to render different views at runtime. Some things are fake (such as photos) because I wanted it to work for a demo but I didn’t have things like a file system setup.
A Chip-8 emulator written in Go, and a small blog post: - https://github.com/bradford-hamilton/chippy - https://medium.com/@bradford_hamilton/building-a-chip-8-emul...
A JSON parser/query tool and much longer blog post: - https://github.com/bradford-hamilton/dora - https://medium.com/@bradford_hamilton/building-a-json-parser...
We've been able to host quizzes with over 250 teams, scoring their answers in real time. The scoreboard is auto generated and players can make a contribution with stripe.
So far we've given over 6k euros to various local charities. I'm very proud of what we've achieved so far.
My other project is harmonica karaoke. I'm not a blues player, I'm more into classic rock and country. Since I'm not that good at improvising, I like to take a song and work on it over and over again to work out a nice part and get the nuances just right.
One is Dreams by Fleetwood Mac, where I play the vocal lead with some jazzy stuff mixed in. I live a few blocks from Menlo-Atherton High School, where Stevie Nicks and Lindsey Buckingham met, so it's always fun to play one of her songs. (Harp: Lee Oskar F Major retuned as a high octave C Melody Maker.)
Another is Wagon Wheel, where I worked out the fiddle and organ parts plus some piccolo parts that I made up. (Harp: Lee Oskar A Natural Minor.)
My new lockdown song has been Atomic by Blondie. This one has been super fun! It took a lot of experimenting and trying stuff out, but I came up with an arrangement I'm pretty happy with. Now to beta test at our next Alteryx Got Talent virtual show! (Harp: Lee Oskar E Natural Minor.)
Maybe when we can all do it again, I will get to play some of these songs with other musicians.
I guess it will be a mystery...
A simple example is imagine a game with 10 tickets sold for $1 each and a single $9 grand prize.
If 1 ticket is sold each day and if the lottery publishes the number of remaining winning tickets each day, then you can just wait 1 day and if 1 ticket was sold and 9 tickets remain and the prize wasn't claimed, well now there is a 1/9 chance of winning $9 and the expected value is even.
I started scraping several state for daily numbers and calculating the expected value of each game. Every now and then one gets over 100% EV. (Not taking into account annuity discounts and taxes)
It's also an excuse to try out a lot of different technology and patterns that would be too experimental for most real jobs, so it's a great side project.
I'm currently working on a user section with Clojure, Fulcro (https://fulcro.fulcrologic.com/), and Crux (https://github.com/juxt/crux).
Another fun little side project that was also an excuse to work with Clojure was https://ezmonic.com/. The app was built with ShadowCLJS, Re-Frame, and ReactNative. I've used the Major System mnemonic to remember things like my credit card numbers and I've always wanted to know how optimally short the mnemonics I come up with are. That app uses the CMU phonetic dictionary to search for an optimal phrase.
Re: Ezmonic, would be cool to have a live version on the website, so I could try out some numbers that are personally relevant and see if I could remember the system, before deciding to download the app.
It's a good idea though to add a web version to the "marketing" page at ezmonic.com. I'll add that to my todo list. Thanks!
There's a book by the IMBA (International Mountain Bike Association) that has extensive guides on how to create all sorts of features sustainably.
The stack is Django + Gunicorn / nginx, PostgreSQL and some Intercooler.js and vanilla JS to make the experience smoother.
I've also been trying to learn Elixir + Phoenix, as I find some of the concepts (e.g. LiveView) very promising.
Take [1] for example, it lists the source as [2]. However, the source as claimed in [2] is reported as:
"Department of Health and Human Services confirmed".
You might not want to turn it into a "wikipedia", but it would be nice to offer the following:
1) Wrong reports and right reports - a list of sources that suggest whether the claim is factually sound or not (this could be news reports like CNN). You can pull together many sources in a given topic to support a claim
2) "Authority sources", for example, DoJ or other official information distributors that are claimed in an article.
3) "Linked news sources" - These days, many news sources are rehashes of rehashes, sometimes there are 4/5 chains before you get to the "authority" source (reported by the Verge which was detailed by Tech Crunch which was first outlined by AReallyCoolBlog). It would be nice to have a "trail" of where the news/source/information came from, and how many links there are in the chain.
[1]: https://ontherecord.live/17
[2]: https://edition.cnn.com/2020/03/31/politics/drive-thru-coron...
1) Fake quotes do concern me, but for now I've settled on requiring a single reputable source, preferably the primary source (so in your example the DoH press release, if available, would actually be a better source). I've also provided a 'Report quote' button to let users flag fake quotes. I am planning to allow users to validate and/or post additional sources for quotes.
2) I've considered adopting a whitelist approach, but given I can't possibly know all the relevant sources for all the topics which can be covered, I'm just manually accepting quotes for now (the 'does it look credible to me?' test). Things might get even more interesting if/once I start getting quotes/sources on a topic I know nothing about or even in a language I don't understand.
3) Tracking down the primary source is definitely an issue I've already run into when trying to post the first quotes. Ideally, I would like to only accept 'primary sources', even though I know it takes extra work to provide them. Maybe implementing what you suggest in 1) would help with that.
Another feature I'd really like to implement is to automatically archive (on the Internet archive's Wayback machine) the source once I validate it, so that quotes don't lose their sources over time.
I disagree about promises though, I believe if you promise to (not) do something and then break that promise, you should be held accountable for it. Otherwise, people will keep promising more and more outlandish things, because you eliminate the downside.
I've tried to address this by only accepting quotes with a 'due date', so I can easily bring them back into the spotlight (top of the home page in the Open section) once they can be assessed.
These days it seems impossible to make sense of all the predictions from so-called experts. Tracking the accuracy of the talking heads is a great place to start measuring just how valuable their information is.
On the technical side, the logs show over 6600 unique visitors in the last 12 hours, with over 1100 of them (and 18k requests) during the busiest hour. I know that's not too impressive, but it's still good to see the basic VPS running the server didn't break a sweat (load average peaked at around 0.1).
In the mean time feel free to post content you're interested in, and also contact me (e-mail is in my profile) if you have any feedback. Thanks again!
https://pragmaticstudio.com/phoenix-liveview
Those are the videos I've been watching just to get a better idea of the concepts -- I agree, they are well made. I actually found them via HN about a week ago.
I'm thinking of reading this once I finish the videos: https://pragprog.com/book/phoenix14/programming-phoenix-1-4
Just yesterday I had a talk with my friend with the PR industry. We have been discussing how to select the best information sources and became to the idea that the future will be some kind of rating system based on pair experts-field of knowledge. After that, I start to think about creating some kind of automatic system for fact-checking facts in articles at least numerous ones (like based on world population and companies valuation and other public data). Do you have anything like this in your backlog?
Automating that sounds very attractive, but I wouldn't even know where to start. NLP? I've heard algorithms are sometimes used to automatically make trades based on news stories, so I imagine such a system could initially help moderators by providing suggestions/assessments?
Would be good to have a block list of people who can I safely ignore.
I've been thinking a lot about what makes a prediction/promise testable. So far I've summarized my conclusions in the 'How it works' page, but if anyone has any references on this I'd love to hear about it.
Like, they will go on cable news and say, I know about this stuff, and I guarantee that X will happen to Trump by June. And the commentator never says, "but you predicted that he wouldn't actually run for office (wrong), wouldn't win the nomination (wrong) wouldn't get elected (wrong), would get impeached by January (wrong), etc. Maybe you shouldn't be so sure in your predictions?"
These overly optimistic/negative press releases can also be damaging to public understanding over time.
I've started work on Reddit integration (/u/OnTheRecordBot -- it will be a bot you can call, similar to RemindMe!).
Tags are also already present in the backend, but not yet implemented. I imagine they will be come necessary once the number of quotes/topics increases.
- Wikipedia authors (because there's some kind of threshold for relevance there)
- Twitter (because I can automate the validation with a bot -- see @OnTheRecordBot).
Will follow with interest.
Edit: Also, we try to follow our guidelines on what a promise/prediction should be, you can find them on the 'How it works' page.
Also, there are no user accounts so all submissions/votes are anonymous, in case anyone wants to submit something they're interested in.
The second project is a custom deck of cards, but instead of the Typical King, Queen and Jack it is royalty from Nigeria and has had an amazing response on Kickstarter
https://www.kickstarter.com/projects/ifeanyichu/natives-play...
https://chrome.google.com/webstore/detail/sidewalkchat/denbp...
Demo video: https://youtu.be/CS3X_Z_a1g0 Website: https://nightfire.io/
It's all written in Rust. I started to pursue the idea as a "Getting started" project for Rust, because audio needs to be processed in real-time and so a fast language was needed. It turned out quite well and I really like Rust now!
I also wanted Obsidian to be very extensible, and the private beta community has already started extending it and it's so cool: https://github.com/kmaasrud/awesome-obsidian
It's called Who Paid More (https://whopaidmore.com) and the idea is pretty frivolous. Every day (EDT) you volunteer an amount you want to pay to see how your amount stacks up against others for that day. Think ranking and relative % across users for that period and the ability to share those results. Not much more to it at the moment.
I feel a little stuck trying to think of what would make it more fun/novel/rewarding besides just being curious about what people put money into.
Maybe show what I could have actually bought with my money instead of blowing it on a game? (+ affiliate links)
Maybe surprise people with a percent that is donated to charity?
Maybe only accept bitcoin? Or accept bitcoin in addition?
Maybe let me start a sub-contest so I can share with friends to see who can flex the most?
That's hilarious
I found the original concept so absurd but amusing that I wanted to make my own version!! It’s been a welcome distraction as you can imagine and could be the basis for something more. Tbd...
https://whopaidmore.com/results/44b47a99-0f7c-4064-8d23-1925...
I think it could use an additional reward component though...
https://whopaidmore.com/results/44b47a99-0f7c-4064-8d23-1925...
Sadly (?) I'm not currently interested in going down that path, potentially against the law. Don't think I'd want to go bat on those grounds.
I've got a very naive global market running with some incredibly dumb bots, and am currently implementing local markets with their own needs/wants.
It's multiplayer by design so hopefully at some point I'll have some nascent player-base competing with each other =)...
I'm trying to keep everything simple and scope small.
To be honest, I wasn't really expecting anyone to ever be interested in my toy project, beyond spending a half hour idling their time, but a friend of mine has already started kicking the tyres which is very exciting, he's written a bot that scrapes the site and trades against it which I find hilarious.
There's far too much I could write here about ideas, but I'm just trying to keep my mouth shut and make it ;)...
I mean I could make a mailing list or something, but I personally would rather do that after having something to show.
(Unless you are really keen and want to get in on the alpha server I've mentioned in the sibling thread, but I warn you it's still pretty basic =)...)
Another separate innovation that I have in mind is combining that with a special run-length encoding sequence that, due to the interaction between LZAP and run-length encoding, actually wouldn't encode runs linearly but exponentially[3]. That is, instead of "repeat substring X for N times" it would say "repeat substring X for fibonnacci(N) times". I suspect that might actually be a novel innovation!
Aside from a lack of time and energy, the main thing holding me back has been, and I'm dead serious, off-by-one errors. It's really, really easy to screw up the order of adding new entries to the dictionary on both the compression/decompression side in such a way that you just get garbage out, and it's a pain to debug.
If my algo turns out to be original, I'm tempted to call it LZWAN, or Lempel Ziv With Amnesiac Nodes (referring to the nodes in the trie used to grow the dictionary).
[0] https://en.wikipedia.org/wiki/LZ77_and_LZ78
[1] https://pieroxy.net/blog/pages/lz-string/index.html
[2] https://ethw.org/History_of_Lossless_Data_Compression_Algori...
[3] https://github.com/pieroxy/lz-string/issues/114#issuecomment...
If you're thinking about doing the same, for formats and media, I settled on:
DVDs: yes, they're old, but they support more resolution than VHS, and practically every new Bluray player still plays them. Also, DVDs support 352x480 resolution. It's still more than VHS, and you can squeeze more content on the disc or encode it at a higher quality.
VP9+Opus+webm on a DVD. This codec/container combo is supported by Firefox, Chrome, Windows Media Player, and Android, so while new, I expected it to be supported for a long time. AV1 looks promising, but probably not ready.
I'm not bothering, but for iOS, use x264 and AAC in an mp4 container. Those were the only modern codecs and containers I got to work. Also, Apple, x264 and x265 are good, and all, but there's no excuse to not support VP9.
I'm saving the unencoded files as ffv1/flac in an mkv container.
For the actual DVDs, I'm using MDisc archival media.
It's a buggy work-in-process app built in Svelte and PouchDB and definitely not in a "Show HN" state yet. I put my progress up on Github pages for close friends to try [1], but what the heck, I'll put it here too (no instructions or videos yet).
I honestly haven't figured out what I'm going to do with it long term, whether to make it free or to try to monetize it somehow. Right now, my main goal is to fold it into an Electron app and have it sync with a Couch/Pouch db server once the main UI code is done.
[1] https://bt-apps.github.io/braintapper_edge
Note it's not a Saas, so no sign up required to try it. PouchDB is storing the data in your browser in IndexedDB so you can delete your data by clearing your browser data for that URL.
So I created such a stack - the Knests stack (https://github.com/tudorconstantin/knests).
I actually started to work on this in December, but I published it a few days ago.
Please beware that in order to use it for your projects right now you'd have to be quite comfortable with the nodejs ecosystem because the whole stack is not quite tidied up.
I love a lot of things about the Node ecosystem, but the fact that being out of it for 6 to 12 months means you fall behind is not great.
Yeah, I totally feel you with falling behind regarding the full-stack web dev with node/react, the pace is incredible.
Digital piano lessons over meet.jit.si aren't as great as in person, but at least I'm able to keep up with it. Currently working on Liebesträume and Handel's Sarabande on the classical side of things and In The Mood on the jazz side.
The XMPP library is going well and I'm hopefully about to start rewriting the authentication bits: https://mellium.im/xmpp/
And finally, I've got some I-Ds submitted and in discussion in the IETF's TLS and KITTEN working groups. One that documents best practices for authentication and password hashing and storage: https://datatracker.ietf.org/doc/draft-whited-kitten-passwor... and one that defines a channel binding mechanism for making tokens and secrets only valid over a specific TLS session (right now it's specific to SCRAM based auth, but that will likely change soon): https://datatracker.ietf.org/doc/draft-whited-tls-channel-bi...
https://github.com/jsmolka/eggvance
https://github.com/jsmolka/gba-suite
Writing assembly code and see it running on your own emulator feels awesome. Yesterday I started to implement simple text rendering using the GBA bitmap modes.
I also added a WebAssembly port using emscripten (which was easier than expected for a SDL2 based application).
* stealthcheck[0] - Service health monitoring with email alerts and automated restarts in <150 lines of code. Just create a checks.json config file where each check includes a check command, interval, and on-fail command. Set up multiple stealthcheck instances all pointing at each other for redundancy.
* quarantest[1] - Most CI testing tools focus on automated tests, but sometimes the changes are very visual and you just want to give your team a demo of your pull request to play with. quarantest runs a build for each GitHub PR, generates a URL for the build, then posts a comment on the PR with a link to the build. You can see an example of it in action here[2]. Still in a pretty hacky state. Probably would be better to use the GH status API with a link that goes to a page listing all the past builds from the PR instead of spamming comments, but it's getting the job done.
[0]: https://github.com/anderspitman/stealthcheck
Check it out and let me know your thoughts - https://www.producthunt.com/posts/responsively
Key Highlights: - Mirrored User-interactions across all devices. - Customizable preview layout to suit all your needs. - One handy elements inspector for all devices in preview. - 30+ built-in device profiles with the option to add custom devices. - One-click screenshot all your devices. - Hot reloading supported for developers. - Free forever and open source - https://github.com/manojVivek/responsively-app
Would love to hear your thoughts.
Working from home puts this within arms reach all day long. So while sometimes I get really busy and ignore it, when I become aware of it I start flipping floppies again. Once every few dozen floppies when a label read fails/etc then I type in a new disk series and let it rip.
I did all the music CD's a few years ago, most of my 8x10 photos last year (the fastfoto 640 is awesome, it needs a bigger feeder though).
Next up are the 5.25"s, and a bunch of QIC80 tapes I used like floppies in the mid 1990's. I've also got a stack of harddrives from the past ~30 years I need to capture.
Of course I've got the usual set of small projects as well, but I have to be careful about doing those because I can accidentally lose a day that I should be doing actual work i'm getting paid for. The flipping floppies/etc is a good background no brain activity.
Although my website got a lot of organic traffic and orders within the first two weeks, I was unable to fulfill most orders since manufacturing was on pause and everything was already sold out.
Since then I've continued studying SCM, and I'm also learning Python so that I can build a model to predict this kind of event in the future.
So far so good, it's pretty good to play now, still need more action regulation. The piano had been stored on its side for years, lots of transport, water and insect damage.
Current project: Intermezzo no. 6 by David Benoit: https://open.spotify.com/track/0MJ4ikwkXV4lJiRjklWhS9 (sorry, can't find a youtube link).
Total spent: $100 for the piano, $100 to transport it, $50 to buy string steel to replace the strings that had broken. There is still some worn felt in there as well that will need replacing, mostly on the hammer rest bar and the bottom of the jack support bar. Shaping the hammers was a tricky job (they'd worn down quite a bit, to the point where the original shape was hard to determine).
All in all very satisfying.
Real-time board games over webRTC video chat. I have chess, checkers, and a scrabble clone.
I've passed it around to friends and to some low traffic forums. The rendering library is a bit heavy for a board game (it makes my laptop's fan spin :)) so I'm fixing that before I share it more widely
A side-affect of all this PDF works is that my app now supports all system printers (inkjet/laser) including fancy color label printers from Epson, Primera, Afinia, etc.
Printing labels has always been a total pain, especially on Mac. My goal is to make label printing an enjoyable process for both Windows and Mac users. Check it out at https://label.live
This, and my partner is 8.99 months pregnant with our 2nd child!
https://github.com/MitMaro/git-interactive-rebase-tool
The tool/utility provides an easy interface for managing the interactive rebase TODO file. It's heavily inspired by vim and I have plans to expand the functionality.
I had tried a similar tool that was written using Node.js but that seemed like overkill. After ranting about the lack of a good tool, my co-worker at the time challenged me to write it that evening after work. I added to the challenge that I would write it Rust since I had not used the language before and I had heard several good things about it. After hacking away for several hours that evening, I had a working prototype to show at work the next day. Since then the project has evolved a lot and it's gained some traction. It now has a small community behind it, which is really awesome!
I have finally, after some 5 years, setup my RaspberryPi to perform a useful function for me. To validate the claims by my ISP makes about our bandwidth. It's performing a speedtest periodically and updating a Google Sheet with the results. Over time I hope to track and back up their guarantee myself! In the process I am learning about Go, Docker and Google's API. I am also increasing my knowledge of Linux. The project continues with more automation and monitoring.
I've recorded on 2 separate occasions bass lines for different bands in a simple home studio which has been put together since lockdown. I'm collaborating more with a teenage friend whom I used to record and perform with a lot many years ago.
Also, briefly: I've built my family home in Minecraft and plan on extending to some memorable landmarks...
And I hope to get round to reversing the fridge doors before the end!
873 rules, so far. And 99% done. Arguably Vim’s largest syntax file to-date.
Best part? It highlights RED if you type the configuration wrong. As well as TODO, FIXME and nested 3-style comments
https://github.com/vidalab/vida
I made some dashboard examples from live data:
COVID Trend in the United States
https://vida.io/dashboards/ck9thqbxl00000umrd0u2pmdj
We're looking for collaborators. We want to turn this into a commercial product.
https://play.google.com/store/apps/details?id=grind.front.en...
I launched it a month ago. It's a tool that converts your un-used domains into something useful.
By something useful, I mean a self-running automated content aggregator with lots of bells and whistles to keep it running (e.g. membership, newsletters, ads).
I had way too many domain names that are not being used. I wanted to make some use of them without having to maintain them and spending time on it. Now I have all of my 25 un-used domains.
:)
Tonight I had a super exciting evening, as I set up a local server for MSN messenger.
https://wink.messengergeek.com/t/creating-your-own-wlm-09-se...
The 9 year old can type quite well already, and figured out how to change her font, while the 6 year old keeps sending me nudges, dancing pigs, and audio clips yelling "MIIIIIICROPHONE". It’s great to have a local server with no minimum age limit (unlike Facebook, GMail, etc) and no risk of creepy friend requests.
Rendering Engine Built In C++ (https://opengl.bassi.li/)
ML Models Trained To Predict Interest In Rental Units (https://classifier.bassi.li/)
Interpreted Programming Language Built With Python (https://simplescript.bassi.li/)
On a completely unrelated note: I'm aggressively unemployed and would very much welcome a remote development job. Cheers!
Actually, I didn't become a movie buff with tools like this but with watching the movies liked by the directors of my favorite films. For instance: Pulp Fiction -> Quentin Tarantino -> Bande à part -> Jean-Luc Godard -> Robert Bresson -> ...
In addition to giving you some ideas about films that you could like, this helps you to better see the big picture (no pun intended). You learn about the important movie periods and movements (French New Wave, Italian neorealism, New Hollywood...), you develop a more serious approach to film, and you can live these mind-blowing moments when you notice similarities between two movies done 50 years apart and that looked at first glance totally different.
I already created the engine (which is giving good results for my profile! It recommends me movies that I never thought of). The challenge was mostly to found all the data required by the engine. Now, I must admit I'm procrastinating a little bit for developing the actual web app!
(and thank you everyone for your messages, your projects are awesome!)
The concept is simple: If twitter + youtube had a baby for learning.
An interesting side effect: I've personally had a hard time getting started with writing, and ever since I've launched smalltuts, I've created a new course almost every day.
The previous iterations were built years ago using CoffeeScript, Grunt/Gulp, Jade, Stylus, etc. This time around, I went for vanilla HTML/JS/CSS, no transpilation, no bundler, no build step at all (and no frameworks). It's been a joy. I'm using the TypeScript compiler in VS Code for sanity checking and might add some JSDoc to leverage the type checks even, but for now it's quite nice as is.
I've also enjoyed building up a Discord community for it all, got almost a thousand people in there now and it's a lot of fun interacting on a daily basis.
- Slack RTM bot which picks up my morning and goodbye messages in our channel and stash the duration into our time registration system so I don't have to do it manually. Using Slack library for Go, compiled to C library using gccgo for C ABI compatibility, then using Zig's cImport functionality to develop the bot in Zig (because why do it the easy way)
- mbedTLS bindings to Zig (Zig can generate alot of this out of the box, but I'm tailoring it by hand)
- HTTP/1.1 client in Zig, ties into the mbedTLS bindings I want to provide TLS support
Also a simple music streaming server which caters exactly to my needs without taking care of others (now writing a client for it)[1].
Plus learning godot to write a small 2D game with my brother's band :D
And learning Georgian letters (they are beautiful).
[0]: https://code.vanwa.ch/sebastian/tsa [1]: https://code.vanwa.ch/sebastian/stray
It helps you to sync slide notes of PowerPoint slideshow to any device. Now i am working on google slides add-on.
A searchable library of folk & traditional Irish music, displaying the abc notation as sheet music and allowing midi playback.
github.com/glouw/softshader
I'm really enjoying it
I'm hoping to focus on the technical side this time!
- Sleep more / better
- Started running with a coach again (ok where I live)
- Finding a new job
- Started using Headspace
- Re-learning some maths
All in all very happy with the current situation.
(Also, improving my bird song classifier.)
...and making homemade tortillas
i think the final plugin will be generic PDF slideshow media source embed, so it can be useful for more than just lego.