< Back to the archive

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

Issue #47 - January 26, 2020

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

Top comment by mindcrime

How To Measure Anything[1] by Douglas Hubbard.

The basic gist of the book goes something like this: in the real world (especially in a business setting) there are many things which are hard to measure directly, but which we may care about. Take, for example, "employee morale" which matters because it may affect, say, retention, or product quality. Hubbard suggests that we can measure (many|most|all|??) of these things by using a combination of "calibrated probability assessments"[2], awareness of nth order effects, and Monte Carlo simulation.

Basically, "if something matters, it's because it affects something that can be measured". So you identify the causal chain from "thing" to "measurable thing", have people who are trained in "calibrated probability assessment" estimate the weights of the effects in the causal chain, then build a mathematical model, and use a Monte Carlo simulation to work out how inputs to the system affect the outputs.

Of course it's not perfect, since estimation is always touchy, even using the calibration stuff. And you could still commit an error like leaving an important variable out of the model completely, or sampling from the wrong distribution when doing your simulation. But generally speaking, done with care, this is a way to measure the "unmeasurable" with a level of rigor that's better than just flat out guessing, or ignoring the issue altogether.

[1]: https://www.amazon.com/How-Measure-Anything-Intangibles-Busi...

[2]: https://en.wikipedia.org/wiki/Calibrated_probability_assessm...

Top comment by tckb

congrats! mind sharing your story?

Top comment by monkeynotes

At what point do bookmarks essentially become an internet of your own making? I guess you need to create a search engine so you can search your bookmark collection, or maybe a Yahoo style directory to browse them.

Or...

Stop collecting the internet and give your brain a break from data overload. There is a certain flavour of FOMO that keeps tabs open forever and bookmark lists getting huge. Let go of it all. There will always be more data to consume every day, you'll never have time for that AND 5k of bookmarks. Use Google when you want to go back to something. I bet if you deleted 90% of those bookmarks you would not really miss them after a month.

Top comment by lordnacho

Contacting people who've had an influence on your life is the very thing of living!

Here's something I did last year, which I'll be doing again in a few weeks.

Back in high school, I had a really great math teacher. He really created excitement about the subject, and he always had extra time to teach extra stuff to us. Just a really cool guy who'd show us Monty Python videos sketches and then some interesting math problems. It was really night and day when compared to for instance what came later at university. I found myself practicing a lot of extra math for no reason. Plus of course it made actual math class a breeze.

Three of us went to do a math contest each year, and in the final year - he was retiring, we were graduating - we won the contest.

So I've arranged for the other two to fly over to me and we're going on a road trip to see him.

If you're wondering whether he's bothered by it, I think he'd say that was the whole purpose of teaching, to show young people some interesting stuff and motivate them. The guy even sees his old "kids" who are now in their early 60s. He's mid 80s.

Top comment by beeforpork

Programming in a team and accepting that it is not 'my' code but 'our' code. Not feeling slightly pissed when someone else changes the (not my) code. For me, this was a total game changer and a complete change in programming style. The focus changed to using the most common idioms, the clearest and cleanest and most concise way of writing stuff down, and avoiding smart hacks or, if necessary, encapsulating and documenting smart hacks. Not being shy of writing stuff multiple times until it really is clean and inviting to be read and understood. Using a very strict style (including when/where to put white space and line breaks) that everyone else also uses so that code is easy to read for everyone. It improved my programming enormously and the bugs/line ratio went down. It also gave a much better intuition to smell fishy code. It also took quite a while to internalise, but I now always code like that, also in private projects and in quick hacks scripts in, say, Perl.

My second most important change was to learn how to use contract based programming, or, if the language has poor support, at least to use a ton of asserts. This, for me, feels like stabilising the code very quickly and, again, improved my bug/line ratio. It forces me to encode what I expect and the code will relentlessly and instantly tell me when my assumptions are wrong so I can go back and fix that before continuing to base the next steps on broken assumptions.

Top comment by artpar

I have been working on this from some time. Checkout

https://github.com/daptin/daptin

I have been deferring another show hn since the last one, since I am always in the middle of adding one more feature :p

my overall goal in daptin is to build something reliable which can run for years without needing any maintenance. Some things to show this is that its written in golang and I build static targets for all target hosts, the thing is open-sourced and licensed to be used without fear.

As for the features, I will try to list some here:

- YAML/JSON based data declaration

- CRUD api implementing https://jsonapi.org/

- GraphQL api

- Definable actions, for custom apis

- Integration to any 3rd party api based on swagger/openapi spec

- Runs on mysql/postgres/sqlite

For more advance features:

- SMTP server, IMAP server

- Self generated cert/ Acme TLS generation support

- Encrypted columns

- Asset columns (file/image/binary store)

- Asset columns backed by cloud storage (like ftp/disk/gdrive/s3/bb and many)

- Native OAuth/3rd party login support

- Exposing cloud store folders as static websites

I have built a lot of apps on daptin over some time now and I love that it has become what I envisioned it to be.

Top comment by thomk

Yes, I wish I could PM you.

I spent lots of time in front of therapists as well. What I got for it was an education in how I got to be who I am today. My recommendation is to save your money, watch School of Life videos (https://www.theschooloflife.com/) and you can figure out why you are you. The short answer is; your upbringing, because it's very hard to change that internal original programming.

The goal of therapy is 'know yourself'. So when you do eventually do 'know yourself' therapy is not going to be much help; you have achieved the goal of therapy.

(Side note: If you have had recent or unresolved trauma then 'yourself' has changed, go back to therapy to locate the new you.)

Although I do not like the term AT ALL, it sounds like you know who you are; you are a person with 'low self esteem'. I too, had "Low self esteem" as the therapists put it. What they didn't say is "Ok here's what you do with that".

Here is what I heard: "Go volunteer. Give back. Help others.".

Bullshit. That is misguided advice. You end up acting charitable and feeling used.

Or I hear "Go out, meet people."

Also, bad advice. I'm struggling and you are asking me to put social interactions on top of that too? No.

A Zen Buddhist monk once told me something that I think is applicable to you. "You can not directly control your emotions, they are too powerful, all you can control is your behavior. Control your behavior long enough your emotions will change."

That goes directly inline with the advice I'm about to give you, which is simply this:

Be competent.

Focus your energy on directing your behavior on being absolutely competent in one single area of your life and get mastery over it; absolute competence.

Once you feel like you have changed and have gained sufficient competency, move to the next thing. Build yourself up brick by brick by your actions and behavior.

It is much, much harder than just sitting talking to a therapist, but an order of magnitude more effective.

Top comment by ltratt

I lead a PL/VMs/compilers research group and the number of organisations interested in hiring people in this area keeps growing and growing. Now, that's not to say that there are ever going to be hundreds of thousands people working in this field, but it turns out that lots of organisations have realised they have pressing language needs. It varies all the way from those wanting to make mainstream language implementations perform better on their codebases to those wanting to reimplement a major internal language in a modern fashion.

At the moment -- and I expect for the foreseeable future -- demand quite significantly outstrips supply. Because of that, organisations are often quite flexible in how they view potential hires in this area. Simplifying a bit, there are two main ways to get in to the field: obtain specific training in the field (e.g. a PhD); start / contribute to a project (not necessarily OSS) that shows expertise (e.g. if you start filing high quality PRs against Rust or LLVM, people will fairly quickly realise you know what you're doing).

Best of luck -- it's a really fun field, with lots of interesting challenges, and a good group of people!

Top comment by shoyer

It's a lovely idea to build pandas like functionality on top of NumPy's structured dtypes, but these benchmarks comparing PandaPy to Pandas are extremely misleading. The largest input dataset has 1258 rows and 9 columns, so basically all these tests shows is that PandaPy has less Python overhead.

For a more representative comparison, let's make everything 1000x larger, e.g., closing = np.concatenate(1000 * [closing])

Here's how a few representative benchmark change:

- describe: PandasPy was 5x faster, now 5x slower

- add: PandasPy was 2-3x faster than pandas, now ~15x slower

- concat: PandasPy was 25-70x faster, now 1-2x slower

- drop/rename: PandasPy is now ~1000x faster (NumPy can clearly do these operations without any data copies)

I couldn't test merge because it needs a sorted dataset, but hopefully you get the idea -- these benchmarks are meaningless, unless for some reason you only care about manipulating small datasets very quickly.

At large scale, pandas has two major advantages over NumPy/PandasPy:

- Pandas (often) uses a columnar data format, which makes it much faster to manipulate large datasets.

- Pandas has hash tables which it can rely upon for fast look-ups instead sorting.

Top comment by robjan

I think on HN we suffer from something similar to people who visit Instagram or Facebook all the time. We see everyone's holiday photos, their successes, everyone is doing something "meaningful" or creating the next big startup. In reality, most of us are creating CRUD applications but we wouldn't post about that because it doesn't fit into the above category.

I don't have any answers to your questions but I hope it's some consolation, at least.

Perhaps you can give us some additional insight about your current role, industry and experience level?