846 karma · joined February 20, 2009
We also outlaw the depiction of any crimes related to sex, and here we find it easier to justify the ban, but in our haste we clump together actual crimes committed against a real victim, and imaginary crimes such as e.g. a cartoonist drawing a rape scene. In the latter case we close our eyes to the fact that we claim to support something called "freedom of speech" and, in our neurotic hunt to ban things sex-related we trample our principles.
Same goes for e.g. CSA, but in that case in particular, logic and consistency seems to go out the window and principles are sacrificed in the blink of an eye. It makes me a little depressed to see.
As for individual countries trying to enforce their local socio-cultural norms on the rest of the world, that is of course equally silly. The US is great in many ways, but introspection and ability to follow principles is sometimes lacking for sure.
I wouldn't be surprised if our sexual neurosis is what makes an AGI finally decide that we're not competent to captain the ship anymore.
Have to add also that the "plus feature" isn't a Gmail-specific invention but a standardized way of referring to the same mailbox using different addresses. But some email providers don't support this feature, and many input validators out on the Internet don't either.
First thing I built, when I started doing full-stack stuff: https://pushdata.io It's a super simple time series data storage. You don't even have to register an account, just do "curl -X POST https://pushdata.io/youremail@yourdomain.com/temperature/47" and you've stored your first value. I use it a lot to log various stats about all the things I've built, like user signups or whatnot.
Then I wanted to create simple crosswords with image clues to help my kids learn to read. That resulted in a crossword generator backend and a simple game: https://puzzlepirate.net
Puzzle pirate is great, but I wanted to print the crosswords on paper also, so I slapped together https://crosswordcomputer.com. The UI is rather ugly (like Pushdata) but you can create pretty cool crosswords for kids with it.
Then I wanted to create more flexible shields.io so I created https://supershields.io - basically a shields.io but with programmable (in Lua) logic for the shields you create. I'm not using it myself anymore though so not maintaining it very well and it seems there is something funny with the Lua execution right now. It is using AWS Lambda servers to run Lua scripts, perhaps they're not firing as they should or something. If someone wants to use it, get in touch and I'll see if I can get the Lua execution operational again :)
I also wanted to backup private photos and videos from household phones to a USB memory on a local storage server (Raspberry Pi) and then have that server automatically back everything to the public cloud but encrypted (as I don't trust public cloud providers to keep my data safe forever). I couldn't find a good solution for this, so I wrote some shell scripts that do the trick: https://github.com/ragnarlonn/savethepictures
My daughter was playing Minecraft too much, on our own server, and I created a small Python program to enforce "screen time" in Minecraft: https://github.com/ragnarlonn/mctimer
I once needed to simulate broken DHCP clients and couldn't find a good tool to do so, so I wrote "dhcptool": https://github.com/ragnarlonn/dhcptool
All of these taught me a lot, especially the later forays into full-stack development after having been pretty much clueless about frontend stuff for a long time (still clueless but at least I can create ugly UIs now).
Edit: I'm going to add some cleanup regardless.
But to repeat: auto-updating will not work for Github-hosted content AFAIK.
TL;DR is that most Lua engines seem to offer pretty weak support for sandboxing, unfortunately. Gopher-lua, that Supershields is using, makes it hard to adopt a whitelist-approach where you disable more or less everything and then enable just the functionality you want. Blacklisting (where you specify everything you want to disable) is fairly simple though, but not as secure of course.
For Supershields I have used a combination of blacklisting and running the scripts on serverless instances (AWS Lambda), which limits the impact of a breach.
The app is here: https://github.com/marketplace/supershields
Not sure how Github enterprise works though. Can you use regular Github apps with your enterprise installation?
Being horribly old and needing glasses to see anything small but never having any glasses around, I find that my phone is pretty much useless for work. I guess I'm an outlier here. I'll just see what I can do to improve the mobile UX!
Now when I remove that and add your "max-width: 100%" I don't see much of a problem. Sure, some content gets slightly misaligned on narrow screens but it looks pretty OK overall.
I just pushed the change now, should be visible within 5 minutes.
I looked at the anafanafo package now and one of the first things they say in the presentation is "Built with Shields in mind"... So this package was custom made for shields.io, apparently. From a very quick check it seems to be a non-trivial amount of code, so not super simple to just port to Golang.
I don't want to have to start running Node and NPM packages, but would be very interested in any way to get this kind of functionality in a Go program.
The backend was a bit over-zealous about the HTML escaping...
I chose https://github.com/yuin/gopher-lua as the Lua engine because it is Golang-based, while the Nginx Lua VM is C, unless I'm mistaken. Using gopher-lua is just easier when I'm working in a Golang project. I only have to work in a single language and dev environment for all the backend work. Makes both development and testing easier.
Moonscript I might have heard of, but I have no experience with it. I did not consider it here, and I would rarely consider any niche scripting language for a solution I want others to use. It just introduces an unnecessary barrier to adoption.
Hmm, a bit rambling response, this one. I hope you get what I mean (and that I'm not completely clueless - have to look at the shields.io code again!)