HNHacker News
TopNewBestAskShowJobs

andrewzah

3,095 karma · joined January 22, 2020

The best way to reach me is by email: zah@andrewzah.com.

My website and blog: andrewzah.com. I write about programming, language learning, and traveling. I have been studying Korean for ~4 years now.

My code: https://github.com/andrewzah. Currently remotely employed by Open Source Systems.

GPG: D87BD9DCF11BACD6CDB40CB213732FB13E61E0BE

submissionscomments
andrewzah··on FreedomBox: Run your digital services from your home
...

https://github.com/andrewzah/lilac-docker/tree/master/servic...

None of these services are useful apparently, because I manage them myself instead of relying on something like sandstorm/freedombox.

andrewzah··on FreedomBox: Run your digital services from your home
> Wont more apps be supported in freedombox?

I can support any app that I have either the source for, or a binary. I just write my own docker images [0] if one doesn't exist already on dockerhub, or install the binary directly on a VM or LXC as needed. For example, I set up Jellyfin on its own LXC.

For me, stuff like freedombox/sandstorm directly limit me as I would have to spend time learning their GUI, etc, for no gain. All I need is an ssh session into my docker VM and I can set up pretty much anything I need exactly how I want. This lets me be very particular about services accessing files, networking, versioning, and so on.

[0]: https://github.com/andrewzah/caddy-webdav

andrewzah··on FreedomBox: Run your digital services from your home
I'm not the parent, but I use a debian VM inside of a proxmox cluster to run docker services. The config and data services for the various docker images are mounted via NFS, and live in a ZFS pool configured in RAID10.

For non-technical users I could see freedombox (or sandstorm.io) being useful, but if you have enough knowledge to manage a vm + use docker-compose, the flexibility is much better.

andrewzah··on Show HN: Epub.to – ePub to pdf, mobi, Kindle, and an API
Removing drm from .azw3 is easy. [0] All you need is the ID of your kindle, since it's tied to your device.

There is also a plugin for Calibre, although I haven't tested this myself. I'm not sure if it requires a device ID or not. [1]

[0]: https://alexwlchan.net/2019/08/removing-the-drm-from-my-kind...

[1]: https://github.com/apprenticeharper/DeDRM_tools/wiki/Exactly...

andrewzah··on Help users in Iran reconnect to Signal
...Until it gets branded as a white supremacist tool for encrypted communications.

Call me extremely pessimistic but events like Jan 6. will be used as justification to start attacking applications that offer end-to-end encryption, and encryption in general. Just like 9/11 was used to justify eroding certain civil liberties.

andrewzah··on Bill Evans – The Creative Process and Self-Teaching (2007) [video]
The YT video is from 2007, the documentary is from 1966.
andrewzah··on Bill Evans – The Creative Process and Self-Teaching (2007) [video]
They also played on Intermodulation and Interplay, great albums. For guitarists, I like Grant Green, Wes Montgomery, and Joe Pass as well.
andrewzah··on Show HN: Haven – Run a private website to share with only the people you choose
"and its only advantage is that FB polices its userbase"

I find the biggest advantage is the network effect. In my experience I have found a lot of things through marketplace and fb groups, in addition to craiglist.

andrewzah··on Show HN: Haven – Run a private website to share with only the people you choose
Other platforms have different communities and users. There is absolutely no facebook replacement at this time. Whether or not it'll continue to be used in 10 years is another question. To clarify, I use neither facebook* or twitter.

My point here is that you cannot solve a human and social problem from a technical standpoint. It doesn't matter how good your product is if no one uses it. Mastodon will never be a facebook replacement, etc.

* Aside from marketplace and local buy/sell groups.

andrewzah··on Show HN: Haven – Run a private website to share with only the people you choose
...there is no facebook replacement. You can't replicate social groups via software. Facebook is not anything special other than most people use it, so the network effects are immense.

You could have the greatest software in the world and it would not be able to replicate fb's markets and groups functionality. Craigslist is the only one that comes close for replicating fb marketplace.

If you want a small private blog, just host a single user mastodon or pleroma instance. That way you're part of the fediverse but maintain control of your own personal instance.

andrewzah··on Docker, Django, Traefik, and IntercoolerJS: My go-to stack for building a SaaS
If it's cached, yes. However at my job we manage our own base images and we do update those somewhat frequently.
andrewzah··on Docker, Django, Traefik, and IntercoolerJS: My go-to stack for building a SaaS
Not in 2021, no. I would go with typescript, golang+gin or preferably rust+warp/tide.

If you had asked me in 2010, 2015, or even 2018 I would've had different answers most likely.

"And you can’t imagine writing > 1000 LOC of a startup SaaS product in any of them? Really? "

After working on large rails codebases I get nauseous even thinking about having to safely maintain that level of code in dynamically typed languages.

andrewzah··on Docker, Django, Traefik, and IntercoolerJS: My go-to stack for building a SaaS
This would be nice if everyone used that. When I looked at the source code for mayan-edms, they weren't using that.

Apache airflow? Doesn't use it. Jupyterhub? Doesn't use it.

I was happy to see projects like Zulip using this, but if it's optional then I can't rely on people actually using it. It's the same thing with ruby/sorbet.

andrewzah··on Docker, Django, Traefik, and IntercoolerJS: My go-to stack for building a SaaS
"apt-get update && apt-get upgrade"

You can do this exactly the same in alpine, with "apk update" and "apk add".

"Secondly, all this cargo-culting around small containers is fine if you are cramming resources. I am not."

The default docker python image is 885MB. python:buster-slim is 114MB which is much more reasonable. Even if you're not "cramming resources", pushing 885MB vs 115MB vs 20MB across the wire does add up over time.

In my case, we do quickly iterate and pull docker images so it does make a difference for my colleagues if the image is 30MB vs 500MB. Even if we're all on gigabit internet.

"Cargo culting" implies doing it without knowing why we're doing it. The benefits of reducing the size of docker images is apparent to everyone, although there are diminishing returns. With dive[0] it is very easy to figure out where the waste is.

"The reality is that my projects and many others are really, really over-provisioned. Looking at my graphs right now, I am on the front page of HN and my server load is still only 20%. "

Optimizing docker images has nothing to do with being over-provisioned.

I will concede that it's very different as a solo developer vs even a small team.

[0]: https://github.com/wagoodman/dive

andrewzah··on Docker, Django, Traefik, and IntercoolerJS: My go-to stack for building a SaaS
"If you're just launching, your focus should not be on performance or how easy it is to dockerize but to figure out who your user really is."

I agree here but I should note that my main focus is spending less time debugging errors at runtime and in production, and avoiding errors in the first place. This is primarily why I use rust.

"Not sure the verboseness of either golang or rust"

Verbosity has nothing at all to do with implementing good, robust code. You could do it in python, rust, or another language. With certain languages you don't have to spend time writing guard code because it's handled natively by the compiler, type system, or both.

" dynamically typed languages (arguably) makes it easier to change things,"

They make it easier to change things, not necessarily correctly. With modern IDEs refactoring is not an issue.

"Many have imagined and built valuable stuff in interpreted, dynamically typed languages before you, by being more focused on overall structure and making sure it's strict and resilient. One really doesn't have to search far for successful applications that are certainly way beyond 1000 LoC and still iterate pretty quickly for their size."

I am aware of this, but I can't help but wonder if they would be able to iterate much more quickly knowing that the compiler and type system eliminate entire classes of bugs. Sure, you might be able to get to running code a little bit faster, but if you have to spend time guarding it and debugging runtime errors... is it really faster?

===

There seems to be this mindset that being fledgling startup means no time for silly things like types or compilation, etc, only iteration. If one actually does their market research and figures out who their users are and what they want, one should be able to iterate just as quickly in i.e. golang or another compiled language with a healthy ecosystem.

I have not worked at a FAANG company or a company even remotely the size of those companies, but I have created and maintained somewhat large ruby on rails codebases. Debugging runtime errors became my bane, especially when I could not guarantee that the persons writing the ruby code were following modern practices (or any practices at all). Not that I think compilers are perfect, but they -do- catch so many errors, some of which may have made it into runtime.

andrewzah··on Docker, Django, Traefik, and IntercoolerJS: My go-to stack for building a SaaS
"(though it might be easier to write in - trading off reliability for ease of use compared to a compiled language)"

I find the "ease" is overstated compared to time spent debugging issues in production, but that is a separate discussion.

See my comment in the sister thread about the django/rails equivalent.

andrewzah··on Docker, Django, Traefik, and IntercoolerJS: My go-to stack for building a SaaS
> Does Go (genuinely) have something to match?

To the extent of django or rail's maturity and features, likely not, although I don't know what features you use django for. I guess this answers my question to an extent.

Last time I worked with golang I used gin and xorm, but there were some things I had to manually do. That being said, I find rails to be an enormous beast that provides a lot of things that one may or may not need.

In my experience, working with golang and rust, which are compiled and statically/strongly typed have saved me headaches and time even with having to hand-roll some features.

andrewzah··on Docker, Django, Traefik, and IntercoolerJS: My go-to stack for building a SaaS
I'm from the US and my personal website has been hosted through hetzner for 3+ years. From the US, I typically got around 120-130ms ping before I put it behind cloudflare.

It wasn't really an issue.

andrewzah··on Twitter improves API usage for researchers
"silencing opponents"

Nobody here is silenced. You do not have a right to a twitter account. People can, and do, make accounts elsewhere.

Literally anything Trump does can and is covered by the media; this is exactly the opposite of being "silenced".

andrewzah··on Myopia treatment 'smart glasses' from Japan to be sold in Asia
Really? We're taking medical advice from random people on youtube?

How is this any different from a youtuber claiming the earth is flat or vaccines cause autism?

andrewzah··on Myopia treatment 'smart glasses' from Japan to be sold in Asia
The same thing happened to me where I got continually stronger prescriptions, but I stabilized anyways at around 18. My optometrist told me that's very common after adolescence.

I really wouldn't recommend using an incorrect prescription. In the US anyways shops won't let you use a prescription older than 1 year.

andrewzah··on Our experience with the Fediverse, and why we left
"To me local timelines only make sense if the instance has a very clearly defined group with some kind of shared access, e.g, a company that has an instance for use by its employees, or a club or organization have some kind of membership"

Wow yeah, this makes a lot of sense. It's too bad nodes became associated with niche hobbies or interests.

E.g. a fraternity/sorority that hosts a node would make perfect sense for a local timeline. I guess the only issue is that these organizations aren't permanent. So people would have to migrate, which isn't a thing for twitter or facebook. I know mastodon has a feature for this specifically but I think people would still find it too confusing if people's handles kept on changing.

andrewzah··on Our experience with the Fediverse, and why we left
I do agree that because mastodon became focused around specific niches per host, it made things much more complicated for new users. Do I join mastodon.social? Do I join bsd.network? Do I join writing.exchange? Etc.

What I realized was I should have been asking: Do I care about the federated timeline? Do I care if my host blocks other hosts at random? Do I care if my host allows certain things (I.e. pornography with or without a NSFW tag, or at all). Do I know who the host is and can I trust them with my private messages and to not randomly ban me?

I personally like seeing the federated timeline as I have discovered some accounts through it. But my host absolutely needs to do some filtering because some hosts will allow -anything-. I never really found much use for the local timeline.

So for me, hosting was clearly the best option. I do try to get my friends to consider joining the fediverse, and I offer hosting to them to solve this issue.

andrewzah··on WhatsApp loses millions of users after terms update
The short of it is group chats lose functionality when even 1 non-apple user joins, and apple works hard to make sure you can't use imessage on other devices.

It's so frustrating. I want to like apple and their approach to privacy, but then they do stuff like this that alienates non-apple users.

Anyway, imessage is like a caveman compared to messaging apps like Kakaotalk and LINE. Those have more features and I like group chats on them much more than I do on imessage. Not that I had a choice; I don't think I ever got my Korean friends' actual numbers because everyone uses Kakaotalk.

[0]: https://www.androidauthority.com/green-bubble-phenomenon-102...

andrewzah··on Our experience with the Fediverse, and why we left
This is why I recommend self-hosting via pleroma if possible. Mastodon is a huge resource hog compared to pleroma, which can run nicely on a raspberry pi.

But yes, the issue gets outsourced to the user, and you have to trust a random individual instead of an entity like twitter.

andrewzah··on Our experience with the Fediverse, and why we left
I really don't get why the concept of mastodon is so confusing.

It's basically twitter/microblogging* with multiple hosts, and you can see posts from other hosts. So instead of just @andrewzah, my handle becomes @andrewzah@<host-I-chose>. You could visualize twitter as @andrewzah@twitter.com, but it's redundant as twitter is the only host. This is basically how email works, no?

The only other difference is federation, so you have two timelines instead of one: the entire** federated timeline, and the local timeline to your host. Plus the timeline of users you follow.

So unlike twitter, the user must decide what host they want to use. Or they can self-host an instance. I'm not sure if it's up to date, but https://instances.social has a wizard for this.

*: IIRC mastodon's default limit is 500 chars, and pleroma's is 2,000.

**: One exception: Hosts can block other hosts. So if you use i.e. mastodon.social, you won't see posts from users on blocked hosts unless you specifically follow them.

andrewzah··on Is it better to use cat, dd, pv or another procedure to copy a CD/DVD? (2015)
Alternatively, I have never written to the wrong device when using dd. I always double and triple-check with lsblk and blkid before committing to it. dd is always available, unlike other tools.

If a user blindly copy-pastes and destroys their main drive, that's a very good lesson to thoroughly double check before running destructive operations.

andrewzah··on GitHub has received a DMCA from MPA about torrent tracker nyaa.si
The real WTF here is why a torrent site is hosting its source on a site like github in the first place. We all know that societies like the MPA flagrantly abuse the law because there are little repercussions. The codebase really should have been selfhosted.
andrewzah··on Zoom improvements requested by music schools
This is basically HN anytime anything related to audio engineering pops up. I'm sure nobody has thought of trying to address things like latency.
andrewzah··on Facebook Incubated the Insurrection
Intent does matter. Why don't you try moderating posts at the scale facebook receives them, and we can compare the results.

edit: I am not advocating for or against facebook being so large. What I am saying is there is a clear distinction between facebook and e.g. parler in terms of moderation.

← PreviousPage 20 of 29Next →