Following up from this post I’d love to know what you Lobsters are planning to pick up in 2023!
Piano, it’s something I did as a kid and have completely lost the skill.
I also intend to get much deeper with Linux system programming and hope to implement a few things at the BPF layer as I’m finding more and more of a need for that level of toolbox.
I tried to learn to play the piano…. I’m now a really really lousy pianist… but a much better typist. :-P
I should learn how as well. I have a nice synthesizer, and I feel dumb for not really knowing the fundamentals just yet.
Are there any resources you’re using or plan to?
https://www.syntorial.com/ Is a cool way to learn how to use a synthesizer. Its orthogonal to learning piano, though.
I have some basic books my partner got me, these include stickers for the white keys with pictures and key letters. I’ve found them to be useful in learning.
The true hard part is sticking with it. It takes practice and hard work!
Piano is fun! I encourage you. Don’t give up too soon, and don’t set goals that are so high as to be discouraging. Start with just having fun, playing whatever the heck you want. After a while of that, move on to intermediate stuff as you feel inclined. Feel free to DM me with questions. (I have many years of experience, including classical training.)
I don’t really plan to learn anything in 2023. I feel like I’ve been studying and learning nonstop for 5 years. I’m going to learn as part of my job, primarily during working hours, and otherwise focus my time on doing interesting work or living life.
What makes you most feel like you are living life?
I have to relearn that, I suppose. At this point I’m going to start with improving objective, empirically measurable qualities of my life - basically improving diet and exercise. I’m going to try to add more hobbies, or get back into old hobbies that I’d lost touch with.
Longer term, I’m not sure. Fulfillment of some kind, maybe? An ‘immortality project’? I don’t have a real goal or know what a goal would even look like, I’m hoping that I can just get on what seems like a reasonable path towards something and that, with time, I’ll get closer to whatever I should be getting closer to.
I like the idea of an immortality project, but each time I think about it I end up concluding that a large slab of stone with an inscription on it is the best solution.
Then I remind myself that this is really just a gravestone, and let that idea rest.
I guess that a project that will survive the lifetime of Earth requires sending something out in space. But that feels a bit pointless too, without also sending generational ships out in space, to have someone to actually enjoy the project, or at least remember it.
I guess some ideologies or religions could potentially survive the trip on a generational ship, but this does not feel like a meaningful legacy either, to me.
Perhaps a really ingenious board game or card game could survive such a trip, but the name of the original author would quickly be forgotten. And is the name really the ultimate legacy?
So far, I think having a successful open source project is one of the best bets, or a great game that can be emulated.
Immortality projects are hard. Better ideas are warmly welcome!
I guess that a project that will survive the lifetime of Earth requires sending something out in space.
I guess that a project that will survive the lifetime of Earth requires sending something out in space.
I guess it depends on your definition of ‘immortality’, but yeah I ultimately agree. But ‘immortal so long as humanity exists’ is more achievable - for example, I doubt Einstein will ever not be a household name. I am not Einstein, however, so my options are much more limited lol
But tbh the entire concept feels very nebulous and kinda weak to me. I don’t know that I care if I persist in any way after death, but it’s something I want to give some consideration to. I don’t know if I’ll get to a point where I decide something like that is worth it, it’s more about exploring life through the lens of death.
Sure, simply “memento mori” is a classic.
Proper gardening. Now that we own a house with a big garden I want to grow fruit and vegetables.
Refinement Types: I’d like to make a simple implementation for a low level language. I’ve got like 5 years of design documents for a language and I’m hoping this year will be the year I can deliver an MVP. I have played with other languages a lot, but I’ve never implemented refinement types. Should be fun! I started building a new compiler last night using Salsa 2022.
MLIR: I’d love to make a language that makes use of MLIR. I started building a basic dialect last year but never completed it. I used CXX for the Rust <-> C++ bridge, which took a while to get working, but someone made Rust bindings for the MLIR C API a few months ago. If I get the frontend above done then I’ll probably use this for the backend (or have it as an alternative to LLVM).
Reinforcement Learning: a really big part of ML I basically skipped. I get the basics but I want to reimplement some algorithms and dive into SOTA Deep RL. I started building a Minecraft bot brain that I want to train to fight with some RL. My focus has been making the brain multitask well and cooperate well so I can scale it to X,000 bots all playing Minecraft and working together. It’s written in Kotlin using coroutines to model jobs the bots can queue and pause.
Tensorflow / Keras: I have only used PyTorch - a lot of companies use TF so it seems like a good tool to have in my belt. I’ve browsed the guides online a bit but I don’t think I have it installed yet. Eventually I’d like to get the TensorFlow Developer Professional Certificate, but that’s a stretch goal.
MLOps: I have built a lot of ML models, but I’ve never had to put one in production! I think I’d like to be a Machine Learning Engineer in the future, so understanding how to deploy big models is a must. I got the Introducing MLOps book from O’Reilly for Christmas and I’m going to read through it probably once the semester starts next week.
Convex Optimizations: I learned a bit during my grad research, but I want to continue to going through the book and play with the libraries from standford a bit.
ML applied to Finance & Econ: I started learning the basics last semester but I want to dive deeper in. I’m interested in how I can automate personal finances and I want to simulate basic economies. Reproducing this Salesforce paper with the Minecraft bots is a stretch goal.
Zig: I’ve written a few hundred lines in Zig. I reported this bug almost 3 years ago, and told myself once it was closed I would practice more in the language (just so I knew the compiler was at a certain point of maturity). It was closed last week! I’ve been following Zig pretty closely since 2016 and I’d like to build some apps with it & maybe contribute to the compiler some more. I’d also like to build math libraries like Rust’s ndarray for the Zig ecosystem. There is already some great work completed but it looks like there’s a lot to be done!
I have played with other languages a lot, but I’ve never implemented refinement types.
I have played with other languages a lot, but I’ve never implemented refinement types.
Have you seen “Refinement Types: A Tutorial” (code: ranjitjhala/sprite-lang)? This is something I’d love to look at myself sometime… would also love to figure out how to integrate them with dependent types if that’s at all possible!
I’ve skimmed it in the past! I’ll read through it thoroughly soon. Digging through the F* source is deep in my todo list - only took a small doc fix to get the toolchain working when I last tried it. I believe the basic idea is you embed the refinement as a dependent type, and when type checking against that type you call out to an SMT solver to provide a 👍 (such as translating your embedded DT to Boogie(?)). This of course makes the type checking undecidable.
For my language, I don’t want to support full dependent types (like Idris 2) but some subset of them. My short time playing with Zig has made me a big fan of its dependent-esc types.
Yeah - curious about how you encode terms as SMT expressions… also if it is possible to somehow limit those to a decidable subset? Not sure if that is possible. I was considering having something like an SmtProp universe, but not sure if that’d work in practice…?
Yeah – Zig definitely shows that there is an appetite for dependent types in systems programming, even if the design of it is a bit… strange. I’d love to see more systems programming languages implementing dependent types and staging in a more principled way.
What MLIR resources would you recommend?
The Toy tutorial, LangRef, and the rest of the MLIR documentation is really good. The API is structured similarly to LLVM, so having a good amount of experience with that has made reading these pretty easy. There’s also this youtube series I’ve watched a little bit of.
Rust procedural macros (using this tutorial https://github.com/dtolnay/proc-macro-workshop)
I want to do more things in typescript either on client via Solid or inside Deno running locally or on the edge. So want to learn those very well.
Recently fell in love with Chiselstrike and EdgeDB so want to learn them well too. Will probably settle on Chiselstrike as EdgeDB is still maturing. Chiselstrike abstracts well over SQLite or Postgres.
Also want to build proper iOS native app so SwiftUI. Will go over Point Free and go over Composable Architecture. In future might try learn Expo to build cross platform.
Also want to learn fundamentals of ML/statistics. Heard good things about Probabilistic Machine Learning book.
Since I am building a native app with Tauri, I also will need to learn some Rust this year although I dread its feedback compile loop.
Also if I get to it, doing some local first architecture would be great to study. Some things with CRDTs.
If you wouldn’t mind sharing, I’m curious what you loved about ChiselStrike and EdgeDB. I haven’t tried either but I used Supabase for a side project and have been looking at Convex but it seems like there are suddenly a ton of different backend as a service providers.
Also re: Rust, if you have Rust Analyzer you shouldn’t have to wait for the code to fully compile while you’re developing.
I wanted to have some way to have a declarative schema. So I don’t have to write migrations manually and things like this. From this, Prisma was one option but I found EdgeDB to have nicer way to define things.
And ChiselStrike is nice as it gives me endpoints. I am still exploring it.
prisma is the most infuriating technology I work with day to day. It’s filled with bad decision after bad decision, avoid at all costs.
Making 3D games with Godot and Blender.
What kind of games are you looking to make?
I’m planning a third person RPG as a start. My wife takes charge in modeling on the major part and I will do the rest lol. I’m totally new into this field so not holding up a high expectation on it.
I’ve been studying Lisps, and MLs feel like the next thing. OCaml is the one I’ve started this month. I’m also interested to see what this event-driven trend is about, so Kafka is on the menu.
I am planning to teach myself how to write mathematical proofs.
Hopefully this skill will unlock the ability to self-study more advanced proof-based mathematics.
Me too - going through Susanna Eps discrete mathematics. I want to be able to do my own proofs and reasoning when I see an equation in a compact paper instead of just squinting at it and thinking “oh yeah that kinda makes sense”
I really wish proofs could geniuely interest me. I disliked doing them since day one for some reason despite being able to write them being a very useful skill.
Python! I’ve been programming only in C++ and C and it would be a pretty good addition to my toolset especially regarding the many great libraries.
I’m also planning to learn Python. Did you find any good resources besides the official documentation? I mainly learn it by translating an existing project into Python3.
Other than building projects with the libraries you’re interested in those two books seem to get recommended quite often online for people who have got the basics down and want to go deeper:
I’m reading Effective Python right now, can’t say much about it yet though. I don’t like watching videos very much, but if you’re more of a visual learner the YouTuber Sentdex has quite a bit of Python content. If you’re a total novice to Python you might also appreciate Automate the Boring Stuff with Python. The official documentation is amazing though, but I totally get the appeal of a book as reading documentation can often be pretty dry.
Thank you very much for the quick reply! I’m going to check out the two books you recommended, since I actually have a tiny bit of Python experience. Watching videos is also not my favourite way to learn, but this YouTube channel really has some great Python tutorials.
A Byte of Python seems to cover the basics. You can find it on Github. The PDF and EPUB are in the releases: https://github.com/swaroopch/byte-of-python
I really like learn-by-example approaches. I first saw this method at https://gobyexample.com/. The python version (https://www.learnbyexample.org/python/) doesn’t look as comprehensive, but it’s nice to have as a quick intro if you already understand the basics of programming.
There’s also a friendly group of mentors on reddit at https://old.reddit.com/r/learnpython.
Things I’d like to learn more about in 2023:
You should read “The Master and Margarita”!
Thanks for the tip. So far, I’m all about the 19th century, but I hope to get to The Master and Margarita eventually.
That reminds me, I should re-add this to my reading queue. I had trouble getting into it on my first attempt, but it is constantly recommended to me, so I will give it another go.
I see you already have Dostoevsky on your list, one of my favorites! I can also recommend:
Thanks for the tips. Babel was already on my list, but I didn’t know the others.
I will get better at engineering management, I will get better at writing.
I want to get better with being proactive and prepared for tough conversations.
I would like to get better with plants and maaaaaybe music. I have a harmonica and still struggle playing individual notes reliably 😕
I plan to learn to draw with https://drawabox.com
For stuff not related to comouter science, I would like to improve my Mandarin.
Definitely more hardware design. I want to get to the point where I am able to build my own CNC machines from components to the software. Be it for 3D printing, milling, pick and place or automated gardening, I want to build them all! :-D
I would also very much like to learn to sell my services at higher prices. So far I get the feeling that nobody wants anything and the only way to get paid well is to help move colored boxes on screens for some $MEGACORP.
Your hardware design goals are awesome. I’ll be rooting for you!
This may seem like a short list; but my goal for 2023 is better mental and physical fitness, leading to better effectiveness at home and work.
So it’s more about trying to do less, than more. I’ve explicitly postponed several side projects by a calendar year.
How to fly an airplane
Language creation! My buddy @wolfadex has been talking about it for a long time and I wanted to try it out. I’m partway through Crafting Interpreters using Python. Been a bit of a challenge translating from the original Java, but i’ve learned some stuff about Python along the way too so that’s cool!
I’ve run into a roadblock that may make me switch off of Python though, we’ll see. Maybe Elixir instead…
On top of that, I’ve also been continuing to learn woodcraft! Got myself a small set of hobbyist tools and a couple projects under my belt, with at least 3-4 more in the planning stage. Feels REALLY GOOD to build something REAL, and it just feels like woodcraft is….simpler, overall. A nice break from all the s*** I have to remember with working with languages and frameworks and command lines and errors and browsers and databases and ugh i’m gonna go do some woodworking, lata 👋 😂
Distributed systems, particularly all the differening approaches to dealing with concurrent updates to data. I’m largely forgoing a text book and just reading the original papers.
Its been a hell of a ride so far. Reading these papers that are 35-45 years old that layout problems that are still an issue in industry is really eye opening.
Once upon a time, decades ago, I spoke French reasonably well. I’m going to get that back this year.
How to fix my damn sinus issues. I have vasomotor rhinitis and as long as I don’t get a cold or the flu, it’s fine.
As soon as I catch either of those, I am unable (literally unable, like zero) to sleep for at least a few nights. It is driving me to the edge.
I had the same problem. I’ve managed to solve it via:
Effect handlers in Koka and OCaml 5.0, message queues (when I’ll run into them at work), graphics with OpenGL/SDL mostly. Tangentially related to programming is also making music with stuff like SonicPi, Supercollider and SunVox; I got a MIDI keyboard so I’d like to put that to good use. I’d also like to learn to keep good habits, follow through with plans and commitments and be a bit more reliable in general.
I’m hoping to learn enough Mandarin to keep very basic conversations, read restaurant menus, and order food in Chinese.
I also want to learn to play guitar and sing with more confidence at open mic nights. I’ve only been to one and performed one song so far, but it was a bit of disaster. (I forgot the words after the first verse.)
Learn to sail sufficiently well to regularly finish the race in my local dinghy sailing club.
Tech-wise I probably need to learn me some Go this year as my new team has some Go services.
More Prolog and Prolog-related things of course! To be honest, I already started this year by reading the first chapters of the book about Strand, a concurrent logic programming language that disappeared but now there’s an open-source implementation. Lots of things are still needed in Scryer Prolog. A good challenge is GC, and also a WAM -> native compiler would be welcome! But I doubt I have enough expertise to do that myself.
Also, I’d like to use Djot more and more. I’m already writing a Djot modular parser/renderer in Prolog too.
Last year, I’d also said about learning Erlang. Well, I did learn some stuff. Clojure too. But I don’t find a project that motivates me to follow that route. Maybe if I change my job to a place where I can use them…
by reading the first chapters of the book about Strand
by reading the first chapters of the book about Strand
What book is that?
Strand: new concepts in Parallel Programming - http://www.call-with-current-continuation.org/files/strand-book.pdf
Probably Rust or Golang. I’m more than due to learn a new programming language, and those two look like they are gonna stick for a while.
Become really good at AWS. I think I am decent enough already, but I want to be in a position where I could write those certification exams with 80% experience and 20% of filling up gaps.
Transformers. It’s literally a transformative technology, and I’m really curious to understand how it works, and why it performs so much better than almost every preceding method.
What does “transformers” mean here? I know it is not Autobots vs. Decepticons ;-) so what sub-field is that in?
I would guess Transformers in Machine Learning
Just a wild guess, but maybe they’re referring to Monad Transformers?
Experiment with Textual to implement interactive exercises for my ebooks.
try to work on more efficient implementations of effect handlers. there are much more intelligent people working on this of course; IIUC the currently OCaml 5 implementation of effects (with runtime support) is ~2x slower than direct code. One idea that seems promising to me is CPS (which I know other implementations do) + defunctionalization; unfortunately that is terrible for separate compilation, so maybe there is a middle ground. would love to talk more about this with anyone who is interested/in the know!
how are databases of all kinds implemented
Free Pascal, or finish doing so rather.
Also, more meta-programming and the art of dating.
Free Pascal is my objective too. I know enough Python and C to get things done (personal projects). So far, Free Pascal seems incredibly clear and intuitive. I like the way the blocks are laid out and the concepts seem very familiar. I’m really enjoying it.
Given that it is available for several major platforms, creates small binaries, and allows for quick GUI creation if you need that, I’m really enthusiastic about shifting to it for most projects. I’m sure that when I start actually making use of it, I’ll find the odd stumbling block, but so far, when I have researched the objectives that I want to accomplish, there’s a way…
I hope your year goes well!
Don’t take this a criticism, I really ask out of genuine curiosity, but: I learned free pascal in 2008/2009, in introduction to programming classes in college, and everyone thought it was pre- historical then. Why do you two want to learn it now, in the year of our lord of two thousand and twenty three?
Is there a niche that uses pascal a lot? There has been a renascence I’m unaware of? Y’all just into vintage vibes?
Oh. So I’ve been creating Windows desktop utilities for my work (to automate processes). It’s the kind of thing that you can usually do with batch scripts (or PowerShell) and I’ve even thrown together a few with a GUI (using The Wizard’s Apprentice, https://wizapp.sourceforge.net/).
Using the Lazarus IDE, you can create more customized GUI’s with more features very quickly and easily. As far as the capabilities of the language go, it can make system calls and manipulate text files, which covers the bases for me. It’s also a lot faster than a batch script.
There’s actually some nice work that is being done in Pascal. I use this app a lot: https://github.com/tobya/DocTo
Goes to show that any claims of “language X is dead” must be taken with a lot of grains of salt.
I actually liked Pascal, back when I learned it. It was certainly better than C as a teaching language.
Systems programming! I’ve got a background in the systems but not so much the programming and I’ve always wanted to go deeper down this particular rabbit hole. I’ve got “Advent of Code” levels of Rust and C under my belt, and I want to start a toy project - maybe an emulator, or even an OS - where I can improve my skills without hurting anyone in the real world.
eBPF: related, and more directly impactful on my day-to-day work. I’ve been wanting to spend some time on this stuff for a while.
Away from the tech side, the German language.
I’ve been learning Italian for a while now and while I have a way to go before I can pretend to be fluent, I’m pleased with where I am and I’ve reached a point where I’m happy starting a new language alongside it. German for a few reasons, but not insignificantly because it’s not a Romance language and I want to avoid linguistic confusion as far as possible.
Trying to remember how to care about making high-quality software again!
(Better than it sounds. I’ve got this.)
I usually follow WINS (wealth, insights, network, self) framework to plan,track, and improve. I’ve been using this for the past 3 - 4 years. Broadly this year:
I published my this quarter plans here: https://notes.jjude.com/2023-quarterly-plans.html
How to be a better manager and design better software.
2022 was sadly a terrible year fraught with illness and difficulties, 2023 is looking much better so far. I’ll continue with Piano through grade 7 RCM, and I remember having a few tech side projects (smart home gadgets) last year that have gathered dust, so I’ll pick them back up. Started to learn figure skating as well. Otherwise, still feeling dazed from 2022 aftermath, so I’ll take two or three months to find myself again, whatever that means.
I wish I can make time to learn Julia
Plan to learn more about Zig and Blockchain tech(from a technical perspective, not get rich quick scheme) since there is fastinating work on Cosmo eco system I want to learn more.
Given the trends we’re having at work, I think the time has come for me to start diving into Go
After quitting my PhD program, I took 2022 easy and focused on enjoying life and work.
2023 I plan/hope to get back to doing more coding personal projects and reading more theory and papers.
Rijke’s new book is so great. If you are interested in a purely category-theoretic book I highly recommend “Category Theory in Context” by Emily Riehl, if you are not already aware of it. The “context” is a bunch of other math so it helps if you have a mathematical background (I mostly didn’t, so it was brutal but worth it)
Thanks, I will check it out! I don’t have a great mathematical background, but it might be a good incentive to learn some of the math I have missed along the way.
In terms of tech, Haskell will still be my primary focus for extracurricular learning. Work still teaches me stuff, but I should also study outside of work.
For non-tech stuff, my goal is to be able to have simple conversations in Russian by the end of the year!
How to use the cloud. After 1 year working as a founder I realized I knew much more about types than about building software. A lot of things work in a little proof of concept, but shipping them production-ready is a different problem
Executable specs and rapid iterations.
I’ve got enough writing plain text; Now I’m writing executable text, wire it to code, run it, test it. Then iterate.
The long goal is to prepare to work with AI assistants, to be able to specify and verify things easily.
I don’t know!
Less pressure on myself, I don’t have any goals as they seem to be way more restricting than motivating / helpful.
I was really taken in by the joy & playfulness of clojure late last year & would like to try to make small fun games w it (quil seems fun) but even the simplest of game dev is very overwhelming to me so we’ll see.
I started doing a little bit of prolog & feel like there’s so much to be learned & ported to modern application development but it still feels like I’m stabbing myself with needles anytime I try to do something slightly non academic.
I’m starting to develop a deeper understanding of/respect for UX & I want to continue deepening that.
All that being said, I’m still having plenty of fun with JS/TS & web APIs & svelte @ work so that will continue to take focus.
gamedev with godot and blender.