[HN Gopher] Some tiny personal programs I've written
       ___________________________________________________________________
        
       Some tiny personal programs I've written
        
       Author : atg_abhishek
       Score  : 799 points
       Date   : 2022-03-09 14:19 UTC (1 days ago)
        
 (HTM) web link (jvns.ca)
 (TXT) w3m dump (jvns.ca)
        
       | jrm4 wrote:
       | My dream in life, seriously, is to get waaaay more people doing
       | this sort of thing than they do now. If STEM is worth anything,
       | it would be worth things like this*
       | 
       | *(I run a STEM non-profit, so I feel pretty qualified to
       | criticize it this harshly)
        
       | markussss wrote:
       | I absolutely love this, and I do the same. Small programs and
       | scripts to solve problems I encountered in my daily life. When I
       | make them for my own use, and for myself to enjoy making
       | something, I don't care about whether it's the best solution or
       | the most elegant solution, as long as it's _a solution_! And I
       | really, really enjoy that. I don 't care if it's one or one
       | hundred lines, as long as it's enjoyable!
       | 
       | A few of my examples are:
       | 
       | 1. A PyQt GUI for redshift. I use this every day, and have been
       | for a few years.
       | 
       | 2. Userstyle for horizontally flipping a video. Sometimes a video
       | or stream is mirrored, for some reason, and it's just _nice_ to
       | be able to fix it.
       | 
       | 3. Userstyle for scaling videos that originally had an aspect
       | ratio of 4:3, but have been stretched out into 16:9 back to the
       | original 4:3 aspect ratio. It's surprising how often you come
       | across those.
       | 
       | 4. Userscript for improving the functionality of the investment
       | portal of my bank.
       | 
       | 5. Bookmarklet for opening all videos on the page in new tabs,
       | but there are some problems with iframes yet.
       | 
       | 6. Bookmarklet for setting playback speed of videos on the
       | current page. I use this several times per day.
       | 
       | [1]: https://github.com/Markussss/redshift-gui
       | 
       | [2,3,4]: https://github.com/Markussss/userscripts
       | 
       | [5,6]: https://markussss.github.io/
        
       | wwilim wrote:
       | > I don't think it actually helped but it was fun
       | 
       | This seems like the central theme, and I can totally relate
        
       | lormayna wrote:
       | * With the spikes of gasoline prices, I have developed a tiny
       | program that find the station with best gasoline prices close to
       | my position. This might become a public website in the future
       | 
       | * I have mostly automated my mailing list: I save the links in
       | Raindrop, save to Notion, write a bit of text, and send through
       | Buttondown. It's still work in progress, but it works nicely.
       | 
       | * To fronting vaccine booking for my parents, I wrote a script
       | that check if the vaccine was open for their age group.
       | 
       | * When I moved to my new house, there was some technical problems
       | to activate my ADSL (the telecom company need to dig into the
       | street and it was planned, but not scheduled). Then I wrote a
       | scraper that every 2 hours check on the website if my address was
       | available for a new ADSL line.
       | 
       | * My wife is working on property management. For law enforcement,
       | at the end of the month, they need to send details about guests
       | to police. It's a tedious activity to make by hand because you
       | need to fill up a form for every guest. So, my wife has prepared
       | a form in Airtable that the guests must fill up with all the
       | information needed; then I wrote a Lambda function that at the
       | end of the month, get the data from Airtable, generate a file in
       | the format for bulk upload and send it to my wife via email. I
       | saved her hours.
        
       | justinlloyd wrote:
       | I code every day, even when my job has me busy with other things
       | that aren't coding related. I love banging out tiny programs and
       | scripts to solve problems.
       | 
       | When I didn't have a problem of my own to solve I'd hang out on
       | the Unity3D forums and write little time waster demos of
       | questions that people had such as "how do I make a snowboard
       | game?" or "how do I make a fishing line and have it sag in the
       | middle?"
       | 
       | I wrote a space invaders game for my online resume.
       | 
       | I've made a number of interactive touch screen and motion
       | controlled robots and laser pointers on robot arms as cat toys
       | over the years. Made one that streamed video and let people
       | control the laser pointer via a web browser.
       | 
       | I've made a litter box cleaner robot that outsourced each
       | cleaning to Amazon's Mechanical Turk. Robot arm controlled via
       | web browser, video feed, Mechanical Turk assigns a "cleaning job"
       | to a worker (human).
       | 
       | I wrote a script that would take all the video from a bunch of
       | cameras and process them, down rez the video, and properly label
       | it for a bunch of tutorial videos I created.
       | 
       | A voice controlled "artificial intelligence" assistant producer
       | to help me record tutorial videos "Hey producer, roll VT, and
       | give me a close-up on camera 1."
       | 
       | I lost a bitcoin wallet address - it wasn't a lot, a few dozen at
       | most. I knew which computer the wallet was originally on, and I
       | snapshot a picture of my desktop every few seconds and store the
       | images on a file server. So I wrote a script that would take all
       | the images and batch process a text recognizer on Linux to look
       | for when the wallet was open. Et voila, my seed phrase.
       | 
       | I wrote a script that monitors our street facing front door via
       | video camera for packages and sends an alert if a package is
       | detected on the front porch.
       | 
       | A PowerShell script to move Chia plots from the plotter to the
       | farmer.
       | 
       | A MACH driver for my weird little NextWave Piranha desktop CNC. A
       | script that will generate the g-code to cut dove tails on my CNC
       | for me, but also the Ruby code to generate the dove tail view in
       | SketchUp too before I perform the cut.
       | 
       | When doing some extensive travelling for work back in
       | 2013/2014/2015 I created a small Android app that would count
       | down the amount of time until my wife and I got to see each other
       | again and show where we each were on a google map.
       | 
       | I run Timesnapper on my Windows machines to capture images of my
       | active desktop usage, so I created a similar, though much simpler
       | application for Linux and macOS to do the same thing.
       | 
       | A script to emulate a macOS Fusion drive, marrying a RAM drive
       | and an SSD for super fast builds AKA fast tiering.
       | 
       | And a bcache kernel driver for ESXi that would put a RAM drive in
       | front of the SSD array for VMs that were doing builds or lots of
       | drive activity AKA fast tiering.
       | 
       | Back in 2016 I figured out a script for Linux that would spoof
       | the OS identity so that Linux machines could connect to the
       | corporate VPN, masquerading as an iPhone.
       | 
       | An NDI plugin for Unity3D.
       | 
       | And a bunch of bots to play or multibox various online MMORPGs
       | and hack-n-slash games. Which lead to paying work with a couple
       | of companies who wanted me to figure out ways to stop that sort
       | of thing.
       | 
       | And a computer vision game playing bot for a few online games
       | that I didn't want to grind on.
       | 
       | A parallel 3D printer partioning system to farm out jobs to 3D
       | printers at our local makerspace.
       | 
       | An out-of-the-box VPN proxy running on OpenWRT so that any device
       | connected to the OpenWRT router was automatically on the VPN.
       | 
       | A C# wrapper around the FFMPEG library.
       | 
       | A SenseCam application and associated hardware.
       | 
       | A chrome & firefox plugin (no longer maintained) for a People You
       | May Know sorter for Linkedin.
       | 
       | I created a voice activated application that can open and close
       | the garage door for me "open the pod bay doors hal" and also
       | switch the dust extractor on and off when I am working, though I
       | have since replaced the dust extractor power function with a
       | dedicated device that detects power tool usage.
       | 
       | I created an application that will copy USB sticks en masse for
       | my wife's technical conferences, and also update a USB stick with
       | any appropriate updates such as new slides or presented papers as
       | speakers submit them.
       | 
       | I wrote a script that would go through each of the conference
       | papers and put the IEEE copyright footer on them before
       | submission.
       | 
       | My mother-in-law was a research librarian and she and a few
       | colleagues needed to run a study, and they had applied for a $10K
       | or $20K grant to conduct the study to determine which journals a
       | group of universities should continue to subscribe too. Grant
       | application denied. $10K-$20K of research to save a few hundred
       | thousand. I wrote a script in a couple of hours, and got paid a
       | large gourmet pizza, that gathered all the results needed and
       | dumped them into a spreadsheet, and so a group of universities
       | saved a bunch of money on journals they didn't need.
       | 
       | I wrote a script that captures video of multiple in-office
       | cameras that captures my activity in my office throughout the
       | day, and wired it up to a button that lets me pause the
       | recording, or erase the last 30 seconds, five minutes or hour. It
       | is hooked up to an "on air" light so my wife is reminded not to
       | walk in my office partially dressed when the camera is active. It
       | gathers all the video feeds, and the depth sensor data and dumps
       | it on a server.
       | 
       | I wrote a little in home dashboard that tracks our wallets, our
       | phones, our cats, weather for the week, upcoming meal plan,
       | appointments, and so forth.
       | 
       | A "Waterfull ring toss" game with a big button, just like you
       | remember from your child hood, made from a 55" Samsung TV I found
       | on the side of the road.
       | 
       | A bunch of time zone synchronized wall clocks in our upstairs
       | hallway, with VFD displays showing location weather, financial
       | headline to give you something to talk about with your client in
       | that time zone, exchange rate, and so forth.
       | 
       | A neural network to pick horses in a race, that eventually turned
       | in to a small side business.
       | 
       | I'm currently tinkering with a gesture controlled viewer
       | dependent holographic display made from those spinny LCD fans
       | with HDMI input you can buy through Aliexpress.
       | 
       | And dozens more over the years. I don't think I'll ever stop
       | working on random ideas like this.
        
       | nivethan wrote:
       | Julia writes so nicely, something about the way she talks about
       | projects and things is so earnest. I have a brag document because
       | of her and it's helped quite a bit. I have my own list of toy
       | projects and I think it's good to track them especially to find
       | code examples later!
       | 
       | https://nivethan.dev/projects.html
       | 
       | I really liked writing a http server in bash because I started
       | just to see if I could. I also really like my project to get the
       | top reddit stories from each country.
        
       | ludovicianul wrote:
       | It's fun to build simple stuff that work, but it's even more
       | rewarding to build stuff you actually use every day. I made a
       | simple expense tracker that will parse the SMS messages I get
       | from the bank when paying for stuff, categorise based on merchant
       | categories and push it to a google spreadsheet for traceability
       | and visual charts. Good opportunity to play with building native
       | images (it's done in java) in order to minimise resource usage as
       | it's deployed in a 5$ digital ocean droplet. 10 years ago I've
       | built a Swing app to generate invoices in a local compliant
       | format. It was great to flexibility to customise everything.
        
         | psalminen wrote:
         | I did the same thing. I use a twilio number that calls a GCP
         | cloud function. Super handy utility, and I haven't had to pay a
         | dime for it.
        
       | aghilann wrote:
       | If any of you know don't know what LaTeX is, it's a way to write
       | documents, it's usually used to write Math and Science research
       | paper's because the of the formatting and symbols LaTex allows
       | for. It has a lot of flexibility, but everything in LaTex
       | requires a lot more effort to type then in something like MS
       | Word. I have to use it for a class I'm currently taking where you
       | have to do super long proofs, I created a short 50 line script
       | where I can enter a mathematical expression using plain text and
       | shorthand's for special symbols and the function returns a string
       | I can copy and paste into LaTex. Saved me and my groupmates
       | multiple hours, I also posted on my class forum so I can save my
       | classmates the pain as well.
        
         | arendtio wrote:
         | You might want to check out those blog posts:
         | https://castel.dev
        
         | generalizations wrote:
         | Might be worth looking into Lyx also. It's a sort of WYSIWYG
         | for latex.
        
         | version_five wrote:
         | I have to disagree with you about LaTex being slower than word
         | for equations. In fact, one of the big reasons I started using
         | it was faster equation typing. And when word2003 was upgraded
         | to 2007 or whatever came next, they actually changed the
         | equation editor to allow latex style entry so you didnt have to
         | click through the menus to get symbols.
         | 
         | What kind of shorthand do you use with your script? I honestly
         | find latex's shorthand already short.
        
           | aghilann wrote:
           | The course I'm currently taking makes me uses symbols like
           | the biconditional, xor, and quantifiers. Each symbol requires
           | an entire word to type out but I also frequency have to look
           | at a reference sheet to find the command for each symbol. I
           | just use short hands like "-" for not, "and" for $\land$,
           | etc. I'm sure if I used LaTex more often, I would have most
           | of the commands memorized but I use it infrequency so I
           | almost never remember.
        
             | hegzploit wrote:
             | I'm pretty sure you can create macros in LaTeX, not sure If
             | this would solve your problem.
        
           | McBeige wrote:
           | Back in high school I used OneNote and had a pretty good MS
           | equation editor setup. Most things can be done in a similar
           | way to LaTeX, e.g. writing \theta for greek letters, writing
           | a slash for fractions. With a few "replace with" "macros" I
           | could write quite fast, probably faster than I can in LaTeX
           | these days after about the same amount of practice, and
           | almost never had to use the GUI.
           | 
           | These days my notes are all Markdown with inline LaTeX for
           | math. I haven't yet found an editor that support "global"
           | LaTeX macros/shorthand. Things like matrices can be bit of a
           | pain, but then I haven't written any since linear algebra.
        
         | xmprt wrote:
         | I wonder if you could make a few minor tweaks so it's a latex
         | plugin and you can skip the copy and paste process.
        
         | CRConrad wrote:
         | Here, have an upvote for sharing it with your classmates.
        
         | froh wrote:
         | Here is relatively recent collection of tools and tweaks to
         | quickly create math in LaTeX, quick as in: live transcribing
         | class notes.
         | https://www.reddit.com/r/LaTeX/comments/ieonbz/using_latex_f...
        
         | hereforphone wrote:
         | I don't think there are any engineers (people who have gone to
         | engineering school) that haven't used LaTeX. [Editing based on
         | replies]: Apparently I am wrong. Maybe it's just at the grad
         | school level that one can expect to use LaTeX frequently; I
         | made the assumption because I took a Master's.
        
           | pitaj wrote:
           | Checking in as a BSEE: never used LaTeX.
        
           | pushrax wrote:
           | It's more common in CS than engineering in my experience,
           | when CS is part of the math department.
        
           | Jtsummers wrote:
           | You're very optimistic. I doubt anywhere near the majority of
           | engineers have used LaTeX directly. I've seen a lot more (of
           | all ages) who used Word for their technical writing. If they
           | used LaTeX or TeX it was a one-off, not something they became
           | skilled with.
        
         | avg_dev wrote:
         | If you put it on GitHub, or anyone linked me to a similar tool,
         | I'd be interested. Thanks.
        
           | vulcan01 wrote:
           | This is not exactly the same thing, as it just renders the
           | output, but the following uses markdown and asciimath for
           | quick math notetaking.
           | 
           | https://vedthiru.com/tools/notetaker
           | 
           | Disclaimer: I wrote it.
        
             | aghilann wrote:
             | This is pretty cool, similar note taking service called
             | Obsidian I use to take notes in Markdown
        
         | Minor49er wrote:
         | I recently came across a zine someone made called The Codex:
         | Life with Linux. It's on Etsy for $6 [1], but their short
         | chapter of LaTeX tips is fully shown in one of the screenshots
         | [2]
         | 
         | [1] https://www.etsy.com/listing/1099735271/the-codex-a-zine-
         | abo...
         | 
         | [2]
         | https://i.etsystatic.com/9756188/r/il/09766b/3387078510/il_1...
        
       | fmakunbound wrote:
       | > use secret undocumented APIs where you need to copy your
       | cookies out of the browser to get access to them
       | 
       | Yea, thank you modern front end developers. This is my favorite
       | start for scraping as well.
        
       | JamesMcMinn wrote:
       | I own the house I currently live in because of a script I wrote.
       | 
       | We had been looking for a new build for some time and had settled
       | on a development and specific house we wanted to buy, but it was
       | still months away from being released. We were told they released
       | houses in person first, then listed them online later that day,
       | but I was bored and wanted to see when new houses were listed, so
       | I wrote a scraper to alert me whenever a new house became
       | available.
       | 
       | One day, we got a call from the property developer telling us the
       | house we were interested in would be available in person from
       | 10am the next day. Because we wanted to be certain to get it, we
       | appeared at 8am, only to find that 3 other people were already
       | waiting. Houses are released in batches of 2 or 3, so whilst we
       | weren't hopeful, we joined the queue and waited.
       | 
       | At 9am, while waiting in line, I got an alert telling me that the
       | house had been released online, so I open their website on my
       | phone and paid the deposit.
       | 
       | At 10am, when the sales office opened, all hell broke loose as
       | the person first in line (waiting since 5am...) discovered the
       | house they wanted had already been reserved online. I'd
       | effectively stolen his house. It was awkward to say the least as
       | all of us were crammed into a tiny portacabin while this
       | unfolded.
       | 
       | In truth, I felt awful for depriving him of the house he and his
       | family wanted, but relieved that we had reserved the house we
       | wanted after a 5 month wait. A few weeks later the developer got
       | in touch to say that they had changed their policy nationwide and
       | would only be releasing houses online in the future because of
       | "the incident"...
       | 
       | Whilst I wasn't willing to give up our reservation, I worked with
       | the person who had wanted our house so that they were alerted
       | whenever a similar house in the same development became
       | available. He got one, there's no hard feelings, and him and his
       | family are now my next door neighbours.
        
         | jwong_ wrote:
         | Did you end up running the scraper longer for your new
         | neighbour?
        
           | JamesMcMinn wrote:
           | I did, yes. I set it up with some specific conditions that
           | sent him an alert whenever a house similar to ours became
           | available. In the end, he got the house directly next to ours
           | and very similar in design.
           | 
           | Our garages actually share a wall.
        
             | jwong_ wrote:
             | That's really kind of you to run that scraper for him as
             | well. Glad it all worked out~
        
         | recentrecruit wrote:
         | Reminds me of "Project Thor" from my university days. Course
         | registrations were online, but in phases, e.g. Seniors for a
         | week, then Juniors for a week, and so down the line.
         | 
         | However, many students would snag a spot in a course only to
         | drop it as they shuffled courses around. There existed a
         | "queue" for the overflow, but it appeared to work as a CRON job
         | or otherwise involved a human in the loop as one would
         | routinely see:
         | 
         | Spanish 102 (Registered: (29/30), Queued:(60))
         | 
         | While in this state, one could simply click on the course and
         | register, completely bypassing this poorly designed queue. So,
         | naturally, I wrote a script to scrape the site on once a minute
         | (hammering it, and so Project Thor) and alert me once a slot
         | had opened up. Eventually provided this service to my friends
         | as well.
        
           | viceroyalbean wrote:
           | My university had a queuing system used for presenting
           | assignments. You could always access the page, but the queue
           | wasn't open unless the TAs were there ready to take
           | assignments. When the queue opened it would send a websocket
           | message, so I made a browser extension that connected and
           | waited for the queue open message and then immediately
           | entered the queue. The effect wasn't huge (even in larger
           | classes you would only have to wait 20-30 minutes even if you
           | entered late) but it was nice to be able to sit back and not
           | worry about getting a good spot.
        
           | remram wrote:
           | My university actually had a bidding system. You would start
           | the year with 10,000 points, and you could bid any number on
           | electives. So you could spend a lot of points on one
           | particular popular elective, and be guaranteed to get it, but
           | then you would not be able to bid as high on other electives
           | for the rest of the year.
           | 
           | The system was pretty smart, except for the part that you
           | could bid negative amount of points on an elective that
           | wasn't particularly popular and increase your total. That was
           | a pretty major flaw.
           | 
           | [edit: I should say that I didn't use my extra points for
           | anything. I wasn't particularly interested in the popular
           | electives anyway. I did make sure to end the year with 10,001
           | points, hoping they would fix the bug, but I don't think they
           | did.]
        
           | jotm wrote:
           | I've got something similar for appointments at citizens'
           | bureaus in some European cities. The waiting time is usually
           | around a month, which is insane imo.
           | 
           | My script constantly looks for open/canceled spots and
           | reserves them (some need email/phone confirmation, which
           | makes it a bit harder). Pretty standard stuff.
           | 
           | That's how I got my appointment in 3 days instead of a month.
           | 
           | So, I'm thinking of making money from this, but I'm not sure
           | about the legality of it all.
        
             | FPGAhacker wrote:
             | What is a citizens' bureau?
        
               | konha wrote:
               | Not OP, but sounds like the places in Germany where you
               | go to get or extend your passport, register after moving
               | to a new place etc. Notoriously hard to get a timely
               | appointment for things that should not require an in
               | person interaction in the first place.
        
               | jotm wrote:
               | As konha said, it's the government offices, providing
               | services for registration, driver's licence, taxes, etc.
               | It works the same way in several EU countries.
               | 
               | Sometimes you can just show up (and wait in a queue) but
               | most often you make an appointment beforehand. In many
               | states/cities, the waiting times are weeks and months
               | long (even in my home city everything's booked a month
               | ahead and you can see the big queues if you go in
               | person).
               | 
               | People can indeed just refresh the page themselves and
               | hope a spot opens up, but that's pretty annoying.
        
           | therein wrote:
           | I did something similar at UIUC very many years ago. I was
           | called to the office of head of Department of Computer
           | Science and kindly told while he thinks it is cool that I am
           | applying my skills relevant to my field of study, I should
           | stop what I am doing as even simply scraping could be
           | construed malicious if it got the attention of the wrong
           | people in the school.
        
         | petters wrote:
         | I think there are a large percentage of programmers at Swedish
         | national soccer games, as they release tickets online at a
         | first come, first served basis. (At least 10 years ago) This is
         | also true for fancy restaurant bookings.
        
         | omneity wrote:
         | A similar story happened to me in the past with appointment
         | slots at an embassy, and - shameless plug, I built a tool[0] to
         | monitor websites on my behalf, and send custom alerts to
         | Telegram, Discord, Slack, or archive data in Airtable, Sheets
         | etc. No coding or devops is required, you can get it done in 2
         | min [1].
         | 
         | We're in Beta so stability is still a goal we're pursuing, but
         | for many happy paths Monitoro is a huge timesaver.
         | 
         | [0]: https://monitoro.co
         | 
         | [1]: https://www.youtube.com/watch?v=gZkJDk1lzrY
        
           | stuckkeys wrote:
           | This is pretty cool.
        
             | omneity wrote:
             | Thank you! :)
        
         | mahathu wrote:
         | >I own the house I currently live in because of a script I
         | wrote.
         | 
         | Somewhat similar story for me. I live in a big European city
         | where young people/students predominantly live in flatshares.
         | One website which pretty much has a monopoly on room ads here
         | also allows room seekers to post an inquiry themselves. So many
         | people do it that after less than half an hour, your ad will
         | already be somewhere at the end of page 2. I wrote a script to
         | automatically update my ad every few minutes to push it back to
         | the top. I ended up getting a lot of responses I probably
         | wouldn't have gotten otherwise.
        
         | conroydave wrote:
         | id love to get their honest opinion on the 'no hard feelings'
         | part
        
         | nanidin wrote:
         | I have similar stories for launch day Nvidia cards, concert
         | tickets, festival tickets, and original artwork from creators
         | on Etsy. Any time I catch myself wasting time refreshing a page
         | for availability, I try to replace myself with a script.
        
         | Fritsdehacker wrote:
         | I had a similar experience, though not with a house. My sons
         | school was organizing a couple of sport activities. We could
         | sign him up for the different activities, but it was first come
         | first serve. We were early, so our son ended up doing all the
         | activities. This meant some kids ended up getting nothing.
         | 
         | I found this very unfair. Better would have been to let all the
         | kids list there preferences and then fairly distribute the kids
         | over the activities. However, I could see why the school
         | wouldn't want to bother with this.
         | 
         | I ended up creating a tool (1) for them to do this easily. It's
         | quite ugly, but it's open source (2) and it works. The tool is
         | in dutch because it's a dutch school.
         | 
         | (1) https://eerlijke-indeling.nl/ (2)
         | https://github.com/deliriouspenguin/eerlijke-indeling
        
         | nunez wrote:
         | lol don't feel bad; you took advantage of a broken system and
         | automated your way through it. The first person in line
         | would've done the same if they knew how!
        
         | artdigital wrote:
         | I did the same with the apartment I currently live in. Although
         | it's a rental, places here are taken within minutes of being
         | posted online, and my bot gave me the edge to put in a
         | reservation before anyone else was
        
           | jamil7 wrote:
           | Let me guess, Berlin?
        
         | zhoujianfu wrote:
         | I also own the house I currently live in because of a script I
         | wrote!
         | 
         | I wrote it in 2012 to automatically buy bitcoin once a week.
        
         | dybber wrote:
         | Did the same for my previous apartment. I wrote a script
         | scraping various "self-sale" sites (sales without real estate
         | agents), the script would notify me when new apartments living
         | up to my criteria was posted online.
         | 
         | When I got such a notification I would quickly check photos of
         | the place etc. and then call the seller. The guy selling the
         | place I ended buying, said it felt like I called him up
         | instantly after he posted it online.
        
           | mod wrote:
           | I used to watch the craigslist free section with a script,
           | and I got that response a lot.
           | 
           | I was calling within 1 minute of post time sometimes.
           | 
           | Being first pretty much gets you anything you want in that
           | section.
        
         | gcheong wrote:
         | Great story though I initially thought you meant you wrote a
         | script that paid off your house :).
        
           | hungryforcodes wrote:
           | Myself as well!
        
           | geek_at wrote:
           | I had a feeling his script somehow made him skip the queue.
           | 
           | When I was looking for a new apartment one of my friends told
           | me about his startup that was basically scraping databases of
           | realestate companies and I signed up with them and to my
           | surprise I was alerted for an apartment in the location I
           | wanted and it was up just a few minutes so I was able to
           | contact the agent before they even started their
           | advertisements.
           | 
           | I got the apartment but sadly the startup was bought and shut
           | down operations soon aferwards
        
         | tshaddox wrote:
         | One of the things that always frustrates me (despite being very
         | much in the "first world problems" category) is when queueing
         | or reservation systems are unclear or chaotic or otherwise
         | unfair, although I generally only encounter this at stores,
         | never for something as significant as a house! The most
         | ubiquitous one is the practice of totally separate parallel
         | queues where you just have to guess which queue will be
         | fastest. Another lovely related one is when you're waiting in
         | your queue for quite some time, then a new queue opens up right
         | next to you and quickly fills up with newcomers who haven't
         | been waiting at all! Come on store owners, just have a single
         | queue with multiple consumers popping off the same queue!
         | Again, I'm not going to pretend this isn't totally a first
         | world problem!
        
           | TillE wrote:
           | Berlin's international film festival has this horrendous
           | system where they'll release a small batch of tickets online
           | every morning on certain dates, and you just have to sit
           | there, refresh refresh and hope you clicked fast enough.
           | 
           | Serious major events use a lottery system, which is vastly
           | more fair and means you don't need the server infrastructure
           | to deal with this huge flood of requests. I'm not really sure
           | why _everything_ doesn 't work like that: let people submit
           | their requests/applications/whatever, and if you truly have
           | zero other criteria, just process them in random order after
           | a cutoff.
        
           | pedantsamaritan wrote:
           | Another variation I have been on both sides of: stores
           | favoring certain channels over others. For example, a local
           | fast-food restaurant might prioritize answering the phone for
           | carry-out orders over in-person carry out orders.
        
           | jrockway wrote:
           | Something went wrong here. The price of the house should have
           | been raised until only 1 person wanted to buy it. If you're
           | first in line, the incentive is to sell it at a higher price
           | to the person who's second in line, right?
           | 
           | I have to imagine some sort of regulatory thing was going on
           | here, like they have to provide X% of units at Y% of market
           | rate in order to get some tax concession or something.
           | 
           | I know there's not going to be a lot of sympathy for higher
           | housing prices here, but it does feel like something went
           | wrong in this specific case.
        
             | rlayton2 wrote:
             | For the people selling, it is often more profitable (or at
             | least less hassle) to sell quickly with minimal fuss and
             | move onto the next one.
        
             | majormajor wrote:
             | In a big development I imagine clearing inventory in a
             | straightforward way at prices that'll net you a good profit
             | margin anyway is more appealing than trying to run bidding
             | wars for each unit individually. Depending on the market
             | it's also possible that the gap between "price four people
             | are willing to pay" and "price nobody is willing to pay"
             | isn't very significant.
             | 
             | There's also a goodwill aspect in other cases: Sony kept
             | selling PS5s at MSRP even when scalpers were getting $800+,
             | because better for them that people are pissed at the
             | scalpers than dealing with the bad PR of such a huge price
             | hike over previous generations.
        
               | tshaddox wrote:
               | Yeah, for established brands like Sony who expect to have
               | long recurring relationships with customers, it wouldn't
               | make sense to run auctions on products because you're
               | just going to upset people and no one will think you're
               | making mass-market products any more. The same goes for
               | some popular musicians: they could make more at a
               | particular show by auctioning off tickets, but they often
               | go out of their way to have a lottery _and_ prevent
               | people from re-selling tickets at higher prices.
               | 
               | It seems possible that a large housing developer has
               | similar incentives.
        
             | maxerickson wrote:
             | It's like how event tickets are routinely scalped. The
             | thing that is going wrong is that the additional bid isn't
             | worth the reputational drama.
             | 
             | Homo economicus would understand that the seller is simply
             | being efficient. Homo sapiens gets all emotional about it.
        
           | mikepurvis wrote:
           | Camping reservations for Ontario Parks are a big mess like
           | this-- so much so that people do ridiculous hacks like
           | booking the full two weeks that lead into their desired
           | weekend and later paying a fee to cancel just the first part
           | of it. By the time the actual popular weekend would have come
           | available for online booking, it was already taken weeks
           | earlier.
        
             | cecilpl2 wrote:
             | I wrote a script to poll the Parks Canada reservation
             | system for availability for a camping trip I wanted to do,
             | so that I'd get notified the instant someone cancelled and
             | space became available.
             | 
             | Sadly after two weeks they banned my IP for the rest of the
             | year and I was no longer able to make reservations without
             | going through a proxy.
        
               | polishdude20 wrote:
               | A friend and I made a website based around this called
               | campalert.live We've had to stop doing BC and National
               | Parks as the API changed and we haven't had time to
               | update our end. But Alberta still works!
        
               | sequoia wrote:
               | I'm pretty sure they do this on their own now. I set up
               | "notify me" for a site and got tons of emails as sites
               | became available.
        
             | sequoia wrote:
             | Wow, thank you for explaining this!! I was wondering how
             | weekends that were "not yet available for online booking"
             | were already nearly fully booked when I looked on the
             | booking site. Very irritating that people do this... With
             | that out of the way, I'll go ahead and start doing this
             | myself, if that's the price of admission
        
               | mikepurvis wrote:
               | It's definitely a prisoner's dilemma type of situation--
               | no one _wants_ it to be like that, but once there 's a
               | critical mass of people doing it, then you kind of have
               | to. Once everyone does, you're back to square one, except
               | with a system based on unwritten rules that are confusing
               | and exclude the uninitiated.
               | 
               | And it's not obvious how to fix it in a way that doesn't
               | screw up the system for someone else:
               | 
               | - exorbitant cancellation fees would punish people whose
               | plans change, and a lot of people would just swallow the
               | extra cost anyway.
               | 
               | - insisting that the entire timeframe be in scope at time
               | of booking would make it hard or impossible to book
               | longer vacations at popular spots (which at this point is
               | basically anything within 4h of Toronto).
               | 
               | - making the whole season available at once would create
               | an ultra high stakes feeding frenzy, with the servers
               | probably ending up crashing.
               | 
               | - some kind of bidding or lottery setup would be extra
               | complexity, and would end up rewarding people with the
               | time, money, and schedule flexibility to "play" whatever
               | the system is.
               | 
               | I suppose the Ontario Parks mandate is to just maximize
               | utilization, so from their point of view it doesn't
               | really matter as long as weekends are booked solid and at
               | least some proportion of the canceled midweek days end up
               | being scooped up later by retirees or whoever.
        
           | cgriswald wrote:
           | I definitely appreciate a single queue. It doesn't seem to be
           | the norm though.
           | 
           | If it's a place you frequent, pay close attention. The
           | checker is usually a stronger indicator of line speed than
           | the number of items in peoples' baskets.
           | 
           | Whole Foods near me does this awful thing where the lines are
           | in the aisles. You can't even see how long the line is
           | without walking the entire length of the store.
        
           | ipaddr wrote:
           | Is a jealousy issue? Without the second line you were going
           | to take as long as you were. Opening a second line helped
           | people further back catch up and in some cases surpass your
           | speed. Someone else having a quicker experience shouldn't
           | have changed your experience.
        
             | tshaddox wrote:
             | I wouldn't call it jealousy to want everyone to be served
             | in the order they arrived, since that's obviously the
             | intention of flat unprioritized queues. You can certainly
             | make arguments that FIFO _isn't_ the best or right way to
             | process a grocery store checkout queue, but for now I'd
             | rather it be implemented well rather than poorly.
        
             | McBeige wrote:
             | Wouldn't it average out over time anyway? I.e. sometimes
             | you're unlucky and have to wait twice as long as if you'd
             | arrived to the queue a bit later, sometimes you're lucky
             | and have your wait time cut in half. Over many store trips
             | it's halfway between the one-queue and two-queue processing
             | time.
        
             | stockboss wrote:
             | maybe it's more of a fairness issue. in theory, the proper
             | way should be to have a single line that funnels to any
             | available lane, so any newcomer would still have to join
             | the same line and not get any advantage over someone who
             | has been waiting.
        
           | synecdoche wrote:
           | This was tried in a number of stores in Sweden. It lasted a
           | couple of months after which they reverted to one queue per
           | cashier. Turns out it wasn't popular, either with the vendor,
           | the customers, or both.
           | 
           | On a personal note I found the practice irritating for not
           | really clear reasons. One might be that it's a chore to
           | traverse the whole queue cordoning when it happens to be
           | empty. In any case, over time being the one skipping the line
           | when a new register opens averages out. Also, there's the
           | lucky draw feeling when you get to skip that otherwise gets
           | lost.
        
             | mikepurvis wrote:
             | A number of stores here in Kitchener (Canada) use the
             | single queue approach, particularly to feed a bank of self
             | checkout stations. But I've also seen it at Old Navy
             | (clothing), Winners (discount clothing), Indigo
             | (bookstore), and others.
             | 
             | I think the main thing that's maybe a bit annoying is just
             | that it's easy for the single line to stall if the people
             | at the front of it aren't paying attention or don't know
             | what to look for. So the store often ends up having to have
             | an extra attendant who just stands there and pokes people
             | for when a till comes available.
        
         | tomcam wrote:
         | Your generosity gave you the best possible outcome in this
         | deal. Impressive.
        
         | japhyr wrote:
         | I appreciate you bringing this up, because I think this plays
         | out all the time. I live in a small isolated town, and there
         | wasn't a lot of turnover in houses even before the pandemic. I
         | wrote a short script that scrapes all the listings, and alerts
         | me to any new local listing. It was a fun little project to
         | learn about generating text messages, and to see how effective
         | a cron job on a sleeping MacBook can be. We ended up getting a
         | house through a friend who sold their home without listing it,
         | but those alerts were really helpful, and almost got us one
         | house a little earlier.
         | 
         | The bigger story here is what this means for the divide between
         | tech-literate people and the rest of the population. I don't
         | think the parent commenter was wrong to write their script, and
         | I don't think I was wrong to write mine, and if you wrote
         | something similar I think it was a reasonable move as well. But
         | we have to recognize the advantage this gives us, as people who
         | are able to spot these opportunities and act on them.
         | 
         | I don't have any answers, but I think this story brings up a
         | good discussion. I'm curious to hear other people's thoughts on
         | this.
        
           | davnn wrote:
           | > The bigger story here is what this means for the divide
           | between tech-literate people and the rest of the population.
           | 
           | Where I live the good deals from private sellers (mostly
           | older people) pretty much never get posted online, thus you
           | would have to socially integrate somehow offline in the
           | region you would like to buy a house :). It looks like I
           | still have to wait for some cultural development to benefit
           | from your proposed divide.
        
           | bschwindHN wrote:
           | I think the answer here is to have a system that can't be
           | "gamed" by more tech-literate people. Have a time period
           | where people can throw in their names for consideration, and
           | a randomly-ordered list is generated. You go down the list
           | until you reach a person who can put down the deposit. A
           | lottery, essentially.
           | 
           | You could probably poke holes in that system I just
           | described, but it seems more fair than one that is prone to
           | someone writing up a script to scoop it up. I don't want to
           | live in a world of script wars where every desirable entity
           | is quickly snatched by one of several competing computer
           | programs.
        
             | yojo wrote:
             | I'm hard pressed to think of any first-come, first-served
             | system for allocating scarce goods that wouldn't be better
             | run as a lottery.
             | 
             | The problem is that typically the person selling the item
             | doesn't care who gets it, so there's literally zero
             | incentive to spend any effort making a fairer distribution
             | system.
        
               | fellerts wrote:
               | What about an auction? That's how the housing market
               | works in e.g. Norway.
        
               | yojo wrote:
               | I didn't mean to imply that lottery was the best system
               | in all cases, just that it's pretty much always better
               | than first one wins. Though thinking about it more a
               | lottery probably results in more total entries, and you
               | might end up giving the thing to someone who is closer to
               | ambivalent than the folks willing to stand in line at
               | 5AM.
               | 
               | Auctions are a great way to see that the item ends up in
               | the hands of the person who "values" it most, where value
               | is measured in currency. It does have the problem that in
               | a system of high inequality the people at the bottom have
               | essentially zero chance of winning.
        
               | tellarin wrote:
               | That's definitely not fair either, as it
               | disproportionally benefits those with more funds. Which
               | only leads to wider inequality.
        
             | BeFlatXIII wrote:
             | > Have a time period where people can throw in their names
             | for consideration, and a randomly-ordered list is
             | generated. You go down the list until you reach a person
             | who can put down the deposit. A lottery, essentially.
             | 
             | Stocks should be traded this way, too. Having an arms race
             | for fiber latency makes a mockery of the idea that they are
             | for efficient allocation of capital. Queue up all the
             | trades requested in each second/minute, then execute them
             | in random order.
        
           | asdff wrote:
           | What are you using to scrape listing data? afaik mls doesn't
           | expose an api.
        
           | philsnow wrote:
           | Especially in smaller markets, there aren't very many agents.
           | You can get a lot out of inviting realtors to coffee from
           | time to time. When somebody is thinking about selling, they
           | often talk to realtors early on, so you can learn about them
           | before they hit the MLS.
        
           | heavyset_go wrote:
           | Regarding tech literacy, I participated in a project in early
           | 2021 for this reason.
           | 
           | COVID vaccination slots were put online and would disappear
           | the second they went up. Vulnerable people, like the elderly,
           | had trouble booking the appointments they needed.
           | 
           | What ended up happening is a few developers got together and
           | put together an alert system that scraped for appointment
           | slots and automated alerts about when they were available
           | publicly on social media. Quite a few people were able to get
           | slots they wouldn't have got by just manually trying to get a
           | slot.
        
             | basisword wrote:
             | >> Quite a few people were able to get slots they wouldn't
             | have got by just manually trying to get a slot.
             | 
             | And the people who played fair didn't get those slots.
             | Obviously there's nothing illegal about this (or the
             | articles similar solution) but it rubs me the wrong way
             | morally. Similar to people getting appointments because
             | they knew someone working in a vaccine centre. If there is
             | a clear order and booking system (e.g. oldest + most
             | vulnerable to youngest/national booking system) and you
             | skip the line or 'hack' the system to give yourself a
             | better chance at getting a slot I'd find it hard not to
             | think you're a dick. NB: this depends a lot on how things
             | work in your specific country so I'm not judging your
             | specific situation but just generally, 'hacking' systems to
             | give yourself an unfair chance at getting something in high
             | demand feels wrong to me.
        
         | adhesive_wombat wrote:
         | I did basically exactly this but for reserving a spot at the
         | visa centre for a residence permit appointment.
         | 
         | Subverting a small aspect of the Hostile Environment[1] took a
         | little bit of the edge of the general bastardry of the whole
         | process. Still a bloody expensive and emotionally draining
         | experience though: if it has to be done again, I won't be
         | putting a loved one though that again and we'll both be
         | leaving.
         | 
         | [1]
         | https://en.wikipedia.org/wiki/Home_Office_hostile_environmen...
        
         | zachwill wrote:
         | Very cool! Great story.
        
       | NaturalPhallacy wrote:
       | I wrote a small program to manage my contracting time after it
       | being gently suggested that I stick to 40 hours and that overtime
       | wasn't needed of me (calculate hours per day and when to leave
       | Friday to hit 40.0). I wrote it so that usage was absolutely as
       | lazy as possible. So typical use cases look like this:
       | 
       | >$ tm 8:30-12:30 12:40-
       | 
       | Time to leave: 16:40
       | 
       | so as to hit 8.0 hours for the day.
       | 
       | and
       | 
       | >$ tm 8.5 9.27 8.83 8.87 9:45-1:23 1:33-
       | 
       | 14:11
       | 
       | 54 minutes
       | 
       | is an example of when to leave (early!) on Friday to hit 40.0
       | 
       | Note how you don't have to tell it AM/PM or use 24 hour time. Nor
       | give it any special flags to tell it which calculation to run.
       | And it just handles the rollover at noon for you.
       | 
       | source: https://github.com/cynoclast/time (Java, because that's
       | what I used at the time)
        
       | diatone wrote:
       | In case anyone's interested in the math to get the dice answer,
       | it's (1 + 2 + ... + 6) * 2500 / 6 = 8750. At least, I think it is
        
       | gjs278 wrote:
       | I wrote a scraper that looked through substitute teacher jobs for
       | a friend. she subbed 30 days in a row and got a full time job due
       | to it.
        
       | Semiapies wrote:
       | Some years back at work, I actually hit the size limits of email
       | rules in Outlook, just for filing emails into folders for my
       | clients. So, I wrote the first of a few iterations of an email-
       | filtering script in Python, connecting into the office's Exchange
       | server in different ways as we upgraded.
       | 
       | The current version wraps exchangelib and, besides just running
       | the straightforward Python code rules, checks whether the email
       | is in a thread and files it away in the folder with the previous
       | emails. (This is the _slow_ part over the web API, with walking
       | folders to find the location of any particular thread the first
       | time it 's encountered adding a few seconds to the run. If I find
       | myself caring about the few extra seconds, I'll try one of a few
       | ways it's occurred to me to speed it up.)
       | 
       | While at first I slightly minded having to run the script instead
       | of Outlook silently tucking them away, I found I liked the chance
       | to see what was in my inbox first.
        
       | vermarish wrote:
       | My friend invited me out to karaoke, but most of the songs I know
       | aren't popular enough to be in karaoke systems. It turns out that
       | the local karaoke place has a song database that serves queries
       | formatted as a URL parameter, so I wrote a script to query it for
       | every artist I've listened to on Last.FM. I found out that Black
       | Sabbath and Iron Maiden are surprisingly good picks for karaoke!
       | There were also a few singles I didn't expect from Children of
       | Bodom and Arch Enemy. https://github.com/vermarish/karaoke-sign-
       | in
        
         | barbs wrote:
         | Nice one! Although when I started reading your comment I was
         | sort-of hoping you found a way to hack it and put your own
         | songs in!
        
         | pianoraptor wrote:
         | Very cool. As a fan of metal with "extreme" vocals, I was blown
         | away one night at a karaoke place when a guy went up and
         | screamed the vocals to an Arch Enemy song!
         | 
         | At the time, I was thinking "Only in Portland..."
        
         | freeplay wrote:
         | Cool project. Created a PR with some performance improvements
         | if you're interested.
        
           | vermarish wrote:
           | Oh, wow! This is extremely cool, thank you for that. I've
           | responded to your PR message.
        
       | somdax wrote:
       | I wrote a tiny program to help me buy a puppy :)
       | 
       | The place I wanted to get a puppy from said that they didn't take
       | reservations for the upcoming puppies until they were born. The
       | only way to know when they were born was to check their website
       | and then give them a call.
       | 
       | So the tiny program I wrote kept checking a webpage and whenever
       | it changed content, it would sende a text message "PUPPY ALERT!".
       | 
       | A few hours after I deployed the program, I got message so I
       | thought it had a bug, but no, the puppies had just been born <3
        
         | hereforphone wrote:
         | To those thinking about getting a dog: please consider a
         | shelter first.
        
           | frockington1 wrote:
           | I was ineligible to adopt a Daschund from a shelter because
           | my property doesn't have 1 acre of fenced in yard. Other
           | places required 2 veterinarian references (we had 1 reference
           | due to owning a cat). It can be a lot harder than people
           | think to adopt a dog from a shelter
        
             | iamricks wrote:
             | To adopt my cat during covid i had to do a Facetime
             | interview with the shelter and show them around my place.
             | 
             | It felt like i was applying for a job.
        
             | henryfjordan wrote:
             | This really varies. I got this kind of treatment from a
             | group of ladies fostering Shi Tzus. I think they really
             | just wanted an excuse to keep those dogs or give them to
             | new potential old-lady friends.
             | 
             | At the next place I tried they basically threw the dog at
             | me.
        
             | tshaddox wrote:
             | I was recently having a conversation with a married couple
             | I had just met through a mutual friend. They were detailing
             | their recent difficulties trying to get a dog. They were
             | looking at both shelters and breeders, and both had their
             | own difficulties, costs, red tape, waiting periods, etc.
             | The woman was also pregnant with their first child. I
             | asked, and the irony was not lost on them.
        
             | anthomtb wrote:
             | One acre of fenced yard for a dachshund? I've seen onerous
             | dog ownership requirements before but never that much land
             | for that small of a canine.
        
           | gcheong wrote:
           | If you're set on a particular breed also consider a rescue
           | that specializes in that breed if there is one.
        
           | froddd wrote:
           | This is most excellent advice, and certainly did not state
           | "you should not get a puppy from a reputable breeder", which
           | seems to be what a lot of the replies to it assume it said.
        
           | munificent wrote:
           | This is very good advice, but I wish it wasn't presented
           | without qualifiers. There are good reasons to get a shelter
           | dog:
           | 
           | - You are potentially saving a dog's life that would
           | otherwise be put down.
           | 
           | - They are often initially cheaper than buying a dog from a
           | breeder.
           | 
           | People rightly focus on the strong moral argument of the
           | first point and they even emphasize the second to imply that
           | it's a good self-interested choice too. But they advocate so
           | strongly that they often omit the real downsides:
           | 
           | - The long-term cost may be higher. There are breeds that are
           | known for significant health problems, but many breeds don't
           | have them and if you buy a puppy of those breeds, their
           | health is closer to being a known quantity. With a shelter
           | dog, you are rolling the dice. There is maybe an argument
           | that hybrid vigor makes shelter mutts statistically more
           | healthy, but that has to be balanced against the facts that
           | (1) the dog may have ended up in the shelter _because_ of
           | health problems or (2) the dog 's life pre-shelter may have
           | _caused_ health problems.
           | 
           | - There may be long-term behavioral problems. Dogs in
           | shelters may have been feral, living on the streets, abused,
           | or relinquished because of behavioral problems. If they were
           | feral and weren't potty trained well as a puppy, you may
           | never train them out of marking. Even if the dog was homed,
           | the kind of people who don't spay and neuter their animals
           | (thus leading to puppies that end up in the shelter) are
           | often the kind of people who don't train them well either.
           | There also seems to be a correlation with shelter dogs coming
           | from dog fighting communities. You see a ton of pitbulls,
           | which are wonderful sweethearts when raised right but are not
           | when they aren't. Even non-pit breeds may have been abused as
           | bait dogs.
           | 
           | I love the dog I got from a breeder, and I love my shelter
           | dog (who is snoring next to me as I write this), but the
           | latter was _not_ the pure win that shelter advocates often
           | make it out to be.
           | 
           | The right way to think of it is sort of like getting a used
           | car: it _can_ save you money and be a morally good choice (in
           | the case of a car, less waste and better for the
           | environment), but it 's also an unknown quantity where you
           | need to do more due diligence to know what you're getting
           | into, or accept that you are taking a risk with higher
           | variance.
           | 
           | But, unlike with a car, you're signing up for the dog for
           | life.
           | 
           | So, yes, please consider a shelter first. Any future dogs I
           | get will likely be shelter dogs. But consider it _cautiously_
           | and take your time finding the dog that is right for you.
        
             | hereforphone wrote:
             | Wall of text on point. I got a shelter dog 5~ years ago and
             | it is a relatively difficult breed. I knew nothing about
             | dogs. But I love it and take care of it (because I take
             | ownership of my decisions, particularly where they involve
             | the life of another creature), and it's gotten better over
             | time. I also exercise caution where necessary.
             | 
             | If I had to do it again, I'd get an easier breed.
        
             | cgriswald wrote:
             | Anyone getting a shelter dog should pay for a dog
             | behaviorist to either help them select a dog or evaluate
             | the dog they have selected. They should also have a trainer
             | lined up to help them teach the dog how to live with them.
             | This goes 20x for first time dog owners.
        
             | Ntrails wrote:
             | > There may be long-term behavioral problems..
             | 
             | I know this is right - but I feel obliged to point out that
             | _this is true with a new puppy too_.
             | 
             | Training dogs properly is work, and inconsistent or
             | incomplete training only gets harder and harder to fix.
             | Plenty of dogs in shelters are there because owners could
             | not rectify their own mistakes. Not from malice, or lack of
             | caring. Simple unknowing incompetence.
             | 
             | Don't be too quick to judge those who give dogs up
        
               | hbn wrote:
               | Right, but when you don't know the dog's breed (i.e. it's
               | 17 types of cross-breeds) nor its history (if it's gonna
               | have PTSD from being abused or fighting for its life in
               | the streets), it's a much safer bet to get a purebred or
               | simple/common cross of 2 breeds where you can Google the
               | general behaviours of those types of dogs, and you know
               | its entire history of life up to that point: being born,
               | then laying around with its siblings and mom
        
               | cgriswald wrote:
               | You really want a common cross that has been breed from
               | that same cross for generations. Otherwise what you get
               | is an unpredictable grab bag of behaviors from the
               | original breeds.
        
               | munificent wrote:
               | I'm not saying this to judge the dogs' original owners.
               | In many cases, the dog was feral and there _is_ no
               | original owner.
               | 
               | The important point is that dogs go through developmental
               | milestones just like people and when you get a dog that
               | has already finished its puppyhood, you have lost the
               | opportunity to be present during those milestones and
               | train the dog. Dogs _can_ learn as adults, of course, but
               | correcting bad behaviors is a _lot_ harder. When you get
               | a younger dog (shelter or not), they are more plastic and
               | easier to train.
               | 
               | Yes, of course, it's on you to actually do that training
               | well, but at least you have the _chance_. When you buy an
               | adult dog, which is what most shelter dogs are, you 're
               | kind of stuck with what you get.
        
               | raffraffraff wrote:
               | I've rescued several greyhounds from the racing industry.
               | One time, after our old greyhound "Pasha" died, we
               | decided to take on a challenge: a greyhound who was
               | rehomed several times, and even abandoned by a shelter
               | (run by a bleeding heart who had no idea how to handle
               | dogs). Lily was a crazy black greyhound who hated all
               | dogs and was afraid of most people. Her name wasn't Lily
               | - she was 6 years old and didn't have a name that she
               | responded to. For the next 2 months we basically had
               | these rules:
               | 
               | * Always have treats in your pocket
               | 
               | * Avoid triggers (dogs) but whenever Lily sees one at a
               | distance, give her a treat
               | 
               | * If she acts aggressively, don't yank the leash or
               | shout, put a treat at her nose and call her name
               | 
               | That's it, in a nutshell. It works for basically any
               | behavioural problem in any dog. (Of course, the breed
               | will have its own personality type - they all do). 6
               | months later Lily would go nose-to-nose with a rabid
               | chihuahua and remain calm. She was one of the best dogs
               | I've ever had. Still miss the old thing.
               | 
               | She died last year, and we rescued 2 greyhounds
               | (brother/sister). Dorrie is fine but Merlin was, for
               | reasons unknown, afraid of certain types of street light.
               | Which is a massive pain in the ass of you live in a city.
               | We followed the exact same rules, and within a few weeks
               | he was ignoring them. (Still gets spooked at random
               | stuff, like the moon, or light reflected from a kitchen
               | knife onto the ceiling)
        
               | dgb23 wrote:
               | We have a new dog since a month (podenco mix) that had
               | about 5 previous owners and is 4-5 years old. Lovely but
               | very rough edges. Even a few scars on his nose and head
               | so our guess is that he was at least in one tough fight.
               | 
               | Similarly he has problems with other dogs (not with our
               | other podenco, who he loves). He is insecure, stares,
               | starts to go full aggro if they stare back etc. We try to
               | be as careful and consequent as we can. The good thing is
               | he is a very fast learner, not as stubborn.
               | 
               | We give him praise and treats typically _after_ he did
               | well on an encounter (which we keep at fair distance as
               | well). It wouldn 't occur to me to give it to him
               | beforehand.
               | 
               | Your method seems simple and I get why it would work, but
               | it's counterintuitive. Can you elaborate? It is something
               | that worked specifically for her for some reason? Or do
               | you think the simple conditioning thing just works. My
               | intuition would be that he has to show the desired
               | behavior and then gets praise/treats. What do you think?
        
               | raffraffraff wrote:
               | With Lily we didn't take the risk of bad behaviour during
               | an encounter. We would just ply her with treats and tell
               | her she was a good girl as we walked by a small yappy
               | dog. I think she started associating those encounters
               | with positive emotions.
        
               | munificent wrote:
               | I think you're approaching it from an operant
               | conditioning model where the treat must come after as a
               | consequence of good behavior. But what they describe
               | sounds like reciprocal inhibition:
               | 
               | https://en.wikipedia.org/wiki/Desensitization_(psychology
               | )#R...
               | 
               | The idea is that you can't feel opposing emotions
               | simultaneously. So if you can make the dog feel relaxed
               | (by giving a treat _beforehand_ ), it interferes with
               | their ability to feel anxiety.
               | 
               | They aren't _earning_ the treat for _choosing_ not the be
               | anxious. The positive emotional feeling from the treat
               | _prevents_ the anxiety from occurring.
        
               | raffraffraff wrote:
               | This is also an excellent explanation
        
               | bo1024 wrote:
               | Not the person you asked but I'd guess it has to do with
               | managing the emotions or anxiety that lead to the bad
               | behavior. The way I think of it is I don't want to teach
               | the dog to overcome negative emotions, I want to help
               | them not have negative emotions in the first place. If
               | possible.
        
               | raffraffraff wrote:
               | This, exactly. I think that the idea is to teach to dog
               | how to interrupt the negative emotion with something
               | positive. It gets to the point where they interrupt it
               | themselves without your intervention. With Lily, it got
               | to the point where she'd see a small dog or a cat, and
               | she'd look straight up at me (good girl!)
               | 
               | To begin with, practice randomly when there is no
               | trigger. Have a sneaky treat ready and say the dog's
               | name. If it's difficult to begin with (because they don't
               | know their name), try putting the treats into a small
               | plastic container and shaking it, or taking the plastic
               | packaging of their treats. They learn to respond to that
               | noise very quickly. Words are more complex, but if you
               | say their name when you make the noise they'll start
               | responding to that too. Always carry accessible treats.
               | 
               | 5 months since we adopted untrained (pretty wild)
               | greyhounds, I can get either of them to sprint to me by
               | calling their name, sit, high-five, lie down... no matter
               | what's going on around them. That response makes it
               | easier to discourage cat-chasing and to reduce their prey
               | drive.
        
         | livinglist wrote:
         | I did something similar not long ago.. lol
        
         | uxcolumbo wrote:
         | For anybody considering getting a dog - please consider
         | adopting rather than buying.
         | 
         | * You're Saving A Life
         | 
         | Adopting a dog from a shelter not only means that you're giving
         | him a happy life, but you also free up a spot at the rescue or
         | shelter to save another dog's life.
         | 
         | * Helps Fight Puppy Mills
         | 
         | Approximately 90% of puppies you can buy in pet stores or
         | online are from puppy mills. Adopting a dog from a shelter
         | takes business away from mills. The more people who adopt, the
         | more puppy mills have a hard time staying in business.
         | 
         | More reasons: https://www.caninejournal.com/adopt-dont-shop/
        
           | [deleted]
        
           | vgel wrote:
           | Except every dog adoption place around here has requirements
           | like "Must be an experienced dog owner, have a 5 acre yard,
           | own your home, and be able to do 50 push-ups without getting
           | out of breath. Expert sword-swallowers preferred."
        
             | zanellato19 wrote:
             | I got my current dog from simply showing and saying "I want
             | that one" and then signing a paper saying I won't abuse
             | him.
        
             | chockchocschoir wrote:
             | Ok, so the above recommendation doesn't work for you, just
             | ignore it then.
             | 
             | What you are saying doesn't apply everywhere, and I doubt
             | it applies in most places around the world, since shelters
             | usually have way too many dogs and would love to be able to
             | find anyone to care for them before they have to
             | effectively execute them.
        
           | epolanski wrote:
        
             | cgriswald wrote:
             | > The idea that we grow food to feed cattle or fish to feed
             | pets is among the biggest environmental stupidity I can
             | think of.
             | 
             | The meats that dogs and cats eat are essentially the waste
             | products from meat production aimed at human consumption.
             | You can certainly find some exceptions (especially on
             | Instragram), but the vast, vast majority of people, even
             | those feeding raw diets to their pets, use either meat not
             | meant for human consumption or offal that most Americans
             | don't consume.
        
             | munificent wrote:
             | Also, if you care about the environment, don't have
             | children. And, really, best to off yourself as well. Might
             | want to take down a few less enlightened folks with you
             | when you go.
        
               | arbitrary_name wrote:
               | What an odd response. Did the prior post upset you in
               | some way? Not having dogs and children are both
               | reasonable and moral responses to the climate crisis.
               | Suicide and murder are not.
        
               | munificent wrote:
               | _> Did the prior post upset you in some way?_
               | 
               | There is a perspective I see sometimes where some people
               | have elevated environmentalism so high in their value
               | system relative to all else that they end up in a moral
               | position where consuming any resources at all _which all
               | living things do_ is somehow morally unconscionable.
               | 
               | My comment sounds like a joke, but it's not far off: http
               | s://en.wikipedia.org/wiki/Voluntary_Human_Extinction_Mov.
               | ..
               | 
               | Reasonable environmentalists think humans have as much
               | right to exist and seek joy as any other living being as
               | long as it's done in a sustainable way. We just want
               | people to, you know, maybe walk to work instead of
               | driving sometimes. Don't litter. Push your government to
               | pass laws against pollution.
               | 
               | There are lobbyists and well-funded organizations pushing
               | against any progress on the environment and the existence
               | of extreme views like "you're a horrible person if you --
               | _checks notes_ --have a fucking _dog_ " makes it too easy
               | for those groups to paint all environmentalists as out of
               | touch kooks. That's the last thing we need.
               | 
               | The parent comment described _pet ownership_ as  "is
               | among the biggest environmental stupidity I can think
               | of". Call me crazy, but a couple of meaty snacks for Fido
               | is pretty far down the list after, I don't know, carbon
               | emissions, greenhouse gases, coral bleaching, acid rain,
               | deforestation, fuel oil, fracking, chemical dumping,
               | nuclear weapons, water table draining, etc.
        
               | slightwinder wrote:
               | > Reasonable environmentalists think humans have as much
               | right to exist
               | 
               | There is a right to exist, but not a right to be created.
               | Saying someone should kill themselves and kill some other
               | along the way, is just not acceptable in a normal
               | discussion.
               | 
               | > Call me crazy, but a couple of meaty snacks for Fido is
               | pretty far down the list after
               | 
               | Those meaty snacks make 20% of worldwide meat-
               | consumption. As a country, pets would be the 60th biggest
               | CO2-emitter in the world. Just because there are bigger
               | culprits, doesn't mean that the smaller ones are excused.
               | Moving pets to more friendly foods would have a huge
               | impact on the world.
        
               | munificent wrote:
               | _> There is a right to exist, but not a right to be
               | created._
               | 
               | But the top-level post is advocating adopting shelter
               | animals and the reply was that keeping pets is bad for
               | the environment. Those shelter animals _already exist_
               | and if they aren 't adopted, they will likely be killed.
               | It's the same thing modulo different species.
        
               | trevcanhuman wrote:
               | Why are they not ? This is more of an ethical dilemma. I
               | agree with @ munificient. I could probably list a lot of
               | things that do a lot of bad for the environment.
               | 
               | But making everything hyper-efficient and reducing on
               | EVERYTHING we almost possibly do just takes away our
               | basic freedoms. I'm not saying you're wrong about not
               | having dogs. I have one myself but yeah, you're right.
               | It's like having a child. But I like being able to choose
               | having it or not.
        
             | jim-jim-jim wrote:
        
               | raffraffraff wrote:
               | As I've said elsewhere, I do not drive, fly, eat meat or
               | have kids. My laptop is a 8 years, my phone is a
               | repairable FP3 which has had several parts replaced over
               | the last 3 years. And yes, I rescued two greyhounds from
               | a cruel fate, and I feed them _kibble_ (reconstituted  /
               | recovered meat). I have zero problem with the latter, and
               | still call myself am environmentalist.
        
               | epolanski wrote:
               | I have long ago learned that most care about environment
               | as long as it doesn't impact their life and what they
               | like.
               | 
               | Makes people feel uneasy.
        
               | munificent wrote:
               | I mean... should people not be able to like things?
        
               | jiscariot wrote:
               | Spend 50k on a Tesla and you get to enhance you
               | lifestyle, signal your eco-solidarity and to some extent,
               | affluence. Bang for buck, if you really care about the
               | environment, don't have children. There is nothing that
               | comes close to impact.
        
               | lghh wrote:
               | Have you considered the environmental impact of using
               | this site? It's certainly not free.
        
               | stjohnswarts wrote:
               | that's what I'm thinking if you want to suck all the joy
               | out of life just move to the woods and live off the land,
               | have the least environment impact possible
        
             | schwartzworld wrote:
             | If you're adopting a rescue animal, there is no
             | environmental argument. My dog was bred for racing, a cruel
             | and violent industry that throws the dogs away like garbage
             | when they are no longer used. I don't think there's any
             | ethical argument to be made against adopting a dog like
             | that.
             | 
             | If people giving their cats cat food is enough to make you
             | question your commitment to vegetarianism, maybe you're not
             | really that committed? You should do things for yourself,
             | and base their value on the decisions of others
        
             | froddd wrote:
             | > The idea that we grow food to feed cattle or fish to feed
             | pets is among the biggest environmental stupidity I can
             | think of.
             | 
             | That is the wildest exaggeration I can think of.
             | 
             | I'm also vegetarian, though I am because I'd rather not
             | kill things when I don't need to. The environmental benefit
             | is an appreciable side effect, and confirms to me I've made
             | the right choice for myself. I like to try to share my
             | views with as many people as I can, but I think expecting
             | everyone to 'just get it' is setting yourself up for
             | failure, and ultimately unhelpful in the long run.
        
             | raffraffraff wrote:
             | The choice is: "Not rescuing a dog from the pound" vs what?
             | ..."leaving them there to wait a few more weeks/months in a
             | cage before being put to sleep"?
             | 
             | Nah. Have you ever bonded with a dog? Nah. I'll take dogs
             | over people any day.
             | 
             | I'm all for closing puppy mills/farms, neutering etc but I
             | draw the line at "don't rescue a dog that already exists"
             | 
             | Even premium dog kibble is made out of the lowest quality
             | junk meat left over from what _people_ eat. I too am a
             | vegetarian (and I don 't have kids, and have never owned a
             | car and gave up flying years ago). But I do not begrudge my
             | two hounds their bag of kibble. I'm fact I'd be willing to
             | bet that my household CO2 footprint is lower than yours,
             | even with my two greyhounds.
        
         | lgvld wrote:
         | Such a cute story :)
        
       | merely-unlikely wrote:
       | I wrote a script to email me the top 10 Hacker News articles at
       | lunchtime. And now I'm here :)
        
       | XCSme wrote:
       | One of the most used "tiny program" I wrote [0] is a weird one to
       | explain to non-technical people: a scoreboard UI to display the
       | current score of your match on a stream when playing Eleven Table
       | Tennis in VR. I see it being used quite frequently in Twitch
       | streams.
       | 
       | It polls an API every 3 seconds, parses the match data and
       | displays the score in HTML/CSS. The tricky part was finding a way
       | to make it easy to add to OBS without a server, luckily OBS has a
       | "browser source" so you can add any HTML page/URL, so the
       | variables needed to select the match/player and are
       | customizations are stored in the URL.
       | 
       | [0]: https://github.com/Cristy94/eleven-vr-scoreboard
        
       | jbmny wrote:
       | > one of my favourite things is to use secret undocumented APIs
       | where you need to copy your cookies out of the browser to get
       | access to them
       | 
       | I love this too. It's always a nice surprise when you realize you
       | won't be needing to write xpath/pyquery/et al. after all... It's
       | like the scraping has already been done for you!
        
       | kinduff wrote:
       | What a nice read. Motivates me to make a list of these small apps
       | I have all over the place; Raspberry Pis, DO servers, Netlify,
       | etc.
       | 
       | It also reminds me about that usenet story where in a company
       | their lead developer left, and they discovered some fun scripts
       | to automate excuses for his wife, or turning on the coffee
       | machine through telnet. Can't remember the name.
        
         | nso95 wrote:
         | https://github.com/narkoz/hacker-scripts
        
         | _carbyau_ wrote:
         | A friend wrote a script for his phone so that when he got to
         | work (GPS location) it messaged his partner a "sweet nothing"
         | text.
         | 
         | Partner was happy with the thoughtfulness. Until it was found
         | out there was no thoughtfulness...
        
       | johnklos wrote:
       | Tiny projects like these are fun and rewarding. I just wish I
       | were as good as Julia at keeping track of them. After reading
       | this, I think I'll start keeping track of them in one place :)
        
       | lukewrites wrote:
       | I wrote a web scraper to determine how local Nissan dealerships
       | changed prices on CPO Leafs over time. The script hit the Nissan
       | CPO page, grabbed all the VINs, then updated the price & date if
       | there had been a change.
       | 
       | I collected data for a while, then decided I wanted a different
       | car. Still had fun writing that script though.
        
       | 333c wrote:
       | I also wrote a script to get a vaccine appointment! I wonder how
       | many other people did that.
        
       | alexpovel wrote:
       | A couple years ago, I switched from German QWERTZ to a UK QWERTY
       | keyboard (wouldn't have minded US QWERTY but the differently
       | shaped return key seemed too foreign). I am not looking back: for
       | programming but also general tasks, having keys like
       | ` [ ] \ / { }
       | 
       | very easily available is a blessing. The German QWERTZ keyboard
       | has _triple_ occupation on some keys, which is not ergonomic and
       | harder to type fast with.
       | 
       | Anyway, both Linux and Windows offer fast switching between
       | installed keyboard layouts/languages using SUPER+SPACE. This is
       | needed in e.g. emails, where I still need Umlauts. It's just much
       | easier to read that way. However, switching back and forth
       | constantly is completely overwhelming and not viable. However, in
       | German, there are perfectly and officially (?) acceptable
       | alternative spellings for our special "Unicode"-characters. They
       | can be typed using plain ASCII, aka a QWERTY keyboard.
       | 
       | So, I wrote a script to read in any text, combined it with
       | AutoHotkey on Windows and now have a tool that, at the touch of a
       | button, replaces selected text using alternative spellings
       | (gruen, Duebel, Faehre) with their correct versions (grun, Dubel,
       | Fahre). The tool could be extended for other languages rather
       | easily. I've been using it for over a year now and recently got
       | to release it properly on the cheese shop:                   pip
       | install betterletter
       | 
       | (https://pypi.org/project/betterletter/)
       | 
       | Before putting this together, I had looked around for an existing
       | tool. To my surprise (there's always something!), I found
       | nothing. I guess this scratches a too specific itch: using QWERTY
       | but wanting proper spelling quickly, while remaining on QWERTY as
       | to not have a mental breakdown and stay at full typing speed.
       | 
       | After writing, select everything (CTRL+SHIFT+HOME works well),
       | hit shortcut, text will be replaced. This takes about 2 seconds,
       | much faster than switching keyboard layouts back and forth. If
       | this ran as a daemon with the dictionary loaded into RAM already,
       | the script could run almost instantaneously (most of the 2
       | seconds is IO, reading from disk), in linear time according to
       | the text input size.
        
         | w-m wrote:
         | Neat! I'm using QWERTY International layouts myself, where you
         | can type umlauts and ss with special keys for modifiers (e.g.
         | alt+u on Mac for "), but I still think this is a cool tool.
         | 
         | Looking through the repo I wondered why you would commit the
         | complete German dictionary weighing in at over 30 MB, whereas
         | you only need a small fraction, the words containing the
         | umlauts (or their false matches). Surely this would be a huge
         | performance boost?
         | 
         | Turns out: a whopping 30% of that dictionary are words
         | containing "ae|oe|ue|ss|a|o|u|ss". Crazy. I would not have
         | guessed that, at all.
        
           | alexpovel wrote:
           | > Neat! I'm using QWERTY International layouts myself, where
           | you can type umlauts and ss with special keys for modifiers
           | (e.g. alt+u on Mac for "), but I still think this is a cool
           | tool.
           | 
           | Yeah, I had looked into these but for some reason that didn't
           | work. Don't remember why.
           | 
           | > Looking through the repo I wondered why you would commit
           | the complete German dictionary weighing in at over 30 MB,
           | whereas you only need a small fraction, the words containing
           | the umlauts (or their false matches). Surely this would be a
           | huge performance boost?
           | 
           | Yes! It would be performance boost. In fact, I had a
           | "caching" sort of functionality in the tool before. The whole
           | dictionary is shipped (because that makes it much easier and
           | there's almost no risk of wrong-doing just copy-pasting a
           | word list, plus it compresses well enough), but then a list
           | containing only special characters will be generated on first
           | use if it doesn't exist yet.
           | 
           | As you noted, a lot of words do contain special letters, so
           | the "complexity" wasn't worth it to me and I removed that.
           | Could be brought back anytime, but it's fine for now.
        
         | tedunangst wrote:
         | Just fyi, Windows will let you set a keyboard layout per
         | window. If you like writing programs, you can write one to
         | switch the linux keyboard layout based on active window.
        
         | scns wrote:
         | Check out Neo [0]. It has important signs under your strong
         | fingers. Every time i am forced to use QWERTX i get reminded
         | how bad it is to type on.
         | 
         | [0] https://neo-layout.org
        
       | bArray wrote:
       | > When the second COVID vaccine doses opened up, all of the slots
       | were full. It turned out that the website's backend had an API,
       | so I wrote a script to poll the API every 60 seconds or so and
       | watch for cancellations and notify me so that I could get an
       | earlier appointment.
       | 
       | I imagine the hacked together COVID vaccination websites were
       | already under quite a high load. If it's anything like
       | unoptimized WordPress websites it's doing a database query each
       | time and I really hope the API wasn't being shared by healthcare
       | providers. The saving grace appears to be that the script isn't
       | shared.
       | 
       | I guess this is a reminder to be careful when sharing scripts
       | that rely on other's services (especially important services).
       | Cache when possible, poll minimally, etc. Recently I found out
       | that Ubuntu doesn't cache DNS queries by default, which I
       | discovered when I got temporarily blocked from a DNS server. Good
       | job I didn't share that script!
        
       | eindiran wrote:
       | My recent favorite small program I wrote:
       | 
       | Was watching a movie with a group of friends which someone had
       | ... acquired from the internet, but it didn't have any subtitles.
       | Someone found an SRT file, but the subtitles were offset by quite
       | a bit - enough that you would be seeing dialogue in the subtitles
       | for what had been onscreen 10+ seconds ago, which kind of
       | defeated the point of getting the subtitles. So I wrote a program
       | in a few minutes to specify an offset and rewrite all of the
       | timestamps in the file. We timed the offset, ran the script and
       | got to watch the movie with working subtitles less than 20
       | minutes later.
        
         | Dyac wrote:
         | VLC allows you to specify a subtitle offset, fyi.
        
         | yesenadam wrote:
         | I've used Subshifter website occasionally for years to do that.
         | There are others I guess. Subshifter can do constant difference
         | as well as stretching, where the subtitles are at the wrong
         | frame rate. You find and enter in the times where subs should
         | be, at one spot near the beginning and one near the end. It
         | does its job well.
         | 
         | It's nice when people share their cool tools free online like
         | this. :-)
         | 
         | https://subshifter.bitsnbites.eu/
        
         | adhesive_wombat wrote:
         | FYI, Aegisub can do that.
         | 
         | It used to be a regular thing for me since I already have
         | subtitles on (ESL spouse). The worst is when you have a time
         | shift _and_ a different frame rate, as it 'll slowly get worse
         | over time, but seem ok for the first few minutes.
         | 
         | Recently, Plex's "agents" seem to be good enough at figuring it
         | out and auto-downloading subtitles that it's not often a
         | problem.
        
           | midasz wrote:
           | Otherwise you've got Bazarr which fits into the whole *arr
           | stack
        
       | sideproject wrote:
       | I frequent ProductHunt to see what new products are launched. I
       | usually click on every link. That takes time and hurts my fingers
       | clicking. So I automated it and created an app called Rockmelon.
       | 
       | https://www.rockmelon.app
       | 
       | It became a tool that opens multiple links all at once. Once I
       | had the basic foundation, I created a daily ProductHunt link,
       | which opens all the links at once. You can subscribe to daily
       | product hunt links here.
       | 
       | https://www.rockmelon.app/rc/Cg08Y06Vu9#/
       | 
       | Now my fingers are happy. Hopefully yours too.
       | 
       | You can create your own mega link with API as well.
        
       | adriangrigore wrote:
       | Here's my list of tiny programs https://adi.onl/projects.html,
       | the log analyzers are soon the be updated. There's a set of plain
       | text linters in there, percent encoding on the CLI, TAP testing
       | for the CLI, a generic shell preprocessor, my static site
       | generator, Void Linux installation script and my dotfiles if that
       | counts. :P
        
       | fsniper wrote:
       | I have had many small scripts or software doing automation for
       | me. One of them is the one that found me a motorcycle. It was a
       | neat web console JavaScript code, which would go over the
       | listings and score them with a pretty basic algorithm. I scored a
       | good Cbr250 with that. In turn I dislocated my shoulder in the
       | upcoming days :) I rode the bike for a few years. It was also my
       | first and the last motorbike. Fun times.
        
       | ocdtrekkie wrote:
       | I run a badly written monolith (my home automation system), and
       | tend to make tiny personal programs some weird offshoot growth of
       | it.
       | 
       | There's upsides and downsides to this. I'm aware it's basically
       | guaranteed to be useless to anyone else because it's depending on
       | software I'd never encourage someone else to run, for instance,
       | and it locks me into certain coding choices.
       | 
       | However, I spend a lot less time doing boilerplate/framework
       | stuff, because I've already got the basics running for other
       | tasks: Stuff for logging, settings, data storage, and remote
       | control and monitoring is already a given.
        
       | [deleted]
        
       | twic wrote:
       | I wrote a little web app (Python and CGI) to organise a secret
       | santa ring. You put in a load of names with email addresses, then
       | it shuffles them, and sends an email to each person telling them
       | to buy a present for the next person on the list (wrapping
       | round). It meant a group of friends could do a secret santa
       | without one person having to know who was buying for who.
       | 
       | There's a way to put people in groups where they shouldn't buy
       | presents for each other, which is useful for couples of families,
       | where they will probably be buying presents for each other
       | anyway.
        
       | brink wrote:
       | Nice article! Here are a couple of my recent personal projects..
       | 
       | I couldn't find a command line media player that was simple
       | enough for my liking. So I wrote one for myself that uses
       | gstreamer as the back-end. https://github.com/codabrink/aquinas/
       | It's hasty code. I plan to improve it in the future by adding
       | features and switching the music library structure from an array
       | to an iterator when I find time.
       | 
       | I also needed a daemon that would watch a folder for new files
       | and upload them to Backblaze B2.
       | https://github.com/codabrink/backblaze-upload/ I use this with
       | Nginx on my vps to proxy requests to the bucket for nice looking
       | vanity urls. (http://i.kota.is/5ruvD.png) The code is really bad;
       | the focus was to build it in under 90 minutes or so, but the
       | important thing is it works, so therefore I'm not going to spend
       | anymore time on this one.
        
         | jchook wrote:
         | For a command like media player, did you try cmus?
        
           | brink wrote:
           | Yeah, I didn't like it. :)
        
       | jim_lawless wrote:
       | I wrote a command-line MP3 player in C for Windows. I just wanted
       | to play with the media manger API's, but I've ended up using this
       | to play MP3's in succession via a script.
       | 
       | https://github.com/jimlawless/cmdmp3
       | 
       | It doesn't work on all versions of Windows ... it depends on some
       | configuration elements. This has been used in another developer's
       | video game and I believe it's installed with an MP3 player
       | library in node.js ( if you're running node.js under Windows. )
       | It also plays WAV files on Windows 10 (possibly 11) if you pass
       | the name of a WAV file into the command-line.
       | 
       | I needed a command-line emailer that would send an email via
       | Gmail with a very simple one-line body for my Mac. I also wanted
       | to exercise Go's SMTP libraries while experimenting with trying
       | to build a minimal emailer application.
       | 
       | https://github.com/jimlawless/gsend
       | 
       | I use this regularly. I used to use it on MacOS, but I use it
       | more frequently on Windows.
        
       | submeta wrote:
       | I got an appointment at the registry office for my marriage
       | because of a script I wrote.
       | 
       | Years ago I desperately tried to get an appointment for a
       | marriage at my local registry office but as soon as their website
       | listet possible appointments they were gone. So I wrote a web
       | scraper that blocked an appointment as soon as it was offered,
       | and sent me an sms (via Twilio) notifying me. My script was so
       | eager that within an hour it blocked several appointments. I got
       | a call from that office wondering how often I wanted to get
       | married. So finally I got my appointment. Otherwise it was close
       | to impossible to manually book an appointment.
        
       | kevincox wrote:
       | One fun one is I was playing a game with friends and it felt
       | super random to me. So I wrote a simulator and some simple
       | strategies to see how effective these strategies were vs
       | randomness. If the game is mostly strategy you would expect to
       | see clear difference in all of the strategies. If the game is
       | mostly random the good strategies would have a hard time
       | differentiating them from each other consistently.
       | 
       | https://gitlab.com/kevincox/red7-sim
        
       | recentrecruit wrote:
       | Wrote a TI-83 program (TI Basic) for a geometry course in high
       | school. About a month prior to the feared final exam, I combed
       | through all of our coursework to catalogue all of the
       | calculations needed then wrote a program that would solve for any
       | query (length of side, angles, etc.) based on the shape and input
       | data.
       | 
       | I read the operators guide to the device cover-to-cover and found
       | a way to store the program such that the teacher's method of
       | "clearing" the device would not remove my program.
       | 
       | On the day of the test I realized I had accidentally taught
       | myself geometry, as I didn't need the calculator at all and could
       | do the calculations in my head. I did, however, use the TI-83 to
       | verify my answers before handing in the test. According to my
       | teacher I not only had a perfect score but did so in record time,
       | and suspiciously so did my two best friends.
       | 
       | Nothing ever came of it, but I enjoy the fact that I accidentally
       | learned a course to such proficiency by trying to cheat.
        
         | Sohcahtoa82 wrote:
         | While in my Algebra II class, we were studying polynomial
         | expansion, and I wrote a program on my TI-85 that would not
         | only expand things like (2x^2 + x + 3)^4, but it would _show
         | the work_. I literally just had to enter a couple values and
         | then verbatim copy what it spit out onto the paper.
         | 
         | I asked the teacher if I could use it on the test, and she was
         | like "If you can write a program that doesn't just solve it,
         | but shows the work, then obviously you know the material
         | incredibly well, so there's no need to make the test tedious.
         | Go for it, just don't share the program with any of your
         | friend."
         | 
         | The last bit was easy because I didn't have any friends. :-(
        
         | twodave wrote:
         | I actually got into programming on my graphing calculator in
         | high school in the early 2000s. Most of our tests from algebra
         | up thru calculus were simply "apply the correct formula to the
         | problem". I would simply program the calculator with the
         | formulas, use it to calculate the answers and then work
         | backwards to "show my work". I got 100% on every test for 4
         | years. I'm still not sure whether I feel guilty or not.
        
         | staindk wrote:
         | I think this is every teacher's goal with tests where you can
         | bring "one sheet of handwritten A4 paper" along as a cheat
         | sheet.
         | 
         | The smartass students who don't want to study find ways to cram
         | an incredible amount of information onto these sheets... and
         | through this they end up actually learning much more than if
         | the cheat sheet wasn't an option.
        
         | Semiapies wrote:
         | You might find it funny that a scaled-up version of this was
         | the plot of a 1958 children's book, _Danny Dunn and the
         | Homework Machine_. (Except the teacher figures it out and
         | starts assigning the kids using the computer more advanced work
         | that they have program the computer to perform.)
         | 
         | https://en.wikipedia.org/wiki/Danny_Dunn_and_the_Homework_Ma...
        
         | merlincorey wrote:
         | After years of similar work, mine culminated in a Link Cable
         | Chat Program that I wrote on two calculators at the start of a
         | big multi-hour test.
         | 
         | We didn't use it to cheat -- literally just to chat.
         | 
         | Similarly, we'd been writing programs to solve our problems all
         | year so we already knew all the formulas (because we'd been re-
         | entering the programs as needed on fresh calculators).
         | 
         | The teacher knew, which is why I think she allowed it.
        
       | lhuser123 wrote:
       | I write tiny programs with pyautogui to automate parts of my job.
       | It's like having an assistant.
        
       | wolfgang000 wrote:
       | I did something similar to the vaccine appointment bot but to get
       | my passport appointment, I'm Venezuelan, and let me tell you
       | getting a passport is almost impossible due to all the corruption
       | and mismanagement, so years ago the webpage to schedule the
       | passport appointment was down for 99.9% of the times, I am not
       | joking the page was only functional for a 10~15 minutes per week
       | at random intervals of the day, there were facebooks groups of
       | people doing watch reloading the page every few minutes ALL DAY
       | LONG to catch it when it was working and then inform the rest
       | when it was up, It was insane I decided to do a simple(not really
       | tho) bot that did the polling and fill my data to the form, I was
       | very happy to result and event more because I didn't have to
       | bribe anyone(This is the "normal" method to get the passport and
       | the sky is the limit of how much are they going to charge you)
       | 
       | here is the code if someone is curious about it
       | https://gitlab.com/wolfgang000/saime-bot/
        
       | conroydave wrote:
       | I'd like to add that OP has some incredible easy to understand
       | "zines" that help explain technical topics like http, dns,
       | containers etc.
        
       | hegzploit wrote:
       | These little quality of life scripts are life savers, I've made a
       | script which I'm really proud of and still use to this day, in my
       | university they usually release assignments every now and then
       | and I had to check each course's page manually for any new
       | deadline, so I made a python script that scraped the website and
       | would print any new assignments since the last run of the script.
       | I would later make a little telegram integration where new
       | assignments were sent on a group chat for my class mates to get
       | notified too and left the script running in crontab on some vps I
       | had around. https://github.com/hegzploit/lazy-chicken
        
       | robbomacrae wrote:
       | My wife was working a role that, as one of her more mundane jobs,
       | required grabbing image descriptions from ShutterStock for their
       | purchased images and replacing the filenames with them. It took
       | up several hours of her week and was incredibly boring work. I
       | wrote her a small script that she could simply drop it in the
       | folder where the images were and double click.
       | 
       | I always wondered how monetizable this sort of thing was. I've
       | debated building a marketplace for these things. Let me know if
       | you think this could work!
        
         | Nextgrid wrote:
         | The best monetisation for this would be to explicitly seek out
         | and take up these jobs then automate them away and enjoy the
         | free paychecks. With remote work you could get multiple jobs
         | concurrently even.
        
       | pseudosavant wrote:
       | I love to put simple web apps like this on Glitch.com.
       | 
       | Days Until - Create a URL to countdown to any date:
       | https://glitch.com/edit/#!/days-until
       | 
       | Flexible Fetcher - scrape/fetch contents of a page based on HTTP
       | query params: https://glitch.com/edit/#!/flexible-fetcher
       | 
       | Scrape HTML <table> return JSON: https://query-page-table-to-
       | json.glitch.me/?url=https%3A%2F%...
       | 
       | USPS Zipcode Lookup + offline JSON - easily add city,state
       | autocomplete from zipcode: https://glitch.com/edit/#!/usps-
       | zipcodes-demo
       | 
       | Create Data URIs - 100% client side:
       | https://glitch.com/edit/#!/data-uri-pwa
       | 
       | Frame Counter - great for testing latency across displays or
       | remote links (e.g. Parsec) using a camera:
       | https://glitch.com/edit/#!/frame-count
       | 
       | NBA Team Standings in JSON: https://glitch.com/edit/#!/nba-
       | standings
       | 
       | Read/render markdown files on your HTTP server:
       | https://glitch.com/edit/#!/markdown-html-remix
       | 
       | Create map links that open in Apple Maps on iOS and Google Maps
       | everywhere else: https://glitch.com/edit/#!/apple-maps-link
       | 
       | Clean your Amazon URLs: https://glitch.com/edit/#!/clean-amazon-
       | url
        
         | ciroduran wrote:
         | I love Glitch, I wrote a number of Twitter bots. But then they
         | changed some things in the free tier (understandably), so I
         | moved my bots to a local server that runs Docker, with each
         | container running a bot, and I'm really happy it's chugging
         | along.
        
           | pseudosavant wrote:
           | I'm dying for Glitch to get native Deno support.
        
           | stavros wrote:
           | My small script is a thing that will run all these small
           | Docker containers easily, it may be helpful to you. I love
           | it:
           | 
           | https://gitlab.com/stavros/harbormaster
        
       | belkarx wrote:
       | When I was first learning to code, I spent a few hours writing a
       | python script to get Advent of Code files and prompts, then open
       | them in an editor, and also eventually made a util to check the
       | answers. Fun times.
        
       | john-radio wrote:
       | > [the output](https://gist.github.com/jvns/e4a35ca2bad90c1a0fcaf
       | 578a803b45...
       | 
       | Missing close paren here btw
        
       | roughly wrote:
       | I write code for a living, and I'm in a sweet spot where I
       | actually do get to write things that make people's lives easier,
       | but it's still easy to forget just how much of a superpower being
       | able to write code is. I mean, the things we do, and the things
       | Julia writes about here - this is literally modern day wizardry.
       | We speak the right words to arcane and inscrutable systems and
       | change reality around us. I love that I get paid for this, but I
       | love it even more when I get to change something from "dauntingly
       | difficult" to "easy" just by thinking about it a bit and asking
       | correctly.
        
         | RangerScience wrote:
         | I describe programming as "describing ideas in enough detail
         | that they are now alive on their own".
         | 
         | (this gets more true when you pick up devops and have a
         | codebase that contains both, say, the server code and infra)
        
       | prometheus76 wrote:
       | I haven't turned it into a standalone program yet, but I wanted a
       | way to calculate praying the Orthodox Book of Hours according to
       | a sundial instead of a normal clock, and I used excel to do it.
       | 
       | I found the formula for determining sunrise and sunset using
       | latitude and longitude from NOAA's website. This allowed me to
       | generate a sunrise/sunset table for my location by day.
       | 
       | I use VBA to update a clock every 10 seconds (I didn't need it to
       | be more accurate than that) that feeds to a cell, and I use that
       | to know when it is time for First Hour (sunrise), Third Hour (9
       | am, or 25% of the day), Sixth Hour (50% of the day), and Ninth
       | Hour (75% of the day).
       | 
       | I have it all working and it runs in Excel on my work computer.
       | My goal is to translate the logic into an app on my phone so that
       | I can get notifications when it's time to pray. It's been a fun
       | project, which included a side project of making a 9-LED display
       | in Excel for the clock. I have a clock for normal world time, and
       | a clock for sundial time.
       | 
       | It's been a fun project!
        
         | rauhl wrote:
         | Heh, I did that with Emacs! It already has sunrise & sunset, so
         | the rest of the math was easy.
         | 
         | Excel & Emacs: two things starting with E which let anybody
         | program anything.
        
       | friggeri wrote:
       | These resonate a lot! Tiny projects are very rewarding, because
       | you get something that works pretty quickly, this works well with
       | my short attention span. Couple of ones I did in the last two
       | weeks:
       | 
       | - A little mac app that reads my calendar, grabs the next 2-4
       | events and sends them over to my Vestaboard.
       | 
       | - Setting up Cloudflare as a failover load balancer to reach my
       | home network (I have two ISPs for redundancy), this involved
       | writing a small script to get the WAN IPs out of my Omada router
       | and using that as a custom command in ddclient to update the DNS
       | entries for both uplinks.
        
       | jsdwarf wrote:
       | Created a python script that scrapes the holding lists for each
       | of my ETFs and outputs an aggregated list of all companies I am
       | invested in through the ETFs. Can also compute how similar two
       | ETFs are based on their holdings. Has saved me some order fees
       | because it drastically reduced the ETFs I am investing in.
        
       | LinasKo wrote:
       | A lot of the music I like is on YouTube, including many obscure
       | remixes and covers. Now, I'm not a fan of forgetting things and
       | YouTube can be pretty volatile, with videos getting removed.
       | 
       | Rather than downloading all the audio, I made a playlist scraper
       | for the names. Runs once a day on PythonAnywhwre, collects the
       | names into a database, helps me sleep at night.
        
         | hebron wrote:
         | I've build the same thing for the same reason! Except in Ruby
         | on Rails =)
         | 
         | It also tells me the history of how the playlist has changed
         | and posts to Slack whenever a song was added/removed from my
         | playlists!
        
       | ggerganov wrote:
       | I've always wondered what would be the chance to win the lottery
       | if I played consistently a certain set of numbers. Every day, no
       | excuses.
       | 
       | So I wrote a script to scrape the lottery site archive and check
       | retrospectively the success rate [0]. Well.. the result is what
       | you would have expected.
       | 
       | [0] https://ggerganov.github.io/lottery-check
       | 
       | Bonus - clicking the "Random" button helps you really understand
       | how futile playing the lottery actually is.
        
         | theshrike79 wrote:
         | Except for those few cases where the people planning the
         | lottery don't know math and buying all the combinations costs
         | less than the amount of the wins :)
         | 
         | A Romanian Economist did this in the 90's:
         | https://thehustle.co/the-man-who-won-the-lottery-14-times/
        
         | Ratalala wrote:
         | That would be 49!/(43!6!) = 13983816 combinations. So, on
         | average, you need to play 13983816 times before your first win
         | (geometric distribution). At one game a day, that's nearly
         | 40000 years.
        
       | sparks1970 wrote:
       | In the UK the government runs the booking of driving tests from a
       | central online system. Because of Covid, and because the test has
       | a 50% pass rate at best, there is now a lot of pressure on this
       | system. People wanting a test are getting test dates 6 months
       | out.
       | 
       | A whole industry has grown up around scraping the website so that
       | kids now are forced to pay sniping companies PS20 a time to grab
       | cancellations as they appear on the system if they want an
       | earlier test date.
       | 
       | In my view private companies are camping on a government-run
       | system and extracting their own tax on new drivers.
       | 
       | This is the dark side of clever sniping systems, it starts out as
       | a way for an individual to get ahead but quickly gets
       | industrialized so that those who can't afford to pay for the
       | service are left out in the cold.
        
       | 75central wrote:
       | When I briefly returned to the Windows world, I wrote a quick-
       | and-dirty application that would clean the shortcut links that
       | installs would clutter my desktop with.
       | https://github.com/MattGHarvey/ShortcutCleaner
        
       | eddieroger wrote:
       | The stories on this page, as well as the other comments here,
       | make me really happy because they're all examples of computers
       | making life better, as opposed to being passive consumption
       | devices. Pretty often, I think back to putting together a
       | database to track invites to my bar mitzvah on a 386 running a
       | program called MyDataBase - it created print jobs for envelopes,
       | let me mark back RSVPs, track gifts and thank you notes,
       | everything. We carry such powerful computers in our pockets these
       | days, but there are so few apps that I know of that actually use
       | the device to make our lives easier. I wish more people knew how
       | to use these tools the way the audience here does, or that I knew
       | enough to make something that others could then use to do the
       | same.
        
         | nunez wrote:
         | So many people think that the most recent generations are more
         | computer-savvy because they use computers and smartphones all
         | of the time. Quite the opposite; many are app-savvy, not
         | computer-savvy. While I've gotta hand it to the amazing PMs, UX
         | researchers, designers, and SWEs that have contributed to this
         | phenomenon, it's a shame that computer literacy in general is
         | so poor on average.
        
         | mooreds wrote:
         | > The stories on this page, as well as the other comments here,
         | make me really happy because they're all examples of computers
         | making life better,
         | 
         | Hear hear! I love stories where computers help relieve human
         | misery.
         | 
         | I got into programming because my parents had a business that
         | required them to mail their clients a legally required notice
         | every year. They originally were copying the letter, changing
         | the address and a few other pieces of data, and then printing
         | it out and mailing it.
         | 
         | While I couldn't help with the latter, the former seemed like a
         | great job for a database and mail merge. I set up WordPerfect
         | to mail merge, and got started entering data (one month's
         | clients at a time). Whenever the day to send out the mail came,
         | it was a simple matter to merge in the data, generate a long
         | WordPerfect doc, and print it out. Once the first year went by,
         | it got even quicker. I ended up porting the dataset a couple of
         | times to more advanced databases (eventually PostgreSQL).
         | 
         | The first time they saw how easy it was going to make this
         | onerous task, they were pretty happy.
         | 
         | And I was hooked on software as a way to lessen such tedium.
         | 
         | Edit: Of course now, I'd use a tool like lob to actually send
         | the mail too.
        
       | reacharavindh wrote:
       | One of the best tiny programs I wrote in half hour was to help my
       | office mate automate his manual copy & paste of sample IDs to
       | generate barcodes, aggregate them in 10 nos boxes and send them
       | out. He had allocated the entire day to do this manual labour for
       | 3800 samples. I showed up, asked if I could help, and wrote a
       | simple python script that would read the excel doc with all
       | sample IDs and prepare printable PDFs with 10 barcodes each that
       | he can simply stick on the box.
       | 
       | The whole thing was over in 45 mins, and his mind was blown. He
       | had been doing this manually about once a month for decades ;-)
       | 
       | I have moved on from that job, but have given him an executable
       | on his laptop that will read an excel file of a specific name and
       | print out the PDF the same way. It is his treasure now :-)
        
       | throwthere wrote:
       | That Covid vaccine project gives me chills. That's not saying
       | it's wrong to use an advantage like coding skill or anything else
       | to increase your odds of surviving a pandemic-- but it's a new
       | world we live in for sure.
       | 
       | Edit: I guess I need to clarify I'm not asserting anything was
       | right or wrong.
        
         | kinduff wrote:
         | Have done the same but using a scrapper, not for COVID, but for
         | an impossible to schedule appointment I had to do in a
         | government website.
         | 
         | I still think it could be monetized but I don't feel like doing
         | it. I heard a friend that there is a lot of people doing this
         | manually and they charge you a considerable rate.
        
         | mr_mitm wrote:
         | This was done with a lot of collaborative effort in Germany:
         | 
         | https://github.com/iamnotturner/vaccipy
        
         | Macuyiko wrote:
         | We had a similar governmentally organized system in our country
         | during the first vaccination round where people could book an
         | appointment. The website fell over and the devs introduced a
         | queuing system and had you waiting in line. Except that it was
         | badly implemented and only enforced client-side (through
         | JavaScript) and hence very easy to circumpass. It also had a
         | similar API which could be polled to see when a slot freed up.
         | 
         | This actually happens quite often. As another example, there is
         | a particular country visa centre which requires you to make an
         | appointment and is typically fully booked for weeks on end. The
         | calendar info is loaded in through an API call and the selected
         | date then form POSTed with a hidden field's value set to an
         | identifier representing the date and time. Not in plaintext,
         | but easy enough so that it can be guessed. Once you spoof the
         | value, no further server-side validation happens and no one at
         | the centre will check it.
         | 
         | I wanted to book a restaurant a couple of weeks ago. As I was
         | discussing options with a friend, the booking provider already
         | forced a refresh and our desired time slot was gone. Again,
         | taking a look in the Network tab of the browser and spoofing a
         | value led to a confirmation at the desired time. I expected a
         | call saying that they were overbooked, though strangely enough
         | the place was not packed (I guess they kept some tables open
         | for social distancing / walk-ins / phone reservations).
         | 
         | This is really security 101 on the same level as SQL injection.
         | Strange how every dev seems to know how to hook up something to
         | an API but still makes the same mistakes.
        
         | bhaak wrote:
         | It's always been this way.
         | 
         | But advantages aren't always that obvious. In my case, it was
         | just "don't reload the page while waiting for the server to
         | respond" as the servers were DDOSed on the first day they
         | opened the appointments. Obvious to many programmers, not so
         | obvious to the general public that you might lose your position
         | in the queue if you reload the page and not wait for a proper
         | error page before reloading.
         | 
         | Another advantage was getting my PS5. I wrote a simple web
         | scraper that just looked if the shops had any PS5 in stock and
         | wrote that into a static RSS I uploaded to my webserver and
         | stuck this into my regular RSS reader.
         | 
         | Over the last year, this way I could provide myself and 3
         | friends/acquaintances the opportunity to get a PS5.
         | 
         | Other people can build tables and shelves. I'm a programmer.
        
         | GOATS- wrote:
         | I did the same as well.
         | 
         | https://github.com/GOATS2K/nhs-vaccination-checker
        
         | sergiomattei wrote:
         | I did the same.
         | 
         | When vaccinations opened up for the elderly, I wrote a script
         | to check open slots and get my grandparents a vaccine
         | appointment.
         | 
         | They patched it up, but similar to the author, I managed to get
         | them one soon after through their website. I'm wondering if
         | we're even talking about the same website.
         | 
         | Wild days.
        
         | melling wrote:
         | "This didn't turn out to be necessary (more appointments opened
         | up pretty soon anyway), but it was fun."
        
       | TrapLord_Rhodo wrote:
       | I used to play a game called runescape and there was this client
       | called OS Buddy that had data dump of all 'buy' and 'sell' orders
       | in the grand exchange.
       | 
       | put the data in python and I calculated the "flip" ratio, average
       | and liquidity of the items.
       | 
       | Now that was all profitable, but around this time there was a
       | phase where everyone discovered that you could do pump and dumps
       | and make obscene profits. They worked exactly how normal pump and
       | dumps work, a select few insiders buy a bunch of the random item
       | and then after a few days they annouce it to the clan and start
       | selling their item. I could see a surge in abnormal buys for
       | items with low liqidity and effectively have a birds eye view of
       | all the pump and dumps before they aree 'Public".
       | 
       | I never had to have a job through high school as i could sell the
       | GP and make around $50-60 a day!
        
         | vorvac wrote:
         | Back when you could create accounts with usernames instead of
         | emails, I wrote a c# program that would generate a random
         | user/password/DOB, go through the three web forms, and create
         | an account. I integrated this with TOR so that on every third
         | account, I'd switch IPs to prevent throttling. I'd let the
         | thing run almost constantly and ended up with thousands of
         | accounts.
         | 
         | I sold these account lists to botters who would then go on to
         | to their thing. Made a decent amount of money from this too!
        
           | TrapLord_Rhodo wrote:
           | it'd be interesting to make a mmorpg game that was entirely
           | based on building bots. an MMORPG Programming idle.
        
             | thequux wrote:
             | Have you seen screeps? (https://screeps.com/)
        
               | TrapLord_Rhodo wrote:
               | this is exactly what i was looking for.
               | 
               | Plus i can use any web assembly language? My dreams of a
               | rustacean based empire are about to be realized. Bye Bye
               | productive work for the day.
        
       | beamatronic wrote:
       | >> secret undocumented APIs
       | 
       | There's precedent in the US for going to jail for doing this
        
         | CyberDildonics wrote:
         | What person went to jail? What is their name and what jail did
         | they go to?
        
       | anthomtb wrote:
       | My SO is not always reliable when it comes to handling home
       | duties while I'm away for work. So I setup a little Python script
       | to send a text message with a TODO list every day. Twilio handles
       | SMS, reminders are store in sqlite3, and cron runs the script
       | once a day. It lives on a DreamCompute instance so (hopefully) no
       | worries of a local power outage eliminating crucial (ok, not
       | really that crucial) reminders.
       | 
       | Are there better ways to do this? Undoubtedly. But I sure had a
       | good time making it work.
        
       | svilen_dobrev wrote:
       | if anyone finds any of these useful...
       | 
       | https://github.com/svilendobrev/svd_bin (terminal + sh setup ,
       | version-control, lots of commands for this or that)
       | 
       | https://github.com/svilendobrev/svd_util (python stuff)
        
       | creeble wrote:
       | If anyone is interested in a little script that grabs an image
       | from a webcam pointed at a 7-segment LED display and returns the
       | numbers it finds, let me know.
       | 
       | It uses the ironically-named "Let's Go Digital" training set for
       | the Tesseract OCR program. It works somewhat poorly, but good
       | enough to read my hydronic-heat boiler's display to let me know
       | that it didn't fire up in the middle of the night, so that I can
       | get up and clean the flame probe.
        
         | jIyajbe wrote:
         | I would love to get this script! I am doing photon counting
         | with an LED readout; this would help me enormously.
        
       | froddd wrote:
       | I have a script running on the raspberry pi that scrapes the
       | Council website and emails me with what bins need to be out on
       | Monday. Runs every Friday. I still await the email with
       | anticipation every week.
        
       | Zhyl wrote:
       | I feel like 'tiny personal programs' is one of the bigger reasons
       | to teach 'everyone' to code.
       | 
       | Everyone has something in their life that is very specific to
       | them that they would be much happier if it were 'just so'.
       | Writing tiny scripts or being able to dive into the
       | config/settings of something is a good way to get rid of some
       | pain points.
        
         | DrBoring wrote:
         | > teach 'everyone' to code.
         | 
         | I wonder if coding classes will be the new "shop class" .
         | https://www.lexico.com/en/definition/shop_class
         | 
         | In 8th grade, I took a compulsory wood working class. I guess
         | it was a skill that adults thought children should learn.
         | 
         | By that point, I had already been coding for 6 years. My school
         | had a computer lab, but no coding was taught .... just typing.
         | Also we played networked Oregon Trail Deluxe once or twice.
        
           | prometheus76 wrote:
           | I wish more of the engineers I work with had taken a wood
           | shop class, so that they would learn about things like kerf,
           | working with things that are out of square, tolerances, and
           | how certain milling or lathing operations are impossible.
           | Most of the young engineers I work with only know about
           | drawing things and running simulations on them, rather than
           | how things are actually built.
        
             | lasfter wrote:
             | I took a wood shop class in high school and did not learn
             | any of those things, I learned how to make spoons, boxes,
             | and cabinets.
        
               | prometheus76 wrote:
               | Fair point. But even learning how to measure things, mark
               | them, cut them out, and how to assemble things would help
               | my young engineer coworkers.
        
         | iak8god wrote:
         | For this reason, I often recommend 'Automate the Boring Stuff
         | with Python' (https://automatetheboringstuff.com/) to
         | beginners. It hits the basics and then moves pretty quickly to
         | address: OK, what can _I_ actually use this for?
        
           | v0x wrote:
           | I am not a programmer, but it has been fun learning little
           | bits of Python and making scripts to automate tasks.
           | 
           | We have folders for clients at work and everything older than
           | a couple of years should be archived, aside from certain
           | legal documents. Building a script to check if any file is
           | older than a certain date and checking that it does not
           | contain certain words in the filename, was really easy, and
           | useful, and gave me a good feeling of satisfaction seeing it
           | actually work.
        
           | spikej wrote:
           | For me it really hit home starting with autoit on windows
           | years and years ago. I still have scripts I wrote that work
           | almost 20 years later!
        
         | tonyedgecombe wrote:
         | My plumber runs his business off Excel and a ton of VBA code.
         | He is convinced it gives him an advantage over his competitors.
        
         | syshum wrote:
         | I think we need to teach people the basics of computer
         | operations before learnToCode...
         | 
         | Computer Illiteracy is still very high, even today lots of
         | people can not tell the difference between their computer
         | monitor, and their computer.
        
           | Minor49er wrote:
           | Apparently Gen Z has trouble even understanding filesystems
           | 
           | https://futurism.com/the-byte/gen-z-kids-file-systems
        
         | jxramos wrote:
         | This right here. So often general purpose software winds up
         | being some feature anemic app that focuses on some common
         | denominator functionality. Plugin and extension support has
         | been great to expand capabilities in general to make said
         | software less confining.
        
       | coreyp_1 wrote:
       | I wrote a program to distribute my lecture slides to my students
       | in real time.
       | 
       | When I was a University Professor, I taught Theory of Computing
       | (among other classes). I did not want to maintain two sets of
       | slides (fill-in-the-blank style), and I didn't want the students
       | to have to write non-stop during the lecture, so I wrote a couple
       | of programs to distribute the slides in real time during the
       | lecture.
       | 
       | Part 1: C++. A program ran on my computer. When I pressed a
       | button, it took a screen shot of my chosen monitor and sent it to
       | my server. Communication via websockets.
       | 
       | Part 2: Browser. Students connected to my server at the start of
       | class. As I lectured, the slides appeared in their browser
       | automatically. Of course, they could click through all previous
       | slides (for that day as well as previous lectures), but if they
       | were not actively browsing the slides, then the newest slide
       | presented itself to them automatically. (Technically, it was
       | always one slide behind, because I would not release a slide
       | until I was done talking about it.) Communication via websockets.
       | It worked in lectures attended by 100+ students.
       | 
       | Part 3: NodeJS. My server received screenshots from me (as well
       | as some metadata), kept a small database of all past
       | lectures/screenshots, and served a browsable interface to the
       | students. It routed all the websocket connections so that
       | everything "just worked"TM.
       | 
       | I thought it was cool. The students complained that the slides
       | were not searchable like a PDF. I directed them to the index of
       | the textbook.
        
         | gurchik wrote:
         | Sorry but I'm confused by
         | 
         | > I did not want to maintain two sets of slides
         | 
         | This confusion is causing another confusion as to why you
         | couldn't publish the PDF before the lecture.
        
           | cranium wrote:
           | Blanks in the slides are filled during the lecture with the
           | students. With this solution, students don't have to copy the
           | notes while trying to listen.
        
             | ggreg84 wrote:
             | You can save the annotated slides after the lecture, and
             | just share them?
        
               | ihateolives wrote:
               | It was Theory of Computing class, not Biology or Math, if
               | I'd been his student I would've been mightily impressed.
               | I mean every English teacher can fill out and email PDFs
               | but this was actually real time applied computing.
        
               | coreyp_1 wrote:
               | I used Google Slides, and didn't use annotations. The
               | reason that I didn't wait until after the lecture is
               | that, when covering technical- or notation-dense topics,
               | especially if the information is new, students often need
               | to look back during the lecture to remind themselves
               | "What does this mean again?", either that, or ask the
               | question out loud, which a lot of students are shy about.
               | 
               | In short, the students needed to be able to review the
               | slides during the lecture, so I couldn't wait until the
               | end. My only options were then to distribute slides ahead
               | of time, fill-in-the-blank style, or create a live
               | delivery system. Honestly, the live delivery system was
               | easier and cooler.
        
         | RangerScience wrote:
         | That's _really_ cool! Did you post the code up anywhere?
        
           | coreyp_1 wrote:
           | Maybe one day, when the code is cleaner!
        
       | derekp7 wrote:
       | One I did when I was much younger was after a trip to a Cracker
       | Barrel restaurant. They have these golf tee peg games (triangle
       | shaped board with holes and golf tees inserted). There are rules
       | for doing jumps and removing pegs, with the goal of getting down
       | to 1 peg remaining.
       | 
       | So I went home, fired up basica on my PCjr, and wrote a brute-
       | force solver for it. Turns out there something like tens of
       | thousands of possible solutions.
       | 
       | Then it became a challenge, to filter out duplicates (each
       | solution appears 3 times if you apply it to the board with each
       | 120 degree rotation, plus you have mirrors of these, etc). Was an
       | amazing feeling for a youngster getting into computers.
        
         | spc476 wrote:
         | I did the same thing (only under Linux, not MS-DOS). I also
         | found out that leaving 8 pegs is _way_ harder than just 1 peg
         | (2 ways, excluding reflections and rotations). And for 10 pegs,
         | only 1 way.
         | 
         | Edit: Update number of ways to leave 8 pegs, and added number
         | of ways to leave 10 pegs left.
        
         | CRConrad wrote:
         | Back in the days of Windows 3.0 / 3.1, a friend and I hung out
         | in the computer labs with faaar too much time on our hands...
         | We figured out how to beat all four levels of Windows "Reversi"
         | (Othello) 64-0.
         | 
         | Manually, no programming involved.
        
         | ectopod wrote:
         | https://en.wikipedia.org/wiki/Peg_solitaire
        
       | tomcam wrote:
       | Mad props. I never managed to finish a one night project in one
       | night.
        
       | jrockway wrote:
       | I thought about writing a program to get myself a vaccine
       | appointment, but ultimately decided that we probably didn't want
       | to vaccinate people in order of software engineering ability. I
       | don't have to physically go to work, and can afford to have
       | groceries dropped off in front of my apartment, so there was
       | really no reason I should get the vaccine before everyone else. I
       | can just self-quarantine with zero inconvenience or consequence,
       | so probably a better use of limited resources to give it to
       | someone else first.
       | 
       | But at the same time, I also feel like literally nobody is
       | looking out for you personally in the pandemic. I got the
       | impression that pharmacies flat out lied to the government about
       | vaccine availability (city websites would be like "oh yeah your
       | CVS has tons of extra capacity" but then they have no
       | appointments, and when you do get an appointment and show up,
       | they turn you away). In that case, you have no choice but to DoS
       | them to meet your basic medical needs. (Insert rant about how I
       | was first able to buy N95 masks and at-home COVID tests in
       | January 2022, 2 years after the first case. Now I have them for
       | next time, I guess.)
        
         | adrianmonk wrote:
         | > _thought about writing a program to get myself a vaccine
         | appointment, but ultimately decided that we probably didn 't
         | want to vaccinate people in order of software engineering
         | ability_
         | 
         | I wrote one to help me register for a college class that was
         | full. I faced the same ethical question, but I decided that it
         | was OK because it was a computer science class.
        
         | jrockway wrote:
         | Wanted to say one other thing; I'm not criticizing the author
         | of this blog post for writing such a script. Their risk
         | factors/assessment may be much different than my own, and
         | that's totally fine.
        
       | shimonabi wrote:
       | I had a relly nice free seaside summer vacation because of a
       | Python script.
       | 
       | In our country we got vouchers to take a holiday because of
       | Covid, but I couldn't use Booking.com because not all landlords
       | had the proper paperwork to be able to redeem the voucher.
       | 
       | I wrote a script to e-mail all the properly registered landlords
       | from a government list in a particular region with my
       | requirements and then manually selected the best offer. I had a
       | really good time.
        
       | guruparan18 wrote:
       | Interesting to read the "dice rolling" part.
       | 
       | > investigating dice rolling patterns A friend showed me a dice
       | rolling game where you roll a bunch of dice and add up the
       | values. I mentioned that if you roll enough dice and add up all
       | the values, at some point it gets a lot less "random".
       | 
       | And result turned out "true"? Rolled a die for 2500 times and the
       | sum is all around 8500! I wonder what would be the results for
       | 25/250 times? So, this is sum(expectations).. and for rolling a
       | die, it is 3.5 [(1+2+3+4+5+6)/6 => 21/6], so the answer was 3.5 x
       | 2500 = 8750. Should hold good for all numbers relatively large.
        
         | matja wrote:
         | https://en.wikipedia.org/wiki/Law_of_large_numbers
        
         | alskdjflaskjdhf wrote:
         | This is a classic illustration of the Central Limit Theorem--in
         | fact, the example is even on the Wikipedia page [0]. The
         | distribution tends towards a normal distribution as n increases
         | (though to actually take the limit you need to rescale).
         | 
         | [0]
         | https://en.wikipedia.org/wiki/Central_limit_theorem#Applicat...
        
       | amir wrote:
       | to disable retweets on Twitter you can add "RT @" to the list of
       | muted words
        
       | punnerud wrote:
       | Using print in Python to generate HTML and piping the output to a
       | file:
       | https://gist.github.com/jvns/a552895b6f9b523276e88d7e7506ee8...
       | 
       | Always used append to file, but this is easier to debug/iterate.
       | Thanks for the trick.
        
       | pkdpic wrote:
       | Yes! Tiny programs! And from one of my favorite zine makers and
       | big inspirations for switching careers / getting a programming
       | job. I need to make more of these at work. API team too busy to
       | build an endpoint my team needs literally every day? No shame in
       | making a mini webscraper and never wasting another minute asking
       | them :^)
        
       | unforswearing wrote:
       | I am self-taught and little scripts like these were my entry into
       | programming. Favorite programs of mine include a script to tell
       | me when a boutique guitar pedal would be available from the maker
       | to avoid paying +200% markup in the reseller market[0], and more
       | recently I created a "todo focused markup language"[1].
       | 
       | [0]:
       | https://gist.github.com/unforswearing/db73475f333809119ae3dd...
       | 
       | [1]: https://github.com/unforswearing/todo_markup.js
        
       | davchana wrote:
       | I made a html js + google apps script timesheet thing, its at
       | https://spa.bydav.in/tsDMV/
       | 
       | A simple html js collects my time and date, and come fields, and
       | ajax it to Apps Script running as web app.
       | 
       | Script logs it into a sheet, recent rows on top.
       | 
       | The html page has a link to get the timesheet. On click, it again
       | asks the apps script to send back this month's time sheet data as
       | json, shows it as a table.
       | 
       | Although no chance, but still all of these ajax expect a
       | password.
       | 
       | ====
       | 
       | Recently I got into telegram bot, a multi bot. It has a /help
       | command. Help describe the expected command keywords. Backend is
       | again Google apps script. A string split, an switch case.
        
       | hughrr wrote:
       | I had a 200 line python script running on a junker PC that pulled
       | a not insignificant amount of cash in. It was an arbitrage system
       | that looked for poorly listed items in a couple of eBay niches.
       | I'd literally buy the items it identified and then list them
       | properly and reship. Average margin was 60%. On one occasion I
       | managed to nab something for PS15 and resell for PS675 with a 4
       | day turnaround.
       | 
       | Alas I collapsed the whole niche in the end.
       | 
       | Edit: all it did was every 10 minutes scrape some carefully
       | crafted eBay searches with beautiful soup 4, do some custom
       | filtering, remove any duplicate items it had already seen (stored
       | in redis), then send me an email via SES with the links in it
       | where I would make a decision.
        
         | kzrdude wrote:
         | Can you tell what the niche was? Collectible items or not?
        
           | hughrr wrote:
           | Not collectible. Specialist portable industrial equipment is
           | all I'm saying :)
           | 
           | The script was almost irrelevant compared to the discovery of
           | the niche.
        
       | simlevesque wrote:
       | Thank you for the Fringe calendar !
        
       | sailorganymede wrote:
       | My parents work at a care home and every now and then, they will
       | have a funny issue that I'll try solve with code. Like, the staff
       | tried going paperless so important documents needed to be hosted
       | somewhere and a QR code was used to link them. It's little things
       | like this that honestly bring so much joy
        
       | frans wrote:
       | My tiny program regularly scans a dropbox folder. If it finds a
       | pdf, it prints it and moves it to an archive folder. That was
       | just to avoid every family member emailing me documents so it is
       | nicely printed by the time they get home to study.
        
         | Zircom wrote:
         | That's brilliant, my girlfriend and roommates refuse to install
         | the printer driver onto their computers and print things
         | themselves so it's an endless cycle of bugging me to print
         | things. Going to get this going when I get home today.
        
       | senko wrote:
       | Love these kinds of projects! To me they represent what's the
       | most fun in programming.
       | 
       | Here's a couple of mine:
       | 
       | * During COVID lockdowns, the local grocery chain delivery slots
       | were reserved a week or more in advance, but they were opening up
       | a few slots each day; I wrote a scraper that would detect a newly
       | opened slot and ping me on Slack, saving me a few days' wait on
       | each delivery.
       | 
       | * When I was buying a house, I wrote a scraper that would email
       | me daily with what was new on the market; didn't end up buying
       | through that, but I later repurposed it to check for used car
       | classifieds and snatched a pretty nice deal.
        
       | TrapLord_Rhodo wrote:
       | >("using the API of local services" seems to be an ongoing theme,
       | one of my favourite things is to use secret undocumented APIs
       | where you need to copy your cookies out of the browser to get
       | access to them)
       | 
       | Would love more information about this one
        
         | bloqs wrote:
         | This is something I could never grasp. How on earth do you
         | discover those things?
        
         | jrkatz wrote:
         | A basic step for securing a resource intensive API from DDOS
         | attacks and some user impersonation attacks is to rely on a
         | security token in a cookie set in the response to an earlier
         | request. For example, a user may land on a web page and receive
         | a unique, encrypted, short-lived security token cookie that is
         | marked http only (inaccessible to javascript), plus a copy of
         | the token in cleartext. When the user agent later polls an
         | expensive API, it must send the cleartext token as part of the
         | request. Server-side, that's compared to the encrypted copy
         | (received from the cookie) and the expensive call is terminated
         | early if they do not match.
         | 
         | A DDOS attack that relies on a malicious ad or web page
         | directing user agents to poll your expensive API in a loop will
         | no longer work as well, because those user agents will not have
         | the correct security token cookie value, and the attacker is
         | unable to figure out what the correct value is for any given
         | user agent running their malicious code. More
         | sophisticated/expensive attacks are still available, but
         | anything is an improvement.
         | 
         | There are a few ways to skin this cat, so don't refer to the
         | above as a how-to-guide - find a more authoritative voice on
         | best practices than me, please, if you try to implement
         | security like this.
         | 
         | Anyhow, if you want to use an API implementing security like
         | this, you copy the cookies out of your browser and feed them to
         | your program so it can add them to the calls.
        
       | prometheus76 wrote:
       | This is super basic, but I finally sat down and learned the
       | syntax for yt-dl and built a script for checking all of my
       | favorite channels on youtube for any new content and archiving
       | them locally. I was doing it manually before and that turned into
       | a huge pain as my list of channels I wanted to archive continued
       | to grow.
       | 
       | Now it runs every night and I get notifications if it runs into
       | errors.
        
         | swyx wrote:
         | i gotta ask, whats the deal with archiving them locally? is
         | bitrot on youtube that bad? i imagine its pretty low for
         | popular accounts
        
           | bo1024 wrote:
           | Another advantage is using your own viewer/interface, which
           | doesn't have manipulation like ads, recommendations, auto
           | play.
        
           | ayushnix wrote:
           | YouTube is one of the few websites which I wouldn't trust to
           | have a video that I watched today be available tomorrow. The
           | reason can be anything -- local geographic censorship,
           | copyright strike, uploader removing his own video, video
           | becoming private, lots of other things I can't recall right
           | now.
        
           | prometheus76 wrote:
           | There are several reasons I do this, and most of it comes
           | down to not trusting Youtube to keep content available
           | consistently for the various reasons others have listed.
           | 
           | There is an added benefit. I have one channel I follow that
           | does a LOT of q&a type videos from the audience. Because I
           | download the subtitles as well, I can throw those into a
           | database with the video titles and make a searchable database
           | if I want to see what the host has said about a particular
           | topic. I don't have to rely on my memory or go hunting. I can
           | just query my database and know exactly which video/timestamp
           | has the topic I'm looking for.
        
             | spikej wrote:
             | That's a fantastic idea!
        
         | DrBoring wrote:
         | This script would be good for my kids. Would you be willing to
         | share?
         | 
         | I want an easy way for them to watch their favorite channels,
         | without seeing the suggestions from youtube. It often suggests
         | similar content, but not child appropriate. Specifically,
         | Minecraft content.
         | 
         | I think a local cache of videos served to a HTPC client would
         | work well.
        
           | a99wang wrote:
           | An alternative is to just block YouTube recommendations on
           | the client. You can use the 'My Filters' feature of uBlock.
           | See https://github.com/gorhill/uBlock/wiki/Static-filter-
           | syntax for details. Personally, I get along just fine with
           | something like the following:
           | youtube.com##ytd-watch-next-secondary-results-renderer
           | youtube.com##ytd-comments         youtube.com##ytd-two-
           | column-browse-results-renderer
        
           | DrBoring wrote:
           | Thanks for the great tips everyone.
           | 
           | I like my idea for a local cache with HTPC client because
           | there are plenty of clients to choose from for Fire TV, and
           | my kids are more comfortable with a 10ft interface.
        
           | asdff wrote:
           | you can get an rss feed from youtube channels then just open
           | the links with mpv if you didn't want to bother caching
           | locally too
        
             | staindk wrote:
             | This is a good idea too. Pretty sure VLC can do the same.
        
           | prometheus76 wrote:
           | Some notes on the batch file below. This is saved as a .bat
           | file and runs in the middle of the night using task
           | scheduler. I didn't include the error checking portion
           | because it adds a bunch of complexity and dependencies. The
           | batch file below can be copied and pasted in the same batch
           | file for every channel you want to download. Just copy the
           | block below and paste it below and modify it for the next
           | channel. I also keep a copy of yt-dlp.exe in every folder I'm
           | downloading to, and in the batch file, it runs an update of
           | that file to make sure I always have the latest version
           | before downloading. I also download the subtitles in English
           | and I download the thumbnail for the video, so that it shows
           | up nicely in Plex. The first time it runs, it will download
           | all of the videos from the channel, and it will record the
           | urls into a text file for all of the videos. The next time it
           | runs, it will check the videos available from the channel
           | against the list it recorded and only download new content.
           | If you need help, consult the docs on yt-dlp github page. I
           | don't really have time to help with tech support. I should
           | also add that you'll need to replace the http string below
           | with the url of your favorite youtube channel.
           | ECHO Checking Your Favorite Channel...         cd
           | "\path\goes\between\the\quotes"         .\yt-dlp.exe -U
           | .\yt-dlp.exe --download-archive ./playlist.txt -iw -o
           | "%%(title)s-%%(release_date)s.%%(ext)s" -o
           | "thumbnail:%%(title)s\%%(title)s.%%(ext)s" -v
           | https://www.youtube.com/channel/UCpil30eNi37bPLwKp4g4kUA
           | cd \         ECHO Your Favorite Channel updated
        
             | spikej wrote:
             | I have this set up for specific playlists that download to
             | specific folders (tech,kids, etc) and when I or family
             | member come across videos we want to watch later we just
             | add to playlist and it's available for watching later on
             | the HTPC.
             | 
             | I use a script to clean out the playlists occasionally.
        
       | bonestamp2 wrote:
       | When my wife and I were looking at buying an investment property,
       | I built a little program to use Zillow's API to get tons of data
       | for a particular area, make some calculations, and then sort the
       | data in order of most potential profit as a rental (based on
       | their estimated rental rates, which are not always perfect of
       | course). Then I added some filters so I could find a property
       | that met our other criteria.
       | 
       | It worked really great, and we never ended up buying a property,
       | but I couldn't help thinking this is a premium feature that
       | Zillow could easily offer and charge for. If anybody at Zillow is
       | interested, feel free to reach out.
        
         | windthrown wrote:
         | That sounds interesting! Would you be willing to share it with
         | those of us that don't work at Zillow?
        
       | tempodox wrote:
       | I wrote a script to post a comment on HN about how I wrote a
       | script.
        
       | ayushnix wrote:
       | This may not be as impressive but I wrote a script to eliminate
       | one of the primary roadblocks I faced when I moved to Wayland on
       | my Linux desktop -- a script to copy and autotype password store
       | and gopass data, kinda like rofi-pass
       | 
       | https://github.com/ayushnix/tessen
        
       | prova_modena wrote:
       | I wrote a tiny program to help test the tire pressure sensors on
       | my car. You can receive signals from these sensors using a cheap
       | SDR dongle and a program called rtl_433. However, out of the box
       | the process is bit messy and requires tweaking and
       | interpretation. So I wrote a bash script that wraps rtl_433,
       | guides you through the process in an easy-to-understand way and
       | summarizes the results.
       | 
       | A program like this is not full automation, but it greatly
       | reduces the cognitive overhead of doing this task. Now when I
       | suspect a sensor is bad, I can just pull out the script without
       | having to get back up to speed on how to orchestrate the
       | component programs and interpret the results. It's like having a
       | well-designed jig for a woodworking task, hanging on the wall for
       | later use.
       | 
       | Writing tiny programs like this is really satisfying because the
       | scope is small enough that I can carefully consider all
       | decisions. I spent a lot of time reading through guides and code
       | samples, considering dependencies vs pure bash, understanding
       | shellcheck warnings, and making the code conform to a style
       | guide. All not strictly necessary to achieve the goal, but I
       | learned a lot and take satisfaction in a small, but refined
       | result.
        
         | el_benhameen wrote:
         | Do you have the code for this living anywhere? I think I have a
         | bad TPMS sensor in one of my tires and it sounds like your tool
         | would be immensely helpful in figuring out which one.
        
           | prova_modena wrote:
           | here's the code: https://github.com/rouyng/tpms-helper
           | 
           | so far I have only tested it with Toyota sensors, so YMMV
           | when used with other sensor types as I'm not sure if the
           | rtl_433 output will be the same.
           | 
           | I also wrote a blog post when I first figured out how to test
           | the sensors with rtl_433, before I wrote the script. probably
           | useful for background information:
           | https://www.r-c-y.net/posts/tpms/
        
             | el_benhameen wrote:
             | Incredibly helpful, thank you! I actually just found your
             | blog post on this. I happen to have a 2008 Corolla with the
             | same issue, so my guess is that the sensors are very
             | similar.
        
         | ajolly wrote:
         | Feed rtl_433 into home assistant, can easily create alerts
         | based on the output.
        
       | jessetemp wrote:
       | Can anyone elaborate on "secret undocumented APIs where you need
       | to copy your cookies out of the browser to get access to them"?
       | That sounds fascinating
        
         | mynameismon wrote:
         | So as a part of my daily activities, I have to use a portal
         | that has an absolutely terrible interface, with text reflowing
         | on every click, parsing and loading a 1 MB JSON file from an
         | internal API taking about 5 minutes (of course, its a janky SPA
         | with developers filling it with useless JS).
         | 
         | Irritated, one day, I fired up dev tools, opened the Networks
         | tab and copied the relevant API request that was being fired as
         | a bash command, converted it to Python [1]. After that, I
         | merely parsed the JSON, dumped it into a HTML file, and saved
         | it on my hard drive so I wouldn't need to login to the portal
         | again.
         | 
         | [1]: https://curlconverter.com/
        
         | gen220 wrote:
         | If you look at the `network` tab in developer tools, you'll see
         | every http request made by your browser, and the headers that
         | are sent along with the request.
         | 
         | e.g. when you hit the `reply` button in HN, it'll make some
         | HTTP request, with a cookie in the header that identifies your
         | user session.
         | 
         | You can right-click on the request and click "copy request as
         | curl", and then paste it into a terminal to duplicate the
         | request locally.
         | 
         | Fore example, Stripe has some API endpoints that are only
         | available to logged-in dashboard.stripe.com users. They are not
         | documented in the public API spec, and they have more powers
         | than the public API. If you do the actions in the dashboard and
         | record the requests, you can use those undocumented APIs: all
         | you need it a session token!
         | 
         | This leads down an unstable path, where you write a browser-
         | emulating script to login to $service, scrape the cookie, and
         | then use the cookie to make requests against the $service's
         | undocumented API. Not a good idea to build companies on this
         | logic, but it's fine and fun for personal projects.
        
       | ckp95 wrote:
       | May as well flog the little zsh thing I wrote:
       | 
       | https://github.com/ckp95/fwf/
       | 
       | fwf -- "Filter With Feedback". It lets you write sed/awk/jq/grep
       | etc things interactively. You type in a UNIX filter, and on every
       | keystroke it renders the result in a column on the right, which
       | you can compare to the original on the left (watch the video
       | demonstration on the link if that description is confusing). I
       | wrote it to make the feedback loop for text-processing as quick
       | as possible. I use it all the time now. It makes the "activation
       | energy" for writing shell pipelines a lot lower, if that makes
       | sense.
        
         | belkarx wrote:
         | Very cool, thanks.
        
       | AussieWog93 wrote:
       | I've built an entire business around some personal programs that
       | I've written (all Python scripts).
       | 
       | Currently working about 4 days a week with no commute and pulling
       | in 2-3x as much as I was back when I was an SWE. This is only
       | going up as things get more automated and optimised. I think a
       | lot of young people obsess with the high-status fields (AI,
       | Robotics etc.) but there are plenty of ways to make a good living
       | doing low-status work extremely efficiently (I'm in used video
       | games, for example).
        
         | ad404b8a372f2b9 wrote:
         | Can you provide examples? I've never managed to make money from
         | scripting and short of going into freelancing I don't see how I
         | would even start.
        
           | AussieWog93 wrote:
           | Specifically in our case, we sell used video games.
           | 
           | A lot of very labour-intensive work (pricing, writing
           | listings, getting images) is all done by machine now, and
           | I've recently made some semi-automated flows for shipping
           | (think stage 1 of Manna[1], where a script tells you the
           | optimal way to do a manual job). The next thing is to
           | automatically decay the prices with a cron job to get rid of
           | stale listings.
           | 
           | I think the important thing to point out is that we're not a
           | software business! We're a retail business that happens to
           | use software to increase productivity and competitiveness in
           | certain areas. The value doesn't come from the fact that the
           | software is particularly technically impressive, but that it
           | allows us to achieve in 50 man-hours per week what takes
           | others 200.
           | 
           | As a side note, I think the whole "I'm a software engineer,
           | therefore I should focus on making software" way of thinking
           | is an incredibly common trap that leads many people towards
           | creating worthless startups.
           | 
           | Ultimately, good software solves some kind of real-world
           | problem, and your understanding of the problem that you're
           | solving is in many cases more important than your programming
           | skill.
           | 
           | [1]https://marshallbrain.com/manna1
        
       | electromech wrote:
       | This made my day, especially the scripts that were _not_
       | ultimately useful, yet you are proud of them and glad you spent
       | the time to do them. I tend to beat myself up for not doing more
       | "productive" coding, and I need to appreciate the experience
       | itself more. Thank you so much for this.
        
       | trickjarrett wrote:
       | Most of mine are one-time use or limited use. I have a few
       | ongoing dev projects for personal use:
       | 
       | - My smaller blog is a (poorly) written CMS that makes a static
       | site. Almost zero reason other than I wanted the experience of
       | building my own CMS, could easily use another tool.
       | 
       | - I have a 'Pick'em' with friends for MLS soccer. It's a fully
       | coded website, definitely my biggest ongoing project.
       | 
       | - I have a tool which looks at upcoming soccer games around the
       | world and recommends the best ones to watch (looking at a number
       | of variables such as relative ranking in the league, historic
       | goals for and against, gambling odds, etc.)
       | 
       | - I have a weight and body fat tracker I use to enter my daily
       | weigh in and see graphs and charts of my progress.
        
       | abnry wrote:
       | I can control my smart devices by typing the command
       | 
       | 'turn [device-name] on'
       | 
       | in the terminal from my computer, and I feel like an super
       | awesome hacker every time. Works great when I am at my computer
       | but don't have my phone around to use the app. I had to use an
       | android emulator to get the local network keys to make tinytuya
       | work.
        
       | magamig wrote:
       | I did the same for the COVID vaccine
       | https://magamig.github.io/posts/scraping-for-a-covid-19-vacc...
        
       | nunez wrote:
       | Ages ago, I had a second job as a speed-dating host for a social
       | events company. I did it partly for the (beer) money, partly to
       | meet women at her other social events for free (she charged for
       | them), and partly to get her brash-but-actually-quite-useful
       | online dating advice (that helped me find my now-wife, now that I
       | think about it!).
       | 
       | The basic premise was simple: get 10-20 people into a hip
       | restaurant or bar, set up tables, have women pick the tables they
       | sit at, then have the men go from table to table having five-
       | minute conversations. After everything was said and done,
       | everyone would write the names of people they wanted to see again
       | on a form and hand them to me.
       | 
       | I would manually go through each form and send emails to matches
       | after the event was over. I also had a 24-hour soft SLO and a
       | hard 72-hour SLO. This usually took me a whole 2-3 hours to do
       | per event. I also mismatched people several times because humans
       | gonna human.
       | 
       | I was very fluent in PowerShell at the time, so upon realizing
       | that this can be automated with a matrix solver, I wrote a script
       | that took the names of everyone that submitted a form, then, name
       | by name, asked for everyone's matches, and sent everyone their
       | match emails from a template I wrote. It took me about six hours
       | to write and run through manual tests. (I know better now and use
       | TDD for everything!)
       | 
       | My 2-3 hour error prone process went down to five minutes, tops,
       | with no errors. It was beautiful. Towards the end of my stint
       | doing this job, I was able to run this script _as people gave me
       | back their forms_ and have emails queued up to send out once
       | everyone was gone. I spent the remaining 2.95 hours I got back
       | walking to my favorite izakaya and eating their amazing pork
       | belly rice bowl.
       | 
       | Thanks, Julia, for making me miss my twenties for the first time
       | in a while!
       | 
       | (I've written several small utility apps over the ages. It's a
       | shame when I hear people say that they actively don't program
       | outside of work; the ability to write code to bend the world to
       | your will is an amazing superpower!)
        
       | dbrgn wrote:
       | I can relate to the document scanning issue. In my case, I
       | digitize all documents I get on paper. For this, I've written
       | this wrapper around scanimage and ocrmypdf:
       | https://github.com/dbrgn/pydigitize
       | 
       | It does the following steps:
       | 
       | 1. Scan a document with any scanner that supports SANE (ADF
       | supported), 2. straightening and cleaning of scanned documents,
       | 3. run OCR on PDF so that it becomes searchable, 4. generate
       | PDF/A file for archival, 5. add keywords to the PDF file
       | 
       | I've probably saved many hours with this script, even when taking
       | into account the time it took me to write it.
       | 
       | Tiny projects don't always save time, but they sure are
       | gratifying when they work as intended!
        
         | BeetleB wrote:
         | I'll try your version out.
         | 
         | I went through this pain when I bought a document scanner some
         | years ago - there was no good solution on Linux that would let
         | me from the command line scan, clean, OCR, and output a PDF. I
         | found lots of scripts like yours, but none that was complete. I
         | finally took an existing Perl script and hacked it to my needs.
         | 
         | Features one should have:
         | 
         | 1. Output to PDF.
         | 
         | 2. Option to OCR (optional)
         | 
         | 3. Clean up (e.g. skip blank pages, straighten pages, etc)
         | 
         | 4. Allow one to specify quality/dpi
         | 
         | 5. Select grayscale vs color
         | 
         | 6. Duplex vs single page
         | 
         | 7. Dynamically recognize the size of the page.
         | 
         | The last one is the one I'm missing - if I scan something long,
         | it trims it to fit a Letter size page.
        
         | mindslight wrote:
         | I wrote a keypress-driven graphical utility that's basically a
         | wrapper around scanadf, that allows me to call scanadf
         | repeatedly, preview, delete pages, etc. For instance if a page
         | misfeeds, I pull the remaining stack out, delete the bad scan,
         | and restart from where it went wrong. When finished, the
         | graphical window disappears, and it writes all the current
         | pages out as an archive - the masters are checksummed,
         | compressed with FLIF, converted to some low quality JPGs, and
         | the whole thing is stuck in a ZIP archive with extension .cbz
         | (viewable with evince).
         | 
         | The eventual goal is to transcode all these masters into nicer
         | OCRed PDFs, but I've been making do with the low quality JPGs
         | just fine. Your script seems like a great starting point to
         | actually get this done!
        
         | chrisweekly wrote:
         | Cool project!
         | 
         | Related tangent: I haven't looked into OCR, but for a simple
         | "iPhone camera to 'scanned' PDF", the Dropbox iOS app has a
         | surprisingly good implementation.
        
           | jwong_ wrote:
           | I use the "Files" application from Apple, and it works pretty
           | well too.
           | 
           | I was surprised, and have largely made it my ingress for
           | receipts/paperwork.
        
           | dbrgn wrote:
           | I prefer not to upload all my potentially private documents
           | into a cloud service :)
           | 
           | OCRmyPDF (https://ocrmypdf.readthedocs.io/) actually does a
           | pretty good job! It also handles deskewing and all other
           | stuff that's necessary for good OCR results.
        
             | chrisweekly wrote:
             | Well yeah, that's legit. My point was that for those of us
             | who already choose to rely on Dropbox, it's a great little
             | feature to be aware of.
        
         | zem wrote:
         | her script reminded me that i never did get my scansnap working
         | properly under linux :( will have to give it another go
         | sometime.
        
         | cranium wrote:
         | Funny, I also wrote some code to solve one of my printer
         | problems. It doesn't do double-sided scanning so the script
         | waits for two recently PDFs in a folder (while trying to be
         | smart about not picking incompatible PDFs) and merge them in
         | the right way: https://github.com/RomainGehrig/PDFCollate
         | 
         | I could have worked the same amount of hours for a client and
         | use the money to buy a duplex scanner, but where's the fun in
         | that ?
        
       | Nouser76 wrote:
       | I have a local media collection that I like to have as background
       | noise/entertainment while I work. One thing I didn't like about
       | self-managed libraries vs radio/television/etc. is that I still
       | had the cognitive load of choosing what to watch, specifically.
       | So I wrote a small program to take a list of shows and shuffle
       | them[0] then interleave episodes. Depending on when you start
       | this channel, it has a time offset so you're dropped in the
       | middle of an episode (just like channel surfing!), and has
       | support for showing a certain show only in sequential order[1],
       | and even adding commercials between episodes.
       | 
       | [0] Native shuffle in my media player didn't feel random enough,
       | with a poor play count distribution. Switching to
       | programmatically shuffling means I can also weight things so that
       | a specific show is more/less likely to show back-to-back.
       | 
       | [1] I actually only consider the smallest continuous run of
       | unwatched episodes, starting from the end of the series, and
       | interleave vs shuffling the episodes.
        
       | somishere wrote:
       | Love this stuff. I use regular mini side programs/projects as
       | motivation-boosting procrastination tools. Oxygen to a tired
       | mind. Just yesterday I saw a front page post on hn that I didn't
       | love the solution for and so took 3hrs to byo (3hrs from another,
       | only slightly less-tiny, project). Often tiny programs form the
       | seed of much bigger efforts. My last two major projects, both now
       | well-funded scientific programs, can be found buried in tiny-
       | program / MIT form on my codepen. In fact looking at it again now
       | I have a codepen littered with tiny personal programs, most of
       | which are utility-driven, I'd completely forgotten about, and
       | would make no sense to anyone else.
        
       | vorvac wrote:
       | Back in high school I would try to play CS 1.6 on the library
       | computers. The librarians had access to screen viewing software
       | on all computers in the library and quickly caught me every time.
       | 
       | I played around with visual studio C# and created an application
       | that would continuously monitor running applications (every X
       | ms), detect when a specified .exe was found, and either (1)
       | constantly kill it, (2) display a message, or (3) run a different
       | .exe.
       | 
       | Never quite got to s1mple's level, but I did play a good amount
       | of CS after that!
        
       | sanderjd wrote:
       | Here's mine: Back in like 2006 when I was in college and they
       | first released games on facebook, there was a game my friends
       | liked that was multiple choice, matching song lyrics to artists
       | (if I remember correctly). It was always four choices, you would
       | get points for a correct answer and not lose any for an incorrect
       | answer, then there was a leaderboard amongst your friends. So I
       | thought clearly the right way to win this game is to write a
       | program that just chooses randomly (actually I think it just
       | always chose the first choice), but as quickly as the server will
       | allow. My poor friends woke up the next morning to find I had
       | about 1000x their points. A fun hack, but I also regret it
       | because it ruined a fun game for me and my friends; I couldn't
       | figure out how to reset my score.
        
       | barbs wrote:
       | I wrote a script similar to Julia's and other people's here to
       | score tickets to a sold out music festival. At the time, people
       | were posting on the event page that they had tickets to sell, but
       | they were scooped up very quickly. It was a simple script that
       | used Facebook's API to pull the messages on the event page and
       | notify me via email that a new post had been made. I ran it every
       | minute via a cronjob on an ancient laptop I'd been gifted. It was
       | arguably a little chatty since it notified me of every post, and
       | of course I had to be wary of potential scammers, but it worked
       | and the festival was great.
       | 
       | I'm currently in the process of changing careers from computer
       | science to healthcare, but I'm glad my software development
       | career has given me the tools, skills and knowledge to solve
       | little problems like these.
        
       | jgrahamc wrote:
       | I wrote a bunch of Lotus 1-2-3 code for a small business in 1991.
       | Got paid cash which paid for an entire six week Amtrak adventure
       | round the US.
        
       ___________________________________________________________________
       (page generated 2022-03-10 23:02 UTC)