< Back to the archive

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

Issue #74 - August 2, 2020

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

Top comment by jordanmarshall

Just skimming some of the replies here makes me think you will get better advice on the Bogleheads forum [1]. Despite the minimalist appearance it is actually a great place to get sensible financial advice. I would start with the wiki page on managing a windfall [2], then search through older replies to similar questions. This kind of question gets asked there a lot, so there should be some recent threads.

[1] https://www.bogleheads.org/ [2] https://www.bogleheads.org/wiki/Managing_a_windfall

Top comment by jonahbenton

The onramp for finance is accounting. There is no other right answer. This is also essential for general business administration.

Accounting is a huge topic; being able to read financial statements is a good, first tangible exercise.

Best book I have found for this is Thomas Ittelson, Financial Statements.

Using double-entry accounting methods for your own financials with a tool like Beancount is super helpful from a practice perspective, and appealing to an engineering mind:

http://furius.ca/beancount/

"Being able to level with CEOs and CFOs" is less about administering a business and more about being able to communicate with executives. This is essential for all technical people, whether or not they have management or executive ambitions themselves.

This also is a huge topic, I would suggest starting with concise definitions of what managing is, and what being an executive is about. When you understand the concerns of the people you are communicating with, you can do so more efficiently and effectively.

From a mindset perspective I would start with Peter Drucker, The Effective Executive, and since everyone is their own CEO, his book Managing Oneself is very valuable.

These are all classic texts, still valuable and relevant, as these topics are as old as the hills.

Good luck.

Top comment by whywhywhywhy

Google Image Search used to be perfect, around 2-4 years ago or so they swapped out the old school system which seemed to take some sort of fingerprint of the image and then tell what it was from the context of pages the image was found on.

The current system seems to use machine learning to try and tell what the content of the image image is then just provide generic results for that term along with a similar color palette.

Used to be able to find a movie screenshot on Tumblr, image search it and the name of the movie would come up. These days it'll go recognize the image is a woman on a street using ML, then show you results for "Woman" or "street" in the color palette of the image and if you're lucky you'll get a link to Pintrest too which also doesn't contain the context and just pushes you into a Pintrest onboarding flow.

Feels like the Image Search team is more preoccupied with solving problems which are interesting to them with zero interest if the tool actually better or not for people who use it every day.

Top comment by ianmiers

CS Professor here: Depending on the institution, it's possible to get a PhD without an undergrad or meet alternative requirements to get an undergrad along the way.

The trick is you need to get admitted to the program. This is harder but doable. To get into a very good PhD program, you typically need some demonstrable track record of research and/or a letter of recommendation from a professor vouching for your interest/ability/potential. Of course, others do get in just on transcript and test scores, but it's rarer.

You could get a job as a programmer in a research lab and then leverage the relationships from there. Or you could try working with a professor informally (perhaps starting with software engineering for some project) and go from there. Once someone knows you and knows you have interest and aptitude, the lack of an undergrad degree should be solvable for at least some universities.

Finally two pieces of advice: Ph.D.s are supposed to be paid. Not that well (think 25 to 30k a year for a low cost of living area, 45k for say NYC), but if not it's a major red flag. Second, the quality and trust you have in your PhD advisor is way more important than the institution. A Ph.D. is almost an apprenticeship under someone. It goes badly if that person treats you badly

Top comment by ggm

Coding is a virus, a meme. What you've got is 12 years of experience breaking down problems, abstraction, functional analysis, debugging.

You have skills which other parts of the business cycle need.

If you aren't a "people person" then look to problem solving in logistics: the routing and scheduling behind everyday delivery is a heinous problem. Or, in the construction, mining and related sector. "for the want of a nail" problems abound.

(hint: root cause analysis? duck typing in a process debug?)

Operations Research: linear programming to derive the maximally efficient solution to a problem. Its everywhere.

Epidemiology: Go be a gun-for-hire in stats or data analytics for somebody with smarts in another space, drowning in data. Yea, you have to code. So what! the code will be fascinating and totally different

If you are a "people person" then non-product spaces like health are full of middle manager roles. And.. gues what: its logistics, scheduling, process analysis, root cause analysis. Supply chain behind masks and gowns has become pretty topical...

Top comment by DenisM

Anxiety runs rampant among knowledge workers. It appears a good half of all programmers are affected, most of them do not know it. Pretty much 100% of grad students have severe anxiety problems. You're not alone in this.

I recommend against changing careers - you have gotten into it for a reason that mattered to you, don't get out until you can articulate a good reason for changing it. And it pays the bills rather well. Shifting jobs to lower responsibility will probably give you immediate relief and is worth considering, but it might just get you worried less about your work and more about yourself/covid/politics/etc. Reducing responsibility only works well as a method of making room for better things.

The best thing you can do right now is regular exercise. I know, I used to roll my eyes and quietly hate on people who suggested that because as god is my witness I have tried. The trick is twofold - it must be the right kind (strength building does not work), and something that you will enjoy. Personally I find mountain biking to be an euphoric miracle - a difficult trail profile provides the HIIT aspect and the change in terrain and scenery keeps attention firmly planted outside my head (on pain of bruises and scraped knees). Consider dancing/martial arts (well, not with covid I suppose?), rock climbing, mountain biking, windsurfing, yoga, running(eh...). Rumors have it that any sort of HIIT works miracles. For some people the social aspect of sports matters a lot - e.g. running with a mate is a good motivator and for you a social experience you seem to be missing.

Last but not least you will need to see two specialist - a psychiatrist and a therapist. If you have any serious psychosomatic effects (e.g. a serious sleep disruption, panic attacks, etc) the psychiatrist can put you on the level keel for a few weeks - just enough to get started with the therapy. Ask trusted friends for a referral and failing that just go by geographical proximity.

Top comment by ekidd

I co-founded a startup that had a technically-solid product that people swore they wanted. It failed. I've also worked for a number of successful startups. And I've consulted for startups that succeeded, and ones that sank without a trace.

If there's any pattern I can see with the non-technical founders, it's that some knowledge of coding is certainly nice, if only so the founders can talk to the actual coders. But coding's not the most important thing. The two most important things for a non-technical founder are (1) understanding their market, and (2) closing deals.

Steve Blank (a respected startup expert) proposed a way to prove that you can do (1) and (2): Collect non-binding letters of intent from future customers. These letters should say something like "If you can produce software that does X, Y and Z acceptably well, we would would like to negotiate a contract with you for $1000/month." (See Blank's classic "Four Steps to the Epiphany" for more details.)

If you can collect 10 of those letters, then you should have no problem finding a technical co-founder, and you'll be bringing strong assets to the table.

(The details might be different for your startup. Maybe your product is only worth $200/month, or whatever. But the key point is that you can go talk to customers and close deals.)

Top comment by frompdx

> I'm curious why there is a need for new programming language

In a way, this question is answered by your follow up question.

> and what purposes they serve that existing languages aren't well suited for

New languages are made because existing languages are not well suited for a given purpose. But, I don't think there needs to be a reason at all. The exercise of creating one is its own motivation and reward.

For me, I find a lot of the very popular languages to be mundane and boring to work with at best, and painful at worst. I would much prefer to work with Clojure instead of Java. Likewise, I would rather work with ClojureScript over JavaScript.

If I still want to work with a Lisp but I need something with a smaller footprint than Clojure I can reach for Janet or Guile Scheme. Currently I am using Janet for writing command line tools and I am exploring building webapps with Janet as well. I like the fact that it can produce statically linked binaries for the major operating systems and it is possible to port to others as well.

Although all of those are new languages they are all based on a very old concept (as far as computers are concerned), Lisp. Forth is another old concept that probably seems new simply because it isn't popular. However, I would rather use Forth than C or C++ to program my Arduino because it is interactive and I can program directly on the microprocessor.

Overall, I think a lot of companies and individuals choose what is popular because it is viewed as a safe choice. I prefer to explore the fringes because it is more interesting.

Top comment by invalidOrTaken

Children---the conceiving, raising, and educating of.

Smart people aren't having kids. Many of those who do, pass off their care to strangers or government schools. When they get out of high school, we're not sure what to do with them---higher education is riddled with problems, but so is entry-level hiring.

Will we have self-driving cars in 2038? Because we will have 18-yr-olds.

Top comment by sitkack

It sounds like you are off to a great start. Afaik there really isn't any 400 or 500 level material for advanced assembly programming. You could read Goto BLAS [1] or mkl-dnn [2]

I find reading assembly output from compilers to be a good start, it also helps you develop a mental model of what compilers expect in terms of stack hygiene.

Before godlbolt, https://godbolt.org/ there was `gcc -S` and now there is [3]

    gcc -Wa,-adhln -g 
for interleaving source and assembly output. Keep the reference manual close and write lots of little experiments to confirm your findings.

[1] https://en.wikipedia.org/wiki/GotoBLAS

[2] uses macros and intrinsics https://github.com/oneapi-src/oneDNN

[3] https://stackoverflow.com/questions/3867721/is-there-any-c-c...