In case anyone doubts how revolutionary some of these games were, check out these fan letters from the Wolfenstein source:
As a former POW (Vietnam), I hesitated to play WOLF for over a
month after downloading as I feared flashbacks. I didn't want to
remember all that I had been through all those years ago, when, as
POW's, my friend and I decided an escape attempt would be better than
a slow death by torture and starvation.
My friend and I made crude maps and hoarded food. The day of the
escape we clubbed the guard with stones, took his gun and fought our
way through two levels of underground tunnels (only a few guards and
had to crawl). I made it, my friend didn't.
Dreams...NO! NIGHTMARES...YES!! However, the more I play
WOLF the less frequently I have nightmares. The chilling part is
turning a corner and seeing a guard with his gun drawn.
WOLF is a powerful game. Fearful as well. I believe that a
person should face the past. So... when I can play EPISODE 1
comfortably (no nightmares), I plan on ordering the full series.
There's also a letter from a Microsoft manager requesting a multiplayer version.
As you say, that is an extremely moving letter. I would never have associated Doom with therapy - thanks for sharing. (I am a big fan of John Carmack and the id team.)
Datomic is an immutable database, written in Clojure. It's pretty cool, you should check it out.
The company behind Datomic (Cognitect, which also develops the Clojure language) recently started offering the database as a cloud service. This was something Datomic users had wanted for a long time, but one problem with the new service was that one of Datomic's primary features, i.e. having the database reside in memory with your application, was missing.
Ions is a new service that addresses this problem by allowing you to deploy your app to the same VMs that are hosting Datomic in the cloud (a "datomic cluster"). It's basically PaaS for Datomic-backed applications.
I'm a longtime Clojure user and I had some trouble understanding all this as well, so I agree that could do a better job with presentation.
> one of Datomic's primary features, i.e. having the database reside in memory with your application
I'm not sure I follow - are you saying it is desired to have an entire database also in memory? You don't probably mean that, but I thought a key feature of databases is for them to be your offline storage so things don't need to be in memory. I wouldn't be able to fit the contents of my SQL databases into memory on any machine I own.
Datomic keeps your database in the same memory space as your application code, backed by SSD, backed by EFS, backed by S3/DynamoDB. Each layer of this cache provides a different value, and the whole cache system is automatic and eternally consistent because the database is an immutable value.
You want the illusion that your database is entirely in memory, just as want the illusion that all your memory is in your L1 cache.
That depends on what queries the peer runs. In both On-Prem and Cloud, Datomic maintains an in-memory LRU object cache. Also, you can send queries with different working sets to different processes without having to shard data on ingest. For example, some peers might handle queries related to user transactions while other peers handle analytic or batch work.
Datomic basically does the same thing your database does - caching the working set in memory and running the queries. The difference is that with datomic the db is running in your java process rather than on another server. This should get you better scalability (for reads) and make complex queries faster. (Writes still go through a designated server.)
The data is modeled as a collection of (entity,property,values,txn) tuples (with schema on property). They are stored in a log and a few ordered sets (indexes) that are structured somewhat like 2-layer btrees with large pages. These pages and the tail of the log are loaded as needed while running queries. The nature of the data model also gets you point in time queries and queries across time (e.g. all previous values of a property).
There is some cleverness going on behind the scenes, so for a large database you wouldn't necessarily have the whole thing in memory at once. But one of the big selling points of Datomic is that you get to treat the entire database as a value, and when you configure your app as a Datomic Peer (the feature I referred to above), it loads most of the Database into memory as it is needed.
I think the idea of databases being on-disk (vs in-memory) is getting quite outdated. You want durability of course, but most datasets can fit in memory these days.
(Which is natural if you consider the retarded development of disk/ram vs processing power; cf the memes of "disk is the new tape" "ram is the new disk")
> Datomic is an immutable database, written in Clojure.
Ah, that helps (I guess my search was a bit _too_ quick). So Ion is really the only jargon there. I'm not even going to delve deeper as I just don't know the ecosystem at all. I was hesitant to even comment in the first place. Thanks.
> I wonder how many police officer killings are due to "suicide by cop".
I don't think this is really relevant, because "suicide by cop" is a great reason why police should not take the lead in responding to suicide threats. You never hear about "suicide by paramedic" or "suicide by social worker."
Ehh.... I worked for a long time as a mechanic on diesel engines. The engines are designed to conform with emissions requirements as they are written, not necessarily to be more efficient or cleaner. And of course some auto manufacturers have taken rather "creative" approaches to meeting these requirements.
Even with everything above board, the technology is not really there to make diesel a great solution for autos. First, the emissions equipment in modern diesel engines adds weight and reduces engine airflow, making them less efficient than they could be. In fact, today's small diesel engines are only 10-20% more efficient than gas equivalents, when in the past they have been over 50% more efficient.
There are three primary types of pollution that come from an internal combustion engine--carbon, which causes global warming; nitrous oxides, which cause smog, and particulate matter, which contributes to air pollution and also causes all sorts of nasty health problems. Diesel engines are better than gasoline on carbon emissions by virtue of being more efficient, although as I mentioned this gap is closing. Special catalytic exhaust equipment has been added to newer diesel engines to reduce nitrous oxides, but it's expensive and the environmental benefits are marginal. Particulate matter is addressed by burning the soot that comes out of the exhaust, again using expensive equipment that reduces efficiency, and AFAIK the science is still out on whether and by how much this actually reduces environmental/health impacts.
Some municipalities in the US have perhaps misguidedly banned diesel engines from their roads. The situation is a little different in Europe, where diesel engines are found in a much larger share of passenger vehicles. If Europeans drove as much as Americans did, their cities would all look like LA circa 1975. I'm not sure about car ownership trends in Europe, but I think it would make sense for any city that expects increases in car ownership to start regulating diesel more heavily.
This is basically what I do. I'm a supervisor for a county government, and spend a lot of my day at a desk waiting for the phone to ring. I'm still learning to code, so it helps to actually do something other than think sometimes.
To this end, because I can't install a programming environment on my work computer, I installed Linux on my 15 year-old Dell and use the secure shell extension for Chrome to connect. Being forced to do everything in a terminal has really sharpened my Emacs skills. I typically spend a good portion of my day secretly hacking away.