I used to have a sheet of stamps lying around. Often only one was used. Then those would "expire" after years, in the sense that (yearly?) tariff-increasments would invalidate the "now too cheap" ones. I then had to buy additional special ones to compensate for the price.
Digital is the way forward and this is a perfect example of simple digital to analog. It works fantastic.
The old stamps with a monetary value you would have to "add" value by adding a stamp if the cost increased (and people were adding 5ct coins as a result). The new ones (1/2 numbered) do not expire and keep their relative value. [1]
With the massive price-hike on stamps, buying a 50/100 roll of these many many years ago, this got a great return on investment ;)
Though I'll still have enough stamps to last until I die ;)
I never thought those ten $50 rolls of 100 first class (USA) stamps would ever pay for themselves... but last I checked FCM stamps are now 36% more expensive.
I assume you're talking about the US? I thought that nowadays all US postal stamps are "forever" ones as of several years ago, but maybe it's just the post offices around where I've lived that don't bother selling the "temporary" ones.
The monetary ones (1p/2p/50p et al.) don't expire either, you just need to meet the cost at the time you use them. (Exactly like cash in that sense: loses value with inflation, but you can still use what you have, just for less.)
> maybe it's just the post offices around where I've lived that don't bother selling the "temporary" ones.
Are we talking about US? If so, it might be your office. The one near me tries to sell me all kinds when I actually go in to do stuff. USPS still sells varying rate stamps ranging 1 cent additional postage to $30 priority mail express stamps.
Very true. Most of all because stamps required value for a letter change often and I always ended up with lots of old stamps which were not enough for a letter anymore, had to buy lots of stamps with very little value to complete, it was anarchy.
(2012, 2016, 2019 and 2022 saw price increases for German post for example…)
It is only purchasable if you install their software, can't just buy such a stamp on the website if I'm reading the page correctly?
I seem to remember Deutsche Post also had a thing you could just write on the letter, or maybe it was DHL's parcel service instead. Those were purchased simply online like any other product/service and, after paying, it told you what to write in the corner. Or maybe I misremember and they only have this system where you can take the pdf to a parcel shop and have them print your label.
There used to be a premium number you could send an SMS to. It was more expensive than a normal stamp to cover for the expensive billing.
"Handyporto" replaced this and that's probably also why you can't buy it on the website. Deutsche Post probably can't conceive of people who don't own a printer so they heavily advertise "Internetmarke" which requires one.
It used to be also a squared code consisting of 12 digits, you could receive via SMS to 22122, but this method is deprecated or already even terminated. Has anybody tested it recently?
This would make a pretty good programming interview question:
"Design a service with two endpoints, one to create a postzegelcode and another to redeem it. A postzegelcode is a nine character, case insensitive alphanumeric code conventionally displayed in all upper case in a 3x3 grid. Postzegelcodes are valid for 5 days after issue and can only be redeemed once. Authentication and payment are out of scope."
You don't need a full scan or a giant CSV file. You can do it with a single small file in a single directory. The file contains the state of a pseudo random number generator. On each request, generate a number, save the new PRNG state into a new temp file in a subdirectory, and rename the temp file over top of the original file. If renaming fails, try the whole process a few more times. This allows multiple processes to serve requests concurrently.
Exercise for the reader: avoid re-reading the PRNG state file on retries.
that sounds like a badly home-rolled uuid4 with extra steps.
How about instead we just generate a uuid4, insert it into a sqlite file or Postgres database, and then the postzegelcode value is threefry(SECRET,uuid)?
With a million requests per month (~1k a minute average, non uniform distribution ofc), why not just use something like sqlite? I wouldn't want to work with csv files, and development time is the same.
It's a more standard setup, and enables better logging and later changes.
You don't really need anything relational, so I think sqlite is overkill, and since multiple locations presumably need to write to it, you'd either have to use something like Litestream or write a coordination server to manage the updates from the mail intake locations
I think a Redis instance would be better. Assuming each mail intake device has a unique ID, and ID 0 is intended for un-redeemed postzegelcodes, you could have newly created postzegelcodes SETNX a key with value 0 and a TTL of 5 days, then when mail is being scanned, WATCH the key in a multi transaction, and if the value is 0, SET it to the ID of the intake device, while removing the TTL. The mail can then be rejected at intake if the transaction failed. Upon mail delivery then, you clear the key, which frees it for later re-use.
Americans ought to petition USPS to do this. It sounds extremely convenient because it doesn't require a Pitney Bowes printer or printing anything from Endicia.
PS: Are those tiny, cheap, desktop laser engravers powerful enough to "print" on paper without starting a fire?
It still seems wild to me that laser products powerful enough to chemically alter objects are sold or allowed without a sealed protection system. I guess product safety standards aren't what they used to be.
For all mail except the first, the same thing that happens if you send a letter with no postage: the sender will receive a request to pay after delivery. If the sender is unknown the recipient will receive a request to pay (which can be appealed).
I mail a fair amount of physical media using the postzegelcode. If you put a return address, PostNL just returns the letter with a sticker on it saying the postage was not enough. They won't deliver it.
If they deliver the letter to the return address, what prevents you from writing the target address as the return address and getting it delivered for free?
It's also some kind of fraud in most jurisdictions, or subject to an extra fee if discovered.
Germany's new stamps aren't stamped any more - a QR code gets scanned and logged instead - so people thought they were lucky when they received unstamped letters and decided to re-use the stamp. They got hit with a fine.
IIRC the first envelope scanned at a sorting facility invalidates the postzegelcode immediately, any envelopes using it after that will be handled like they had no postzegel at all (receiver has to pay)
Seems strange they would design a system that could scan faster than they could process the DB, no? I assume there's some queue in between. But the real answer is probably just: multiple scans happen for the same piece of mail. Eventually, one or both of them will be marked as due for payment. The question then becomes, was it worth saving the postage cost for what is potentially a much costlier penalty?
This seems fairly unlikely to ever occur. The database would have to be decentralized, and the two items would have to be mailed from separate locations and both be scanned more or less simultaneously—or within however many minutes it takes for database changes to propagate, which can’t be all that long since you’re able to buy a code and use it on the same day.
Given how remote the probability of this happening is, simply ignoring it and delivering both pieces probably isn’t unreasonable. Or flag it for further investigation and maybe bill the sender or recipient for an additional piece of mail.
I would guess that the system generates more digits - lets say 3
when the postal system checks that PZC on the mail, if there is nothing written by the PZC then it's assumed to be fresh, and the 3 extra digits are looked up via a postal-service-only gateway, then placed on the mail by the PZC for future lookups, possibly along with a date.
If the PZC has the extra digits, then it can be looked up and confirmed as redeemed with those extra digits, and possibly the stamped date.
The extra digits could be stamped or handwritten, possibly with the postmark date used as the redemption date manually entered from the mail as it passes through the sorting system the first time, OR stamped from the date it's registered as redemption, either would work.
Such a system would relatively guarantee that fraud would be difficult, since only one person could have a PZC without the check digits go into the system, and sharing would be useless.
Only the first one would be legal and the recipients would have to pay for the postal cost of the next one. If you put the origin (postal code plus home number is enough) on the back you get a payment proposal in your mailbox.
The typical outgoing mail box, where you put your mail in for it to be delivered, doesn't allow peering into it. So a physical measure to avoid that.
But if it's out in the open: first come first serve, like the other comments describe
Hmm. When was this? I've had the code read wrong a few times and they just have returned the letter. Then I've gotten a refund for the postage through their customer service.
Does the system allow for one mistake? Does it automatically try to replace '1' with 'L' and see if it matches a valid code?
I wonder the actual failure rate is. If you decided to not use '0' to avoid confusion, you've accepted that there shall be confusion. And confusion doesn't just happen with '0' and 'O'.
P.S: as a sidenote I know for a fact that at least 30 years ago there were post offices in some EU countries already doing OCR on handwriting, but the ones I've seen were doing it on digits-only, that had to be written on envelopes with pre-printed empty rectangles. It was done for the cities' postcode, to sort the mail automatically.
A well-formed, hand-written O is indistinguishable from a well-formed, hand-written zero. Literally, no amount of effort will make it clear which one is intended, short of some agreed-upon convention to use a different glyph like a slashed O for zero.
This is not true of G and 6 or B and 8. If these are well-formed, they are completely distinct.
People who paid for their post code are motivated to write the code clearly, for fear of nondelivery; but no amount of motivation will fix 0 versus O.
> The handwriting '1' looks like a 'L'.
It certainly does not. Rather, the lower case l is easily confused for the digit 1. This postzegelcode doesn't use lower case.
I don't see it mentioned that I is avoided because of 1. The likely reason is that Europeans don't write 1 just as a stick. It starts with an angled upstroke. That upstroke makes it possible to confuse the European 1 with an American 7; but the European 7 has a horizontal stroke across its stem which thwarts that problem. (I addition, a cursive 7's upper horizontal stroke is actually wavy, like a tilde.) Confusion of I, 1 and 7 in European handwriting is next to nil.
> The likely reason is that Europeans don't write 1 just as a stick. It starts with an angled upstroke.
I'm European, and that's how I write it, but if you look at the link, that's not how they write 1's in the promotional material - Those 1's follow pretty much the stroke I would do for an L, only the foot is shorter and slightly more pointed upward.
I see that. Yikes! The hand in the photo (we are to undestand) copied a pair of nicely typeset 1s, featuring with an upstroke and serif foot, into a pair of sloppy hockey sticks that looks like lower case l's due to the pen trails, and could be taken for I.
Maybe it's not for technical reasons. It would be easy technically to have them be interchangeable. But someone who just purchased a stamp, and got one with a 0 or an 0, might worry about it not being delivered because their 0 might be mistaken for an 0. So maybe it's just nice UX? Just a guess.
I am from the Netherlands. I think this is an awful and unnecessary innovation. Postage stamps often have pretty pictures on them and I like the act of having to paste one onto the envelope (some of them you have to lick the back of to make them stick). This just seems like another soulless way of making things machine-readable and less human.
I wonder if any of the 9 characters are checksum (the example math indicates none is), or if the validation scan allows a search without one of the characters e.g AB1?3XYZ in case of sloppy writing.
If not, then the system relies on people being able to write 9 consecutive legible characters. With postal codes and addresses it’s less fragile because the context helps disambiguate (a last name helps a postman tell if a street address has a 7 or 1)
In the case of sloppy writing, the letter will be ejected from the sorting machine and reviewed by a human (same process as for illegible addresses).
If a human cannot find a match then the sender will receive a request to pay for the missing postage (presuming the code is invalid). If the sender is unknown the recipient will receive a payment request (which can be appealed).
Speaking from experience you would normally want the letter to arrive at its destination so I take care to write the code very clearly. I imagine this is true for most people.
You massively underestimate the care or thought some Americans give to anything including legibly writing an address; very cool look into how USPS handles that situation (link free to read without subscription)
Since there is already a framework for returning letters with invalid/unreadable/damaged addresses, I'd guess the overhead of returning wrongly-written postzegelcodes is negligible.
I wonder why they wouldn’t take the address at the time of payment so it’s not needed on the actual letter. That seems more convenient. Backwards compatibility?
When we started our own parcel service in 2015 we thought that everything that is needed on the actual parcel is the unique ID of the parcel (generated by a system reminiscent of twitter's snowflake and intentionally printed with digits shuffled around as to increase the chance of the prefix being unique). Pretty quickly we found out that various operational concerns need additional data on the label, with routing info (for manual pre-sorting on the depots) and recipients phone number (the courier locates the parcel in the trunk by that) being pretty important.
Also, cool design of the label is one thing, but on both laser and thermal printers the resolution repeatability is much better in the direction perpendicular to the paper travel, so you do not want to do cute design things with vertical barcodes. And you want to have a huge margin below the barcode if it is aligned to the bottom of the label as some printers will occasionally get misaligned and part of the barcode will get on the next label… and the imaging scanners in Zebra terminals will happily read half a milimetre high code-128 barcode instead of the correct one on the bottom of the label.
This isn’t a minor detail. As with stored-value cards vs credit cards, the location of the master record(s) has far-reaching consequences for dependant business processes. Any field activity depending on on-demand access to a centralised API contains the seeds of its own failure.
The availability of centralized API was not the issue. The issue was that the operators were significantly more efficient when performing the process “by eye” than when supported by some kind of computerized system. For example the on-depot sorting process that we settled on was two-phase: first you sort the parcels either manually by routing codes on the labels or through automated sorting line with the current data and then in second phase the operator scans everything that is supposed to go out of the depot and in that process moves around the ~5% of parcels that got sorted incorrectly, which is incredibly more effective than doing that correctly in one pass.
> The availability of centralized API was not the issue. The issue was that the operators were significantly more efficient when performing the process “by eye” than when supported by some kind of computerized system.
If you think these are different considerations, then you are splitting the wrong hairs. The processes landed on to resolve the conflict are not surprising, but also doesn’t sound like they addressed the underlying architectural conceit.
At a large enough scale you can do most of these processes by automation, except the actual courier delivery. And well, at least UPS has actual identified locations in their vans, so just going by location+barcode might be somewhat practical for them.
Beware of the line of operations research thinking that has latterly tanked Boeing’s engineering reputation, something the rest of us designing layered business processes can all learn from. Complexity is always best handled pushed down to the leaves of the tree. The ideal central body performs reporting and audit, not command and control. Although for some, I suppose the Boeing takeaway might be that the bottom line improved and no-one went to prison.
Not sure about NL, but in Switzerland you can buy those codes with an SMS. I guess many people want to do it quickly, and they might have already written the address of the recipient. So just getting a code it much faster, you don't have to enter the address somewhere.
I think the main issue is that regular post has addrrss info of the recipient. So the whole logistics chain is geared towards that. If you remove the need for address info for a (small) subset, you'd have to have two logistics chains somewhat intertwined with each other...
If the delivery model can’t survive an apocalypse, collapse of civilisation, or interruption to the rule of law/network connectivity, then you have no business running a postal service.
One may jest but the subtext of The Postman (particularly the David Brin novel, which I can recommend) is analysing which pre-apocalyptic institutional operating models are predisposed (or otherwise) to being rebooted/reconstituted even after the loss of all staff and centralised records, which is a definition of business continuity and process resilience I certainly intended to be in scope of the remark above.
Which is to say, Kevin Costner did make a movie about it. Just not a good one.
In practice though you can simulate/stimulate most of the failure mode conditions of central control dependencies by parking a delivery truck underground, or addressing something to a farm.
You can, but an invalid code is treated as if there was no postage stamp on it at all. So your letter will be returned or the receiver is asked to pay.
A code that's past the validity date is probably considered an invalid code as well.
Clearly mailmen would just be expected to use their phones to decode the addresses on demand, because everything is supposed to require a phone and an internet connection these days.
A bit more realistically, the address could be printed on a sticker by the sorting machine, the way address redirections are handled.
> A bit more realistically, the address could be printed on a sticker by the sorting machine, the way address redirections are handled.
Fun fact: PostNL already does this with 100% of the mail processed. The first step in the sorting process is to OCR the address, generate a "KIX" barcode[0], and print that on the letter using special ink if not already present. It's not intended to be user-readable, but anyone with a smartphone can trivially decode the unique destination address from it.
For a mail/parcel carrier relabeling anything is (somewhat surprisingly) a significant added cost (and there is not that much of margin), so they will do everything in their power to not do that unless absolutely necessary.
PostNL relabels approximately all parcels addressed to me (I almost always have to change either the delivery date or location to one convenient to me), completely free of charge.
Free of charge to you and free of charge to the sender. Which is exactly my point, for PostNL it is a sunk cost and if that will happen for significant amount of their consignments it would be an issue.
I found an article[1] from before it was launched. Translated:
> The most important reason for the introduction of the Zegelcode is that about 20% of our customers indicates they don't have a stamp on hand when they want to send something.
I love the simplicity.