HN user

stallmanifold

24 karma
Posts0
Comments14
View on HN
No posts found.

In my experience the biggest entropy generator with browser fingerprinting in system fonts. I ran Panopticlick against both my Firefox browser instance (running Ghostery, uBlock Origin, and Privacy Badger) against a Chromium instance running no plugins and both cases yielded 17 bits from browser fingerprinting. It makes me curious whether system fonts are a major source of privacy leakage.

Goodbye Joe 7 years ago

Joe Armstrong's passing is tragic. I never him, but he also inspired my own thinking as a software engineer. Even though Erlang is a language from the 1980s, it still feels like something from the future. I have only ever appreciated Erlang from afar, but it seems to embody what programming languages should be for building complex software systems. I enjoyed his talks quite a lot; he always brimmed with passion and life which I hope to maintain at his age. He was never old mentally or in attitude, which was infectious.

For the purposes of learning antenna theory at the level of Balanis's 'Antenna Theory', I think Jackson is severely overkill. It's also written for physicists rather than engineers, so the emphasis is different. On the other hand, Jackson's problems are quite excellent. There's all kinds of interesting stuff in there that is hard to find in most other places (plasma physics and MHD come to mind). Something like Griffiths or Cheng will be just right. I studied Computer Engineering in undergrad, and worked through several books on electrodynamics at the time (and did several courses in EM), including Jackson. I didn't study RF, but my classmates in RF were all using Balanis for their RF and Antenna design courses, which clearly comes before the level of EM where most people are working (suffering?) through Jackson, or Balanis's 'Advanced Engineering Electromagnetics'.

Thank you for your contributions to the Rust ecosystem over the years! I've tinkered with many novel programming languages over the years, and most of those come and go, but Rust is one of the ones I stick with. Rust is the first programming language I have encountered that shows that linear (affine) logic is more than just another PLT or mathematical logic curio that is a practical tool for good software engineering, and that systems programming can have the trappings of type safety and ergonomics just like its application counterparts. Best of luck on your next transition.

I also recommend Dawkins' follow-up book, "The Extended Phenotype." Dawkins' most popular writing may be on atheism and the critique of religion, but I think his greatest contributions were really found in this book plus The Selfish Gene. Though as a caveat, "The Extended Phenotype" requires some more technical sophistication in evolutionary biology than Selfish Gene.

This is one reason I wonder whether there is room in the world for a better C. Low complexity programming languages with a simple machine mental model along the lines of Go (or perhaps in future, Zig and Jai?) for doing systems programming, with a strong static type system, and a rock solid build system. Early in my career I did a lot of bare metal and embedded systems programming and the one thing I miss about C is the predictable assembly output. I primarily use Rust for this purpose right now but I wonder if there's a place for something simpler for doing really low level stuff (i.e. programming hardware directly, device drivers) that's better than C.

EDIT: grammar.

I played Magic for about 12 years (1994 - 2006), and played competitively for a good chunk of that time. I am absolutely mind-blown at how expensive the old stuff has become. I remember when moxes were $100 cards and dual lands were $5 cards, compared to now. I played a lot of vintage back then, and while it was an expensive hobby, it was still possible to afford it with some diligence and effort. The best part about magic was that it simultaneously doubled as both a collector's hobby and a competitive outlet for me. The collecting aspect of it is too expensive now (for my particular tastes), but I do miss having a competitive gaming outlet. 5 color control ('The Deck') is still my favorite deck in the history of the game, even though it stopped being competitive in vintage around 2003. And to make things more fun my favorite variant of it is still Brian Weissman's creatureless Jester's Cap build where you pick your opponent's deck clean with Jester's cap and disruption and then either deck them with Stroke of Genius, or burn them out with Kaervek's Torch to finish.

How many software engineers had to study IEEE floating point in (any amount of) detail? Part of my formal education is in computer (hardware) engineering, and we studied hardware number representations and manipulations quite extensively in my microprocessors courses, so I developed some facility with the topic once upon a time.

I did one of my undergrads in mathematics. For me the primary benefit of studying pure mathematics was that it greatly improved my ability to think clearly. Mathematics more than almost any other discipline (physics and philosophy are on par with maths here) has the power to remove conceptual clutter, teach you to capture the essence of a problem, and be a more careful thinker. I've always been a first principles thinker, and maths made me a much better one. There is a night and day difference in how you think between the beginning and end of a good undergraduate Real Analysis course.

Applied to software engineering, it (indirectly) improved my abilty to understanding what a piece of software needs to do and why it's there. It also improved my ability to discern what level of abstraction is appropriate to the problem at hand, and figure out what questions to ask. In short, mathematics changes the way you think in a very powerful way. The precise contents of what you learn in the subject aren't necessarily applicable to everyday software engineering outside of a few areas, but the way of thinking is eminently so. For a personal example of where mathematics does come up in programming in a direct way, I do hobby graphics programming, which necessitates fluency in elementary linear algebra and benefits from grasping vector calculus (if you want to understand how light transport works and where physically-based rendering algorithms come from).

Remember that software engineers have two skill sets: programming/development skills and domain knowledge. Many of the comments here are focusing on the former, but consider the latter as well. What kinds of problems do you like solving? What (business) domain(s) do you find interesting? Start thinking about that over the next few years and acquire knowledge of the business domain(s) as well as leveling up your technical chops.

I would still do software engineering if I could do it all over. I came into SWE from the EE side. I studied both mathematics and computer (hardware) engineering, with a hefty CS minor in undergrad. I think EE/CE is a tremendously intellectually profitable (if somewhat unconventional) preparation for a career as a developer. You get an intimate understanding of how computer hardware and low-level stuff works that is hard to get in a CS program. I still find it gave me a toolkit for thinking about software problems that most of my colleagues don't have.

I echo the sentiment that programming doesn't really exist on its own. Most great software engineers really have two skillsets: the programming skills and domain knowledge. Rich Hickey remarks on this in one of his ClojureCon talks. One thing I think I would do differently is to find one or more domains to apply programming to sooner in my life. I'm about eight years out of school and only starting to figure out the answer to this question myself.