< Back to the archive

Like what you see? Subscribe here and get it every week in your inbox!

Issue #26 - September 1, 2019

Here are the top threads of the week, happy reading!

Top comment by waddlesplash

The OSDev wiki can probably teach you anything you need to know about "OS theory" (and practice, mostly on x86): https://wiki.osdev.org/Expanded_Main_Page

Depending on your style of programming, I'd recommend maybe not working on Linux if you are trying to learn kernel development and OS internals.

Have you looked at Haiku (https://www.haiku-os.org/)? We have a very well organized and commented modular-monolitic kernel, and a pretty active development team with a wide range of experience levels. I'm more than happy to help you (or anyone else) learn OS development!

Some example Haiku kernel code:

* "load_image_internal()", which is responsible for creating processes: https://github.com/haiku/haiku/blob/master/src/system/kernel...

* a recent change by me to replace a global lock with two local ones: https://github.com/haiku/haiku/commit/37eda488be1c9fee242e8e...

Top comment by halayli

I feel you need to rethink your goal. it's like you're trying to finding missing chapters from an undefined book.

Try to be around problems that requires a high degree of math skills to solve. let the problems drive you.

intuition is usually built by spending hundreds of hours thinking, eating, and drinking the problems you're truly interested in to arrive to a solution.

If you spend enough time doing this, you'll know exactly what areas you need to inquire about as your understanding to the problem becomes clearer and gaps start to narrow down.

If you don't know what you need to learn you probably haven't spent enough time on the problem or just read the solution which made you feel this way, not realizing that the solution was done by a person that could have spent 100x the time you spent on it and built the intuition you're asking about.

Top comment by realusername

The worst is that just changing the user agent makes everything work.

Top comment by guidoism

Great question! In my fourth decade of life I’m finally figuring out the optimal way to do this myself. I’ve forgotten so so many books over the years that I supposedly read.

Read How to Read a Book: The Classic Guide to Intelligent Reading by Mortimer Adler. (https://www.amazon.com/How-Read-Book-Classic-Intelligent/dp/...) I’ve given this book to a bunch of people on my teams as it also helps with communicating ideas which is vital as a programmer.

The wikipedia page for it is a good place to get an overview of what it’s about. https://en.wikipedia.org/wiki/How_to_Read_a_Book

Since reading it I’ve been keeping a notebook, some people might call it a Commonplace Book, with interesting stuff from the book. I find that I get a lot more from books from the act of writing it down and then reading those notes later when I glance at them while looking something else up in the notebook.

One big big big thing I learned from the book is to not read a non-fiction book like it was a novel. There’s nothing wrong with skipping ahead and finding out what happens later, in fact you should absolutely skim the book first. I end up finishing a lot more books by doing this since so many books aren’t actually worth careful reading. I am able to systematically skim a book including the TOC and index and determine if it’s worth reading carefully. A lot of books are so sparse with ideas that you can get most of them through this method. Only the good books are worth going on to the second and third stages and only the great ones the fourth stage.

Top comment by tony

1. TypeScript - I have had remarkable experience TS on frontend. Along with react hooks. Turns ES into a powerhouse.

2. GraphQL - Typed, structured API.

3. https://en.wikipedia.org/wiki/Attachment_theory: A very powerful tool to explain human behavior. It can explain individual personal interactions, personal and professional relationships, family systems and many bigger picture things.

4. How to build desktops: Build times are way way faster on desktop CPUs. More control over motherboard / getting faster IO, further improving buildtimes. More upgradeable, things can be switched out, whereas with laptops everything is soldered together.

5. Language practice: Started tapes on Polish / Ukrainian. Restarting Chinese soon.

6. Basic fitness things / more exercises

Top comment by wenc

1) Log to local disk (most people will tell you this is bad practice and that you should directly log to socket or whatever, but it's more likely for your network to be down than for your disk to fail).

In Python, use the RotatingFileHandler to avoid running out of space.

2) Incrementally forward your log files to a server using something like fluentd that can pre-aggregate and/or filter messages.

Big advantage of logging to disk: if logging server is unreachable, forwarder can resume once it's up again. If you log directly over network, if things fail the very log messages you need to troubleshoot the failure are potentially gone.

3) Visualize. Create alerts.

I've evaluated a bunch of logging solutions. Splunk is the best, and affordable at low data volumes (they have a pricing calculator, you can check for yourself). It's medium hard to setup.

Sumo Logic is the easiest to set up, and at low data volumes, prices are similar to Splunk. You can get something working within an hour or less.

ELK stack is free only in bits but not in engineering time.

I've not actually tried Sentry.io but I saw it at PyCon and it looks pretty impressive. If you only care about tracking errors/events and not about general-purpose logging functionality per se, I would take a serious look at it.

Top comment by vessenes

So many — here are a few large scale problems I think about lately.

* Trustworthiness of content (text and soon photo and video) is and will be a fundamental problem. This is the basic attack vector for national and global politics in the last few years. Anyone with a good solution would help the world immeasurably and have their pick of customers.

* fall out from monetary policy in the us and Europe: take your pick, but for example - home prices in urban areas; figuring out how to house families for 1/2 or 1/3 current prices in the United States would have a lasting impact on stability and wealth creation.

* the continued effectiveness of state propaganda; related to my first suggestion above.

* obesity in the us and soon Western Europe.

* data security - fixing large scale data breaches.

* what I call long range to short range : problems too big for people to think about or accept abound, like climate change. Finding one and figuring out how to tie to short term incentives creating a positive feedback loop would be a real game changer. Oil does this all the time but usually not with good long term consequences - cf fracking turns North Dakota into a boom zone — creativity around good not pernicious cycles would be a boon for the world.

Top comment by dceddia

To avoid updates and viruses, go with a static site.

There are a ton of good static site generators out there. My blog[0] runs on Jekyll[1]. Hugo[2] is a popular option. I've fiddled with Gatsby[3] and heard good things. Eleventy[4] looks as close to Jekyll-but-in-JavaScript as I've seen.

Since you want to be able to customize it, I'd probably take the static site generator's language into account. Do you like...

Ruby? -> Jekyll[1]

Go? -> Hugo[2]

JavaScript? -> Gatsby[3] or Eleventy[4]

Some other language? -> google "[language] static site generator" and see how many GitHub stars it has.

Once you've figured that out, most of the hosts support custom domains. Netlify[5] is free, and works very well. It's what I use currently. I used to host my site on DigitalOcean[6], but Netlify is definitely more painless, especially from a devops/patching standpoint. Plus it has a CDN so your site would be faster.

[0] https://daveceddia.com/

[1] https://jekyllrb.com/

[2] https://gohugo.io/

[3] https://www.gatsbyjs.org/

[4] https://www.11ty.io/

[5] https://www.netlify.com/

[6] https://www.digitalocean.com/

Top comment by taftster

This was part of the master plan and roadmap for Java for a long time now. This should not be a surprise or cause any outrage. The roadmap was:

1. Oracle starts to relicense as open source most parts of the JVM, spinning off OpenJDK in the process.

2. Oracle provides support, patches, community and endeavors to help get OpenJDK self-sustaining.

3. Once OpenJDK is maintained by the open source community and generally healthy, Oracle starts working on proprietary value-add additions that can benefit their customer base (and bank accounts).

We're entering phase 3. Oracle, beyond what you might think of them, has done a pretty decent job of following the overall plan. They have helped get the OpenJDK community off the ground and are still invested in its success.

Without doing the above, there was real risk that Java would succumb to other more open platforms or be splintered off by companies like IBM, Redhat, etc. Instead, the above plan allowed for Oracle to keep the core of Java in one piece, conceding that other companies would help with its evolution, and still reserve their ability to make a buck later.

It's a little shaky right now with all the hubbub about Oracle's licensing of the Oracle JVM. The messaging could have possibly been better. But if you haven't been aware of the OpenJDK and following along with it - if your sole source of all things Java has been Oracle - then it's definitely time for a wake up call.

Oracle is now a member of the Java community, not necessarily the driver.

Top comment by AdmiralAsshat

The Dell XPS 13 Developer Edition is the usual recommendation as far as having the most "Macbook"-like design (e.g. slim, unibody aluminum, but powerful).* ThinkPads generally have pretty solid Linux support, and System76 makes a line of Linux-only laptops, although both of them will be a good bit chunkier than your MBP. Neither are bad laptops if you're willing to trade sleekness for a tad more power or durability. It really depends on what you're looking for.

* This excludes Huawei's "Matebook" line, which is more like a Chinese carbon-copy MBA clone, and doesn't come with Linux as a preinstalled option.