AOC23 - 9 December
2023-12-9
Good morning. I have to admit yesterday puzzle has frustrated me a lot. However I have to concede that my general frustration with these puzzles, is due to how much time it took me with finding the solutions. I have been lashing out a lot on them, and want to apologize. I have to admire the ingenuity of the design of these puzzles. Not only are they well thought out and embedded into a fun story context, carefully selected to teach you different concepts and problem categories from computer science, but to be able to reverse engineer the behavior of an algorithm to generate valid input data on that magnitude is very respectable.
I have also to reflect on my original goal of this series. It was first and foremost to learn a new language. And I think I have accomplished that. In every solution I put as much effort on idiomaticity as possible to do the things the "elm" way and in a more abstract sense learn to design and solve problems with type algebra and got to explore type design. I have surprised myself with what sort of solutions I came up with using pattern matching and higher-order functions to implement elegant "small" architectures.
And this brings me to the core point. I was so eager to solve these problems to prove my self my programming skills. However in doing so I neglected my own personal interests and strengths, and also the time to focus on more important projects. My passion is about building systems, ideally creative or interactive ones. Express ideas with code, and reflect about programming in a more philosophical or esoteric way. And use these tools to create innovative interpretations of existing technologies and subjects. I am after all a creative technologist and not a computer scientist. I don't need to know what LCM is, or how to traverse virtually infinite lists of seed ranges to find a location through an arbitrary mapping. I admire people that can do that. But being able to use technology as main motor for creative thought is what my personal development is aiming at.
Elm is primarily an interactive web-app language. Many puzzle solutions have shown me the limitations of the environment (mainly the browser and javascript) in terms of sheer number crunching. While I now think I have a firm grasp of the core language and types, I have completely neglected the interactive, web-app part.
Using past and upcoming prompts I will try to use my analytical ability to extract the core idea behind the algorithms, maybe solving the sample input for future puzzles to have the main tools "to reproduce the steps" and being able to express them through graphics and interaction.
Today is Saturday, so I am happy that I don't force myself through yet another time consuming puzzle, but instead take my time reflecting my journey and let the experience germinate inside of me to come up with cool ideas to learn the remaining features and ecosystem of the language in the future.
Some of the Ideas
- Create a little randomly generated top-view SVG boat with a button, that when pressed travels down the page keeping track with a measurement the record time and tracing the path of the boat after each attempt
- Plotting the nodes from the desert ghosts on a 3D Grid where the first letter is the X-axis, the second letter the Y-Axis and the last letter the Z-Axis. And whenever a ghost overlaps a Z-Node it starts to materialize, making hopefully for an emergent experience.
- Plotting the numbers and symbols of the gear problem, that when you klick on "*" a gear appears with two levers adjusting the adjacent numbers in operating some form of engine.
- Making a typographic cloud out of the number puzzle from day 1, extracting all the digits and spelled-out versions. Determining their size in terms of their frequency.
I will dedicate my next days to other priorities and will sadly not be able to follow the advent of code punctually anymore.
So this time, I won't say "see you on the next challenge", but instead "see you on the next step of my journey!". I will keep making posts about my thought process and the development of the interactive interpretations (when I find time) but probably not on a daily schedule.
Cheers!