100 Favorite Programming, Computer and Science Books

Peteris Krumins, of the Browserling fame, has a series of blog posts on his top favorite programming, computer and science books.  It’s an excellent selection of titles, from which I’ve read only a fraction.  Good timing for the Christmas shopping too.  Here are the blog posts in the series so far (5 books per post):

Even with the 30 books mentioned so far, there are new things to read and learn.  I wonder how many of the notes to self I’ll have by the time the whole 100 are listed.

Things to learn about Linux

Julia Evans has this amazing list of things to learn about Linux.  I think, it doesn’t matter how new or experienced you are with the operating system, you’ll find a few points in this list that you either know nothing about or know very little.

Personally, I’ve been using and administrating Linux systems for almost two decades now, and my own knowledge of the things on that list is either very limited or not existing.  Sure, I know about pipes and signals, but even with basic things like permissions there are some tricky questions that I’m not sure I can get right on the first go.

Some of the topics mentioned are simple and straight-forward and will only need a few minutes or a couple of hours to get up to speed with.  Others – are huge areas which might take years, if not decades (like networking, for example).

I look forward to Julia’s drawings covering some of these.

 

Julia’s Drawings on Programming

Julia Evans, who blogs about her programming endeavors, now also draws simple, note-like sketches on a variety of the computer and programming related subjects.  Those are great as kick memory refreshers or reminders for “I wanted to learn more about that” kind of things.  Here’s her take on pipes, for example:

pipes

Worth an RSS subscription!

Vim 8.0 Released!

The team behind the greatest text editor of all times has release the new major version – Vim 8.0.  It’s the first major release in 10 years!  Brief overview of the changes:

  • Asynchronous I/O support, channels, JSON
  • Jobs
  • Timers
  • Partials, Lambdas and Closures
  • Packages
  • New style testing
  • Viminfo merged by timestamp
  • GTK+ 3 support
  • MS-Windows DirectX support

For a more complete list and details, have a look here.

The TL;DR summary: Vim provides a lot more power now to plugin developers, so we’ll be seeing a boost in both new functionality and old ways getting better.

Here is a mandatory Slashdot discussion with your usual Vim vs. Emacs flame.

P.S.: Emacs has recently released a major update too …

What is the shortest and most effective code ever written?

Quora runs the question, that by now has plenty of awesome answers.  But this one is my favorite so far:

The ‘true’ program in Unix from the 1970s was an empty file. The shell interpreted that as a shell script which ran and resulted in no error status, so the result was zero. Zero is the shell exit code value that represents ‘success’ or ‘true’ within if and while clauses.

So, no program can be shorter than that. And it was entirely effective at meeting its specification.

False was much longer, being

exit 1

Once lawers got in, both programs were sullied with plenty of copyrights. BSD also eventually established a format for identifying shell scripts explicitly, and those codes got added to the file too. Eventually, ‘true’ stretched to hundreds of bytes of copyrights on top of the shell script format intro code. Now, annoyingly, Linux and Mac OS have made it a compiled binary program. In Ubuntu, it is a 22K binary with an 18K code size. Ugh.

At least writing a correct C program for true can be very short. It is one of the few C programs that should require no #include files, and can be simply:

int main(void){return 0;}

Of course make sure to add lots of copyright notices.

An Interview with Brian Kernighan

An Interview with Brian Kernighan

John Wait: Many popular newer programming languages trace their roots to C. Unix has had direct and indirect influence on many newer operating systems. To what do you attribute the longevity and popularity of both C and Unix?

Brian Kernighan: Both C and Unix strike a very good balance among expressiveness, efficiency and economy of means. That means that they are a good base to build on: the good ideas are worth stealing and the efficiency sets a standard of comparison.  It’s also easier for people to make a transition from something familiar than to make a big change, so a language or system that has significant elements of familiarity is more likely to be a success.

Via LWN.