HNHacker News
TopNewBestAskShowJobs

irskep

2,078 karma · joined March 22, 2009

https://www.steveasleep.com/

steve@steveasleep.com

[ my public key: https://keybase.io/stevejohnson; my proof: https://keybase.io/stevejohnson/sigs/QcinZyHluUytEHLuhlmh7QLRvuZM2lhMxVVVbJkZ9Pg ]

submissionscomments
irskep··on SQLite the only database you will ever need in most cases (2021)
Interesting question. I think you could probably get those features by deploying Piku or Dokku for like $4/mo on a VPS, and the equivalent managed Postgres on Render would be like $20/mo (16GB SSD), so something like $6-10 seems like the right range to me. Maybe not a booming business, but a nice margin percentage and worth paying for good UX. And the cheap version doesn't need to be the only version if people want more RAM, etc.

I'd find such a product really appealing, especially with a dedicated backup strategy that uses the SQLite backup API to do hourly snapshots or uses Litestream to S3 by default.

irskep··on SQLite the only database you will ever need in most cases (2021)
Yeah, that's fair, and it was bad phrasing on my part. The engineer type distinctions are completely imaginary. It just really threw me off to have people respond to me sharing something I thought was helpful with claims that I'm somehow opposed to learning, when this project is nothing but learning.

I do think people who have experience deploying software have a blind spot here, just like I have a blind spot for people who have never learned how to center a div. jUsT uSe FlExBoX

irskep··on SQLite the only database you will ever need in most cases (2021)
Adding my voice to this - I was actually looking at Synapse a few days ago and was wondering why SQLite was not recommended. This would have answered a question I didn't know the answer to until just now.
irskep··on SQLite the only database you will ever need in most cases (2021)
I'm extremely excited about LiteFS. Looking forward to trying it out once write forwarding lands. I think it has the potential to make hobby projects scale to zero but also serve reasonable traffic, which is exactly what I'm looking for. Thanks so much for hiring Ben!
irskep··on SQLite the only database you will ever need in most cases (2021)
Sure, you can do all that, but have you also written video games, UI frameworks, compilers, Twitter bots, localization tools, and web-based whiteboards? Have you ever made a music video or gotten a novel published? If not, why not? I'd say it's because you had different interests and spent your time elsewhere, which is completely fine and not a problem at all. People are allowed to have their own interests and explore the amazing world of technology in their own ways.

It's weird to say that people aren't learning these things because they're "stopping themselves." They're just going in other directions. No one in my life has ever accused me of learning too few things and failing to learn by building things.

Edit: I think I misunderstood the parent comment, sorry for the defensiveness here

irskep··on SQLite the only database you will ever need in most cases (2021)
I really appreciate you taking the time to respond with these details. I do go deep on application-level tech (CSS, HTML, JS with and without frameworks, iOS dev, etc) and it's always disheartening for people to claim that choosing not to focus on specific technologies makes you a worse human being.

The other thing that's going completely over people's heads here is that I made this repo with the intent of helping other people who know less than me. I know I can figure out all the deployment bullshit, but I mentor folks who can't, and also don't have much money, and yet still need to deploy their portfolio projects to the Internet in order to find jobs. I was trying to find a balance of ease-of-maintenance vs monetary cost. If there's an even simpler solution with an even lower cost, that a random bootcamp grad could maintain, I'd adopt it in my template in a heartbeat.

If any of these people claiming it's easy want to work with me on a reboot of the "deploy a web site easy and cheap" template, I'd absolutely collaborate with them on it. I think it's important to democratize all the cheap computing power lying around these days.

irskep··on SQLite the only database you will ever need in most cases (2021)
Well, he did cherry-pick one joking comment out of a well-intentioned post in order to say I have a bad attitude, so that's not exactly welcoming. And very patronizing, considering I have actually done that kind of work with Salt Stack a few years ago, and just don't want to bother with it at the moment because I have other priorities.

I learn new things every day, and one day, Docker was that thing. I am now better at release engineering, cool! But I also lost a day of working on shipping value to users and actually having fun, which is less cool. That's why PaaS has been helpful to certain kinds of people; it makes the curve of progressive disclosure necessary to deploy stuff a little flatter. My hope is that we can make more kinds of things really easy to do the right way, and not yell at people who just want to have some fun.

irskep··on SQLite the only database you will ever need in most cases (2021)
I'm not convinced this is true. Django supports SQLite out of the box, and otherwise database management is an exercise for the reader. The migration tools, for example, work fine with SQLite.
irskep··on SQLite the only database you will ever need in most cases (2021)
> You can run migrations from another process. Migrations are just writes, and SQLite supports writes from multiple processes.

Thank you for explicitly saying this! I'll see if I can update my repo to allow for online migrations. I was trying to be as conservative as possible based on what I knew at the time. It'll be nice to update the migration steps to be simpler.

irskep··on SQLite the only database you will ever need in most cases (2021)
Hey that's really cool, thanks! I'll consider adding a link to it in the repo.

I'm a little skeptical that any given PostgreSQL free tier will stick around indefinitely, after what happened with Heroku. And once you hit 500MB, you jump immediately to $25/mo, so if you're running a hobby project, your choice is either to delete data or start paying $300/year. On the other hand, I'd expect a well-optimized read-heavy SQLite app to scale to 10GB+ without breaking a sweat (speculating wildly) and costing more like $3/mo in storage.

I speak from experience here—until recently, I ran a site that would have been 10x cheaper if it had used pure SQLite instead of managed Postgres.

irskep··on SQLite the only database you will ever need in most cases (2021)
I think it's more that PaaS vendors aren't interested in first-class SQLite support when they can sell overpriced managed Postgres instead. Sure, it doesn't scale the same way, so it's hard to move upmarket and sell to Enterprise, but it's a shame that there's no one-click solution like there is for a managed database.
irskep··on SQLite the only database you will ever need in most cases (2021)
The sarcasm and intentionally-missing-the-point here is not really in the spirit of HN, but I'll try to address what you seem to be trying to say, which is that "it's obvious and I'm an idiot for not seeing that it's obvious":

- Will multithreading make it break? (Not with WAL mode, but you have to set it manually, as this article suggests.)

- When using a PaaS, you need to explicitly add a volume and mount it on your server machine, which you might not think to do if you're a brand new bootcamp grad

- You can't(?) run migrations from another process (or at least, people don't seem to talk about doing this), so you need to prevent your server from writing while you run the migration. Even if I'm wrong, and I would love to be, it's frustrating that people don't talk about the completely ordinary need to run migrations on a database.

- Backups just mean copying the file somewhere, which is nice, but you might need to configure that yourself instead of just using somebody's managed Postgres backup feature

So, there is at least some complexity that comes with managing a "real" SQLite web server.

(I'm probably at least 25% wrong on some details above, but that's kind of the point, it's not always easy to figure this stuff out.)

irskep··on SQLite the only database you will ever need in most cases (2021)
This sentiment pops up regularly on HN, and I've seen at least one article per month for the past few months, but the trouble is, none of them seem to help you actually deploy it. They assume you're comfortable spinning up public web servers.

If you want to use a PaaS to deploy an app, because you don't want to spend your time learning to be a sysadmin, then all the tutorials are going to put you on the Postgres path, because that's what's supported. (Of course, you'll then end up paying $15+/mo for Postgres, which is hilarious for most hobby projects storing 50MB of data.) But in reality, you could just scale vertically on one machine and be completely fine. No need for "distributed" anything, in theory.

I took a shot at productionizing SQLite here as an experiment: https://cheapo.onrender.com/ But I'm not sure I did it right, because I don't have much experience working below the level of a PaaS. I'm an application developer and I do not want to become a release engineer. I resent even having to learn Docker. :-)

Anyway, if somebody wants to nitpick my Flask+SQLite deployment, I'd really appreciate it, because it seems really silly that people have to keep writing this stuff from scratch when 90% of hobby sites have the exact same needs. And the Fly.io/Render configs would apply just as well to Node, Ruby, etc. https://github.com/irskep/cheapo_website

Edit: Somebody got mad at the Docker bit. I tossed it in for effect, but I promise you I don't hate learning new skills. I wish people would recognize that weekend coding projects should be fun, and sometimes that means avoiding certain kinds of things that a person experiences as difficult or frustrating. Arguing on the internet sucks, who knew?

irskep··on Ask HN: Those making $0/month or less on side projects – Show and tell
I recently made https://namegenerator.band, which generates band names. I pulled it out of a game project I'm working on for fun. Just doing my part to create ad-free alternatives to SEO spam farms!
irskep··on Mjolnir
I reproduced the parts list in PCPartPicker, including some manually entered price data: https://pcpartpicker.com/user/irskep/saved/x8Jxf7

Comes out to about $2K USD. Just in case anyone's looking to do a similar build.

irskep··on Underappreciated challenges with Python packaging
This is an incredible example of organizing information well and making a case to a wide audience. It's difficult enough to shave all the yaks necessary to get a high-level view of all issues related to a problem, and to express all those problems in good writing is an additional tough challenge. These folks have done an amazing job at both.

Shoutout to Material for MkDocs enabling the swanky theme and Markdown extensions. https://squidfunk.github.io/mkdocs-material/

irskep··on Dioxus: User interfaces that run anywhere
"Web tech" could mean WebGL or Canvas, which are not accessible. Does it create HTML elements?

I'd check myself, but none of your examples seem to be available to just look at without cloning the repo locally.

irskep··on Freeform: a new app designed for creative collaboration
LibreOffice will happily re-save CSV in place. That's the only reason I have it installed! But Excel does require the same workflow as Numbers.
irskep··on Never trust a system that seems to be working
Some people dislike interacting with the HN community for one reason or another. I imagine that's the case here. This person definitely isn't the only one.

Getting a post or tweet picked up by a large community who doesn't see your stuff regularly can be a lot more stressful than speaking directly to your audience (in this case, direct Twitter followers) who have a lot more context on your work.

irskep··on Heaps: A free, open-source and cross-platform game engine
I've half-learned both. My impression is that Godot is more like a framework (but more so) with prescribed ways of doing things, with lots of custom languages and formats, and Heaps is more like a library you use in a codebase that belongs to you a bit more.

From an ability-to-ship-games perspective, starting out, I'd go with Godot. Putting together a game's architecture from scratch with a library like Heaps sounds like a fun project, but to just get a game out the door without fussing around, Godot makes things easier without major downsides. Godot has so many custom things because those things work.

That said, I'm just a dabbler, so I'm sure other people will chime in as well. I'm also sure that if you invest time in learning Godot or Heaps, it will pay off well, because they are both mature projects that people have used to ship commercial games.

irskep··on Ask HN: How I buy a TV that don't show porn ads to kids?
I use an Apple TV with my LG TV and it has a better UI with no ads.
irskep··on Apple will charge 27% commission for alternative payment systems in Netherlands
So he should destroy his business? Seems like extremely terrible advice.
irskep··on Firefox is the alternative to a Chrome hegemony
Minor correction: Ken Kocienda didn't do the Konqueror port. He was working on getting Gecko to build and a teammate got Konqueror working in X11 before Ken even got Gecko to compile.
irskep··on If Apple keeps letting its software slip, the next big thing won’t matter
The difference is that none of that stuff is running in the background when you aren't using it. Maps doesn't take up a global menu slot. Apple Music doesn't open unless you explicitly open it (unless you happen to hit an Apple Music URL on the web). You can ignore it and it doesn't bother you. Whereas on Windows, bloatware tends to add a Start menu icon, tray icon, background process, startup item, etc.

And Apple's built-in apps aren't harmful, they're just unnecessary. In the early 2000s, my parents got me a Mac that came with Tony Hawk's Pro Skater 2. :-)

irskep··on Scroll: Extensible Alternative to Markdown
OK, yes, but at that point you're writing your own parser for a custom language that is not Markdown anymore.

Markdown _does not_ support SGML. Look at the source for any CommonMark parser—there's a whitelist for the HTML tags.

Compare to rst and Sphinx. It's very obvious how you're supposed to add new inline and block elements. There is a standard syntax for adding parameters to directives. Markdown has nothing, so there are a dozen incompatible variations that are only available in some parsers.

On the other hand, reStructuredText also defines a whole system for transforming the document tree, which as far as I know, no other markup language does.

irskep··on Scroll: Extensible Alternative to Markdown
I spent some time working with the Sphinx source code (the main user of rst), and found that reStructuredText is very poorly suited for porting to any other platform because a lot of the "spec" is just whatever the Python implementation is doing. IIRC it's also not context-free, so it's more laborious to write a parser. "Technically superior" it is not. I also think a lot of the syntax is obtuse.

That said, I really dislike that Markdown does not have any affordance for adding custom markup. Because of that, it's poorly suited to technical documentation; there's no official way to say "insert the autogenerated docs for function X here." Every doc system that uses Markdown invents its own special thing.

So, I think there's still space for markup languages that find a balance between prettiness and extensibility. I did my own experiment that let you define custom HTML tags but didn't have a reason to really finish the project.

irskep··on Show HN: I made a form builder that saves data in Google Sheets
You could probably construct a decent Asana workflow around this using forms, custom fields, and automation rules, but it's not free.
irskep··on Steam bans all blockchain and NFT games on its platform
This still makes absolutely no sense to me. The developer of Runescape is not going to collaborate with the developer of Warcraft to give them a copy of the model, figure out how the stats translate, put the textures in the right format, etc. Games use completely different equations for damage, defense, speed, etc. It's 100% magical thinking.

Even if you did have game items transferring across totally unrelated games, you'd _want_ a centralized database to make bug fixes possible. After all, games as a class of programs aren't known for being bug-free.

irskep··on Speed Matters
I've been keeping a private notes file about this. People tell me I'm fast, and I agree with them, so I'm trying to track why.

Some examples:

- Be a fast typist. At 120WPM, typing is not a limiting factor. I know professional programmers who do 40WPM and it limits them a _lot._

- Have self-awareness about what is taking you time. Ask whether you can stop doing that. A good example of this is having good autocomplete: if you're looking at docs when you could configure VSCode (or whatever) to have the answer a tab keypress away, you're losing minutes per hour.

- Get really good at using the fuzzy finder. Stop clicking on files.

- Write scripts for common actions, either in `~/bin` or in your source directory.

irskep··on Apps Getting Worse
To be fair to Spotify, Apple Watch development is pure hell, and I wouldn't expect them to ever implement that feature.

On the other hand, the LG TV app for Spotify doesn't support gapless playback, which completely blows my mind.

← PreviousPage 3 of 4Next →