I’m about halfway through right now. I’d recommend it to anyone writing software; it’s like a shorter, more concise version of “Code Complete” but with better examples and with some unconventional wisdom (such as long methods aren’t bad if they encapsulate complex logic from start to finish)
Interesting article!
The method getRestaurantMenus, when simultaneously invoked by many coroutines, will result in one of the coroutines winning the race condition and successfully entering the body to execute fetchMenuFromRemoteCacheOrDatabase.
It looks like this is solving the cache stampede problem with the locking approach, but using deferred coroutines for the locking. Couple of questions for the author:
Hey, If you look closely we are using the deferred not as a using mechanism but as a grouping mechanism. The best part about this approach is the late comers. So if your reads are expensive the readers coming towards the end (when Deferred is about to be fulfilled); see lesser latency. To answer your question:
Have you considered leaving voicemails directly on someone’s phone without a missed call? It’s possible to dial into voice mailboxes directly (eg. SlyDial).
Hm, that’s a possibility we haven’t explored yet, thanks for the idea!
However, accessing your voice mail while on roaming costs money, doesn’t it?
However, accessing your voice mail while on roaming costs money, doesn’t it?
Can cost money even when not roaming depending on your contact, it’s only been the last few years in the last 15 I’ve had a contract that hasn’t charged extra for voicemail access. (Although I guess if I’m in my residential country I could just get emails over data, so that’s less of a concern.)
I wouldn’t write off desktop mail clients just yet. Both Pine (without Maildir patch) and Eudora use the mbox format, which is prone to corruption as it is essentially all of your messages concatenated in one plaintext file. For large volumes of email, it’s better to use the Maildir format, which stores each message in a separate file.
Maildir is certainly better than mbox (which is an abomination), but it is still susceptible to the problems outlined in the OP.
It uses the mbox format too. I wonder indeed why they don’t use something more robust like SQLite.
Two counter-arguments:
Edit with a third: when two common ops occupy the same alphabetical space, such as --version and --verbose.
Except for the cases where it’s the other way around, and whenever there isn’t a verbose switch -v is generally used for version. Sort of annoying when you have to look up the version flag in the manpage (if it exists) if you don’t want to program to actually start doing whatever.
I’m also very not-a-fan of having to guess whether the syntax for “more verbose” is -vvv, -v3, -v=3, -v 3, –verbose=3, –verbose 3, …
But this is a lost cause.
This is the chapter of the Unix-Hater’s Handbook that has held up the best; X11, while still atrocious, has gotten less warty and terrible. C++ is a much better language than it was in 1991. sendmail is functionally extinct. But the state of Unix terminal software is still utter pants.
I would have guessed that “pants” as an intensifier had positive valence, rather than negative. Does the manpage…? :)
Heh, anyway, as you say. It’s nice to at least be able to look at progress in some areas.
If anyone is interested in more advanced RE exercises, I have found wapiflapi’s exrs to be a very good series.
A link to something more substantial than Amazon would be appreciated.
Looks like @amontalenti managed to find a talk by the author about the book in the comments.