- The Comprehensive Guide to Speaking at Technology Conferences in 2020 (https://www.cfpland.com/guides/speaking/)
- What I've learned after sending 147 proposals to 36 conferences in a year (https://drobinin.com/posts/what-ive-learned-after-sending-147-proposals-to-36-conferences-in-a-year/)
- Introduction to slides, a Clean Presentation Tool (https://zge.us.to/slides.html)
- A command-line based markdown presentation tool (https://github.com/visit1985/mdp)
- Giving a presentation with perfect UI/UX design (https://habr.com/en/post/471624/)
- Why Your Excellent Conference Talk Was Rejected (https://www.promptworks.com/blog/why-your-excellent-talk-was-rejected)
- Very Important Strangers (http://randsinrepose.com/archives/very-important-strangers/)
- Tips for Public Speaking (http://speaking.io)
- Presentation Skills Considered Harmful (http://seriouspony.com/blog/2013/10/4/presentation-skills-considered-harmful)
- Passionate Programmer: How to Give a Keynote (https://web.archive.org/web/20150211231805/http:/
| # LVDB - LLOOGG Memory DB | |
| # Copyriht (C) 2009 Salvatore Sanfilippo <antirez@gmail.com> | |
| # All Rights Reserved | |
| # TODO | |
| # - cron with cleanup of timedout clients, automatic dump | |
| # - the dump should use array startsearch to write it line by line | |
| # and may just use gets to read element by element and load the whole state. | |
| # - 'help','stopserver','saveandstopserver','save','load','reset','keys' commands. | |
| # - ttl with milliseconds resolution 'ttl a 1000'. Check ttl in dump! |
| .SUFFIXES: | |
| help: Makefile ## display this help and exit | |
| @echo 'Usage:' | |
| @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $< | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " %s\n %s\n", $$1, $$2}' | |
| hello: ## emit the "hello, world" message | |
| @echo Hello, world! | |
| .PHONY: help compose |
Quite a lot of different people have been on the same trail of thought. Gary Bernhardt's formulation of a "functional core, imperative shell" seems to be the most voiced.
"Imperative shell" that wraps and uses your "functional core".. The result of this is that the shell has fewer paths, but more dependencies. The core contains no dependencies, but encapsulates the different logic paths. So we’re encapsulating dependencies on one side, and business logic on the other side. Or put another way, the way to figure out the separation is by doing as much as you can without mutation, and then encapsulating the mutation separately. Functional core — Many fast unit tests. Imperative shell — Few integration tests
RDBMS-based job queues have been criticized recently for being unable to handle heavy loads. And they deserve it, to some extent, because the queries used to safely lock a job have been pretty hairy. SELECT FOR UPDATE followed by an UPDATE works fine at first, but then you add more workers, and each is trying to SELECT FOR UPDATE the same row (and maybe throwing NOWAIT in there, then catching the errors and retrying), and things slow down.
On top of that, they have to actually update the row to mark it as locked, so the rest of your workers are sitting there waiting while one of them propagates its lock to disk (and the disks of however many servers you're replicating to). QueueClassic got some mileage out of the novel idea of randomly picking a row near the front of the queue to lock, but I can't still seem to get more than an an extra few hundred jobs per second out of it under heavy load.
So, many developers have started going straight t