OK, this is a random one, but I’ve really gotten into Esperanto (the constructed language) over the last 3 years. This weekend there are 3 separate events (in Iran, France, and London) with everything from games to concerts (yeah – Esperanto has it’s own music and music groups, believe it or not). So, I’ll be internet surfing between those, and spending most of the weekend hanging out in a language that was invented 130 years ago by a crazy Polish doctor :)
Just here because I noticed eĥoŝanĝo ĉiuĵaŭde. Sal’, se fakte vi estas parolanto :)
Never do this, it is too easy to mis-use, leading to things like deadlocks and spaghetti synchronization. Mutexes should always be unexported fields, accessed only by methods.
Longer discussion here (warning: also Twitter thread).
This is a good counter point. In this contrived example I’m only accessing the mutex inside the struct’s one add function, but I hadn’t considered that by embedding the mutex it effectively exports it since Lock and Unlock are available at the same level as add itself. Thanks.
Updated the thread for others to discover this too.
I’m a fan of https://usefathom.com. It’s very minimal, but I don’t have many requirements, so it suits my needs pretty well. I like that it’s a single Go binary, which I run on a $5/month Digital Ocean droplet.
Please note that while this may currently work, it is no longer being maintained and is very different from the paid Fathom Analytics product. I built the initial open-source version of Fathom that you are running, but after I left the project moved to a centralized and closed-source model.
I wasn’t even aware of this. Thanks for the update.
Thanks for making that, I use Fathom for my site and like it. Too bad they closed it up.
The latest communication is that “We are going to be releasing a new version this year”, FYI
BTW, a story of mine: When I was in high school, we had a class to teach us how to type on the keyboard efficiently. The classes consisted of using a training software, and the grades were given mostly by the score we achieved there. We could run the program on other computers in the school as well and do some lessons in the spare time.
While never intentionally learning how to use the keyboard properly, over the years of coding and spending hours on IRC, I learned to type pretty fast, so I always was far ahead. However, some of my friends struggled with this and I was helping them. But this was boring.
So naturally, I went ahead and wrote a simple program to type in the window automatically. During a break, I gathered a group of friends, took them to the computer and intended to demonstrate them this incredible time-and-effort-saving creation of mine. I opened one of the lessons, where we had to type a single sentence as many times as possible, fired up my program, typed the sentence there and pressed the “Start” button. It worked perfect, except… I made a typo.
At around 800 bpm, it wrote the errorneous input all over again in a lesson, where it was particularly important to type as accurately as possible. Few seconds later, the lesson was over, because there were too many mistakes, and it threw me back to the previous lesson. But the expected input in that lesson was completely different, so it kicked me even faster. And it continued doing that for over and over again.
Before I finally managed to kill the program, I lost about two weeks worth of progress. But the program got popular nonetheless as they understood it worked properly, I only entered an invalid input. Later on, an IT teacher asked me to demonstrate it for him. My memory is faint on that part, but I think nothing happened at all. I’m sure he would ban it if he knew how, but he wasn’t very good.
Cool story… I love the irony that you built it to speed up your results but it caused the opposite to happen in the end… that’s probably a metaphor for about 50% of everything I do in my code :)
It would have been great if you made it only type when the user pressed a key, so people could mash the keys as quickly as possible and have 100% correct output come out. Since you were just using it for training, though, your way makes sense too.
Are you me?
Did almost the exact same thing back in elementary/middle school.
Loaded it up onto my purple 64mb JumpDrive that had cost me a small fortune so I could run it on any of the computers.
Same here on Mavis Beacon. Except, the hackers weren’t impressed. So, we changed the challenge to seeing what numbers we could get doing that by hand on the actual keyboard. I can’t remember the number but it was insane.
Pretty good writing and a fun story. Thanks!
Thanks for reading!
What would’ve happened if you killed the VNC before he connected? Would he notice?
He’d have known the machine I was logged into wasn’t allowing him to connect, but I suppose he wouldn’t know why. I killed it about 3 times in total, but he never came over to me to check. I assume he simply never tried connecting to me during those times, or if he did, he thought it was just a temporary problem (rather than one of my own doing :)).
OK. I wondered whether he just didn’t see some list of running instances and if you killed yours, he wouldn’t notice at all. :)
Loved this story, I felt I was there in the computer hall, with the smells, the hum and the tense battle between you both.
Thanks! I really enjoyed writing this one, and even better that I managed to get a little bit of the emotion across too.
I’ve started to value some downtime at the weekends, much more than I used to. Saying that, I’m intending to get at least half way into a new book I’ve started reading, Murdo en la Orienta Ekspreso, which is an Esperanto translation of the original Agatha Christie book Murder on the Orient Express.