If you mean "free" as in open-source/free, there is J, which has its own builtin database. I'm assuming it's similar to k/kdb, but that's just a guess.
Learning an APL variant... not a free lunch. Takes a while and commitment to grasp.
The article and linked blog posts fall to explain how this differs, is more powerful than, or solves problems not already solved by actual, functioning, industrial-grade tools, both commercial and OSS. Am I missing something fundamental?
The VCPU concept and synchronization control seemed interesting at first, but after trying to glean what he's getting at I don't see anything that isn't described in petri nets or bpmn notationally or possible using many of the existing low-/no-code platforms that are all the rage in the enterprise-ishy world.
Also looking like the diagrams were made with MS Paint made me throw up in my mouth a little thinking about having to actually work with as a daily thing... ick.
It's a great idea, too be sure. I'm just not sold on why this particular one-man effort would be of more interest than alternatives. Maybe if you've been noodling on this since the eighties and billion dollar companies have actually already run way past you with actual working software, it could be time to move to the next thing.
Or who knows, given the lack of detail, maybe I just got trolled by some nitwit using chatgpt. If that's the case, well played getting me to swipe type this on my phone.
Counterpoint Consulting | Washington, DC Metro Area (Vienna, VA) | c20g.com
Counterpoint's Mission is to create software solutions which enable our clients to automate their business, turbocharge their workforce, engage their customers, and ensure compliance.
Seems like the most common answer to this might be SICP (Structure and Interpretation of Computer Programs -- you'll find course videos pretty easily from Google; the ones from the authors are really great). Note that it's based on Scheme, which is a ancestor of Racket, but Racket has a language pack that papers over the differences and works with the code from the book. Official course website: https://mitpress.mit.edu/sites/default/files/sicp/index.html
You might, as a novice coming to Racket, find "Realm of Racket" to be more approachable as an intro: http://www.realmofracket.com/
> Seems like the most common answer to this might be SICP
Please don't. SICP is beautiful and all, but it's neither an intro nor practical/immediately useful. There's a lot of enlightenments to be had by reading it, but they have very little to do with Racket specifically. IMO, it's a bad book if your purpose is learning Racket.
> You might, as a novice coming to Racket, find "Realm of Racket" to be more approachable
Or, as an experienced programmer, be bored to tears by the slow pacing and didactical style. It's a great intro to programming and to Racket, but more focused on the former, which makes it ill suited for experienced devs who want to learn Racket.
I read SICP as an experienced programmer and I didn't find it impractical at all; in fact, it kickstarted my interest in other lisps.
I read Realm of Racket as an experienced programmer (after knowing Common Lisp and Clojure well) and it was entertaining and, yes, a gradual introduction to Racket.
I'm sorry if you disagree, but was answering the question that was given with a couple thoughts that might be beneficial. I'm glad you feel confident enough in your interpretation of what was being asked and the OP's personal background and motivation to flame someone else without, I don't know, answering the question.
EDIT: I see you did answer him below, but my general response is still valid.
EDIT 2: Your response makes more sense given context. Sorry I got internet angry a little too quickly.
And on a more general note - let's leave the misunderstanding to the separate thread - I'm glad you liked the books! I'm not saying you can't enjoy them - far from it - but if your goal is to just learn Racket quickly (where I interpreted "experienced dev" as "short on time working adult") then they are not the best resource for that. SICP is not even about Racket at all and RoR includes a lot of introductory material you wouldn't need. Instead of learning by accident, ie. reading weakly related material and hoping that an understanding will somehow form (which seemed to be default mode in education), I prefer using materials which are strictly on topic and are dense enough to be efficiently absorbed, but not so dense that it takes a day to go from one page to another. And to that my answer is: Wiki, tutorial&cheatsheet and the docs.
What is obvious is that YMMV - I'm just saying what I'd do if I wanted to efficiently learn Racket today. That's it.
Yes, I totally agree it comes down to YMMV. Everyone's learning style is different -- some like dense documentation, some like book-style progressive walkthroughs. I certainly didn't learn CL by reading the HyperSpec, for instance... :-)
Yeah, that's why I included the "but not too dense" part ;) Personally, I actually did learn Common Lisp mostly from HyperSpec (plus reading code - I used StumpWM for a while and wanted to script it), but at that point it was my 4th Lisp (after PLT Scheme/Racket, Emacs Lisp and Clojure) and I was well prepared for it, I think, because of my focus in PL research (hobbyist). I certainly wouldn't say that HS is the way to go for new CL programmers without special preparation.
But, Racket reference docs are not a language definition like HS, RNRS or the Dylan book. The tutorials especially are quite friendly, but the reference is also full of examples, overviews, summaries and introductions, along with the links to the Guide - which can further help in comprehending the content (but only if needed, otherwise they stay out of the way). They're basically amazingly well done and I think more people should read them, if only to learn something about how to write docs and technical prose in general... :)
My "please don't" was directed at the potential learner as in "please don't use this particular book if all you want is learning Racket" - not at you, in any way.
Also, I said it's a bad book for learning Racket In My Opinion. Of course it's all based on opinions and I just presented my own. No flame intended, at all.
Thank you for this. Time and again I have come across this book, but always assumed that it was something like The art of Programming series, so never even opened it.
My son is learning using Scratch (https://scratch.mit.edu/) and it's pretty well tuned-in to the way he thinks. Haven't put any "code" in front of him yet, but he can make some pretty neat games very rapidly using Scratch. Might be worth a look.
Probably still relevant given how SBCL's user guide says (in the only section that includes mention of type inferencing):
"FIXME: The material in the CMUCL manual about getting good performance from the compiler should be reviewed, reformatted in Texinfo, lightly edited for SBCL, and substituted into this manual. In the meantime, the original CMUCL manual is still 95+% correct for the SBCL version of the Python compiler."
I honestly don't know that there are any posts I get more excited about on HN than Jepsen analyses. The number of landmines distributed systems create and the ability to suss them out in such detail / depth is really incredible. Kudos.
I'd hope they find themselves one or more with a master in math on logic proving in ways that a computer can help, and actually prove that their code, at least if compiled to LLVM bytecode, is adhering to the high-level architectural proof. Considering that they'd only need to prove consitency, nothing more, and especially not every little piece of code they are writing, but just the core that handles transactional isolation, not even that the code actually resolves in all cases (being stranded with a stuck cluster that is made to handle a hard reboot without problems is better than a cluster that silently violates constraints), it should not be an infeasible goal.
The main issue is that distributed database consistency without trivial, performance-killing locking schemes is too complex to prove when writing or using any trivial, local methods based on e.g. SMT solvers or so.
If something like cockroachdb would be proved-consistent on that level, it would be used for applications currently employing pessimistic locking due to a lack of trust in their database, or scaling vertically without really needing to (there are cases which make horizontal scaling cost-prohibitive due to the dependency chains in the algorithms that can solve them, but they can be replaced most of the time).
There's been a lot of work on both of these problems, but right now, proving concurrent algorithms correct, and proving equivalency of those algorithms to executable code, are very much open research problems.
With most of the DBs he tests, the authors have very good understandings of distributed systems, and make very carefully considered design choices. They still make mistakes though, because they’re human. Very thorough testing is simply a great way to make any software more robust, distributed systems or otherwise.
- Work with customers to identify, model, and automate complex business processes using commercial and open source software
- Work directly with our customers to translate business needs into technical solutions
- Design and develop custom business software solutions
- Work independently or cooperatively within software development teams
- Provide follow-up support and training to our customers
- Participate in internal software development projects
- Travel: Must be willing to travel to customer sites across North America (primarily in the D.C. metro area)
Desired Skills and Experience/Required Qualifications
We are looking for intelligent, professional, and driven individuals who possess:
- BA/BS from an accredited university
- Demonstrated record of excellence inside and outside of the classroom
- Software development experience or interest in a career in technology
Preferred Qualifications
- BA/BS specifically in computer science or engineering
- Knowledge of Web Development Technologies and Libraries (Angular 2+, Backbone, Marionette, HTML, JS, CSS, jQuery)
- Knowledge of Relational Databases & SQL
- Software development experience (Java, Java Web Frameworks and / or .NET)
- BPM development experience with Alfresco, Appian, OpenText, Pegasystems, or other commercial or open source BPM or low code application development platforms
Just for context, this is from Harry Browne, who was famously (and perhaps not entirely fairly) labeled as a "gold bug" throughout his career. He was something of a hero figure among those who subscribe to Austrian economic theory, and actually the candidate for the US Libertarian party for president several cycles back.
Off-topic (?) from that article, I'd be interested to hear what he would have made of the current cryptocurrency craze, given his views on gold, inflation, and portfolio stability.
"There's nothing wrong with speculating — provided you do it with money you can afford to lose. But the money that's precious to you shouldn't be risked on a bet that you can outperform other investors."
Edit: Rule #12 addresses it more directly: "Speculate only with money you can afford to lose."
I've just read his self help book "How I found freedom in an unfree world", interesting approach, hardcore libertarian. I think he would like the decentralised aspect of crytocurrency.
Learning an APL variant... not a free lunch. Takes a while and commitment to grasp.