Recent submissions

Comment · 8 years ago
My take is that one of Datomic's original value props was that it ran in your Java app's process. That plus immutability plus cache-foo allowed you to write your Java app as-if your entire db was not only "in-memory", but "in-your-app's-process-memory." That is, um, "pretty dope".

Then they introduced Datomic Client, which is more of the "normal" db paradigm. Your app includes the client lib, which connects to the running db process "somewhere else". I don't know why they did this (easier to include?), but it meant that the "db-in-your-app-process" value prop went away.

Initially when they deployed Datamic Cloud (a sort of managed Datamic service deployed in AWS), they only supported the client model.

That is context for your question. The problem Ions solves is how to get that "db-in-your-app-process" value prop while using Datamic Cloud. It seems to me that it effectively reverses the original method. Original method was add the DB as a lib into your app, Ions method is push your app into the db (which is running in a configured-for-you cluster on AWS).

(It also allows you to not have to provision/configure servers to actually run your app code in addition to the db servers, but that seems secondary to me.)

Note, that I'm not affiliated with Cognitect, and I've never used Datamic, or Clojure in a production system. So have a salt shaker.

Comment · 8 years ago
Communication problems need to be solved with protocols, not apps.
Comment · 8 years ago
Hmm, I'd say more like reading the (original) source code of git itself to learn about Linus and his coding"philosophy" [0] vs reading a modern tutorial about how to use git.

[0] I haven't done this so not putting any value prop on this specific example.

Comment · 8 years ago
> An old work of philosophy does not describe the thing you are meant to be learning about. It was created by the thing you are meant to be learning about, much like watching a video from skater-Aristotle’s GoPro. And the value proposition is that with this high resolution Aristotle’s-eye-view, you can infer the motions.

tldr; read old philosophy to learn how to reason, read new physics to learn the results of reasoning.

Comment · 8 years ago
> We wanted to know: What would it look like if you built a technology startup which could not make anyone rich. If you eliminated all the promises of wealth from the roadmap up front, and tried to build a good company, how would that affect the product, business, customers, and every little decision in between?

...

> We're currently looking at testing an affiliate program whereby we'll pay out a 30% commission every single month on the lifetime revenue of anyone referred to Ghost(Pro).

...

I believe this is called colocating your money and your mouth. I'm inspired.

Comment · 8 years ago
I agree, I don't like the magic string approach (even if it is mostly just dot-notation attribute lookup). However, there is some good stuff here, and nested data lookup when value existence is unknown is a pain point for me.

In addition to the string based lookup, it looks like there is an attempt at a pythonic approach:

  from glom import T
  spec = T['system']['planets'][-1].values()
  glom(target, spec)
  # ['jupiter', 69]
For me though, while I can understand what is going on, it doesn't feel pythonic.

Here's what I would love to see:

  from glom import nested
  nested(target)['system']['planets'][-1].values()
And I would love (perhaps debatably) for that to be effectively equivalent to:

  nested(target).system.planets[-1].values()
Possible?

--- edit: Ignore the above idea. I thought about this a bit more and the issue that your T object solves is that in my version:

  nested(target)['system']
the result is ambiguous. Is this the end of the path query and should return original non-defaulting dict, or the middle of the path query and should return a defaulting dict? Unknown.

The T object is a good solution for this.

Comment · 8 years ago
For simple cases like this it doesn't even cost a couple lines as sum() can take a generator expression:

  sum(planet['moons'] for planet in target['system']['planets'])
Comment · 8 years ago
And then the salon and the restaurant start using Duplex as well, and all phone conversations become Google talking to Google.

How bout: "Hey Duplex, call this support number and get a top level human manager on the line please."

Then we get a HN article: "Duplex is fighting Alexa!"

Comment · 8 years ago
Comment · 8 years ago
ncurses seems powerful. Any good suggestions on a tutorial or introduction to ncurses (which it appears is what was used for the ui here)? Ideally for python, or generalized... Or is there a better tool to learn for generic command line UIs?
Comment · 9 years ago
Service that allows me to get paid for my next side project [451+ customers, each paying $XX per month]
Comment · 9 years ago
Indeed, that's what we like to tell ourselves. But is that actually what's happening? Did you take the test?
Comment · 9 years ago
Comment · 10 years ago
I would read that.
Comment · 10 years ago
I'm not sure how you got there from where I was.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton