< Back to the archive

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

Issue #87 - November 1, 2020

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

Top comment by bnt

For the past ~3 weeks Medium has blocked virtually every article I wanted to read and is asking me to pay. Most of these are programming tutorials related to some obscure Rails features. Honestly, I feel like Medium is the worse place to put your content.

EDIT: For context, I don’t mind people monetizing their content, but in that case I’d rather pay them directly (like GoRails), and not a “subscription” for something I might check once in a while.

Top comment by artagnon

Here are a couple of expertly-written C++17/C++20 repositories:

https://github.com/hanickadot/compile-time-regular-expressio...

https://github.com/nlohmann/json

If you've not written C++ code before, it can take a while to catch up with the latest developments in C++23. Start with C, and learn these, in approximately the specified order:

1. lvalue references.

2. Constructors, destructors, and inheritance.

3. Annotations such as const and noexcept on members.

4. Simple type templates, and value templates.

5. constexpr, std::move, and rvalue references.

6. Type traits and std::enable_if.

7. Concepts.

Once you learn the core language features, learning the various data structures/algorithms in `std` should just be a matter of looking them up in cppreference, and using them over and over again.

Good luck.

Top comment by gregjor

I’m almost 60, lots of various technical experience in my 40 year programming career. I’m busier than ever with freelance work.

Don’t try to join startups or cool SV companies unless you have an inside track. Their recruiting and hiring practices are mostly geared to ensure “culture fit.” That’s code for young single male who will work 12 hrs/day and think free beer and pizza makes it cool.

Focus on measurable accomplishments rather than languages, frameworks, tech buzzwords.

Learn to solve business problems rather than “engineering problems.” No one needs 2,000 more lines of Javascript. Lots of companies need business problems addressed.

If you’re applying for jobs you’re hobbling yourself. If you have years or decades of experience you should have a large network of colleagues to get leads and jobs from.

Top comment by speedgoose

Its a great programming language that is helpful to solve problems without wasting time.

I really appreciate the simplicity, I think it totally makes sense at work where not everyone wants to deal with weird code. I think maintaining old golang code will not be a major problem in the future for example. The garbage collector make things a lot simpler too.

The dependencies management is not great compared to npm/crates/rubygems/... but it's still better than the Java world and it exists and it's being used.

I wish generics were already there, and I'm not a fan of the interface{} keyword. I'm also sick of the if err!=nil everywhere, I wish it could have a better error management like Haskell/Elm/Rust/...

I use Rust in my latest personal projet and while I prefer Rust, it's a bit too complex quite often and I spend more time thinking about rust things than thinking about the problem I'm solving.

This is not the case with Golang. It's not a fun programming language but it does most jobs very well.

Top comment by impendia

I am a math professor. In my observation, there is a huge amount of material available on the web, but it isn't very centralized -- especially at the upper levels.

My advice would be to get a book on any topic which interests you, read through it, and do a significant number of the exercises. You might try Epp's Discrete Mathematics, Hefferon's Linear Algebra, Colley's Vector Calculus, Dudley's Elementary Number Theory, Spivak or Apostol's Calculus (these go far beyond ordinary freshman calculus), Pinter's A Book of Abstract Algebra, among many others. Some of these books are expensive to buy new, but just buy older editions.

Resources like Khan Academy and 3blue1brown are also fantastic, and I have shared some of these with my students. I'd recommend using these as a supplement; if you rely on them solely then you'll develop vague intuition but not much else.

Also, with the pandemic, there are a huge number of traditional university courses that have moved online, and you could probably enroll in one for not too much money. Check the RateMyProfessor reviews -- you want a mix of positive reviews claiming the prof inspired them, and negative reviews complaining that work was expected. I have a RateMyProfessor review which complains bitterly that "homework is graded for accuracy and not completion". :)

Top comment by sinuhe69

One problem with mathematical difficulty is its “invisibility”. We can’t see how other people are thinking, how they solve the problem, how they struggle. And sometimes, we cannot even explain our thinking! That’s why making thinking visible is so important! Because only then we can learn from the others, they can learn from us and we can see where it’s right and where is wrong.

One way to making thinking visible is to apply thinking routines, like: - what are given?

- what are the unknowns?

- what do we know?

- what do we need, how i can get there? (strategies)

- choose a strategy and explore it

- rethink the strategy and optimize it

- connect and reflex

Once we practice thinking routines, we will find it increasingly easier to explain our thinking and even be able to debug our work. If your class also applies thinking routines, it’ll get even easier for everyone to learn and understand each other.

I recommend the following books:

- Polya, How to Solve It

- Velleman, How to Prove It: A Structured Approach

- Ritchhart: Make Thinking Visible

Mathematical work is basically a series of equivalent transformations and logical reasonings, starting from the given informations to get where we want, thus once we knew the why, it should not be too difficult to explain our work because most are self-explanatory.

Hope it can help.

Top comment by jollofricepeas

Still working my day development job and now doing about $150k/month in a side project with 10 employees.

- make lists and use them!

- block lunches use them for meetings

- have day job pay your healthcare

- day job work stops on time! no meetings before 9 or after 5

- leverage your “No” to all frivolous time wasters

- focus on day job, side project, family, one hobby for exercise (4-6 hrs/ week)

- get really good at delegating and automating tasks

- hire overseas contractors to do menial, repetitive tasks that can’t be automated

- don’t sell software instead find something “real” that can be enhanced with software

- identify a customer and charge upfront; it’s the only way you’ll learn

Top comment by sevensor

Don't lump C in with C++. They're very different languages. If anything, I'd lump C++ in with Rust. They're both big, complicated languages. If you're just looking to understand the C model of computing that underlies any Unix-like system, spend some time with C. Learn to write a linked list, experience a few segfaults, and then decide what kind of safety and abstraction you'd like in your systems language.

Top comment by rainingcatndogs

Last week google did something like that to me. It said "device not recognized" and "suspected activity detected" and won't let me in even after I reset my password. That was my reality check. Fortuanately, I was able to login via my old smartphone. I did a google takeout and downloaded all my data. Then I got a domain name and protonmail account and changed email on all of my accounts to my own domain. Now I have some peace of mind that nothing would be lost even if my gmail account is to be gone tomorrow.

Top comment by nwsm

LEGO Mindstorms is a really good line imo. Maybe higher level on the software side, but is great for what you're describing- getting beginners interested in coding through robotics.