1. 6

Most products are a much better fit for some people than others. If you tried selling bicycles to fish very few would be interested, and you’d mostly be wasting their attention. This means advertising is worth a lot more when you can put the right ad in front of the right person.

I wonder if a major problem with ads is that they mostly aren’t good fits. Almost no ads I see ever are for things I want. With is a fundamental failing of adtech: there are lots of things I want! There are even lots of things I don’t know I want, but would want if I saw the right ad!

But I don’t think what I actually want is easily inferable from my browsing habits, no matter how much datamining you do. The only thing that could work is if an advertising company worked directly with me to find out my interests, and so tailor the ads they send me. I’d happily opt in if it meant seeing fewer, higher-quality ads. But I don’t think that strategy scales, so it wouldn’t work for internet advertising.

1. 4

I wonder if a major problem with ads is that they mostly aren’t good fits. Almost no ads I see ever are for things I want.

Ironically, this became true when Google started to go all Big Brother. In the early ‘00s, Google ads were plain text, non-intrusive, and based on the content of the page on which they were displayed. I actually clicked on a bunch of them because they showed products directly related to the thing that I was interested in at precisely the point when they showed me the ad. Now, they’re based on a trailing indicator of my preferences from a complex psychological model of me and so even when they show things I’m interested in, they rarely show things I’m interested in at the precise moment that they show the ads.

1. 1

People keep saying this, but if plain text ads based on the content of the page really outperformed datamining then why wouldn’t Google do that? I’m sure Google will have run trials comparing page-content ads and surveillance-ads.

1. 2

It’s probably different for different people. In my case, I use various privacy-oriented extensions that have the effect of blocking all content from domains that have been observed attempting to track me across the ’net. So sites that host their own ads related to the content of the site get seen by me, whereas things served up by ad networks based on some imagined profile of what I want derived from my browsing habits get blocked.

So in my case, it is unequivocally true that plain text ads based on the content of the page outperform the more invasive ones, purely by virtue of the fact that I will participate in the former but not the latter.

I suspect I’m not the only one here in that boat. I also suspect that my configuration is over-represented here vs the overall web using population.

While it seems likely that google has run the trials, keep in mind that the trials would have been designed/executed by and the results analyzed by people who make their livelihood doing the surveillance/data mining thing. And that it’s easier to monitor results from that, due to, y’know, surveillance.

2. 1

I feel similarly, but I also know people who say they spend too much money browsing Instagram because they keep seeing ads that lead to purchases.

1. 2

I’ve also wanted more complex logic than is easily expressible with filters. My approach was to use Google Apps Script: https://developers.google.com/apps-script

So I have one filter that sends all my incoming email to a special “Queue” label. Then I have a script that processes the queue once a minute. The benefit is that I can use plain JavaScript to implement the logic, along with a Gmail API: https://developers.google.com/apps-script/reference/gmail

I have this running for both my personal and my work accounts, and I didn’t have to go through any additional authentication for the work one.

1. 8

I’ve used Dependabot before. GitHub then purchased them and made it a native feature. There are different ways to configure it, such as only opening PRs for fixes for security issues.

I’ve never used Dependabot’s automerge feature though. That’s a step too far for me. I want to at least skim the changelog to have an idea of the changes.

1. 2

Same here. We also use Dependabot. It creates PRs with updates which are then tested in CI. We then just need to approve each update and merge it. I love how the PRs include the changelog for the update to make it easy to assess the risk.

1. 2

If there were test cases to cover all scenarios I wouldn’t mind the auto-merge feature, but as it often happens, we’re not there yet.

1. 1

Those PRs make sense.

Even if people (in my experience) eventually will merge without really looking at the diff, e.g. “let’s wait with merging this until after we’ve forked next week’s release” is a sane thing to say.

1. 1

I use dependabot quite a bit. At my previous job we actually opted to automerge some select dependency updates. Minor versions for some dev/test deps. Did not become a problem during my time there.

1. 1

I’m at https://www.dannyguo.com. Happy to get any feedback.

I should probably flesh out my about page. Also, I don’t know if people find the home page message pretentious or annoying. My thinking is that if my content isn’t interesting to a visitor, I should try to point them to somewhere more promising. Perhaps I should update the links with more specific suggestions.

1. 1

Company: SeedFi

Company site: https://www.seedfi.com/

Position(s): Senior React Native Engineer, Software Engineering New Grad (Summer 2021), Software Engineering Intern (Summer 2021)

Location: SF, NYC, or Remote (USA)

Description: We build financial products for the 100M Americans who live paycheck to paycheck. Our customers are the most vulnerable members of society, and our products tangibly improve their financial health. We’re backed by A16Z, and our founders have decades of experience in the lending industry.

There are many fintech startups trying to differentiate themselves, capture customers, and then figure out how to make a profit later. We’re proudly starting from the other side…we’re adding the banking after getting the unit economics to work!

Many of the products we’re building don’t have any existing analogues in the market, so we’re looking for engineers with an entrepreneurial bent. Our team experiments frequently, iterates quickly, and we use both data and customer feedback to measure our success.

We’ve purposefully kept a low profile, so we’ll tell you much more about our products during the interview process!

You can read more here: https://www.seedfi.com/jobs

Tech stack: Node, TypeScript, Express, React, Postgres, AWS

Contact: email (jobs at company domain) or DM me

1. 5

One alternative to tree is broot.

1. 3

I’m curious if one could achieve similar results by blowing air in through the hinge (where the vents are located). But then you’d miss out on the satisfaction of seeing those squeeky clean fans at the end.

1. 2

I would think that might cause the fans to spin. I seem to recall hearing somewhere that this can be a bad thing, since it might damage the fans (somehow? maybe my spinning them in the wrong direction, or at an RPM that is too high?), but maybe that was just some unfounded rumor?

1. 3

Ah, I didn’t mention this in my post. I’ve read similar concerns that making the fans spin at too high of a RPM can damage them. I don’t know how valid the concern is, but just in case, I did use a toothpick to stop the fans from spinning while I used the compressed air to clean them.

1. 1

It depends on the machine. I doubt it’d be a problem on Macs because the Apple Tax allows them to cut fewer corners than a budget box, but (AFAIK, IANAEE etc) the issue is that you generate voltage in the motors of things like fans or 3d printers by moving parts around via external force, and this can hurt (sensitive | cheap | poorly isolated) circuitry.

1. 1

Yeah i would not spin the fans up… overspeeding them has caused mine to not sound good a while back so now i just hold them stationary while using the air… seems to work much safer. also, considering a fan is basically a generator in reverse i would think it could create some overvoltage on the board? Maybe apple thought of that too?

1. 2

I remember a buddy of mine who fried his PC mainboard by using compressed air from a generator to remove dust.

1. 2

Though I have no doubt this could happen, I cleaned out an old ThinkPad T61 with a leaf blower and it continued to run well for 3 more years.

1. 1

Might’ve been around 2005 or earlier. They probably have circuitry now that can prevent this kind of damage now that hasn’t been available in cheap motherboards from yesteryear.

1. 1

Compressed air from a generator normally has condensation that shows up at the destination side as water vapor condensed onto the pcb. Which probably means you can end up shorting things.

Compressed air is the best option, you can’t really protect against bridging circuits outside of the pcb.

The leaf blower probably just didn’t condense air, not something I would personally use. Seems too good a way to let the magic smoke out of circuits.

1. 2

Thanks for the article. I like the markdown link shortcut in particular. I should adapt that for myself.

I’ve started to do similar things on macOS using Hammerspoon. So far I’ve set it up to let me:

1. Use shift when pasting something to simulate typing in the text instead, getting around websites that block pasting.

2. Use “;” as a hyper key. By holding it down and pressing another key, I can switch between specific programs without cycling. I can also use hjkl as arrow keys.

3. Automatically switch audio input and output devices according to my specified priority order. Because macOS would frequently get it wrong.

4. Make control act as escape when tapped. I use this in conjunction with remapping caps lock to control in macOS system preferences. I previously used Karabiner Elements for making caps lock work as escape when tapped and control when held, but I was able to uninstall Karabiner because Hammerspoon was sufficient.

5. Disable the insert key because I’ve never wanted its functionality, but I would sometimes hit it accidentally.

1. 1

I use Hugo with my own, minimal theme. I used to use Jekyll as well but migrated to Hugo in 2018.

My site: https://www.dannyguo.com

Hugo has a theme directory if that helps.

1. 1

This makes me think again about whether I should explore some other options for my TOTP keys. I’m still using Google Authenticator on my primary mobile device. It’s starting to get a bit awkward at 17 keys now. I kind of like the simplicity - no backup or secret sharing means it’s really tough to get hacked. But it also means that if this device ever gets suddenly lost or broken, I’m going to have a lot of fun redoing auth on all of those sites. It’ll be enough of an adventure if I get a new device just registering new TOTP keys for all of them.

I’m starting to lean against registering keys for sites that aren’t really that important just because of this. Do I really need top-tier security for my accounts on Twitter, Reddit, Lobsters?

On the other hand, what’s the point of it all if it’s stored in yet another service that’s vulnerable to the usual types of hacking, phishing, etc.

1. 2

This inspired me to try out Bitwarden!

1. 1

I still use Google Authenticator, although I did have the same exact thoughts.

Here are my takeaways: planning for an unavoidable loss of my phone is not logical. Even if it happens it might be a handful of times (if very unlucky) over decades, not a good reason to sweat over that.

I want to be in control of how I back up my secrets (most commonly QR codes and/or backup codes), using the common backup techniques is enough.

So for me the authenticator is still good for me.

1. 1

Well it’s a point. I may be more thoughtful about sudden unavoidable phone loss because my old Nexus 5X abruptly decided to perma-brick itself one day out of nowhere. It was a bit of a struggle to reset some of the accounts it had TOTP keys for. Fortunately, I learned the freezer trick a day or so later - if you deep freeze the phone, it’ll boot and run for a minute or so. Long enough to get into a few TOTP-protected accounts and back up a few things before tossing the phone.

Most phones aren’t vulnerable to that. But it does make you think about how there’s a hundred ways for a phone to be lost or destroyed in a snap. I try to make it a practice to have backups for everything I routinely carry around. Not needed 99.9% of the time, sure. But in that other 0.1% of the time, you’re already having a pretty bad day. A few hours of preparation way ahead of time can sure make those days suck a lot less.

2. 1

I also still use GA. With WebAuthn becoming more widespread, TOTP is no longer needed and is actually less secure than it.

With WebAuthn, you have a dedicated key device which holds the secrets and does identify verification. The standard procedure is to buy two - one for every day use, one for backup.

This is why I bought Somus, but unfortunately, the Somus are not well supported by their creators.

1. 2

I think it’s an exaggeration to say that TOTP is no longer needed. WebAuthn support is not widespread in my experience. I have TOTP enabled everywhere I can, and that amounts to 49 accounts right now. I also have my YubiKeys enabled everywhere I can, and that only amounts to 14 accounts (3 of which are Google). Twitter and AWS also only allow you to register a single U2F device.

I do hope that more services add support.

1. 4

I mostly switched away from Authy manually like that too, but the open source TOTP app Aegis can import from the Android version of Authy, so I did that too as a backup for the rare accounts I didn’t bother rekeying manually.

(also some time ago there was some script for extracting keys from Authy’s Chrome App..)

1. 3

I’m 2nd Aegis here. Great app for Android.

1. 1

Nice tip about Aegis. I didn’t know that it can import from Authy.

And yep, I mentioned that script in my post. The method still works!

1. 2

I got two of the LG 27BL65U-W a few months ago when it was on sale at Newegg for \$260 and have been very happy with it. I had also checked out the HP Z27 but thought it was too expensive.

• 4K
• 27 in.
• 60Hz
• fairly thin bezels (except for the bottom)

It doesn’t have USB ports or provide USB-C charging, which is a plus for me because that makes it cheaper, and I use an external dock anyway.

It seems to be hard to find in stock. For some reason, it’s classified as a “business” monitor. I’m not sure what that even means. But it’s worth checking out comparable LG models, like the 27UL500-W.

1. 7

How did memory fetishization start? I’m not knocking the post for providing a method of remembering but why remember things? The bottleneck in knowledge work isn’t how much you have crammed in your head. The bottleneck is how quickly you can navigate and do fuzzy matching in a high level conceptual space of ideas.

As far as I know there is no correlation between remembering all the parts of the biological cell and this have level navigation and fuzzy concept matching.

1. 7

why remember things?

Depends on your purpose. Most users of spaced repetition do so to learn a languages. Sure, a computer can translate for you, but it’s not the same socially as being fluent. And generally speaking, we require medical doctors to prove they know medical doctor things by examination, sans Siri. On a more personal level, memorizing family birthdays is a bit more useful than a calendar event.

But setting aside the demands of society, knowing things can be useful for the productivity of knowledge workers. For example, I have Anki cards for coreutils, and Python built-ins. These are pretty useful, as having to Google basic things like ‘python ascii value int’ slows you down, and in many cases, you may not think to search for things you didn’t know exist. Or in the course of conversations about hiring at work, it’s helpful to have the citation ’Schmidt and Hunter ‘98’ on tap, since Googling for it can be rather difficult and certainly derails the productive flow of conversation.

Beyond that, at a high level, one small part of knowledge work is synthesis – the process of combining ideas into a greater whole. Having recall level access to facts seems useful for synthesis.

As far as I know there is no correlation between remembering all the parts of the biological cell and this have level navigation and fuzzy concept matching.

As I’ve tried to convey, part of this is about relevance. If you’re an aspiring pharma researcher, maybe that information is relevant. Hopefully you recognize it as an example chosen to resonate with the audience’s K-12 experience with a memorization activity. It’s up to you really, to determine which things are worth remembering. Organelles probably aren’t it.

1. 1

Thanks for unpacking your reasoning. Although I disagree about synthesis being a small part of knowledge work. I’d say the majority is synthesis and a small part is recalling facts.

2. 5

I agree navigating high level conceptual spaces is where the real work of insight and creativity is done. But quick access to memory is part of this navigation. And I say this as someone who is stronger in the former skill than the latter.

For example, say I’m solving some problem in ruby. The flash of insight about the algorithm or high-level solution may occur in under a minute, or even seconds. But if I have to check the documentation for Enumerable, or regex, or how to read files, etc, that can add up to a 5-10x difference in time to a finished solution. And now say I’m working on a much larger problem (a project) that involves the above scenario happening many times over. The slowdown is not merely linear. Eventually you reach a place where it’s simply not worth doing a project that would be doing if you were faster.

And even with programs like Dash, a good IDE, fast internet and expert google skills, etc, etc, nothing can compete in speed with the instant recall of memory.

1. 1

Fluency with ideas is important but I think that is still different from memorization.

1. 4

For a counterpoint that you mind find compelling, I suggest reading Part II of this essay.

Long-term memory is sometimes disparaged. It’s common for people to denigrate “rote memory”, especially in the classroom. I’ve heard from many people that they dropped some class – organic chemistry is common – because it was “just a bunch of facts, and I wanted something involving more understanding”.

I won’t defend bad classroom teaching, or the way organic chemistry is often taught. But it’s a mistake to underestimate the importance of memory. I used to believe such tropes about the low importance of memory. But I now believe memory is at the foundation of our cognition.

His personal anecdote:

Over the years, I’ve often helped people learn technical subjects such as quantum mechanics. Over time you come to see patterns in how people get stuck. One common pattern is that people think they’re getting stuck on esoteric, complex issues. But when you dig down it turns out they’re having a hard time with basic notation and terminology. It’s difficult to understand quantum mechanics when you’re unclear about every third word or piece of notation! Every sentence is a struggle.

1. 1

But this is still different from memorization no? Being familiar with notation is different from recalling the notation. I wouldn’t expect folks taking their first logic course to be familiar with all the axioms and simple tautologies but I also wouldn’t expect them to memorize the axioms as a substitute for understanding how proofs are derived.

But maybe we are talking past each other here because I’m not denying that memory is an important component of cognition. I’m questioning the usefulness of spaced repetition as a cognitive and problem solving aid.

1. 2

How did memory fetishization start? I’m not knocking the post for providing a method of remembering but why remember things?

versus

I’m not denying that memory is an important component of cognition. I’m questioning the usefulness of spaced repetition as a cognitive and problem solving aid.

This post looks like the literal opposite position of your first. Sure, positions can evolve; but to pull a complete 180 in 3 or 4 posts definitely feeels disingenuous.

1. 1

Am I supposed to thank you for your adversarial responses? What do you suppose you are achieving here?

1. 1

Pointing out that you’re giving antithetical positions isn’t inherently adversarial. It could be that I’m trying to figure out what your actual position is, and giving you an opportunity to dispel any notions of dishonesty. Did you simply change your position, or are these to arguments compatible in some non-obvious way?

2. 2

I am currently taking two undergraduate physics courses (quantum physics and electromagnetism), and I’m using Anki a lot in the process. Before that, I’ve used Anki to (very successfully) help me pass the theoretical part of my driver’s exam.

You can use spaced repetition to blindly memorize a bunch of context-free facts. I use it for few such things: being able to recall the units or the value of Planck’s constant will make your life a bit easier at a few places in the course, but it certainly won’t make you pass the exam on its own, nor will it allow you to master advanced physical concepts.

However, the vast majority of the “cards” I made in Anki actually require me to do some derivations and use the facts in context; a lot of them are fairly complex so I need to do my cards with pencil & paper handy. I mostly use them to remember fundamentals (e.g. setting up the Schrödinger equation for example systems, proving & deriving equivalence between various forms of notation etc.), because being able to retrieve and use those quickly and efficiently makes everything much easier. It’s physics, after all: “new” concepts are constantly being built upon and tied into “old” concepts. At above-“introductory level” courses, the efficiency of your ability to recall the old will heavily influence your ability to acquire the new.

Bottom line, I use Anki as a glorified quizzing mechanism with built-in spaced repetition (and a load of bonus points for embedding MathJax). A fair deal of research has shown that spaced repetition and repeated quizzing are key to successful long-term retention of both rote facts, and complex concepts. I’m no expert on any of this, and most of it is inspired by the excellent book Make It Stick which came highly recommended from mutliple sources.

1. 1

Neat. Thanks for sharing your experience.

1. 1

I agree. SRL should go hand in hand with practice. Now I have used spaced repetition practice where you create decks of problems and that was also helpful. I often use physical index cards, but I have also used anki.

2. 1

Nobody has ever learned anything without memory. Its simply not possible to match concepts if you don’t even remember the concepts to be matched. How would you even measure or compare two elements if you don’t have them in your memory? Sure you can memorize through using them, but it’s much more prone to holes than stepping through every item in a list.

1. 2

Because unlike a computer I can have flashes of insight without recalling lists of facts. Also, at what point did I say memory is not useful for cognition? The statements I made were about the utility of wholesale memorization and spaced repetition and the elevation of/emphasis on memory/memorization as a useful technique for achieving mastery in some domain.

1. 1

Ah. So those flashes of insight come from memory. Spaced repetition learning is a style of memorization that prioritizes that “flash of insight” style of recall. I suspect you likely have a good healthy memory, because if you didn’t it would be I think more obvious to you the value of these methods. I have ADHD which can interfere with memory formation, so these techniques have let me keep up and sometimes even surpass peers. It’s often used to gain a deeper synthesis of the material. By contrast the techniques I talked about in my post are more about putting ideas in your head like putting documents in a filing cabinet.

I think memory is fundamental to achieving mastery, however I have personally have traveled down the path of “memorizing through practice” and “memorizing through spaced repetition”. I would say that while you will potentially get holes in your learning if you only do memorization through practice, in real life it’s typically not a big deal. This is because most things you see, you’ll see most of the time. The things you rarely see will rarely come up. I do think if you need to learn something in short time span, space repetition learning is very hard to beat but it should come in conjunction with practice and not in place of. It’s very hard to get synthesis of the learning material without practice.

1. 10

I started using Anki a few months ago, after a long time of being frustrated with my poor memory. I read this comic during my research into solutions, but what really pushed me to start using spaced repetition was this essay.

So far, I’m very happy with Anki. I started off by putting in a new vocab word every day. I’m gradually ramping up what I add. Anything from programming facts (how do you make text bold with CSS) to details about books I read (in The English Patient, what is Kip’s job).

I review my cards roughly once a day, and the result feels empowering. Being able to recall most of the info during review sessions makes me aware of the fact that I would have forgotten most of it without Anki.

1. 2

Lovely colours, the themes look good and are still usable. Cool idea using image-q to generate a dynamic palette.

That said, I’m a bit puzzled of the effort that goes into changing the colours of the top 1.5 cm of the Firefox window. I kinda wish it would have an option to colourise the whole browser window, like Dark Mode.

Also, on my screen the date input field is too narrow and cuts off the day. And if you pick an image from another date, it switches back to the image of today after a seemingly random delay of a few minutes.

1. 2

Thanks for the feedback!

The Dark Mode link is broken for me, but I’m aware of extensions like that. It’d be a lot more challenging for Picture Paint though because the colors can be any value. It’s hard for me to think of how to make generic colors look decent on actual websites, as opposed to just in the browser chrome.

For the date input field issue, would you mind providing any more details? I’d be happy to look into it.

For the issue with it switching back to the image of today, that’s occurring because the extension checks for a new image every ten minutes. It only locks to a specific date if you set it to do so on the preferences page. I’ll think about how to improve this case.

1. 2

Are the screenshots supposed to be animated? They’re not. (iPhone.)

1. 1

Thanks for the heads up! Yes, they are MP4 videos, and they should autoplay.

I tested in Safari on my iPad, but I’ll have to borrow a friend’s iPhone to try it. This StackOverflow question looks promising though. I can add the playsinline attribute, but it looks like if you have “low power mode” on, videos still won’t autoplay. Kind of ironic, considering I decided to insert MP4s rather than GIFs for performance reasons…

1. 1

Update: adding playsinline does the trick. When low power mode is on, the user gets a play button on top of the video, which is fine by me.

1. 2

I still can’t determine how Go modules would make my life measurably better than plain old GOPATH. 🤷🏼‍♂️

1. 4

One thing I always liked about GOPATH and using VCS for dependency fetching is how easy it is to make changes to your dependencies: just cd over to the easy known path of your dep, make a change there, rebuild your project, then push your change up from your dep. Great! There’s no need to go find the git repo and clone it and then mess with your manifests to use local sources like you’d need to do with Rubygems/Bundler, or participate in symlink hanky-panky like with NPM.

But the downside is that when you need to work on two different projects that require different versions of a dependency, you need either two GOPATHs, or some other tacked on dependency management scheme using vendor. Either way means an additional tool for you (and your team) that you need to version and install on workstations and train people to use, which I see as an annoyance.

With go modules, it’s still very easy to get a version-controlled copy of a dependency (just clone the module URL), and then to use that copy when you build a specific project (by specifying the path of your local clone in your go.mod file). And you don’t need any tools other than go to do it.

1. 4

i was critical about the improvements at first, too, but they work really well for me where i’ve used them. the design is well thought out, migration from existing systems isn’t hard (fully automatic in my case, only small code bases though). the checksums for modules (go.sum) is also nice to have. it pays that the go team seems to read many papers and take their time with things.

i still manage my sources like in the GOPATH with full paths, which i’ve found very useful (and do so for other languages). i always know the url to the repository :)

1. 2

Were you a Go user at the time when code.google.com got closed down? Vendoring is a way to protect against events like this, or packages being taken down/moved from/on github/… by their authors. Modules and the planned global mirrors take this idea further, making the resulting ecosystem more globally interoperable than vendoring alone. While code.google.com may still exist in your GOPATH, there’s no easy way you could share your code that’s using it with others.

Also, modules introduce a somewhat controlled way of upgrading code & dependencies. Especially dependencies of dependencies, and further down the rabbit hole.

1. 1

Or an npm user when left-pad got deleted? Vendoring would’ve avoided that problem, too. Plus, you can still work / deploy when the npm registry is down.

1. 1

Yarn does have an “offline mirror” feature that is now one of the more significant distinguishing features from npm.

https://yarnpkg.com/blog/2016/11/24/offline-mirror/

2. 2

If you ever need a non-master branch of a dependency, modules will help.

1. 2

One of the most memorable technical posts I’ve ever read is this one on how to write a good commit message. It wasn’t something I had ever thought of before, but in hindsight, it’s such an underrated skill.