HNHacker News
TopNewBestAskShowJobs

Xavdidtheshadow

638 karma · joined July 16, 2012

Senior Software Developer at Zapier
submissionscomments
Xavdidtheshadow··on Tasks, Lists, and Promises
I know Jira has support for linking tasks semantically (X blocks Y; is blocked by Z) but I wish more task managers had better support for this. A few do, but very few of those will actually show you a task graph.

I actually wrote about this exact thing: https://xavd.id/blog/post/my-perfect-task-app/#dependent-tas...

My hope for the perfect task tracker springs eternal.

Xavdidtheshadow··on Short URLs: Why and How
I've got https://xavd.id, which I'm very proud of. @xavdid is my username across most sites (except for very old accounts, like this one)
Xavdidtheshadow··on Ask HN: It's 2022. Where should I direct the youths to learn about programming?
As another commenter notes, programming with a specific goal in mind is a good way to start. People can't sit down and learn "math", it's too broad a subject. Instead, you sit down and learn how to do a specific task (solve for x in an equation) and build from there. A lot of younger engineers today learned things like HTML/CSS/JS to customize/exploit Neopets and Myspace. It's not that they were interested in programming, they just wanted a result and figured out how to make it happen.

So to that end, I'd probably start with a project-oriented book, or give them tasks that require programming to solve (e.g. tell me the distribution of words in this Shakespeare play. What are the most common ones?).

Editor wise, VSCode is great, but may be too many bells and whistles. Sublime Text may be a better place to start, since it'll do highlighting, formatting, etc without being overwhelming.

Language wise, Python, JS, and Ruby all have ample beginner resources. Depending on what else they're into, JS is probably the most widely useful (since it's on most web pages and the sandbox is built right into the browser).

Good luck! Let us know how it goes!

Xavdidtheshadow··on Go will use pdqsort in next release
> if you're looking for performance you probably aren't just blindly using the standard library sort anyway

That's so interesting- I think I have the opposite response. I figure unless I'm doing a very specific case that doesn't fit well with the stdlib sort (for some specific reason), It's probably good enough. Those language folks usually know their stuff, who am I to try something else?

Xavdidtheshadow··on Success and Failure at Pebble
I loved my pebble(s). 2 great stories:

1. They supported 3rd party watch faces based on a file. There was a great little site that let you use a visual UI to build the file and, if done from your phone, upload it right to the watch. Once, when out at midnight beer launch, I made a custom face for the beer and won a little keychain from the brewery. My apple watch is nowhere near this functionality.

2. Once time in 2014, I ran into some Pebble engineers at an ice cream shop in Palo Alto, they spotted my watch, they bought my scoop! Fun, weird little Silicon Valley moment.

Xavdidtheshadow··on Ask HN: What Makes a Good Changelog?
I like some of their ideas for sure. I think it's a good starting point.
Xavdidtheshadow··on Ask HN: What Makes a Good Changelog?
Sure, makes sense! It's a tough balance to strike, to be both informative enough to cover all the cases and slim enough to show only the breaking changes.
Xavdidtheshadow··on Ask HN: Share your personal site
Thank you!
Xavdidtheshadow··on Ask HN: Share your personal site
https://xavd.id/

It's basically just text and images, but I'm proud that I did the whole thing (content, design, implementation) and the overall attention to small details.

Also, I love the domain. @xavdid is my username on basically everything that isn't an account I've had for a very long time (eg this one).

Xavdidtheshadow··on Maestral – open-source Dropbox client
I wanted to use this, but it doesn't handle Smart Sync, a feature I find myself really taking advantage of. But, I'm glad this sort of thing exists!
Xavdidtheshadow··on Bashing the Bash – Replacing Shell Scripts with Python (2017)
> obscure and difficult-to-predict

I mean, I think there's something to that. Bash has a lot of arcane rules; I personally never write an `if` statement right, what with the `[[` vs `[` and having to surround the condition with whitespace. I find that bash scripts carry a million little gotchas that will cause variables to not evaluate/expand the way you'd expect.

Say what you will about Python, but it's much easier to reason about what a script will do as compared to bash (unless the bash is _extremely_ simplistic).

Xavdidtheshadow··on A statically typed scripting language that transpiles to Posix sh
Do you have resources to this end that you'd recommend?
Xavdidtheshadow··on The Wisdom in Kung Fu Panda
KFP is one of my favorite movies; I (an adult without kids) watch it yearly on my birthday. It's got so much heart and it's fight choreography is up there with other all-timers (ip man, crouching tiger, hidden dragon, the matrix).

If you only watch one clip, check out this segment from the training montage: https://www.youtube.com/watch?v=yCk9VAxEpD0&t=156s

Their use of visual boundaries and transitions is just so superb.

Xavdidtheshadow··on What doctors wish patients knew about long Covid
It's not about 100% prevention. Nothing, short of 0 human contact, can guarantee that.

It's all about adding layers of prevention that each drop your chances of catching it (and its potential severity) by N% each. Get enough of those, and your chances start to look pretty good.

Xavdidtheshadow··on Google “hijacked millions of customers and orders” from restaurants – lawsuit
When people turn a necessity (housing) into an investment (and by extension, a source of profit), then people/companies with means will buy up as much as they can and hold it, reducing the supply and raising the price of something that people _have_ to have. So, saying rent is "determined by market value" as if "the market" is an impartial omniscient force is misleading.

For a lot of the 20th century, _most_ people could buy a house regardless of their chosen occupation ("most" is doing a lot of work here- there's a long history of racism tied into housing acquisition, but my basic point is the same). You could be a blue collar tradesman and buy a house for your family of 4. So yes, I think that's definitely a (theoretical) possibility.

It's not outlandish either. We already have a much healthier model to copy: cars. There's no one buying up _all_ the cars and then leasing them to you at artificially high prices. There's (normally, chip shortages notwithstanding) plenty of cars and you can pick what best suits you- new / old / cheap / expensive / fancy / plain / etc. Housing could be the same way if the goal wasn't to extract profit out of those who can't afford to buy (or weren't born 60 years ago).

Xavdidtheshadow··on CD sales grow for first time since 2004
> the 10 movies or so I watch per year is cheaper than a subscription service.

I think the value here _really_ depends on your usage patterns. For you, it sounds like individual discs make a ton of sense. But, many people watch more movies than that (during the height of lockdown, we were watching 1-2 movies _daily_), so streaming services made the most sense. Sure, it's annoying that movies come and go, but the price is certainly right.

Once size won't fit all here, so it's definitely great that discs are still an option. I'm glad it works for you!

Xavdidtheshadow··on Tinder’s pricing algorithm can charge users up to 5x more for same service
They have to strike an interesting balance- enough people have to find romantic success on the app (and tell their friends) to get new users, but not be so successful that too many users stop using the app.
Xavdidtheshadow··on Ask HN: Does anyone else miss TouchID?
The touch bar was very interesting tech! My favorite use was scrubbing songs/videos and being able to adjust the brightness of my monitor and screen independently. That's where the tech shined- having context-dependent UI elements. When you hit the physical brightness button, you just have to guess what's going to get adjusted.

I think with most things, the answer here was to have a mix of keys and buttons. With 100% TB, it's slow to change volume/brightness. With 100% keys, I've got all these extra keys I can't use (you can re-bind them with 3rd party software, but it's fairly static).

I'd personally pull like, F3-F9 in favor of a touch bar, and then be able to configure the remaining buttons. I'm a little sad reaction was so strongly against the idea on the whole, it definitely had potential.

Xavdidtheshadow··on Ask HN: Does anyone else miss TouchID?
I go back and forth- each works much better than the other in certain situations, which makes it tough to 100% want one over the other. I only got a FaceID phone late 2021, so I'd become very used to TouchID.

FaceID is better for:

  * in-app auth- when an app (e.g. a financial one) has a secondary auth check, FaceID passes without extra effort- it's very slick. For TouchID, I usually had to move my phone to the button (because it wasn't already there)
  * using unmasked- It's fast enough that under normal (unmasked) circumstances, it works great
  * dirty/wet hands - especially since the phones are waterproof, it was always annoying to have to do my passcode if my hands weren't totally dry. I didn't think it would come up a lot, but it did
TouchID was better for:

  * Pandemics. The Apple watch unlock works 70% of the time, but that's not 100 _and_ you have to own a separate, expensive piece of hardware. They're fixing this in the latest iOS beta (FaceID can learn your face w/ a mask on by checking details around the eyes).
  * Bed- my face is usually squished on a pillow and the phone is close to my face; it can basically never be read
---

So, it seems like there's no silver bullet. Both would be great, but I think I understand why they made the tradeoffs they did.

Xavdidtheshadow··on Netlify Graph: A faster way for teams to develop web apps with APIs
(I'm a Zapier employee on the Dev Platform team; my comments are mine alone and don't necessarily reflect the opinions of my employer)

You may find the Zapier's developer platform useful. Instead of using pre-built integrations, you can develop and ship your own Node.js packages for private use. I've got a fleet of them that can do basically anything, but also play nice with the rest of the platform.

I'm not sure exactly what your pain points are here, but there's definitely an "escape hatch" for power users!

Xavdidtheshadow··on Don't use text pixelation to redact sensitive information
My employer makes a tool that does this! It's a screenshot tool we had been using internally for years that we released last year. It takes a sample of the colors in the image and uses them for random-looking obfuscation. So it's obvious that the data is hidden, but there's no pattern or way to un-blur that data. It doesn't work as well on low-contrast images, but we find it quite useful for hiding sensitive data. Some examples:

frog: https://cdn.zappy.app/f97505ba92625a0e949aebcfa4220852.png

wikipedia: https://cdn.zappy.app/3b7d5cf750066633e40aeddda926f95f.png

It's not really targeted at the HN crowd (requires an account, etc), but the app is "Zappy" if folks are interested.

- https://zapier.com/zappy

Xavdidtheshadow··on Ask HN: Great Blogs by Programmers
I'm not sure it qualifies as "great", but I am a programmer!

https://xavd.id/blog

I write about all sorts of things, some of which are technical. Here's a favorite Python article: https://xavd.id/blog/post/python-dataclasses-from-scratch/

Xavdidtheshadow··on Django Ninja – Fast Django REST Framework for Building APIs
I like the idea of DRF, but when I only dive into it occasionally, I find it has much too much magic for my liking. "Just defined this class w/ this property and then it `just works`!" is really hard to follow if you're not familiar with it.
Xavdidtheshadow··on Nintendo Switch game cartridges taste offensively bad (2017)
This lead to some great headlines as the Switch was launching:

> Sure, Breath of the Wild is fun; but how does it taste?

Xavdidtheshadow··on Show HN: I made a grid based font editor and font
This is extremely cool! Being able to tweak glyphs on the right and use them on the left is pretty amazing feeling.
Xavdidtheshadow··on A routine gem update ended up creating $73k worth of subscriptions
> We do major version bumps on a yearly cycle and people get stuck on 8 year old versions and won't upgrade

We do the same thing and have the exact same experience, unfortunately. Software is a messy business and it's hard to apply strict rules to human process.

I think ultimately SemVer can be used to to accurately communicate if you, a user, are safe to upgrade between versions if applied strictly. Whether or not your users will (or be happy about it) is another ballgame.

Xavdidtheshadow··on A routine gem update ended up creating $73k worth of subscriptions
> It was wrong when it was implemented, never documented, but has a currently defined behavior that most people don't want

That strikes me as exactly the sort of guarantee that's _not_ made by semver. You can rely on that behavior, but then you have to check against every patch version, because that's exactly the sort of thing that could change out from under you. Maintainers shouldn't worry about breaking this case- they never promised to support it in the first place.

I think a lot of those cases should be a major version change, and that's totally fine. We _should_ minimize the number of breaking changes to code people depend on, but sometimes the best fix to the (totally reasonable) situations you outlined above is to make a new major version. Users will have to make changes to upgrade (instead of just bumping the versions), but it won't change out from under them. Some docs about what's changing, why, and how to migrate your code go a long way here.

Xavdidtheshadow··on A routine gem update ended up creating $73k worth of subscriptions
> A big part of the problem with SemVer is that "breaking changes" is subjective

I don't think that's true. I've always thought a breaking change is defined in broad terms as "the public API surface, runtime, and output". Given that, each of these would be a SemVer major:

* remove a publicly-exported function * public function changes order of arguments * drop support for an old version of the language * a function changes behavior significantly (the issue the OP wrote about)

Relying on a specific major version, you should be able to assume none of the above will happen. The following would _not_ be a major version:

* renamed/removed private versions * add extra, optional arguments to public function * add support for new version of language * the xkcd example about CPU usage

In each of these cases, if you rely on non-guaranteed behavior, you should check every version upgrade closely- package maintainers don't make any assurances about those.

I'm not sure how mongoid is developed, but this smells like a bug to me. The `or` behavior started considering a thing it didn't used to, possibly unintentionally. Unfortunately, released mistakes are the one thing SemVer doesn't cover. Testing sufficiently about your own assumptions (in this case, that the user upgraded matches the one found in the query) is the best way to CYA.

Xavdidtheshadow··on My First Impressions of Web3
I really love their example of an NFT that changes based on where you see it.

I've been kicking around an idea of selling a bushel of NFT's and then later changing all the images to the text "I spent money on a monkey but all I got was this stupid text" and then abandoning the project.

Xavdidtheshadow··on Peter Bogdanovich has died
Bummer. My favorite movie of his is "What's up, Doc?", just a hysterical bit of comedy.
Page 1 of 6Next →