Hacker Newsnew | past | comments | ask | show | jobs | submit | lew89's commentslogin

I'm not professional physicist, just trying to understand modern physics, partly as a Koan, partly as a part of philosophical endeavor. I think that my view is similar to yours. I'd say that modern physics really needs vast refactor. To my amatheur mind, it's just a bunch of equations proved to be useful; however variables named after well defined and comprehensible terms, seems to mean nothing except that they seem to fit those equations (so they are not properly defined). This is really situation I never met studying any other science. I think there is something wrong with assumptions. That's usually the case when I'm caught in paradoxes or my code works strange. :)

Especially interesting point I'd love to read more is that "Because QM is a (the?) generalization of probability theory to involve complex numbers, whose squared absolute values are probabilities. It includes probability as a special case."


It seems similar to my situation. Probably I'm not as praised as you are and people do discuss with me, however everybody else seem slow and I feel I don't belong, because my thinking is totaly different and I can't do much about it, because verbal arguments seem not to work well (performance does, but it probably lead to problem you've described, that people stop to argue and take your words for granted). I practically never spend full time on working, I have a lot of time to learn which is awesome, but nevertheless it doesn't feel right.

I think that it's partialy right what @ctvo said "above average developer working at below average company" — that's why I'm looking for a new job more carefully. On the other hand, I think that it's not all in my case. I just happen to work as a programmer, it's just tiny part of my interests, so that most of the people seem very narrow minded (I don't judge them, it probably works for them, but not for me).

Maybe in more sophisticated company I would find better matches. On the other hand, as I don't care too much, my current situation has its advantages, because I can decouple self-development from work. This is good because I have some values I would like to implement and it seems they can't be achieved inside this system (because it's too specialized and my approach is too holistic), I need `f*k you money` so that I can act freely. For now, alienation at work is ok, as I'm quite introverted so I prefer to spend time alone in nature (that's why I work in countryside) and just from time to time I go to the city to party with my friends or play some games with my neighbour.

So along with "look for a new job", there is an "adapt" option. Just relax and think out of the box how to use this situation. You can reduce significance of your work and do stuff you please. It's ok to do this, because you are 10x dev so you need only 1/10 of your time to match your company. The only question is if you have what to do with remaining 9/10. :)


Nice and clear article. I like an idea of looking at quality of the process and not only the product. It was pleasant to read.

I didn't like that C itself was missing, because C is still my language of choice for some tasks and I still use it because I'm happy about it, I don't feel I would need any of its competitors. Maybe if this benchmark included C it would be some argument to give them a try. So I decided to do it for you.

It took me 30 minutes, only change is that I don't check if file is binary, I guess. I liked that I was doing it in C because I know it and I'm comfortable with it. Few checks in man and everything's clear. Only disadvantage of C is that it doesn't have standard API for directories, so my code is only for POSIX. Here's the code: https://github.com/BartekLew/dumbgrep

The other thing are sources you've done. They are almost the same (it'd be nice to see the more feeling of the language, idiomatic code, etc.) and I didn't like reading them at all, not a clean code and all are longer than my C code.

Another thing is that C has very narrow application nowadays. A benchmark should be focussed on them and not on generic algorithms.


This seems to be missing a return in the NULL check for handle in the match_file function. This leads to fgets being called with a NULL pointer, which I don't know what it does, it may be OK.

I would argue that this is why a "better C" can be useful, it's the kind of error that would be much harder to make in rust.


There is missing NULL check, but it doesn't crash, because the function would get nonexistent filename only if filesystem driver would do something strange (or file would be deleted just between readdir and fopen). xD I also noticed, that I don't close files and directories. Not a big deal, because fully functional and 100% correct program wasn't the goal here. :)

EDIT: Actually fopen would return NULL when file is not readable. My bad. Anyway, such problems are trivial to debug.


I like that I don't have to spend the time debugging trivial problems like these in Rust though. The compiler catches them for me, and I get more time and brain power to spend debugging nontrivial problems. It adds up.


Everything is matter of price. Such an error is nobrainer actually, because just before I get an error message. If I don't know that yet, I run on gdb and everything's clear. Couple of seconds. How manyof them I have to do to ballance learning a new language(and I'm not sure if I like it eventually)? If I was a system software developer, that would probably be a good choice. I program mostly in high level languages, so maybe not. :)


Maybe it doesn’t matter for small programs, but probably in large programs tracing the control flow would be non trivial, so, as the parent said, over the lifetime of the program it would add up


Is there any language that can save you from control tracing problem? I think that well made architecture is only solution. In fact I would say that C is easier in that respect (if you don't use goto), because all control flow is explicit. In other languages you have exceptions, polymorphism, implicit constructors, destructors (and their order in case of inheritance, templates, etc.

C is dead simple in that respect. If you can't write right concise code no language can help you. However of course, as C is more verbose it is more challanging to structure code well. And to some extend other language can help you move the point where control flow becomes a problem.

The biggest problem in C programming for me is memory management, but maybe it's just a lack of experience. Certainly C++ is convenient with smart pointers and automaticall called destructors.

Anyway, i didn't consider big project a scope here. I wouldn't write realy big programs in wine. I would try to create as small independent parts as possible.


It's not just a lack of experience-- Microsoft developers, Chrome developers, Mozilla developers, all have problems with memory management :) https://www.zdnet.com/article/microsoft-70-percent-of-all-se...


>In other languages you have exceptions, polymorphism, implicit constructors, destructors (and their order in case of inheritance, templates, etc.

Of these, Rust has only destructors :)


It's trivial to fix if you catch it early, and perfectly fine for a tool you run yourself. However if the problem is discovered two years later in production, there will be a forth-and-back until you get at the correct error message, possibly downtime, and if there isn't one you'll be instructing them how to install debug symbols for libX.


This is a very good point. Good testing, good programming practices, good logs are necessary. And it's not only about C. It's not so hard to do better than in Java. xD


Such an error is nobrainer? Yet you deployed your code with several of them?

Understandably you didn’t put your whole effort into a small code example in a HN comment, but a language that allows one to do so without any errors would be big productivity and safety gain.


Of course, in the program like this. It's quite obvious that for a bigger program it would be much harder. I wouldn't use C for a big monolith system or if I had to, I would put much effort in diagnostic features.

I don't write professionaly C code. I use it for my purposes so debugging is easy. I agree that such a problem in a bigger system whithout ability to reproduce environment and debug would be very nasty. However that is matter of context. In bigger system it's more reasonable to buy more safety for price of simplicity, because I doubt any of competitors in the benchmark is as simple as C.


> Not a big deal, because fully functional and 100% correct program wasn't the goal here

Wasn't it? It reminds me about the old article by Strostrup on c/c++ for beginners (I seem to link to this quite often, apologies if it gets repetitive):

https://www.drdobbs.com/learning-standard-c-as-a-new-languag...

One point of using c++ over c is that it should be easier to get a program that is in fact correct - regarding things like closing files etc. (that said conciously leaking some recources ("do and die") could be considered idiomatic c i suppose).


Yes, I consider that memory management is the biggest problem with C. Always the question is what is more valueable to you: simplicity or memory management.


Curious. Did you use proper strings or null terminated character array?


Sometimes I used old computers because they appeared functional enough. Not so long ago I used a computer from late 2000s and it was a quite normal user experience on Linux (on lightweight window manager of course) with a small exception of web browser. Amount of scripts and data on modern sites caused problems, made whole OS hang often. If only JS was turned off, no problem.


Coincidentally i'm writing this from my late 2009 iMac. It is already more than a decade old but i think it is a perfectly fine computer. With the latest version of Firefox every site works.

The main issue it has is that it is a bit sluggish but i think an additional 8GB of RAM (it has 4GB) and perhaps an SSD would make it feel perfectly fine.

Sadly Apple doesn't seem to agree and the last version of macOS to support it is 10.13 - which itself isn't supported anymore as of December 2020 (just ~3 years after it was released, which is kinda mad IMO). Most things seem to work fine so far (most open source applications seem to support even older versions anyway), though Homebrew (which i used to install a couple of command line tools) does warn that they have no official support for it and some stuff may break (fortunately that didn't happen).


I'm using an early 2008 MBP with Debian Buster with 6GB of RAM and SSD. The nvidia-340 driver is still supported so Youtube works nicely. With mbpfan it does not overheat. Touchpad and suspend are working pretty well. The Amazon website with Firefox is where I get warnings about a script taking too long.


First you have to choose your flavor. If you want to use JVM, probably clojure. Otherwise Scheme, Common Lisp and Racket. Scheme is rather minimalistic, Common Lisp is very functional and Racket is the most modern one I guess. I ended up with Common Lisp and I rather don't look for change. SBCL is implementation I use and like it. Probably the best one and quite portable.

Emacs seems the best choice for Lisp, since it is scripted in Lisp and it's best adapted to it probably. However when I started, I was already so used to vim that I kept going with it. Maybe not the best option, but it's ok, maybe just a little bit more effort to automatize some stuff.

If you choose Common Lisp, this is probably the best book for start: http://www.gigamonkeys.com/book/ . Anyway be prepared, Lisp is not easy to grasp at first, but as soon you do, you will probably love it and appreciate way it is. :)


> Lisp is very functional

just to point out i believe 'functional' here means 'has lots of functionality' not 'more suited to functional programming' - in that regard scheme (and racket) are more 'functional' than CL


Emacs is probably the best editor for Lisp, but we have other good choices nowadays (progress!!): SLIMA for Atom, 2 VSCode extensions, Vim of course, Jupyter notebooks, and more: https://lispcookbook.github.io/cl-cookbook/editor-support.ht...

Note that getting started with Emacs, Lisp, SBCL, Quicklisp and Git is possible in 3 clics thanks to Portacle (http://portacle.github.io/)


Amazing, just amazing. Thanks alot. I would only suggest author to set og:image in your pages. When you share it on social media no image appears, you know how does it affect spreading, right? :)


For me, the biggest boost lately was Nassim Nicholas Taleb: Black Swan, Antifragile. He's a real philosopher in a sense that he addresses real world problems instead on messing with theory. He's an insightful practitioner who builds proper terms to describe phenomena he observes and follow consequences. For me, his books were not only very inspiring because of its messsage (not popular, but seems very true, using terms he proposes contributed much to my understanding of the world), but set a good example of forming a good base for finding out stuff. He's inspiring, because he has similar interests to me, especially cognitive biases and he shows with his success that you can refuse to do bull*t people do nowadays and be successful. Plus, he's much into Probability Theory, so he's a good choice for an engineer who prefer mathematics over more social stuff.

I would also recommend The Structure of Science Revolutions (Thomas Kuhn), very important book to understand how science works, what are its limitations, how should we treat scientific facts. It also show very nature of learning about world (it's not lineary incremental like most people think). It also emphasize that there is always quite a lot of dogma in science (you need some assumptions that can't be really proved right, only wrong if you dwell on it and eventually fail). If you are interested in modern science belief system and what are stuff it can't explain (according to Kuhn, any science paradigm has smaller or bigger blind spot), it's quite well explained in The Science Delusion by Rupert Sheldrake.

If you are interested in nature of non-linearity of learning, what were steps in forming human's worldview, I think Oswald Spengler's The Decline of the West make a good point. I can't say for sure, because I have only started (it's very long, 1500 pages), but I definitely like the guy. :)


I'm not sure why this comment is getting downvoted. I have read a lot of Nassim Taleb and completely agree with your comment.

He is a modern philosopher with really valuable insights about how to navigate the world given all of our biases and inability to accept the role of uncertainty in just about everything we do.


I've already seen that 3-4hrs/day is much more productive than 8. For me. I guess it seems impossible to management people. Sadly it's hard to find employer with this dose of trust. But relax. You go to work, do your job, put 8 in time sheet, quit and enjoy your free afternoon. It works for me (probably for any skilled engineer). Just think about it, who's gonna fire you for good results? I wouldn't like to work with this kind of fools, so who cares?


The only thing I can share is my experience with Thinkpad E130. I've got it for about 3years and I'm really happy about how it's working with Arch Linux. I remember I had a little problem with installing bootloader (EFI), but now everything's fine except SD card reader (but I've read that there is alternative driver to fix this).

It's totally enough for everything I do: web, movies (OK, very high quality happens to be a problem), music, programming, photo/video editing and even games (Half Life 2, Civilization V and Oblivion are level expected to work very well on high details). I don't know how It would manage with full blown KDE/GNOME desktop though (I prefer terminal+tiling WM). If you don't mind small size (I love it) I recommend it. Really the only thing that doesn't work well is that for some reason shutdown works like reboot so you have to turn of using power button, but who cares If you usualy just swith to the sleep mode.


I find Vim+shell the best IDE i could have. Mates at work are usually surprised that I code in Java using it, but even they admit that it works for me. To be honest, most of needed features can be quite easily implemented using basic tools, only debugging is a little problem, but I'm already working on it. Honestly I like that I implement it myself, I've got time for it at work, I can learn many interesting things, make everything extremely customized.

Except this I use Vim/shell because IDEs usually are so messy, I must look for stuff, use mouse and so much stuff happens implicitly. Probably it's convenient for someone who doesn't memorize well, but I do. :)


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: