winsbe01
Favorite feature we've built: "are you my cousin", where you choose 2 people in our database and it calculates how they are related. First time I got to write a search function outside of a classroom!
I'm sure Ancestry does all this and more, but it's nice to have something that we built that's just for our family. We also use it all the time to verify relationships/birthdays!
From a US perspective (may apply elsewhere), for books published relatively recently (within the last ~20 years or so), the ISBN is often part of the barcode on the back of the book (ISBN-13s (the updated standard) start with 978, so this is a good clue that the barcode is an ISBN). For a period of time prior to that (and perhaps still applicable to Mass Market Paperbacks), there is a barcode on the back that is NOT an ISBN, but there is an ISBN barcode on the inside front cover. I've not discovered any systematic way to pull an ISBN out of a non-ISBN barcode (though I haven't dug too far -- my collection hasn't reached 4 digits yet and I've been happy to type when scanning wasn't an option).
Once you have the ISBNs, I like to query against the Open Library API [2], which is a part of the Internet Archive. The information in there is fairly robust, if inconsistent (the capitalization of titles is sometimes as printed on the title page, sometimes Library of Congress format, other minor things). They have a lot of data points available, such as cross-referenced IDs with Goodreads and LibraryThing, but again, this is community-supported data, so YMMV as to completeness or accuracy.
Another note -- many books have separate ISBNs for hardcover editions, trade paperback editions, mass market editions, eBooks, etc (and sometimes don't have an ISBN at all for things like Book of the Month Club editions). I don't know if this is a requirement, or a luxury that big publishers have, but it is something I've noticed (you'll sometimes see multiple ISBNs listed on the copyright page, along with their formats -- also you may see related editions on Indiebound [3], along with their ISBNs). A cursory glance at Open Library doesn't seem to have a data point distinction for this (which is unfortunate), so you may still have to note this, but theoretically it may be possible to get this information from the ISBN directly at some point.
Source for ^^: I read a lot, have a lot of books, briefly ran a (failed) specialized online bookstore, and wrote a CLI tool [4] for myself to solve this very issue.
[1]: https://qrbot.net/locale/en/ [2]: https://openlibrary.org/dev/docs/api/books [3]: https://www.indiebound.org/ [4]: https://github.com/winsbe01/booki
I haven't yet dipped my toes into Secure Scuttlebutt -- I joined a Mastodon instance once upon a time, but it didn't hold my attention too well. I've always associated Secure Scuttlebutt with a similar (albeit more distributed) micro-blogging thing, but that's probably my own ignorance speaking (nothing in the protocol seems to limit interactions to this, based on a quick skim).
Nothing against micro-blogging in particular, I just personally find the signal-to-noise ratio suboptimal (though maybe I'm just on the wrong networks, following the wrong people!). I'd love to build something into my book-tracking app so I could, like, share a list of books I have on my shelf that I would be willing to lend to people, or a list of books I'm interesting in reading that I could borrow from people, or books for trade, or just reviews (I've been doing a bit of pipe dreaming lately). I'm gonna dig a bit more into the Secure Scuttlebutt and ActivityPub protocols to see if this is something that could feasibly be done.
I'm also very interested in owning my own data (particularly when it comes to things like book lists) and I'm thinking about how to incorporate something like ActivityPub into my CLI book-list application. I'd love to live in a world with an indieweb version of g*dreads.
here's my biggest vending machine hack: freshman year in college, there was a vending machine in our dorm building. it wasn't cheap (obviously), but it got lots of use because it had something extra: a card reader for our IDs. if we pre-loaded our card with money, we could use it to buy sodas, snacks, and washer/dryer cycles. very convenient.
but the vending machine had a quirk: occasionally, for reasons unknown, it would just start spitting out coins. it was a pretty rare occurance (and a very exciting one) that it became known colloquially as "hitting the jackpot". every time we went to the machine, we would cross our fingers, hoping to "win".
while it seemed like a random occurance at first, i knew it couldn't be completely random, and i wanted to figure out _why_ it was happening. so i began investigating. whenever i went to the machine, i would try different combinations of buttons, choosing different rows/columns, but i couldn't recreate the behavior. accompanying my friends to the machine, i paid attention to how they were inputting their order (and if they subsequently "won") to try and figure it out.
after lots of observation, i found a pattern: everyone who ever won used their card to buy something. focusing on the card reader, i also found that these people had accidentally put their card in _incorrectly _ before righting it. with a theory loosely in place, i put some money on my card and gave it a whirl.
and it worked! here's the behavior: if you put your card in incorrectly, the machine couldn't read it because the stripe was on the wrong side, so it spit the card back out and flashed an error on the screen which would clear after a few seconds. while the error was showing, the machine would not accept your card. however, if you put your card in _immediately_ after the error cleared, here's what happened:
1. screen displays the amount of money on your card
2. choose your drink
3. drink is vended while the same amount of money is displayed (i.e. not subtracting the price of the drink.
4. the machine begins spitting out coins in the amount of your card value minus the price of the drink
5. the card is returned with the _original balance_ still intact
so, if i had $20 on my card, and i bought a powerade that costs $1.50, i would walk away from the machine with a powerade, $20 still on my card, and $18.50 in change.
horribly immoral and illegal? absolutely. however, i still feel immensely proud that i not only figured out what was happening, but how to reproduce it.
Bash One-Liner: Grab AmazonMP3's Daily Deal
It's 4S, Not 4G
"learning" something, i'm finding, is very hard to do outside of a school setting, so i've been trying to think of why that is. what i've found is this: in school, you're given assignments, little (or sometimes not-so-little) programs to write that do something. of course, the assignments are designed to illustrate a point, something you've learned recently. but it can serve the same purpose in real life. think of something (doesn't have to be a novel idea), then try to build the functionality of it. it'll be frustrating working through finding bugs and learning how to do xyz, but you'll find that you've learned to use your tools, even if the project doesn't ultimately get finished.
good luck with RoR!
Also (unfortunately, IMHO), this talks a lot about speed, which was a big problem in the Pentium 200 days with minimal RAM, cache, etc. Nowadays, any old poorly written, garbage-collected program runs speedy as hell. Seems like lost is the golden days of optimization.
there are plenty of very smart, dedicated people i know who work hard all day, but once quitting time comes they want sports and beer. they're not a waste of space for indulging; they work hard doing important things, and enjoy themselves when they're done.
sounds like you're frustrated with the overall situation, though (stuck in a foreign town, girlfriend is sick, etc.). you may find yourself more resilient if things weren't so stressful in life!
reinventing the wheel won't work unless you can show people that something is missing or wrong with what they're already used to. even then, it won't happen overnight, and it may not happen at all. take G+ for example. they made some not-insignificant changes to how people communicate in their network. they've already got a ton of users, but it's only been ~2 months. it could just be flashy-new, and could fade in another 12.
maybe another way to think about things is about what social networks represent: interactions between people. you have people you know, people you don't, people you want to talk to, people you want to listen to, things you want to share publicly, things that are private, etc. etc. maybe instead of building up a feature set, it would be beneficial to think about human interactions and relationships, and see how software may be able to represent that better than current models (G+ is trying this with circles).
all the "big ones" i.e. debian/*buntu, fedora/redhat, etc. will have (nearly) any language's compiler/toolset in their package manager, and therefore just a couple minutes away from install. and even if they didn't, they're 2 google searches away from a download and install.
so, you're in luck! take your pick and dive in :)