Full Width [alt+shift+f] Shortcuts [alt+shift+k]
Sign Up [alt+shift+s] Log In [alt+shift+l]
1

I Bought A Scanner (No, Really This Time)

from Lee A Johnson [alt+shift+b] in programming

This is a transcript from a talk I gave at the German Perl Workshop earlier this year. If you'd prefer to watch the video recording, you can find it here. I have lots of photographic projects on the go. Lots of these being on film, as some of these I started shooting a long time ago. I don’t have any particular loyalty or attraction to film, it’s just that I started shooting many of these projects before affordable medium format digital was available. Since I mostly shoot medium/large format film I never really jumped to digital until recently, so film has continued to feature heavily in my workflow. That said, it’s a pain in the arse to shoot film now given the spiraling costs, limited availability, and issues around traveling with it: modern airport CT scanners, being rolled out across many airports, are much more convenient but will fog film. Asking for a hand inspection often comes down to arbitrary timing - how busy the security is, how experienced the operator is, or if you’re lucky/unlucky. I’ve had film forced to be scanned (and fogged) and politely argued with security on more than one occasion. I don’t want to deal with that so don’t travel with film anymore, thus I am shooting less of it and have mostly moved to digital. I still have a tonne of film I need to scan and process however. Here’s just some of the binders and files of film. I don’t plan to scan all of this, but I do plan to scan the ones I need to. Probably in the region of a couple of thousand frames. I want to scan to the highest possible quality (within reason) for archiving, book projects, and large prints. If you’re wondering how large I print, it can be up to 160x60cm panoramics for selling. This is restricted by the size of my printer (that’s another story). Three Years Ago Three years ago I almost bought a scanner. I ended up blogging about it and the post got a bit of traction on Hacker News (HN). I’m never quite sure which posts I submit will pique the interest of the users. I’ll...
21 hours ago

Stay updated

Get a weekly newsletter with the top 5 articles worth reading every week.

More from Lee A Johnson

The Caretakers

If you haven’t been paying attention, which is likely given the small corner of the web I’m going to cover, you may have missed that BINGOS just hit 247 consecutive monthly uploads to CPAN1. This is noteworthy as it surpasses DROLSKY’s record set a while back. That’s an upload to CPAN, once a month, for over twenty years. Once a month minimum I should say, as many of the authors on the board are uploading more frequently than that, some even daily. My own monthly upload streak is a mere 149, or twelve and a half years, and really that’s only because I pay attention to the board. Once a month I will check it to remind myself to dig through my CPAN distributions for bugs, issues, and refactoring opportunities. This keeps their internals fresh in my mind for when reports from users or contributors come in. The other authors on the board maintain an order of magnitude more distributions than I do, so are more likely to get a steady stream of reports from users. A stream that is turning into a torrent given the current place we find ourselves in the world of open source software. And that’s where I start to worry a little. Here in the Perl world we’ve been quietly getting on with it since the first shouts of “nobody uses Perl anymore” going back almost as long as BINGOS’ streak. Quietly maintaining critical systems, billion dollar businesses, backwards compatibility, security patches, the occasional new feature, and yearly releases of the interpreter. But that torrent of reports and issues is going to become a flood, and it’s not just the Perl ecosystem that is at risk. CPAN being Perl’s software repository. The upload stats can be found at cpan.io ↩

8th Aug 2026 1 votes
A World of First Drafts

Five short essays on where we are currently at. A World of First Drafts Dreams and the Uncanny Valley Fiddlers in the Room The Last Hike Semantic Satiation of an Acronym A World of First Drafts I recently picked up a copy of “An Evening With Windham Hill”, a collection of early 1980s live performances by some of Windham Hill’s popular-at-the-time acoustic guitar players. I primarily bought the LP for the recording of “Turning: Turning Back” by Alex deGrassi, as it was the only way to get this on vinyl; the 1992 retrospective that also contains the track was never (officially) released on anything but CD. The album contains a more interesting track on it, that being the first (?) performance of a Michael Hedges composition. Introducing the performance Hedges says “This is a new piece for [that] started out for guitar and then, er, all of a sudden it needed piano and about a week ago it needed bass so… We need to play it tonight. It’s dedicated to Steve Reich, and it’s called Spare Change.” The performance starts out very Hedges like, with his (now) distinct playing style and tapping on his instrument, but then after about forty seconds the piano comes in and Hedges influence seems to be diluted. He pulls it back but seems to be fighting with the piano, and when the bass solo arrives at three minutes Hedges is then completely lost to Manring. The three instruments then battle for the remaining two minutes of the composition leaving us at an ending that feels unresolved. So unresolved it takes the audience several seconds to realise the performance is over. The composition and its performance was very much a first draft. Some interesting ideas in places, but ultimately lacking cohesion, unsatisfying, and even forgettable. Hedges’ voice (that of his guitar) is lost amongst the parts that aren’t his. When Hedges released the final version two years later, on the album “Aerial Boundaries”, he knew the piece needed work so he made some major changes. The first was to drop the key two semitones lower. I guess he removed the capo from his guitar. The second change was more substantial: Hedges decided to replace the piano and bass parts with his own guitar, spending over one hundred hours recording sounds, looping them, playing them backwards, splicing tapes, pulling them apart and sticking them together, experimenting, all to get the textures that fit. Over one hundred hours in the studio in 1983, and likely many hours after those first drafts in 1982, to create a five minute long piece of music. Hedges could have just released the original arrangement, but he knew it was mediocre so continued to refine it. The version realised on “Aerial Boundaries”, and the liner notes explicitly use the verb realised rather than recorded, is probably the most striking work in Hedges’ entire discography. Because there are other remarkable recordings on the album, especially the title track, and due to the near impossibility of performing the track live, “Spare Change” is often ignored. That doesn’t mean Hedges’ time and effort to refine it was a waste, as the track still stands out today. Along with the first live recording, the final version is a permanent record of an idea elevated to something interesting, influential, even epochal. Fingerstyle guitar was going through some major changes in the early eighties, and Hedges was one of several important composers and performers at the time. Had he just sat back, been satisfied with the first draft, not torn it apart to rebuild, it would have been forgotten. I wouldn’t be writing about it today, and it’s possible it may have been discarded and failed to make the final cut for the album. Perhaps the composition would have been dredged up some time in the future, when an artist’s career reaches that inevitable scraping of the barrel stage. Alas, Hedges was killed in an automobile accident in 1997, at the age of 43. The obvious place I’m going with all this is that I increasingly feel like we are moving into a world of first drafts. One where ideas are formed but then delegated to something else to refine them. The problem with this approach is there is nothing new to pull from the tombola, you still have a first draft at the end of that process and haven’t gone anywhere compelling. I’ve even had someone defend their approach with “the ideas are all mine”. But ideas are easy, execution and refinement are hard and that’s where your individuality comes through. Maybe your ideas are boring, and your arguments are weak? I’d still like to read them in your style. Writers have built entire careers on this. The reason I read your blog, or listen to your music, or watch your videos, or look at your photos is because I’m interested in how you see and react to and interpret the world. If your voice and idiom is lost to the machine’s then you are no longer interesting and I’m no longer interested. Dreams and the Uncanny Valley A few years after moving to the mountains I had an idea for a photo project that would involve shooting images of well known vistas and then subtly replacing some of the mountain ranges with different peaks. Or removing parts entirely. Or just messing with the horizon in some way. I played with this a little when I printed some postcards of the Matterhorn, flipping the mountain on its horizontal axis to result in a mirror image. I assumed people would notice, given that concrete chocolate mountain is in the top five of recognisable peaks. Nobody did, at least not for five years. Or nobody said anything as they weren’t quite sure if what they were looking at was wrong, a literal uncanny valley moment. Sometime later I had a dream, or a nightmare since I tend not to remember my dreams, in which everything was subtly wrong. Like something out of a half forgotten Philip K. Dick story or tired science fiction trope. All my friends faces were a little different, but I was the only one that could see this. All the music I knew was off in some way, a different tempo or transposed, or key lyrics were swapped with synonyms. Nobody else noticed and sang along like it had always been this way. They were oblivious to the changes. The books and films all had slightly different titles and plots, and the actors cast were not the same. The walk I took to work was a diversion, my keys were interchanged, the office was rearranged, my keyboard layout was swapped. At lunch the microwave controls were on the left, the food tasted weird. None of my colleagues had any qualms. Finally I realised that if that was the case externally, at the macroscopic level, then was it also the case at an atomic level? I rushed home to find my Roche Biochemical Pathways poster, unfolded it (the wrong way), and stared at the molecules trying to recall the chirality of the amino acids, nucleic acids, and sugars. But I couldn’t remember, it was too long since I had done any biochemistry. And then I woke up. Fiddlers in the Room There’s a certain type of software engineer, I’ve met several times in my ongoing career, that I like to term a “fiddler”. When the fiddler is tasked with solving a problem, instead of thinking “I will solve this problem” they instead think “I will solve this particular class of problem”. The non-fiddler will pick an existing solution, and if there isn’t one that fits they will code for the explicit problem at hand. The fiddler will build an entire system to cater for a hypothetical future and other people’s unknowns. The result is something that is not actually generic enough to solve the particular class of problem, being too brittle, and is too broad to solve the original specific problem in a maintainable way. An excess baggage of logic and abstractions means cognitive overload. Having to think about the generic class of problem when trying to maintain for the specific problem is always, well, a problem. Don’t get me wrong. Fiddlers are important, and have contributed to many critical parts of many ecosystems, and some fiddlers are very good at what they do; however, they are the minority and, more often than not, a one hit wonder. A key tell of some fiddlers is that they like to use the latest tools to facilitate their fiddling, and this is the most dangerous fiddler of all. New tools are more likely to change quickly, and churn is the enemy in software engineering. Now it seems that everyone can be a fiddler, so my term has become a tautology or changed to mean something else. Fiddling has been flipped on its head. Now it seems fiddlers can trivially generate for the explicit problem at hand, pulled from a vast corpus of existing classes of problems, likely previously generated by the previous generation of fiddlers. Those not-quite-generic-enough-and-a-little-too-brittle solutions. And if the fiddling is not enough? Have an entire orchestra. Keep screaming “COMPUTER, DO SOMETHING!” If and when it all goes wrong? Yes: “Switching over to manual control… good luck!” and of course: “This is the world’s smallest violin, and it’s playing a sad song for you.” The Last Hike The last hike took place on the 25th May 2026. Temperature was 20ºC, humidity 53%. Distance 13.00km, altitude change +/- 566m. 735kcal was expended in energy, with an average heart rate of 107bpm (max 153, min 70). Duration was 3h21m. The computer decided the effort was “moderate”. The last hike was somewhat more successful than the last bike ride, which took place on the 19th May 2026. Temperature was 10ºC, humidity 66%. Distance 11.56km, altitude change +/- 258m. 356kcal was expended in energy, with an average heart rate of 138bpm (max 161, min 69). Duration was 41:31. Max speed was 51km/h when a catastrophic puncture of the back tire took place, sending the rider veering off course into a 1m wide grass verge between the asphalt and a barbed wire fence. The rider was thrown over the handlebars of the bike, onto their right shoulder. Some moderate skin grazing occurred, but a six hour visit to the hospital was required to confirm no bones were broken. The computer, knowing nothing of this, decided the effort was “moderate”. I decided to stop tracking all this stuff because I don’t know what advantages it begets other than the obvious: exercise is beneficial. The disadvantages are not worth it, trying to beat personal bests, going faster, worrying about regressions, contributing to the world’s largest and longest ongoing clinical trial? My father used to run a lot in his youth. He would take me in the pram when he ran, and he ran so much he wore through two sets of wheels. There’s little evidence of that now, maybe a few photos in our attic, and his arthritic knees. It’s possible that his running has nothing to do with his knees, I know. None of this was tracked, so who knows? Even if it was tracked we wouldn’t know anyway. All of this data works at a population level, individually you need to ask yourself if you really need to know the minutia. Exercise is beneficial until the bones hit the asphalt. Even then, the net benefit is worth it. Just move a few times a week for more than a few minutes and you’ll feel better. Semantic Satiation of an Acronym There has to be an end state to all this, eventually? Surely? A point at which it just becomes the norm, at which it is everyday, normal, mundane? A point at which we can just all get on with our lives and benefit from the good, and be protected from the bad. A point where the thing producing so much noise is reduced to a background hum that can be ignored. I can't seem to escape this in any place. Technical discussions normally reserved for office work hours spill out into social settings. The pub, the dinner table, with strangers on a plane, in a queue, at a gig. I hear horror stories of wannabee software engineers making all the mistakes newbies make, but with none of the guardrails or mentoring to steer them in the safe direction. I end up talking shop with people I would never want to be my colleagues. I'm not trying to gatekeep here, I have no kingdom to protect, rather I am worried that the bar being so low will cause many people to trip over it. I do find this stuff useful, in the very specific areas it is currently limited to. It will become more useful in other areas over time and hopefully less dangerous, but that's an unknown for now. I didn't think semantic satiation was possible with an acronym. Can I please just go one day without hearing about this. Just one.

14th Jun 2026 1 votes
Print Sales, Costs, And Profit: 2025

Apparently the bottom is falling out of the art market, at least for those in the high-end segment1. That market of investors, speculators, and dealers who are working with mind-boggling prices. This isn’t surprising. The buyers in this market aren’t interested in art, they’re interested in the financial returns, and the last few years have seen more compelling investments in other areas. Cryptocurrencies, NFTs, and now AI. Why faff about with tangibles, which need shipping, storage2, maintenance, and insurance? Why bother with art that needs decades to see a return, when the alternatives can be turned around in months with a few clicks? At least when the bottom falls out of the art market you will still have something to hang on your wall, eh? Anyway, it’s three years since I bought a printer. I thought I would provide an update on running costs, print sales, and profit. I’m happy to be completely transparent about all this as I know it can be difficult to figure this out if you are thinking of creating your own printing business. Culan et Croix des Chaux, December 2024 Again, the reason why I do this from November to November is that the ski season runs December to April, and usually the most sales are during that period. Also I bought the printer in November 2022 so I’m just carrying on that way. You can find details from the previous year here. All the photos here are work shot in the last twelve months, I’ll cover this in a bit more detail below in the “Thoughts” section. Year Three Investment I needed to purchase more paper and ink this year, as expected. I also decided to buy a stand for the printer, as it was available at a significant discount. This gives me more freedom in my studio as I can now move the printer around easily. It also will allow me to add a second roll feeder in the future, should I decide I need that. Investment figures are included in the costs below. Income Income is made up of sales through a local gallery that I am part of, along with web sales: 11,409.- CHF - sales through the gallery 642.- CHF - sales through web shop = 12,051.- CHF total income Total income is up by about 20% compared to 2024 on both gallery sales and web shop sales. Costs I include the loan repayment here as that is an ongoing cost. I had to purchase consumables (paper and ink), at a total of 1,370.- CHF however that cost isn’t included in the total here as it will be amortised in future years under the “print consumables” category when they are used to make prints. First Tracks, January 2025 Rental cost of space in the gallery was reduced due to having overpayments of rent and my loan to the gallery, from the previous year, paid back to me. -4,058.- CHF - loan repayment -1,500.- CHF - rental cost of space in the gallery -672.- CHF - print consumables (paper, ink) -130.- CHF - investment (printer stand) -3,408.- CHF - framing/mounting/postage -2,323.- CHF - commission to the gallery -300.- CHF - web shop subscription -62.- CHF - stripe / paypal fees 0.- CHF - advertising (none this year) = -12,453.- CHF total costs Total costs are down by about 15% compared to 2024. Total Profit (Loss) 12,051.- CHF total income -12,453.- CHF total costs = -402.- CHF total loss Thoughts Holy crap, I only made a 402.- CHF loss this year. What happened? A combination of debt owed to me by the gallery and better sales meant I came close to breaking even. The original investment loan also accounted for 4,058.- CHF in costs, but this loan is now fully repaid and will not factor into future costs. I was lucky this year in that one of the local schools made a bulk order of small framed prints, which contributed to the boost in sales. If I were to net off the cost of the loan, but also this large order (since this is a rare occurrence), I would have a profit of about 2,000.- CHF. So still a good year, relatively speaking. However, that’s about 175.- CHF per month profit. You can’t live on this, and it’s an absolute grind if you want to start increasing that. Again, the reality remains that a physical space is absolutely essential for getting the work out there and sold - just look at the figures, approx twenty times the amount of income than from the web sales. Verbier the day after after record snowfall, April 2025 The Content Treadmill This year’s “trip to a ski resort in another country” was Chamonix, which I hadn’t been to in over a decade. I hired a guide for some off piste ventures, and we had a great time exploring the mountains. The snow was reasonable at the start of the week, but a bit naff at the end, but I did manage to shoot a couple of photos that have been added to the work for sale. We already have a trip planned for next year, and are considering the year after. This should result in more work. I should note that the work is a byproduct of my first interest - snowboarding. Really I’m not looking for locations or trips with a thought to shoot photos, they are purely an afterthought. If the places I go are suitable, and the conditions allow, then a photo might result. I have no interest in creating “content”, as that’s an absolute grind as well. I might shoot a couple of good photos a year, really. The work I shoot is very specific to a place, as I’ve talked about previously. If I wanted it to sell I would be looking to display it in galleries present in those locations. Sunset Over Le Col de la Croix, October 2025 And if I did want to boost the income from all of this I would have to jump on that content treadmill. Be thinking all the time about where to go next, what to shoot, and how to sell it. Be pushing out work all the time. That means producing mediocre work, that you’re not happy with, and that is a drag. Going out with the intent of creating content? Where’s the fun in that? The Storm Hits the Art Market ↩ Geneva Freeport ↩

1st Nov 2025 1 votes
A Survey of the Ticket (Re)Selling Landscape

TL;DR? It’s a quagmire, essentially. But let’s dive in. Possible strong language ahead, and copious footnotes with links to much more information below. scalper noun [ C ] US informal /ˈskæl.pər/ (UK: tout) someone who buys things, such as theatre tickets, at the usual prices and then sells them, when they are difficult to get, at much higher prices: “A scalper offered me a $20 ticket for the concert for $90.” We got tickets for Oasis, and it wasn’t easy. In fact, it was an absolute pain in the arse. There seems to have been a change in the ticket buying, selling, scalping, and reselling landscape of late, or the nature of this event has just brought it to my attention. Doing some research around this all suggests it’s always been bad, and yes it has always been bad. But this bad? I’m not so sure. I’d speculate it’s now so easy to put together something to automatically poll for (and purchase) tickets, that anyone who is after them can do it and anyone who wants to scalp can do it as well. The consequence of all this is that a ticket can be resold multiple times. Originally, which is then listed for sale ethically, then snapped up by a scalper, then reduced to sell nearer the event, then grabbed by another scalper, then sold once more to a genuine fan again. All the while the platforms are taking obscene amounts of fees every time that single ticket sells and sells again. Here’s some observations from the experience of trying to purchase Oasis tickets, and the platforms we ended up looking at to do this. Ticketmaster Part of me feels sorry for Ticketmaster (or Live Nation, it seems). I believe they have a shit tonne of technical debt that would make even the most seasoned senior nope out before getting beyond the first interview. This includes such madness as a custom operating system built on top of VAX that is holding up most of the backend. Given the age of these systems it’s all now layers of emulation. They’ve tried to rewrite it more than once but never get anything close enough to the existing implementation in terms of performance and reliability1. Part of me wonders if that might be an interesting challenge, but the other part wonders why they don’t just fix these with a sledgehammer. Radiohead recently announced shows and worked to reduce the inevitable stampede by way of a two stage lottery; you had to first register an interest, with a verified mobile number and email address and then, if you were lucky, you were sent a code that allowed you to join a queue on the day of the sale. A moderately high bar to those that automate scalping, with an aspect of a lottery to reduce scalping even more. That system brought the queue size down to manageable numbers and did cut the scalping markets. Not completely, but significantly given the number of tickets on the resale sites was, and remains, relatively low: Note - dozens, rather than hundreds, and being sold at relatively low prices. Also note the warning that “Resale of tickets is prohibited for this event. The ID of everyone entering the event will be checked to ensure it matches the name on their personal ticket.” … Resale of tickets is prohibited says the resale site. Eh? More on this below in the Stubhub section. The final part of me assumes Ticketmaster just doesn’t care. Their platform can handle the load, and they make gobs of money so why fix the non issues? Sure, the site can struggle sometimes, but that’s transient. The tickets will get sold eventually. Why worry? The experience with Oasis was about the same as most in demand events - join a queue and then hope there’s something left when you get to the end of it. The queues were absurd in size. Hundreds of thousands in line for a venue of a tenth of that capacity, with most in the queue likely buying multiple tickets. The double punch was that at the same time we were sat in the queue, some minutes then hours after the sale opened, we saw thousands of tickets being sold on resale sites. Scalped in seconds, then listed at hugely marked up prices before the official ticket sales had even sold out2. So we didn’t get tickets out of this system when it opened for sales over a year ago. We weren’t massively bothered, oh well we won’t see them. Then a work event coincided with the final gigs at Wembley in September 2025. Thus began the attempts to get some on the resale market. Stubhub A resale site with no limitations. Tickets sold out on the primary sales platform? Try a resale site where you can find them at ten times the price. Hmm, right… And I mean ten times the price. Oasis tickets for the general admission floor standing areas in Wembley were selling at, minimum, 600 GBP. Seated 1,000 GBP+. Absurd. What I find particularly irksome is that Stubhub will allow listings of tickets from the moment the official sales open. If this is supposed to be a fan resale site, why isn’t there at least some sort of delay? A week after the official sales open? A day? A few hours? Something? A genuine fan doesn’t buy four tickets and then immediately relist them at ten times the price. Stubhub is aiding the scalpers. I’ve had a script for a while that will watch Stubhub and alert me when tickets appear below a certain price3. This is to work around the lack of support for alerts in Stubhub’s platform. I set the price to a reasonable amount, about 250 GBP for floor standing tickets. Still high, but not absurd. The script merely alerts me, it doesn’t do anything to add tickets to a basket, purchase them, etc. Just a headsup that some tickets are listed. So I setup an alert for Oasis tickets, specifically for the general admission floor standing areas in Wembley. In other words the cheapest tickets. I actually did this not long after the first sales opened, in the hope that we might grab tickets and then we could plan a trip. It’s always been a useful script, but absolutely nothing came out of it this time. The script didn’t alert me once. Resale tickets for this event were all listed so high that it was never going to succeed. No luck on Stubhub. Twickets Twickets are one of the ethical resale sites, and they make a big point of this fact in their marketing spiel. The problem, which became clear with this event, is that scalpers have automated the purchasing of tickets through their site and that locks out the real fans. To summarise: real fans who can’t make the gig sell them at face value on Twickets. Scalpers automate purchasing these and then resell them on other sites at inflated prices. This completely fucks the site’s ethos. It’s infuriating trying to purchase through Twickets as the way it works is tickets are listed until their purchase is confirmed, and adding them to a basket holds a lock on them for ten minutes. The scalpers have automated this such that their bot will add to the basket, giving the scalper the option to get in front of the screen to complete the purchase. Sometimes the scalper can’t get to whatever device they need to in time. So what happens? The tickets are available to grab again and their own bot, or another bot, or one of many other bots, adds to their basket and holds the lock on the tickets again. Rinse and repeat. Tickets would be listed, but when you tried to purchase you were told “Looks like another fan grabbed this ticket just before you - when someone starts the checkout process, we temporarily hold the ticket so they have a fair chance to finish buying it. If they don’t complete their purchase, the ticket will be released back for others to buy.” The tickets would sit listed for over an hour, meaning they were being added to a basket, timing out, added, timing out, added, over and over again. The above tickets were an example of that, eventually selling almost two hours after they were listed. Who takes this many attempts to purchase? I can understand a couple of timeouts, maybe even twice that many, but an hour and a half? Eight timeouts before a successful purchase? Bots, nothing but bots or a very lucky actual fan that manages to slip in between the cracks and hits the purchase button at the right millisecond. 90 quid tickets, on their way to being resold for a much higher price. That’s likely 1,000 quid profit for the scalper. We saw this happen multiple times, I’d say we saw twenty tickets sold at face value going to scalpers on this ethical resale site, before we gave up. Twickets claim they have strong bot defence, but the evidence suggests otherwise and that they are failing in their mission statement4. There are technical solutions to this, and I’ll give them this suggestion for free: they don’t have alerts for in demand events, which is understandable as sending out hundreds of thousands of notifications, emails, etc, is costly and would lead to a stampede to their site causing more problems. Instead they should send out notifications in batches - don’t list the tickets, make them only available through an unlisted unique URL, which is provided via the notification, send out small batches of notifications to randomly picked users (say, one hundred at once) at ten minute intervals, and when the tickets are sold - stop. The key here is the URL in the notification should itself expire, meaning the bot race is eliminated. Don’t get to it in 10mins? Too late. If you chuck the ticket in the basket but don’t complete payment? Sorry, you lost your chance. I know the above suggestion is a bit “shit Hacker News says”, but come on Twickets - sort this out as you’re more Fuckwits than Twickets at the moment. TicketSwap Another ethical resale site that seems to be doing better than Twickets, but I’m not convinced. They do send notifications, and they might be using batching as I talk about above to reduce load5. So fair play. However we noticed that some sellers appear to be selling multiples of tickets via this platform, as distinct listings over different hours/days/weeks, and that in itself is fishy. Witness this seller (username removed) who we saw at least seven or eight times selling moderate value tickets via the app. At the end of the process, i.e. shortly before the gig, they had sold over twenty individual tickets. That seems off, and perhaps it was a scalper offloading. My suggestion here would be to not allow a seller to list tickets for the same event more than once, but that’s probably trivial to work around if you’re a scalper. Reddit Reddit is full of scammers, to the point that it’s just hilarious to read their attempts to make excuses around what they’re doing. The pattern is usually an account registered very recently, perhaps a day or two, or a week or two; alternatively they have an account of much longer standing with higher karma, but they have deleted/hidden the entire submission and comment history. Those are probably compromised accounts, and at least one I saw was playing the longer game: It started as an account registered a year ago, with the first submissions cleary karma farming in some of the larger subreddits. Get the account to some degree of trustworthiness. They pivoted to trying to resell tickets to in demand gigs about a month ago. These scammers were typically bait and switch when it came to proving they had the tickets, or the payment method. One even claimed they had a friend at Ticketmaster and therefore couldn’t sell on the resale sites as it would get their friend into trouble. Bollocks. I’m not saying there are no legitimate sellers on Reddit, but with in demand gigs your odds of being scammer are almost 100% so don’t risk it. I saved a couple of the threads as PDF printouts for posterity, so entertain yourself here and here if you want to. The second thread is particularly silly as I get into an argument with a poster who is advertising their own alerting service for Twickets, which they charge for, knowing full well that there is no way it can beat the other bots. They even had a page on their own site effectively admitting this fact (Mainbotpy section). Selling a service you know to be ineffective? Another scam. Viagogo Where we ended up purchasing tickets. The same observations apply as for Stubhub, which is not surprising as they are the same company with different frontends, but Viagogo are particularly egregious as they don’t list tickets with their fees so you are in for a shock when you hit the final payment page. Fees came in at almost 50% of the listing amount: This was more than I wanted to pay at the point of purchase, but likely the least I was going to pay. The fees are a piss take. I don’t think there’s much more to say about this one. However the interesting observation is making an incorrect assumption that prices would come down as the event got closer, with scalpers getting more desperate to offload their unsold tickets. That didn’t happen, and considering the profits involved probably never happens. I watched the listing values slowly decrease over the period of about a week, along with the number of available tickets, and purchased two on the Wednesday before the Saturday event. I’d figured the amount of time we’d spent on this was way beyond sunk costs territory. Even if the tickets continued to decrease in price we had already lost more than their value in time. The Wednesday turned out to be the lowest point they hit, and they started going up again reaching bonkers prices on the Friday and then even higher on the Saturday morning: You probably can’t see it there. Just know that there were 42 tickets left on the day, with the cheapest being £1,741. The thing is, these were selling, or at least appeared that way since the number of listings reduced to dozens a couple of hours later, and then was down to single figures a couple of hours before the event. I don’t think the bottom one here sold though: Just Write a Better Bot? We’re beyond that. It only takes a single scalper to ruin it for everyone, and if everyone decides to run bots to buy tickets… well, I don’t think I need to expand on why this is a terrible idea. So What Now? The Resale market needs killing. Dead. As in: no resale of tickets for events is ever possible and you just have to eat that fact. Fuck all the businesses that have built a model on gouging fans, you’re all gobshites. The lot of you. Line goes up? Fuck your line. If you buy a ticket it should be cryptographically stored in your account in a way that cannot be shared (time linked rotating qr/barcodes like most ticket apps use these days). And it cannot be sold. Period. You can’t make the gig, you change plans, you’re ill? Too bad. That would stop the scalping market instantly. And if we aren’t going to kill the resale market, how about using some recent buzzword tech to improve the situation? NF-ucking-Ts that would have some tangible use and allow artists to benefit from the resales, track how many times tickets are being resold, as well as giving information that allows identification of the scalpers so they can be named and shamed? Do it. Please? Some information here, here, and here that notes “It runs a proprietary operating system on a proprietary emulator. Tickets are actually the equivalent of blocks on a file system. It’s incredibly complex in the way that it’s able to represent the physical layout of venues, view obstructions, language stuff, and most famously the packing algorithm.” A much more comprehensive article can be found here, which does cover some of “The Host”. ↩ I posted about this on Reddit at the time (archive of the thread here) and one comment suggested that the resale sites themselves are scalping for high demand events. Unproven, but it’s a possibility. ↩ I gave a lightning talk about this last year. The script is pretty basic, and the most interesting thing is probably StubHub building large parts of their site through JSON so it really makes this a trivial thing to do. ↩ Twickets do have bot defence in place, but it’s the most naive and/or simple implementation. Their thresholds for some checks are also way too high - it’s possible to sit and refresh the page every second and not see a 429 (“too many requests”) response. Many of their endpoints are also not rate limited, allowing for easy automation of polling, and their “private” API endpoints are not as private as they should be, nor are they properly secured. ↩ I suspect the batching is effectively done through whichever provider they are using to send the notifications to mobile devices. Some of the events (as seen in the screenshot) show 30,000+ people waiting for tickets. That’s not a massive number, but enough to cause quite a stampede should notifications appear on all those devices at once. I do assume it’s also trivial to automate grabbing the tickets after receiving the notification, but the “not all at once” delivery is going to render that process ineffective. TicketSwap may suffer from the same issues as Twickets, but that’s unproven without further investigation (I only ever use TicketSwap via a mobile app). ↩

17th Oct 2025 1 votes

More in programming

Mommy bloggers react

After a write-up in the New York Times, Mommy Bloggers had two options. Either lean in, or step back. Given how popular it became after that, it's not hard to guess which option they chose. The post Mommy bloggers react appeared first on The History of the Web.

8 hours ago 1 votes
Haunt 0.4.0 released

I'm quite a bit late on this one, but Haunt version 0.4.0 was released released back in July. I haven't had much time for blogging, but I'm catching up now! This release contains a small set of improvements and bug fixes since the 0.3.0 release in 2024. About Haunt Haunt is a static site generator that uses the Guile Scheme as its configuration language. It aims to be simple, functional, and extensible. Features include: Easy blog and Atom/RSS feed generation Markdown post support Simple development server for viewing edits before publishing Purely functional build process User extensibility Notable changes Added support for HTML in Markdown documents. This was a long time coming because guile-markdown did not support it and the library was abandoned by the original maintainer. As part of my work at Spritely, we forked it, implemented the relevant portions of the CommonMark specification, and released it. Spritely's guile-commonmark fork is now considered to be the official upstream by Guix and others. A further consequence of this is that guile-lib is now a required dependency for building Haunt as we need the (htmlprag) module to parse Markdown documents with embedded HTML. html->shtml from guile-lib's (htmlprag) module is now used instead of xml->sxml in the HTML reader. It was silly of me to use xml->sxml for this purpose years ago, but at the time I wanted guile-lib to be an optional dependency. Added haunt new subcommand for creating a new site. Added default directory, template, and prefix arguments to flat-pages procedure. Added support for index metadata flag to flat pages for pretty URLs. Flat pages now receive all page metadata, not just the page title. This is a breaking change from 0.3.0. Added .scm as an additional extension for sxml-reader. make-file-extension-matcher now supports multiple extensions. Fixed emission of <script> and <style> elements. Fixed handling of no available reader in flat pages builder. Fixed unreachable error handling clause when a reader is not found for a post. Fixed default blog theme template missing an <html> tag. Fixed overloaded -h option in haunt serve. Deprecated post in Skribe reader in favor of document. Download Haunt 0.4.0 is already available in Guix: guix pull guix install haunt See the Haunt project page for information on how to build from source. Thank you to Camilo Rodrigues, Noé Lopez, jgart, Jakob L. Kreuze, and Daniel Meißner for their contributions to this release! Happy haunting!

9 hours ago 1 votes
On reading books

How books have coloured my life

12 hours ago 1 votes
Attention is all you have

The Tetris effect is one of psychology’s most easy to reproduce experiments. Simply spend a bit of time playing the eponymous game every day for a few weeks. After a little while, you’ll start recognizing familiar Tetromino shapes in clouds, buildings, and everyday objects. You might even see them appear before your eyes when you start falling asleep. Tom Tang Attention hijacking There’s one lesson the Tetris effect teaches us: whatever you focus on long enough will end up shaping your thoughts. This can be a good thing since it’s how we learn new skills and discover new ideas. Sadly, less and less of our attention is focused intentionally. Instead of picking what we want to see we let other people decide what is supposed to be good for us. Do you want to watch a video? YouTube knows you like cooking and art streams. But why not also recommend a few clips about the stock market bubble, global warming, and the war in Iran. Doomscrolling will make you stay longer and click on a few more ads. Do you want to listen to music? Just open a Spotify playlist and let the algorithm figure out what you like. Please ignore the AI slop they will insert in between real songs to avoid paying royalties to real artists. Do you want to know how your colleagues are doing? Too bad, LinkedIn will bury any relevant career news between the opinion of complete strangers. It is surely just a coincidence that those strangers happen to be shilling whatever Microsoft is invested in at the moment. Do you want the opinion of strangers on a product? Well those Redditors you wanted to ask are probably just a bunch of LLMs talking to a bunch of Russian trolls now. I hope you didn’t value their opinion too much. If, like me and most people, you spend the major part of your day focused on your device, there’s no doubt it’s affecting you. And when you let someone else dictate what appears on your screen, it’s the same as giving them the key to your brain. New York Said Back to an intentional internet The internet wasn’t always like that. Before recommendation algorithms where a thing, you had to decide what you would be doing on the computer. You didn’t really have one big app that you could open and order it to entertain you. Instead, you had a few dozen of bookmarks to websites, each with a specific idea in mind. A site for video game news, that one website with lots of tutorials, a blog about anime that didn’t update often enough, a wiki about a TV show from the 90s… Of course awful things existed on the web. We had Encyclopedia Dramatica and Rotten.com, but you actually had to put the effort to go there if you wanted. Nobody was going to put pictures of dead kids and far-right propaganda as a suggestion after a pancake recipe or a cat video. The good thing is that this intentional internet is still around. It has just been a bit buried below the corporate web, but it’s not very hard to find. After all you’re on this blog, so you probably already have a good idea about it. The main difference between this time and now is you. When you want to get back to reading blogs, RSS feeds, and finish that tutorial instead of doomscrolling shorts, you have to get used to a slower internet. One where content is not infinite and doesn’t get updated every click. But like every habit, the only thing you have to do is to keep at it. And if you pay enough attention to it, something will click in your brain.

yesterday 2 votes
📚 BoredReading

You seem to be enjoying this.

Join free to unlock everything.

Create free account

Already have an account? Sign in