HN user

codewright

1,191 karma

Hacker in SV.

Posts2
Comments402
View on HN

There's a VC funded Indian burrito joint in Palo Alto. I've eaten lunch there three times, once with a potential investor.

Food's terrible to boot.

Recently left Heroku, too many failures. The last week I had my app on Heroku availability was in the realm of ~60-80%.

Between that and the obscenely slow and overpriced Postgres...nope.

(Clojure user, I don't think Heroku's platform plays nice with things that take a bit to fire up. Or the JVM in general.)

They're not saturated yet.

DO's CPU performance has generally been worse than Linode's in benchmarks and that was before the recent Linode upgrade so they're probably even further behind now.

It's not that DO is good, it's that SoftLayer is terrible. Don't use SoftLayer as a benchmark for anything but wasting your money.

Also these kinds of blog posts are a waste of time.

http://serverbear.com/

It's not as good as Python yet but rapidly getting better.

There's an excellent SQL abstraction library (Korma), Ring makes for a nice WSGI equivalent, Compojure and Clabango combined give you a Flask'ish experience, and there are a goodly number of Forms and validation libraries.

Some like to use CLJS on the frontend. There are libraries out there for making that nice.

I usually use vanilla jQuery or Angular on the frontend, no CLJS.

You need get more specific with your queries, I'm not going to write a novel at the merest hint.

I use DigitalOcean but this is silly.

1. SoftLayer is well known for being over-priced.

2. They have a startup program you can use to get like $10k in credits.

3. DigitalOcean isn't anywhere near saturated. Remember the golden days of EC2? It'll quickly deteriorate.

4. You don't use dedis exclusively for the "bang per buck", you use them for the peace of mind and knowing your I/O isn't going to plummet by 3/4s because a new subscriber landed on your node, thereby fucking your database to hell.

5. I want dedis from DigitalOcean.

6. Don't use multi-cast ElasticSearch clusters on DigitalOcean.

More powerful language (primitives, concision, macros), more performance (JVM fun-ness).

Some aspects of the JVM (slow-start) are icky but the tooling works around it (in-runtime auto-reload without restarting the JVM).

I'm a grumpy old CL'er so I was waiting for something like Clojure to come along anyway.

The beauty of concurrency in Clojure:

; Rough sketch: def defines a var (pretend it's a reference)

; @ is used to dereference the future and block to wait for the result.

  (def f 
    (future 
      (Thread/sleep 10000) (println "done") 100))

  user=> @f
  done
  100

  ;; Dereferencing again will return the already calculated value.
  => @f
  100
http://clojuredocs.org/clojure_core/clojure.core/future

Edit: And more importantly, there are wrappers for the standard data structures designed around different concurrency use-cases (sync, async, coordinated, uncoordinated)

Refs are for Coordinated Synchronous access to Many Identities".

Atoms are for Uncoordinated synchronous access to a single Identity.

Agents are for Uncoordinated asynchronous access to a single Identity.

Vars are for thread local isolated identities with a shared default value.

http://stackoverflow.com/questions/9132346/clojure-differenc...

And you can use all (all!) of the Java concurrency tooling as desired, including raw threads (for which Clojure has a wrapper as well).

Part of the reason I use Clojure rather than Go is because it doesn't try to force you into a one-size-fits-all method for handling concurrency. I have no problem with CSP but it doesn't fit everything I do. Sometimes I just want to defer work or wrap it in a future. Or I want to use an intelligent coordinated data structure rather than trying to meld flesh and bone to steel in order to make a concurrency-naive data structure behave how I want in a concurrent environ.

If I can avoid those unnecessary battles, I will.

So - Clojure.

I prefer Clojure/Ring if I'm going to be doing web stuff on the JVM, but if I had to pick between those two, I'd go with Play. I don't think either is a terrible choice though.

Bodil Stokke is a good person to follow in general (on Github and Twitter) if you're into Clojure.

The name made me chuckle.

The Hindley-Milner actually makes seeing where the type system comes in a little difficult with these examples.

Hopefully see more code soon.

Pretty hard to "get to that point" when your editor isn't programmable.

Which goes back to my original point.

Seen lots of IDEs and editors come and go. Nothing new here, just more polish than the last guy.

>doesn't address what Sublime is missing at all.

Being a fully programmable work environment.

Edit: I used ST2 for about a month. The Python was neat but it's going to fade away eventually.

"Turbo shots" or "red eyes" in your coffee are a placebo btw. Espresso has a lower concentration of caffeine than standard drip. So by putting a "turbo shot" in your cup, you're actually lowering the caffeine concentration.

Wants to be hyper-rational and metric-aware about his sleep but didn't know anything about caffeine?

Okay.

Someday I will understand how corporate blogs break so often. [1]

[1] Has written multiple CMSs that get used on mid-to-high traffic properties.