I was just looking at gleam. It’s lovely but seems to still be a bit bare-bones so I’m reconsidering…
It has a builting LSP server which is nice. It can be started by running gleam lsp which does not seem to be documented anywhere. I stumbled across it by trying things out after seeing LSP mentioned in changelog. :)
I wish the puzzles were more.. Abridged? I find hard them hard to understand because you have to first make sense what the puzzle is from a wall of text.
But this is just the conceit of the first year of any engineering degree, no? Some sort of arbitrarily complicated prosey description of a vat of a chemical discharging into a pipe, or a long description of a bell in a church tower loosing 100ms a day because of air buoyancy, or an oscilloscope input not reacting to higher speed signals because of the thickness and permitivity of the fibreglass substrate… your job is to realise that all of these are just dressed-up instances of a simple differential equation, and the skill of engineering is to identify the underlying equation or algorithm and know an efficient way to solve it.
I dont have engineering degree, so i wouldnt know.
I just dont find reading these kind of huge walls of texts fun to decipher for many reasons. My friend simplified the first task well for me like this:
given a list of numbers, where each group of number is separated by an empty line:
--
10
10
20
20
30
--
find the largest sum
This is all i want basically. English not being my native language makes the big blocks slightly difficult to read at first, then my low attention span ruins the rest of it. So, not fun.
Basically i want to have fun too but it’s not very accessible to me.
Ah well, such is life.
Now if i would get paid to decipher the text, things would be different. :)
It’s a lot of fun. If you do competitive programming a lot you’ll start reading through the lines, as most problems have playful descriptions. I guess AoC is a fair bit heavier on that front, but people still manage to read it all and do it very quickly, and to be honest, that’s most of the fun for me, because if I just wanted some puzzles to solve, there’s plenty of other sites that can offer that.
I don’t know what it is, but I always really enjoy these problems and am more motivated to do them than any other programming challenge sites. Going to try to do them all in Elixir this year, and challenge myself a bit with Prolog if there are some that seem to lend themselves to it.
As shameful as it is to admit, for me the Christmas stuff really helps out. Even though the story is relatively barebones, imagining the silliness of the circumstances, and getting to write variable names like elfCookieLoad makes it so much more fun for me than dry algorithms exercises, even when day 5-6 onwards starts to ramp up towards basically the same kinds of problems.
Interested in how this goes for you! Was very tempted to do Roc this year but decided to give it one more year to bake. So now I’m doing it in boring old Go instead, and getting nerd-sniped by trying to make a real build/test/execution framework for it instead of by the language itself :)
If there was some command or opt-in flag to automatically send crash reports I’d happily do that. But the crashes are so frequent I don’t really have the energy to prepare a report and search existing issues for every one. I’d end up spending all my time doing that instead of solving the puzzles.
Got drawn into a group of people in the rust community running their code against a benchmarking bot, to see which solution is faster. The amount of things you can do to improve the code speed, even without sacrificing safety, is amazing.
it’s the discord from the serenity folks linked at the repo, a rust library for writing discord bots (at least that’s what the server is for originally ;) )
Any tips on choosing a language? I’m torn between using a mainstream language I know well, a mainstream language I don’t know but is practical, and a fringe language I’m interested in just for the joy of learning it.
Choose what speaks to you, hard stop. I have used it as an excuse to learn about new platforms that I have zero understanding. You could also go the other way and use the most familiar language. What is your goal?
New and exotic but with real constraints that encourage you to learn the nuance?
Reliable and friendly that lets you complete challenges quickly?
What about paradigm shifting languages that fundamentally change you you approach software?
I mean, pick your poison. AoC can be whatever you want it to be.
About half the time I choose a language that is going to teach me something I haven’t learned before. Early on this was Elixir, which is now my main squeeze; I also explored Rust and Prolog this way, and am making my way through this year in Gleam. AoC is for fun so treat it like fun.
I’m split on it. No matter what language I choose, I am not dedicated enough to hit the global leader board, so that’s not a consideration. So I waffle between using a language that I am comfortable in (so I can just enjoy the puzzle solving side of it) and using a language that’s new-ish to me (because that’s a different kind of fun). Last year I did it in python, which is super familiar to me (my oldest python code is old enough to buy beer in the USA) but really focused on newer idioms that I hadn’t gotten to use in production code yet.
This year I think I’m just doing it in python again because I don’t have the energy to do something truly new to me, and I want to practice more modern python than I can do with code I write for a living.
I may solve a few days in rust too, but I want to solve them all and don’t think I have the energy to do that in rust this year.
I’ve found that when I try to use some other task as “an excuse to learn a new language”, neither gets done, so I’m just using Python this year. I do have a lot to (re-)learn with Python, anyway, but at least I’m mostly familiar with it. Not a tip for success, but at least I may avoid failing in the same old way.
Just a reminder there is a #lobsters-advent IRC channel on Libera :3
Using it to learn Zig this year
decided to be a little brave and use gleam for it this year, hopefully goes well 🤞
I was just looking at gleam. It’s lovely but seems to still be a bit bare-bones so I’m reconsidering…
It has a builting LSP server which is nice. It can be started by running
gleam lsp
which does not seem to be documented anywhere. I stumbled across it by trying things out after seeing LSP mentioned in changelog. :)Gleam is still pretty young, but the community is just so wonderful. I highly recommend joining the discord, even just to hang out and say hello.
By the way, I’m attempting AOC in Gleam this year too!
Me too (at least while doing so doesn’t take too long)! Day 1 went pretty smoothly https://github.com/wezm/advent-of-code/blob/master/2022/src/days/day_1.gleam
I wish the puzzles were more.. Abridged? I find hard them hard to understand because you have to first make sense what the puzzle is from a wall of text.
Once the difficulty starts to ramp up you begin to appreciate the verbiage.
Once you strip away the contrived backstory, the text is quite clear.
Ofc there were the dark days of 2018D15, but I believe that was a team effort and Wastl wasn’t as involved as he was before and since.
Here’s a puzzle I still haven’t cracked, compare and contrast: 2019D18
Unfortunately this is clearly not for me. :(
I hate that when you mentioned 2018D15, I knew what puzzle it was. Still unsolved for me.
So many moving parts! And boring as well.
I just checked and that was the last day I completely gave up trying to complete a puzzle. They were very difficult.
But this is just the conceit of the first year of any engineering degree, no? Some sort of arbitrarily complicated prosey description of a vat of a chemical discharging into a pipe, or a long description of a bell in a church tower loosing 100ms a day because of air buoyancy, or an oscilloscope input not reacting to higher speed signals because of the thickness and permitivity of the fibreglass substrate… your job is to realise that all of these are just dressed-up instances of a simple differential equation, and the skill of engineering is to identify the underlying equation or algorithm and know an efficient way to solve it.
I dont have engineering degree, so i wouldnt know.
I just dont find reading these kind of huge walls of texts fun to decipher for many reasons. My friend simplified the first task well for me like this:
This is all i want basically. English not being my native language makes the big blocks slightly difficult to read at first, then my low attention span ruins the rest of it. So, not fun.
Basically i want to have fun too but it’s not very accessible to me.
Ah well, such is life.
Now if i would get paid to decipher the text, things would be different. :)
It’s a lot of fun. If you do competitive programming a lot you’ll start reading through the lines, as most problems have playful descriptions. I guess AoC is a fair bit heavier on that front, but people still manage to read it all and do it very quickly, and to be honest, that’s most of the fun for me, because if I just wanted some puzzles to solve, there’s plenty of other sites that can offer that.
I don’t know what it is, but I always really enjoy these problems and am more motivated to do them than any other programming challenge sites. Going to try to do them all in Elixir this year, and challenge myself a bit with Prolog if there are some that seem to lend themselves to it.
As shameful as it is to admit, for me the Christmas stuff really helps out. Even though the story is relatively barebones, imagining the silliness of the circumstances, and getting to write variable names like
elfCookieLoad
makes it so much more fun for me than dry algorithms exercises, even when day 5-6 onwards starts to ramp up towards basically the same kinds of problems.You may have meant to respond to this comment.
I’m trying to use Roc. I crashed the compiler so many times though, I might switch to something else. I was also thinking of trying BQN or a forth.
Interested in how this goes for you! Was very tempted to do Roc this year but decided to give it one more year to bake. So now I’m doing it in boring old Go instead, and getting nerd-sniped by trying to make a real build/test/execution framework for it instead of by the language itself :)
We’d love to get bug reports of the compiler crashes you run into! It’s been a big goal to wind those down recently.
If there was some command or opt-in flag to automatically send crash reports I’d happily do that. But the crashes are so frequent I don’t really have the energy to prepare a report and search existing issues for every one. I’d end up spending all my time doing that instead of solving the puzzles.
I run a mom-and-pop (small) Discord. We have a AoC channel with a couple of dozen programmers participating using various languages.
You guys are welcome to come and play along. I’m hoping that by teaming up I can stay motivated to do more of them this year.
https://discord.gg/fR8dG5XePM
Got drawn into a group of people in the rust community running their code against a benchmarking bot, to see which solution is faster. The amount of things you can do to improve the code speed, even without sacrificing safety, is amazing.
Can you provide any links to this community group?
it’s the discord from the serenity folks linked at the repo, a rust library for writing discord bots (at least that’s what the server is for originally ;) )
Any tips on choosing a language? I’m torn between using a mainstream language I know well, a mainstream language I don’t know but is practical, and a fringe language I’m interested in just for the joy of learning it.
Choose what speaks to you, hard stop. I have used it as an excuse to learn about new platforms that I have zero understanding. You could also go the other way and use the most familiar language. What is your goal?
New and exotic but with real constraints that encourage you to learn the nuance?
Reliable and friendly that lets you complete challenges quickly?
What about paradigm shifting languages that fundamentally change you you approach software?
I mean, pick your poison. AoC can be whatever you want it to be.
About half the time I choose a language that is going to teach me something I haven’t learned before. Early on this was Elixir, which is now my main squeeze; I also explored Rust and Prolog this way, and am making my way through this year in Gleam. AoC is for fun so treat it like fun.
I’m split on it. No matter what language I choose, I am not dedicated enough to hit the global leader board, so that’s not a consideration. So I waffle between using a language that I am comfortable in (so I can just enjoy the puzzle solving side of it) and using a language that’s new-ish to me (because that’s a different kind of fun). Last year I did it in python, which is super familiar to me (my oldest python code is old enough to buy beer in the USA) but really focused on newer idioms that I hadn’t gotten to use in production code yet.
This year I think I’m just doing it in python again because I don’t have the energy to do something truly new to me, and I want to practice more modern python than I can do with code I write for a living.
I may solve a few days in rust too, but I want to solve them all and don’t think I have the energy to do that in rust this year.
I’ve found that when I try to use some other task as “an excuse to learn a new language”, neither gets done, so I’m just using Python this year. I do have a lot to (re-)learn with Python, anyway, but at least I’m mostly familiar with it. Not a tip for success, but at least I may avoid failing in the same old way.
No shame in getting it done with Java, IMHO. (
s/Java/Blub/
)You should do it in x86 assembly. It’s the fastest.
You’re not wrong.. unless you have an Apple Silicon Mac :-D