< Back to the archive

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

Issue #22 - August 4, 2019

If you are looking for work, check out this month's Who is hiring?, Who wants to be hired? and Freelancer? Seeking Freelancer? threads.

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

Top comment by tschwimmer

Perhaps I'm jaded, but I notice that all the examples given here are developer tools or otherwise things with well scoped functional inputs and outputs (e.g. ffmpeg).

Anyone have an example of a consumer application that has a good codebase? Chromium, GitLab, OpenOffice, etc? I feel like such applications inherently have more spaghetti because the human problems they're aiming to solve are less concretly scoped. Even something as simple as "Take the data from this form and send it to the project manager" ends up being insanely complex and nitpicky. In what format should the data be sent? How do we know who the project manager is? Via what format should the data be sent? How should we notify the project manager? When should we send the report? Some of these decisions are inherently inelegant, so I feel like you get inelegant code.

Top comment by aphextron

Hartl's Rails tutorial. Probably the best intro to modern full stack development I've ever come across.

https://www.railstutorial.org/book

Top comment by pknight

I would urge people to tell Matt Mullenweg and core WordPress developers that they don't want AMP in WordPress core. Since WordPress runs on >30% of the web, if WP adopts it, it will make the choice for most of the web that websites must shape themselves in the way Google wants it. Google is currently doing a stellar job penetrating WordPress and using its increasing influence to support its own business interests.

Top comment by namelosw

My personal choice would be Clojure. I learned Racket and Common Lisp but haven't used them build something production-grade yet. I don't even know how to properly build, deploy and monitor a Racket server yet.

Racket is good but the toolchain and libraries are far behind Clojure. Especially Cider and Cursive are so great, and for libraries, there are a lot of solid ones like Ring/Compojure, interesting things like Duct, Pathom, Fulcro.

Common Lisp is also good, SBCL/Slime is solid, but it has its own idioms, a multiple paradigm Lisp-2 and feels pretty different from Scheme and Clojure. I found single-paradigm languages like Clojure and Scheme are sufficient to do most things already.

Java-world-wise, you don't have to deal with Java most of the time if you don't want to. There are plenty of Clojure libraries which of course follow Clojure idioms.

Top comment by Gustomaximus

My job is remote. I moved to a hobby farm on the outskirts of Brisbane, Australia. So 45-70min commute to the CBD depending on traffic

Is a great lifestyle if you like the outdoors whiles giving access to a major city. I used to live in Sydney but couldnt buy a farm without being 2+ hours commute to CBD.

The blend of being on the keyboard most of the day but jumping on the tractor/motorbike/chainsaw etc at the end of a day gives a feeling of balance. Its hard work and takes over your life with animals, but if you like this stuff is really wholesome living.

Top comment by japhyr

I was a high school teacher in a school that worked primarily with underserved students, who often had transcripts with many academic gaps. So we had to spend more time than usual examining transcripts to make sure students were taking the right classes to graduate. It was a small school, with three teachers and a few support staff. We literally spent hundreds of hours each year poring over text-based transcripts with students, parents, and each other.

I spent one staff training day writing a script that parsed the transcripts and generated a visual transcript for each student. It had gray bars showing how much credit was required in each subject area and subdiscipline area, and green bars showing how much credit students had earned. For students close to graduation, it also generated a list of the classes they needed to take. What used to take 10-15 minutes for each student, and was error-prone, now took 30 seconds to 1 minute.

The really interesting and satisfying part wasn't just noticing how much time was saved. We ended up spending just as much time with each student and parent/guardian, but the conversations focused much more on how students could get through to graduation. What used to be a frustrating period of analyzing past failures became a focus on what students could do now that they were focused on graduation.

Top comment by sweeneyrod

You're not comparing the same things. The US stock market that returns 6.5% is much more volatile than European government bonds that return 1.5%. You need to compare either bonds or stocks for both. It's difficult to compare the long-term performance of American/European because different starting points and the world wars confound things but European stocks certainly don't outperform American ones by as much as you're suggesting.

But in any case, there's no reason why you can only invest in European things (and in fact that would be stupid). The starting strategy for most people should be a mixture of index funds covering the whole world (weighted by market size) and bonds. The proportion of stocks/bonds is determined by your tolerance for risk. You can fiddle with this (for instance as a European it might make sense to overweight European markets because of exchange risk, on the other hand you might prefer to overweight American markets because you already have exposure to the European economy from living there) but you almost certainly want to invest somewhat internationally.

Top comment by rramadass

>There are certainly fields / problems that interest me (low level embedded type stuff, low latency programming, etc.), but they tend to not be accessible to someone with my educational background

You are absolutely wrong here. You can pick up Embedded & Electronics on your own(i have done it). Combine it with your experience writing CRUD apps, add a dash of ML in the Cloud and you can enter the End-to-End Distributed Systems market (eg. IoT etc.) You can go as deep as you want into Embedded/Electronics domain in addition to having the ability to bridge all the way to Cloud-based user-facing software. You learn Systems, HW and SW which is immensely challenging and satisfying.

PS: Do NOT quit your job. Just do what is needed, collect your paycheck and focus on studying new things. Once you do this, you will find that the same "boring" job can be looked at through a new perspective and becomes interesting once more.

Top comment by codingslave

Technology has been and and is increasingly so following a bimodal income distribution. There are two distinct groups.

1.) The people who work for FAANG corporations or high profile startups, a few places in finance. In depth knowledge of computer science required to get these jobs.

2.) People who are writing UIs, data flows, python apis, etc. Run of the mill software development.

The income for these two groups looks like this:

The top 5% (maybe less) in technology are making really good money, 250-1M. This is the group 1, FAANG group.

The second group:

The lower 95% are generally stuck between 75k and 175k. They are seeing increasing competition from Europe, China, and boot camps here in the USA.

So to answer your question, if you take writing software very seriously, and can out compete most engineers, its an amazing career and will only get better. If you are a middling programmer, youre better off doing something else.

Top comment by LinuxBender

It depends on your needs really. DO is fine for low budget projects. Just below them I would suggest Vultr. If you don't care about API's and that sort of thing, then Ramnode is even cheaper, but I've had issues with the user interface.

There are a bunch of aggregator sites that compare vps providers. Here are two of them. [1] [2] [3]

Disclaimer: These sites can be a bit spammy. Use NoScript / uBlock. Also, you really do get what you pay for, so as your business grows, you may wish to consider diversifying across providers.

[1] - https://lowendbox.com/

[2] - https://vpscomp.com/servers

[3] - https://www.serverhunter.com as mentioned by IronBacon, I totally forgot about this one.