HNHacker News
TopNewBestAskShowJobs

TheMiller

78 karma · joined June 11, 2012

submissionscomments
TheMiller··on The Nature of Lisp
And a good book for folks who already know how to program and want to learn Lisp in some depth is "Practical Common Lisp" by Peter Seibel. http://www.gigamonkeys.com/book/
TheMiller··on The Internet is experiencing severe outages across North American and Asia
I have to say: That last sentence made me, quite literally, laugh out loud. Excellent. :)
TheMiller··on Breakthrough silicon scanning discovers backdoor in military chip
Is this a case of media hype -- and/or the researchers themselves using innuendo to inflate the importance of their research?

http://erratasec.blogspot.com/2012/05/bogus-story-no-chinese...

TheMiller··on Rich Hickey: Deconstructing the Database
Thanks for the reply. In the talk, I missed the point that transaction functions are able to implement "optimistic CAS" (which I assume is the same as what is more traditionally but inaccurately called "optimistic locking"). To clarify, though: Wouldn't precondition testing have to be done /inside/ the transaction, not before, in order to be effective?

That's a nice model, I suppose, but doesn't strike me as particularly novel. As has been pointed out elsewhere, the idea that read-only operations can avoid creating a transaction is not particularly important per se. What's more important is avoiding locking, and this is already available in several DBMSes. Indeed, in the sense that reads are consistent "as of" a certain point in time, Datomic really does have a notion of a read transaction. I saw in another of your replies here that you consider these to be more flexible than transactions because they are in effect immutable snapshots of the database state, and independent of a single process. I guess for some applications that could be important, but for many applications the process independence is irrelevant (perhaps it helps with scaling a middle tier?), and the eventual storage cost of true immutability will become intractable (although perhaps you'll eventually have ways to release state prior to a point in time). Coordinating different parts of code within a single process over a specific span of time doesn't strike me as any easier with Datomic's model than with traditional transactions.

This talk just didn't focus on the kinds of data modeling problems that are important to me and which I consider difficult, which mostly have to do with maintainability of the data model - except, possibly, for the ease of dealing with temporal queries. And I share others' unease with what seemed to be inaccurate characterizations of current DBMS implementations.

TheMiller··on Rich Hickey: Deconstructing the Database
To elaborate further on what saurik has already pointed out: Hickey's "update-in-place" characterization of relational databases places blame in the wrong place. This is more about how people think about the data models; they think of their primary keys as identifying places, and updating rows as modifying those places. The relational model itself does not encourage this mode of thinking, although SQL arguably does, unless you think of UPDATE as shorthand for DELETE followed by INSERT. It's not that uncommon to build data models, or parts of models, that have the characteristic of never deleting facts. It's true that time-based as-of queries in such models are unwieldy, but that's a problem of the query languages that can be addressed by how queries are constructed, without redesigning the entire database system. There is research on "temporal databases" that addresses this, although I'm not up to date on it.

What I could not understand from the talk or from googling for more information on Datomic afterwards, is how it supposedly simplifies anything about the consistency issues that he talks about, with respect to the read/decide/write sequence. You read; time passes; other people make changes; when you write, the real world (modeled in your "transactor" as the single common store and arbiter of what is) will have changed.

TheMiller··on Codeacademy for competent programmers?
Lots of ways to learn. Aside from what others have already mentioned, work on a lot of existing code. This can be others' code, or code you wrote yourself months or years ago. Whether you're fixing a bug, or adding an enhancement, or just trying to clean it up and make it better, stop and ask yourself occasionally: What made this difficult to understand or modify? How could it have been organized better? The other sources (books, courses, etc.) provide starting points for answering those questions but you need to apply that knowledge to real code, to test it and learn where it does and does not apply.
← PreviousPage 2 of 2