• 3 Posts
  • 85 Comments
Joined 1 year ago
cake
Cake day: July 24th, 2023

help-circle
  • I feel like all the points you raise could be replied by : if you do not like it, no one is forcing you into doing it.

    It is my understanding that people do this for fun - to take the occasion to get into a new language and/or exercise their problem resolution skills.

    Personally, although I love coding (it is a passion), after a whole day of coding I do not feel the energy to partake in a coding event. And during holidays I am busy doing other stuff. So I do not participate in the Advent of Code. But I am still glad that the event exists for people who enjoy it and have the time for it








  • There are techniques like abstract interpretation that can deduce lower and upper bounds that a value can take. I know there is an analysis in LLVM called ValueAnalysis that does that too - the compiler can use it to help dead code elimination (deducing that a given branch will never be taken because the value will never satisfy the condition so you can get rid of the branch).

    But I think these techniques do not work in all use cases. Although you could theoretically invent some syntax to say “I would like this value to be in that range”, the compiler would not be able to tell in all cases whether it’s satisfied.

    If you are interested in a language that has subrange checks at runtime, Ada language can do that. But it does come at a performance cost - if your program is compute bound it can be a problem


  • Why would you have to choose between tests and compiler checks? You can have both. The more you have the less chance of finding bugs.

    I would also add that tests cannot possibly be exhaustive. I am thinking in particular of concurrency problems - even with fuzzing you can still come across special cases where it goes wrong because you forgot a mutex somewhere. Extra static checks are complementary to tests.

    I think you can write “unsafe” code in Rust that bypass most of the extra checks so you do have the flexibility if you really need it.



  • When I first got daily access to internet (back in 2009), I got curious about how programs are built. Like, if I wanted to make my own application, what should I do?

    I googled something along that direction and it linked me to a famous french website for learning programming (site du zéro) where I learnt C language.

    After the course I made a 2D Snake game with SDL2. How naive was I to think I could write it in one go without testing anything in between! I scrapped the 1st attempt because it was a disaster and randomly inserting/removing * was not helping.

    I started again from scratch, testing in smaller steps, and I really liked it. After a couple of weeks I had my Snake game working! I was so proud of it that I showed it to my mom. I do not have the source files anymore but I still have the binary somewhere

    Afterwards I sticked with it and continued programming - I was back in school without much access to internet so I programmed on my TI-83+ instead. Eventually I pursued computer science studies then a PhD… It got me hooked real good.



  • About your specific example I find the Rust code to be much simpler to understand than your equivalent Golang code…

    To understand the Rust code I just have to understand each case. 0…1 returns false. Ok. 2…n returns true iff no divider was found between 2 and n-1. Ok the function is primality test

    The Golang code is much harder. I do not take into account the division by 2 because its not part of the original Rust code.

    A for loop starting at 2 that look for divisors. Then the return value > 1. Why is it OK to just return value > 1? Oh that’s because the loop did not return. Why did it not? Either no dividor was found or we did not get into the loop at all. If value > 1 we have the guarantee the loop was executed so it’s really a primal number. If value <= 1 it is either 0 or 1 which are not primal. Ok, so we return value > 1.

    I think people dislike Rust because it has a lot of functional languages constructs and people are not used to code in functional languages.

    Whatever you fight in Rust you end up saving time by avoiding runtime bugs that would have plagued your productivity anyway. I’d much rather have a language with a hard entry but with solid and maintainable code rather than fast-written spaghetti that no one knows what it is supposed to do 2 years after.



  • I love that software. It’s so simple - no need for much clicking you can do a lot with just the keyboard.

    I love particularly how there is no bloatness. Creating a new task is as simple as pressing ctrl+a (or shift+a), typing the name and pressing enter. Creating a subtask is just pressing ‘a’ on the task and type the name.

    There is jira integration so I can import my jira tickets and make my own local subdivision in smaller tasks that do not need to be thoroughly described or shared. The status of the jira tickets can be updated from the app directly

    There is a pomodoro plugin that works well minor some bugs (don’t ever choose “close” when prompted to skip the break or go back to work)

    Wonder what did I do last week for writing a summary? Just look at the history in the app

    I really love it and can only recommend it for personal planning



  • The Christian Bible’s Matthew 24 had a prophecy that is about to become historical-fact, in the coming decade.

    Here’s a decent version of it:

    https://www.biblegateway.com/passage/?search=matt+24&amp;version=AMPC

    That bit around verses 15-20 is the pertinent area.

    Simply wait 1 decade, and see: if Israel still exists, as a country, in 2033, I’ll eat a hat.

    The nice thing about prophecies is that they can never be proven to be false. Indeed, one would have to examine the future to prove it wrong. Which is either impossible or unrealistic.

    Me too I can make a ton of prophecies and claim they will be eventually right. I will never be wrong.

    Let’s see. Let me prophesize that:

    • The US will cease to exist
    • We will encounter aliens
    • See where you are living right now? Eventually, it will be filled with lava.
    • See where you are living right now? Eventually, it will be flooded with water.
    • A giant comet populated with nyan cats will crash on Earth

    However, you can be sure that in 2033 I will come back in this thread and have you eat a hat. Marking the date and the link in my calendar. If lemmy is still alive, that is



  • Yeah exactly. Here follows some spoiler for those who have never played Dark Souls

    spoiler

    Once you escape from the asylum you can get to the catacombs right away. I did that and got my ass kicked so I figured I was not supposed to get there first.

    So I went up towards the upper Bell. Which I did ring. But then afterwards it looked so clear to me, especially as you unlock the shortcut to Firelink : yes ! The other bell must be down in the catacombs! So I headed there.

    I struggled a lot to handle all the monsters. I kept going until the valley where you face skeletons on wheels and the black Knight. I figured “no something isn’t right, I don’t think the game is supposed to be that hard. There are tips on the ground about using a divine weapon but I don’t even know how to get one.”. I read a post online and figured I went the wrong way… Once again

    Once I fixed that and went the right way things got significantly easier. I heard how some players literally got down to the catacombs from the get go and somehow managed to get to the boss door only to be met by a yellow fog that can’t be passed, and how they struggled to get back to firelink without getting killed…

    The bottom line is that I think you need to have someone telling you where not to go to really enjoy Dark souls. Because its not obvious whether you die because of your incompetence or just because you were not supposed to be there right now. I wouldn’t say its bad design though - but it’s not for everyone for sure