8
kiki
2y

If you’re a developer who seek professional growth, there is no better way than learning other languages, even if nobody really uses them.

Pick a language and spend a weekend reading tutorials and most importantly writing code in it, something like game of life, sudoku solver or todo-list app.

The more alien the language feels the better. Try Clojure, OCaml, Smalltalk, Prolog, Erlang, and also weird esoteric languages like Piet.

Writing code that operates on alien concepts you see there is the quickest way of learning that concepts and reusing them in whatever language you’re making money with. Your professional growth will be immense.

Comments
  • 3
    Another great way to improve your general understanding: write an interpreter.

    You don't have to go full-on and make a C++ compiler, just something that can, say, parse basic arithmetic statements with operator precedence.

    There are loads of tutorials out there, and once you understand the process of converting a high-level language, into an AST, into a series of instructions - the steps being conceptually the same in almost any language you encounter today - you'll know better what it is you're asking a computer to do at any given moment, why some syntax is less efficient, why there's really no point boasting about how 'fast' non-compiled languages are, and why it doesn't really matter that they aren't.
  • 3
    Speaking of programming languages and interpreters:

    https://craftinginterpreters.com/

    Gotta love languages… Unless I change jobs, I’m unlikely to use anything but PHP, C#, TypeScript and a bit of *shudders* Python in mine, but gosh the best pastime is getting a grasp of yet another new language and learning from it: Clojure, Crystal, Elixir, F#, F*, Haskell, Nim, Pharo, Scala, V…. so much fun, and so many ideas for developing a hobby language as well!
  • 1
    @MM83 absolutely true
  • 2
    @100110111 That link looks ideal, cheers. I'm currently a bit obsessed with 8-bit machines, they're so basic and so memory-limited that even compiling C down to bytecode would be wasteful - but whilst writing assembly is fun in a masochistic way, it's not something you can come back to after a few weeks away. If I could design a good high-level-to-8-bit language I could save up to tens of hobbyists minutes of their lives.
  • 1
    @MM83 well, why don’t you give it a shot? Sounds like a fun project
  • 0
    @100110111 I have been thinking on it, but it's hard to even know where to start. CRT-beam triggered interrupts as a fundamental mechanism, per-operation precision, the entire thing is basically alien to modern concerns...if nothing else it makes you realise how fucking incredible the engineers of that time were.
  • 1
    @MM83 I'm still struggling with comprehension of how that circular magnet affects the beam angles that precise. CRT is magic, <1ms latency is something else
  • 1
    @kiki yeah, it's really quite incredible, and for something that was invented in the nineteenth century. I've got two old CRT TVs here, neither of which work anymore because I took them apart without really knowing what I was doing...I was tempted to see if I couldn't manually get them doing something oscilloscope-y by feeding current into them, but I can testify that a mains shock isn't something you really want to/can go through more than once, and you need to fuck around with some major voltage to get them going. Gonna have to stand on the shoulders of giants and stick to my C64 emulator, I think.
  • 1
    @MM83 also, crt displays true black just like oled. It's like oled but with <1ms latency (the main problem of oled apart from pwm) at the cost of being huge and hurting your eyes
  • 0
    @kiki it's drifting out of my area of expertise but I can't imagine the eye-hurt is any less than with any kind of LED display, I figured it displayed true black as in 'not being lit', rather than 'well, it's not as light as the retina-burning rest of it'
  • 0
    @MM83 I do the simple test every time I choose a LED lightbulb: I just take my phone camera, set it to slo-mo mode and look at the bulb through it. If it's still stable without blinking, I buy it, but if it blinks like crazy, it'll probably give me a headache in like three hours even if I don't see the blinking with a naked eye. The same applies to any light sources. IPS monitors never blink, I think that's because they dim with DC rather than PWM, because their backlight is the literal lightbulb behind the dot matrix. Oleds sometimes blink, it's always due to inferior implementation of PWM. Modern oleds tend to use DC dimming just like IPS, they don't blink and cause no strain. Matter of fact, samsung galaxy users from galaxy 2 to I think galaxy 5 was saying that samsung screens have "oversaturated colors" and their eyes hurt, but that wasn't about colors, it was about poor PWM.

    that being said, CRTs blink like CRAZY. It's pure madness. Stripey extravaganza of headache
  • 2
    @kiki I recently made a pong game with an Arduino and a really dodgy knock-off OLED import display, basically had to just uncomment lines from the, uh, library, until I got it more or less working. The four rightmost columns still display garbage, but it's the best I could do. Nothing a strip of black electrical tape can't conceal. That's about the extent of my experience with using them, but as you say that, I also filmed it in super slo-mo, just out of curiosity, and I don't see any refresh.
  • 1
    @MM83 if you don't see it, it's because the pwm in that display is okay :) though it doesn't mean that pwm is okay in _every_ display of that same batch. Also, the larger the display, the harder it is to have a good pwm, because in oleds the power you need depends on the area of the display, as every pixel consumes electricity. It's easier to generate clean ~1W than clean ~100W.
  • 1
    @kiki yeah this application isn't exactly taxing it in the main, most of the screen is dark with Pong - you can see that it struggles to update the entire screen with the flashing 'player X scored!' part but I just assumed that was down to the library I was using, or the Arduino being a microcontroller with ideas above its station, it's clearly an issue with data transfer over hardware constraints. A CRT is limited by the amount of phosphor on the screen but if you upped it, it would accommodate it without you needing to modify much, same as the sample rate of vinyl is basically the Planck time minus every shit component in your hifi. I find something neat in how digital is forever playing catch-up with the analogue version devised a century before.
  • 1
    @MM83 ...and playing catch-up, it discovers psycho-hacks that rely solely on how our brains work, and end up being better than analog counterparts while losing in numbers. Take psychoacoustics for example. To me, that's just astounding. Long live digital, the information that doesn't depend on its medium and is truly invincible. Sk8ter boy by Avril Lavigne will sound just as good after a century, not a single crackle or pop. Claude Shannon is a genius and my personal hero
  • 1
    I think a more important aspect is understanding some fundamental concepts.

    Like recently I read some stuff composite indexes in MySQL...

    Language, afterall is just an expression, just like actual language (not programming languages) are, a tool to express.

    What to express is more important to know.
  • 0
    @BugsBuggy Even a year ago I would agree, but right now I can't deny that sometimes understanding doesn't matter. At the very least, the expertise itself can be formed through some ways I don't yet understand.
  • 0
    @kiki I think theoretically reading does not always help. I could understand because I was working on a high QPS API, with query params, multiple tables with relationships.

    So, after modelling the database I had some confusions, like, whether to create composite indexes or multiple indexes... Hence the knowledge was relatable.
  • 2
    @kiki also, a lot depends on what level you're on.

    I just think after 2 years of professional experience, churning out a lot of code, switching to Python-backend from Android-dev and then to Java-backend, I had enough confidence to say that writing the code is not going to be a problem.

    For someone who has churned a lot a database models, they'd say otherwise. They'd want more expertise on programming languages.

    But bottomline being, languages, tech stacks etc come and go, the concepts stay.
  • 2
    @BugsBuggy the last thought of your last comment is literally my motto that I expressed several times in my essays and talks.
  • 0
    @kiki essays and talks?
  • 1
    @BugsBuggy https://miloslav.website/blog

    talks are all in russian, sorry
  • 1
    I learned ruby just because...
    Does that count?
Add Comment