• 0 Posts
  • 231 Comments
Joined 2 years ago
cake
Cake day: June 20th, 2023

help-circle


  • The idea is to develop keen instincts so your code comes out nice on the first try, without needing rewrites. To do that, you have to start out by rewriting a lot. You are after a fluency of style, which is somewhat independent from deep thinking. Compare being a profound musical composer who sweats blood over every note, with being a competent (not necessarily great) improviser who, given any request, can bang out something listenable immediately without too many bum notes, without thinking too hard.

    Ideally you want both. Computer science education gives you the profound compositional knowledge. Improvisation needs lots and lots of practice at the basics. So code a lot. It makes everything else easier.




  • Ermph, this is C specific and shouldn’t be extrapolated to other languages. Since you’re writing in C you are trying to show your chops as a low level programmer. Therefore, showing that you know how to implement a hash table is worthwhile, so you should do it yourself. You could add a comment to the code saying something to that effect. Again that’s just for C. Implementing your own hash table in Python instead of using the built-in one would be crazy. Implementing one in C++ instead of using the stdlib or some other one would have to be carefully justified.

    I do have to wonder what you are up to in this day and age, pursuing what sounds like junior level C projects. I would say that whole approach is something of a dead end. You’re more employable with higher level languages than with C these days, I would have to say. Or if you write something in Python that incorporates some C functions that you write using Python’s C API, that shows you can operate at multiple levels at the same time, which is even better.


  • I think it is best to have some understanding of how an OS works, and how Python works, before asking whether you can write an OS in Python.

    Python is basically a scripting wrapper around a bunch of C functions (“builtins”) and there are means of installing additional C functions if you need them. Without any of the builtins, you really can’t do much of anything. For example, “print(2+2)” computes the string “4” (by adding 2+2 and converting the result to decimal), then calls a builtin to actually print the string on the console.

    For an OS, you will need quite a few more C functions, mostly to control timers and task switching, the main functions of an OS. Given enough C functions though, in principle you can write an OS.





  • I don’t bother with a proxy host or with LetsEncrypt, though I guess you could use LetsEncrypt perfectly well. Back when I was doing this, LetsEncrypt didn’t exist and you had to actually pay for public certificates, so using locally generated free ones saved money. It also had a minor(?) security advantage in that if the private server key somehow leaked, it wouldn’t let people impersonate our internet domain.

    For the private CA I simply used the crappy CA.pl script that comes with OpenSSL or did at the time. There are much better ways to do it, especially at any kind of scale, but CA.pl sufficed dealing with a few development machines.






  • Writing a book when you don’t know the subject matter doesn’t sound likely to result in a good book. Even more so for a language like Rust, which (short of Haskell) is the closest thing to a mainstream language that is informed by a lot of pointy headed PL (programming language) theory. A book about programming in Rust doesn’t have to go into the theory per se, but the author should be familiar with it, just like someone who writes an introductory calculus or statistics text really needs a much deeper mathematical background than the book itself will convey.

    If you want a Rust-related hobby, first of all, why not do Advent of Code in Rust, or otherwise make a study of Rust? And then if you’re interested in PL theory, that’s another area to study. Harper’s book PFPL is a good place to start: https://www.cs.cmu.edu/~rwh/pfpl/