I thought the comments to this were well above average on the entertaining scale. Pretty embarrassing, though, that probably the majority of comments seemed to take it seriously, even reprimanding the creator for not being serious enough, not taking his Business seriously enough. It seems to create dissonance among many that such a thing even exists. People seem deeply confused it's not full speed ahead, like every other commercial site, trying to grab money from users. We on HN constantly complain that the internet was taken over by smooth, malevolent, lying mega-corporations, with 1GB ToS's and thousands of employees..and here's something completely different and people entitledly shit on it.
It's a joke, people! From HN's own Stavros. Or, who knows what it is. Something Stavros did for fun and uses himself. A thing. Can't things just be allowed to be what they are? It's like people can't tolerate the existence of unique things, and have to see them as just really bad versions of a known category of things. "This round thing is bad because I can't force it into this square hole." And I guess when someone posts something to HN it gets judged as if submitted by the author and designed, badly, for the person now reading it. Ugly font! Bad colours! Unprofessional tone! Bad marketing! etc. ..Wasn't the internet 100% like that in the good old days?
This is how I feel too, it was surprising (and educational) to see some commenters having trouble accepting that someone might have just made a thing for fun. I think it's the fact that you can buy it that trips them up.
I imagine Cards Against Humanity got a lot of the same comments.
This site is a brilliant joke because it plays to so many of the tropes that HN commenters claim to want: Paid service, no ads, cheap prices, CLI interface, Rust for safety, and a company attitude that clearly caters to the programmers who work on the site instead of the customer.
It’s like the culmination of everything HN commenters say they want out of a software company, but those who don’t get the joke absolutely hate it.
People are even complaining about the trivial $1/month or $5/year price point as being too expensive. That’s a great reminder that nearly every time someone claims “I would pay for an alternative service that isn’t ad-supported” is not actually true 95% of the time. People love free services too much.
A Man that steps aside from the World, and hath leisure to observe it without Interest or Design, thinks all Mankind as mad as they think him. – Halifax (1633-95)
I'm always serious when I make jokes. Your silly joke got way to much attention not to make it into a professional joke by adding additional puns to it.
The biggest discovery imho is that people accept your style as a refreshing alternative to the plastic people. We wish you were real. We all have a behavioral picture of an entrepreneur but now we see its all bullshit. Just do what you like and be yourself.
Maybe one should put a fixed position css door on the website with the word EXIT on it and have that nice promt to close the page if one clicks on it.
> Wasn't the internet 100% like that in the good old days?
Maybe I was too harsh and you are describing my comments, but I was reading on this very site image hosting is not a funny joke business, it's a serious endeavor that deals with content abuse and CSAM content infringements quite often. There's maybe truth to your statement, but once a piece of work's defense is its a joke, does it really shield you from the law? Would that work in court? I'm not sure where stavros resides.
> but I was reading on this very site image hosting is not a funny joke business, it's a serious endeavor that deals with content abuse and CSAM content infringements quite often.
one major difference: this is not free unlimited image hosting but paid limited hosting. That reduces "sustainable" abuse vectors quite a bit.
I honestly love this copy. It's fantastically refreshing! I wish I got to see it more often... This was my favourite bit:
> Listen, this is half service, half art project. I made it in two days because I needed one and Imgur is an embarrassing husk of its former self, and I had nothing better to do. If you're expecting professionalism, call Oracle and ask for a quote of Oracle Advanced Image Sharing for Hadoop or whatever crap they sell, IMGZ is awesome but what you see is what you get.
Well that's extremely odd, I will look into that right now.
EDIT: This is very odd, I'm not really doing any processing on the uploaded files, so it should definitely return the originals. I will have this fixed soon though.
EDIT2: Unfortunately, the saved image in the DB itself is corrupt, so you will need to reupload after I solve this.
EDIT3: Alright this should be fixed! Now I can start submitting animated GIFs there.
EDIT4: Ironically, now ONLY animated GIFs work, because 2am is when I do some of my best work. Stand by...
>Yes, it's a database. That's where you're meant to put DATA.
Most (all?) large-scale high-volume image storage architectures I'm aware of do not store billions of images as blobs in a database. Instead, they typically store the images as files. The database only holding metadata info and a pointer to the image filename location (or url if using AWS S3 or CDN).
E.g. Facebook is one of the largest MySQL sites (if not the largest) and they don't store photos directly in MySQL.
I understand that postgres is pretty decent at storing large binary data though?
I've been meaning to investigate trying storing images in postgres on a hobby web project where it could be convenient; I'd still want to make sure I was streaming bytes from postgres to the client, not loading the whole image into memory and only once fully loaded sending it to the client. Looking at the pg API's for my language/platform of choice, it looked at least plausible to do this with a BLOB.
> I understand that postgres is pretty decent at storing large binary data though?
Storing large files in PostgreSQL is possible, but I would advise against it.
PostgreSQL uses a technique called TOAST to store large objects. If you store something in a bytea column, it'll first be compressed (either deflate or a new algorithm that I forgot the name). Then it will be split into 8KB chunks (page size) and stored together with all the other data.
Since most image formats are already compressed, this just wastes a lot of CPU cycles.
Also, the way storage is allocated in PostgreSQL may bite you in the ass. By default, storage is not returned to the OS. If you delete all images, the data will stay on disk and marked as reusable. Only if you do a full rewrite of the table will the free space be made available again.
Also, backups will become a pain. The easiest way to backup PostgreSQL servers is to just do a pg_dump. It works great up to a few gigabytes of data. If you have images or other large objects in the database, then pg_dump will quickly become unfeasible and you will have to find another way to do backups. Not a deal breaker, but something you should be aware.
Also, for best performance, the database should be on fast storage (eg. NVME SSD), whereas the image data typically doesn't need fast storage.
## A Practical Example:
One project I work on is an image database with 50k images. The high resolution previews are around 20GB. The PostgreSQL database with all the metadata is around 20MB.
It takes 10 seconds to do a full backup of the database. Everytime I change something in the application, I first create a dump of the database (which is just a few MB compressed). Then I do my changes, and if I make a mistake I always have a backup that I could restore in 10 seconds.
If the images were stored in the PostgreSQL database, a full backup would take much longer and would require a fast internet connection. And it would be much harder to work with.
My recommendation: Use the filesystem for storing files.
I've never used PostgreSQLs large objects. You have to use this awkward API to use them, they aren't stored efficiently either, and as far as I can tell it's just a legacy feature that nobody has bothered to deprecate yet.
In my opinion the only neat thing about large objects is that you can edit files with a posix-like API in a database transaction, but I can't think of a scenario where that would actually be useful.
Postgres is indeed good at that. I know from experience.
If you want to commit ten things every second all week, don't transfer so much data in a single transaction that you hold any important locks for half a minute. And if you use replication, test while replicating.
If the blobs you store are small enough to not disturb your commit rate, then pg's drawbacks are IMO smaller than those of the alternatives, particularly if you want some sort of commit that returns when both image data and something else have been committed.
So you've stored images in the db in production and had it work out fine?
I don't want to commit ten things a second. It would be a pretty read-heavy write-light load. Sounds like that would avoid one path of riskiness at least.
Many people answer a question like this: "How good is postgres at storing big blobs, relative to small things?" Postgres is indeed worse at storing large things. However, I think the most interesting question is something along these lines: "What's best, storing everything in Postgres and accepting that inefficiency for the big blobs, or implementing transactions, replication and/or backup with a part of the data in Postgres and the big blobs elsewhere?"
I'm awfully fond of having working backups, and postgres' performance problems with the blobs haven't been big enough that I've really noticed.
Yeah, that hasn't changed. You can also use the pg_upgrade script instead of a full backup/restore, or use logical replication if you want to upgrade the db server with zero downtime, but upgrading PostgreSQL is still somewhat annoying.
I too do that, in a different context, and it's fine. Databases have problems with big items, but images aren't big in that sense nowadays.
The problems relate mostly to backups/copies/reloads, that kind of thing, and copying an image doesn't cause anything to hiccup. A transaction that transferred 1MB over a modem line was a problem, that could block other commits for a long time, on today's networks 1MB doesn't take long.
Binary data in databases is usually not a great idea, but tolerable in low amounts.
I can't imagine storing images in a database, you're probably better off with a document store.
Relational Databases (well, the ones that I know the internals of) tend to have soft limits on row sizes, in PostgreSQL this is 8kb (which is very small for an image); to overcome this limitation Postgres uses what they call a TOAST table, which forces compression by default, which absolutely crumbles on binary data.
But, if it works, I'm not complaining- and I'm very certain that other such sites have worse architectural flaws in the beginning- this one is pretty easy to overcome if it becomes an issue and can be alleviated with aggressive caching of CDNs/varnish to buy you time if there's immediate issues. :)
If you were to go with PostgreSQL, wouldn't you store this in a large object, which is effectively stored outside of the actual table row? So, if you can store enough rows of meta data AND you provision enough storage, why wouldn't the database be able to do this. I don't imagine you want to put a primary key on the actual image data column (not possible with large objects, since the column just contains an "oid"). I'm not arguing for storing images in the database, I've seen it done either way, and done it myself either way, but I believe that it's an ongoing source of heated debate between proponents and opponents. I.e. not settled out of hand.
Large objects are _mostly_ an access method, the underlying implementation is staggeringly similar to TOAST.
> The large object implementation breaks large objects up into “chunks” and stores the chunks in rows in the database. A B-tree index guarantees fast searches for the correct chunk number when doing random access reads and writes.
You might try Foreign Data Wrapping.
In which case I still wouldn't because the database is going to be spending more time in doing round trips, better my application server does that, there's usually more of them.
That sounds right. But even if it works great, it's gonna be the most expensive place to put your data. Those image blobs would be fine on spinning rust.
But yes, there's probably time for that optimization later, if the service takes off.
Hm, very odd that the type wasn't detected properly. The animated GIF issue is because of EXIF stripping ruining the image, though. I'm fixing that now.
He threw it together in 2 days according to what's written on the website.
It literally has no semblance of trying to be a long term long running replacement to imgur. Just a dead simple image upload service that works from the CLI.
I did throw it together in two days, two years ago! I don't know why this image failed, when I tried it it worked. Animated GIFs were failing because I don't use them so I'd never tested on them. It's fixed now, though.
And it’s only accessible for paying users for about a year, slightly more or less according to how much they pay and how much is uploaded by the rest of the internet…
It's a few bucks a year silly image hosting account. I mean, I'm a grumpy, cheap fucker, but even I would struggle to find fault.
- ed
in fact, to clarify - I have twice written to Stavros, and both times he's been upmost helpful. Proving what a liar he is and how he fails to live up to his marketing.
One time I made a joke on HN that feel flat, and he posted a sarcastic comment! He also bought an oscilloscope from me and made sure I marked the package correctly so it didn't get caught up in (corrupt) Greek customs, causing a tiny amount of extra work at my end!
Holy shit I LOVE the Labrador, it's the most useful thing I have. Guys, if you're into electronics at all, buy one right now (https://github.com/EspoTek/Labrador/), it's amazing and only $30.
Also I'd say I'm sorry about the comment but that would imply I've changed but I'm still a sarcastic asshole. I'm working on it though.
I didn't relaunch though, I just wrote a comment about it and someone posted it and now I have to fix my EXIF stripping breaking animated GIFs at 2 am :( Ah well, no better time than the present.
I see a lot of comments about the $5 a year quote. I see $12 on front page - I wonder if it's just changed in last hour or am I getting a Canadian special :-)
Tutanota. They’re a cooler company than Proton but due to the lack of a bright I can’t unconditionally recommend the service - you’re confined to the (web) app.
Those are some pretty terrible prices. You can share images (or anything else) publicly from Dropbox/Box/GDrive/OneDrive for a lot cheaper. Or just cut out the middleman and set up a S3 bucket for a few cents.
The quota is "whenever CloudFlare decides I've used too much of their caching", I think. Hetzner is pretty great about bandwidth, I think they'll let me use as much as will saturate the connection to the DC.
I was but I'd forgotten, thanks for reminding me! Also, Cloudflare now have a very nice image resizing product which I'd probably use if IMGZ didn't need to resize ten images per year.
I'm not sure they're ready for my kind of volume yet.
You'd think so, but have you ever tried to share a file from one of these services to a popular forum or subreddit?
They don't list their per file bandwidth quotas because they are incredibly low, suitable for cloud storage, not for file sharing, especially not mass sharing.
Yes! Definitely don’t upload any pictures of your young daughter taking a bath or of your own body if you are a teenager. Those are evil and hurt people.
The issue was never that iCloud was scanned, it was that your phone is scanning your photos and that the list was opaque- it's a whole other thing if it's your own device which is supposed to be _yours_ that is spying on you. Potentially for big brother.
Free plans: Dropbox 2GB, OneDrive 5GB, Box 10GB, GDrive 15GB. They all let you generate public read-only links which aren't connected back to your account.
I have multiple hosted web storage, google storage, paid-for dropbox etc accounts, as well as reddit and imgur accounts - and the one I use to share stupid images is this one.
This was posted here a couple of years back, I liked the pitch, i paid for it.
> Dropbox and GDrive both shut down the public links feature years ago
What? I routinely use those public read-only links on Dropbox to give [access to] a file to someone or e.g. take a presentation to another computer without logging in to anything, I did it just yesterday.
GP is talking about direct links - the kind you could curl/wget to get the file, or e.g. put in src attribute of img tag (if the link points to an image). Dropbox shut that down a long time ago.
> You are a guest here. You can use IMGZ, and it'll always be great, because I'm great
> It's simple, what do you want
No bullshit, you say?
I like tongue in cheek stuff, jokes and all, but that tone sounds more like “fuck you” than a solid, reliable business relationship with adequate respect where the customer is not the product.
Besides that: Props for so quickly capitalizing on the (probably still brewing) imgur controversy!
> I like tongue in cheek stuff, jokes and all, but that tone sounds more like “fuck you” than a solid, reliable business relationship with adequate respect where the customer is not the product.
Basically, it's a bit funny that people complain that it sounds more like a "fuck you" when that's the entire point, and the site is completely explicit about it. We don't trust services to not want our money, even when they're telling us they don't. We just think it's a ploy.
> Besides that: Props for so quickly capitalizing on the (probably still brewing) imgur controversy!
Thanks! I made the site and bam!, two years later, Imgur imploded and I made $12!
I think I've seen the "where do I put my image files?" in the database or not for about two decades now with no definitive answer. I can't believe someone hasn't come out with a custom database specifically for storing images.
The thing that scares me about doing any type of personal project for image sharing/hosting (especially with a free tier/trial) is that very quickly it will become a magnet for some very awful stuff. What are your plans for dealing with that?
CloudFlare has a thing where it automatically reports bad stuff to me and the authorities, and I turned it on, so hopefully all the abusers will be discouraged by that. Also I have their credit card info.
Personally I would want to know if my uploads were going through some scanning engine from one of the tier-1 Internet gatekeepers who I would have to trust to not keep/forward a copy.
The paid-only model makes the host a lot less attractive for this. The free trial accounts will likely become a problem at some point, but there's still a verified e-mail address, so the next step would be banning throwaway mail hosters, and/or limiting the lifetime of uploads by trial accounts.
* All prices paid per year but shown per month because if I get another person telling me that "$5 A MoNth Is toO ExPeNSiVe FoR 1 GB" I'm going to lose it. Small print may be too small to read. Service comes with no guarantee, not even guarantee of service. Do not email us for support you do not get any. Paying us money doesn't entitle you to anything except owning less money. Disclaimer may make less sense as you read on, this is not the disclaimer's fault and is by design.
It used to be $5/yr but everyone complained that $5/mo was too high, so I changed it to "$1/mo billed annually", which amazingly has solved the complaints without reducing subscriptions at all (they were already at zero).
I changed mine a while back[1], (I was Jaruzel), although I don't think dang would be that happy if we all started asking.
Stavros, now that I'm in your comment replies... can I hijack this comment branch to ask what payment provider you are using and what the integration process was like ?
---
[1] I did it during a peak of self-loathing, I kinda regret it now, but ho-hum.
Excuse me stavros, this is brilliant. I have no real intention of using the service but I got a subscription because this really cracked me up. I love every little bit of it. Great work!
Or maybe I will use it as I have an account now. We shall see.
Stavros. You need to detach a little bit, get a 10,000m view. You've got something, you can be successful. But your approach is "out of whack" and people aren't going to support you. Conform to influence.
actually, conform to influence doesn't mean that. It means, to influence a group you need to be part of the group. To be part of the group, you need to first conform to the group.
It's actually a very pithy phrase, because it's exactly the "message" of the product as art, reversed.
Stavros would prefer not to conform, and doesn't care if that means he doesn't influence.
Although... ironically he is probably one of the more influential HN posters. Now, profitable, I dunno, do you really mean "conform [in order] to profit", does "influence" just mean "exploit" [in the economic sense. mostly] now?
Can we conceive of someone who would rather not conform and in fact would rather not exploit?
Is it not ok to make a "little bit" (you can be wealthy beyond your wildest dreams from a small business) of money from a opinionated business (akin to a restauraunt, perhaps) rather than conform and become just one more ycombinator-esque startup in the hope you'll make even more money if you make it big.
Basically the issue I had with it is that they seem to make the site less and less usable as an image host. They used to have (or at least allow) a way to upload images from the command line, but mine stopped working at some point, I couldn't find the page with all my images, they started putting comments on stuff I posted, things like that.
It had turned into a social network when I just wanted a place to send a screenshot to a friend, which I was very dissatisfied about.
Is it free? Free image hosting always eventually shuts down or monetizes with redirects to an html page with your image and bunch of ads. Bandwidth isn't cheap enough for free image hosting to survive.
I used to be a subscriber (until my subscription lapsed, but I would have renewed if there was a reminder email!), I went for the cheapest plan. (also if you pay with bitcoin you get a fun message after subscribing)
I can do this myself for much cheaper by buying a used computer from eBay, waiting 3 weeks for it to ship with missing parts, trading my old bike for more RAM from Craiglist, setting up Arch on it, compiling my own drivers, writing a webserver and firewall from scratch, connecting it to the internet and then using it twice before my ISP cuts my service for breaking TOS by running hosting on a consumer plan. I could have even just gotten a DigitalOcean VPS for $5 a month and conned friends into paying my costs for me in return for creating them a username and password to a half-working FTP server where they can upload their images in sixteen easy steps.
It's a joke, people! From HN's own Stavros. Or, who knows what it is. Something Stavros did for fun and uses himself. A thing. Can't things just be allowed to be what they are? It's like people can't tolerate the existence of unique things, and have to see them as just really bad versions of a known category of things. "This round thing is bad because I can't force it into this square hole." And I guess when someone posts something to HN it gets judged as if submitted by the author and designed, badly, for the person now reading it. Ugly font! Bad colours! Unprofessional tone! Bad marketing! etc. ..Wasn't the internet 100% like that in the good old days?