HNHacker News
TopNewBestAskShowJobs

dhkl

95 karma · joined December 3, 2011

[ my public key: https://keybase.io/dhl; my proof: https://keybase.io/dhl/sigs/zHITCNSb-MrgaXZo9rtX88gxtwvKDP1__8TI9VWadow ]
submissionscomments
dhkl··on Multi-node TimescaleDB is now free
Very happy to see Timescale making more features available in the community edition.

We first started evaluating time series databases a month or two ago, some features like continuous aggregation (rollups) were enterprise only. Perhaps their strategy is to drive adoption and letting people try their feature out, hoping that some of these adoptors will end up using their managed solution. I checked their pricing, and the delta between their pricing and the underlying AWS instance seems quite reasonable.

We ended up testing Influx first, because it seems to be a safe choice with wider adoption and extensive documentation.

With Influx, it was very easy to put together a prototype quickly. But once we started throwing some real workload at it, it would lose writes under load. But it makes sense that it failed, because according to Influx's documentation (https://docs.influxdata.com/influxdb/v1.8/guides/hardware_si...), we would need cluster to make it work. Influx is very transparent in their documentation that writes and queries will fail immediately when a server is unavailable without cluster.

This isn't to say that Influx wouldn't work for other use cases. But at least in our use case, their open source offering isn't suitable for us, and it's unclear how much better the cluster version is.

Timescale, on the other hand, was able to handle the same workload under stress. As we are unable to backfill some of the ingressing data, it's quite vital that the system can degrade more gracefully.

For my use case, one feature that still need some work in Timescale is their real time aggregation. It is currently impossible to define a rollup on top of another rollup, which means that if you are ingesting a lot of data into the raw table, and you down sample into a wide time bucket (e.g. a day, or week), queries against these wider buckets will potentially ended up having to query a lot of data points, slowing the system down considerably. Granted, it is a new feature that just got released about a month ago. Hopefully, with multi-node nearing completion, continuous aggregation will get a bit more love.

I spoke with their engineers about this over Slack, and their suggestion was to manually modify the rollup materialized view to aggregate over a combination of the materialized buckets (currently handled by the continuous aggregation) + real time aggregation from a higher resolution bucket.

We are still testing out Timescale, of course. But so far, it's been holding up its end of the bargain. The fact that Timescale is "just an extension" built for Postgres also makes it a less risky choice and offers a lot of flexibility; if Timescale doesn't work out, we could still work with Postgres, and that IMHO is a very nice thing.

dhkl··on Poll: Which hosting provider do you use?
Same here. We're on their catalyst program.
dhkl··on Lisp Prolog and Evolution
Slides and videos aren't available at this point. But he is presenting this again at Web Rebels.

https://twitter.com/swannodette/status/336816354868989953

dhkl··on Lisp Prolog and Evolution
I'm also hunting for video and slides. No luck so far.
dhkl··on Lisp Prolog and Evolution
When I first learned about Prolog in AI class, the first thing that struct me was how beautiful Prolog/logic programming solutions are.

In non-declarative languages like Java, you have to build up the different pieces of computations, while you keep maintaining a mental picture of how the various pieces fit together.

In Prolog, you declare the entities and the relationships/constraints between them, and the system will build the solution for you through inference.

David Nolen has done some awesome work writing the core.logic[1] library, which makes those Prolog gooodies accessible to Clojure programmers.

-- [1] https://github.com/clojure/core.logic

dhkl··on Why Lisp Did Not and Never Will Gain Enough Traction
I find Clojure Programming (http://www.clojurebook.com/) to be an easy and practical introduction of the language. It often compare and contrast the Clojure way of doing things vs scripting languages like Ruby. After that, Joy of Clojure (http://joyofclojure.com/) dives deep into the whys of the language. Even though it was written against Clojure 1.2, it covers advanced topics like continuation passing style that were left out of Clojure Programming.
dhkl··on Why Lisp Did Not and Never Will Gain Enough Traction
I've found the Clojure community at large to be well reasoned in general and very intelligent. KirinDave's posts may be a little hot, but I think it is a sign of growth for Clojure. Ruby/Rails also had (has? ;-) ) a problem with smugness as it was gathering rabid following. Let's hope that this is a sign that Clojure is also building up a gathering of all sorts of interesting characters :-)
dhkl··on Why Lisp Did Not and Never Will Gain Enough Traction
> I am surprised a Clojure programmer would have much respect for Rails. Its aggressive share-nothing approach leads to inconsistency, poor performance, awkward architectures, and over-reliance on external state management.

When evaluating what tool to use for a project, there are many things to take into account other than the technical superiority of the tools. Relevance Inc, one of the strongest backer of Clojure, still make use of Rails for client projects. Rails' huge web dev ecosystem really made many common tasks as simple as importing a gem here and there and making a few method calls. It all comes down to the right tool for the right job. I'm interested in your take on how Rails' "share-nothing approach", awkward architectures etc.

> Clojure has all the power of Ruby's dynamism

Yes, and then some. Without repeating what you have already said, I would add efficient persistent data structure to the Clojure's list of awesome tricks. Doing functional programming in ruby and python, for example, will force you to trade value immutability with efficiency -- a penalty that one does not have to pay in Clojure.

Clojure is definitely gathering a lot of following. Like many others, I have picked it up, played with it, and never looked back.

But going back to what was said before. Yes, Clojure is awesome. No, Clojure is not obsoleting Ruby or Python any more than those obsoleted PHP, at least not now.

dhkl··on Why Lisp Did Not and Never Will Gain Enough Traction
> by and large Clojure basically obsoletes Ruby and Python

Care to qualify how Clojure obsoletes Ruby or Python? Both of those languages have great tools (rails, for example) that those in the Clojure communities have great respect for. As a Clojure and Ruby/Rails programmer, I share your enthusiasm for Clojure and lisp, but I can't see Clojure pushing either Ruby or Python out of the water any time soon.

dhkl··on Why Lisp Did Not and Never Will Gain Enough Traction
The parentheses may seem like a disaster at first, but one can quickly learn to use and abuse them.

Also, there is great support from lisp-friendly editors to handle parentheses management (e.g. paredit for emacs http://emacswiki.org/emacs/ParEdit).

dhkl··on How AngularJS helped us ship our mobile site quicker - Part 1 (Directives)
Since 1.0.0rc1 that was released 5 months ago (1.0.0 went gold 2 months ago), the custom attributes used for by AngularJS can be turned into valid html5 attributes by prepending the "ng-*" AngularJS attributes with "data-". For example,

  <html ng-app>
can be turned into a valid attribute by making it

  <html data-ng-app>
I'm really glad to see how quickly the AngularJS team is addressing concerns like these. AngularJS is moving very fast, and there is a lot of room for improvements in documentation. But a quick check with the changelog would have showed that AngularJS supports the use of valid custom attributes for directives almost half a year ago.
dhkl··on On Fitness
For me, the best take-away from the post is this one line:

"I didn’t care how much I ran, as long as I went out and did it."

I have seen many people starting a new exercise regime (among other things) by trying too hard and expecting quick results, and that leads to the inevitable burn out that most people experience soon enough. I've been there.

Whether it's learning a new programming language or getting fit, it's more important to keep at doing it each day than to focus only on beating yesterday's record.

Tomorrow, I'm going to put on my running shoes and go out to run. I don't care how much I can run, but I'm going to time myself for record keeping, and I'm just going to feel good that I did it :-)

dhkl··on Why we are taking our startup to Hong Kong and other crazy stories of 2011
The Hong Kong Basic Law stipulates that it will have high degree of autonomy at least 50 years after its transfer to Chinese rule. (ref http://en.wikipedia.org/wiki/Hong_Kong)

The Hong Kong Telecommunity Authority is, therefore, not required to implement the GFW.

Even in China, there are some GFW-free spots. You might find some 5-star hotels giving you unrestricted access to the likes of Facebook, Google+ etc

dhkl··on Why we are taking our startup to Hong Kong and other crazy stories of 2011
Is the group still active? My request's been on pending for a while now :-(
dhkl··on Why we are taking our startup to Hong Kong and other crazy stories of 2011
Hong Kong has several vibrant, English-speaking startup/hacker communities where people are passionate about building stuff and making things work.

Some notable communities to checkout:

http://codeaholics.hk/ - Technology agnostic programming community

http://www.startupshk.com/ - A tight-knit startup community

http://boot.hk/ - A great gathering place for hackers and builders.

See you in Hong Kong!

dhkl··on Why programmers work at night
"Because being tired makes us better coders. [...] Similar to the ballmer peak, being tired can make us focus better simply because when your brain is tired it has to focus! There isn’t enough left-over brainpower to afford losing concentration."

Couldn't agree more. I find it easier to design complicated algorithm/architecture at night than I do during the day, even when I'm fully reseted and without distraction.

dhkl··on WebFaction: app memory quota upgraded to 256MB for everyone
This is a good and necessary move for the WebFaction guys. I had a basic shared hosting account with them, and with 80MB of memory, you will run out of memory quite quickly if you run an app framework like Ruby on Rails.
dhkl··on Microsoft decides to automatically update Internet Explorer for everyone
Perhaps one of the reason why people are still capable of getting an acceptable Internet experience from IE 6 and 7 is because Flash 10 (and 11 for IE 7) supports them.

Thank goodness that there is a strong traction behind HTML5 stack, and the industry as a whole is less reliant on Flash to deliver good UX.

Without Flash, the capability of these older browsers will be reduced, and I'm sure they will get abandoned at an even higher rate.

dhkl··on Microsoft decides to automatically update Internet Explorer for everyone
I worked for a Mainland Chinese manufacturing company for a while, and they run all their desktops on Windows 2000. They have several applications that targets IE only, and will not run (properly) on other modern browsers such as Firefox or Chrome.

What I have found is that the IT guys in China compile many "recovery disk" with a pirated copy of Windows that people use to reinstall their OS. A lot of these disks are XP-based, but more people are running Window 7 now.

Lastly, several Chinese companies have developed their own version of browsers. I haven't really looked into what kind of rendering engine they run, but they appear to be some kind of rebranded IE. Does anyone have the scoop on this?

dhkl··on The Milky Way's black hole may spring to life in 2013
I was thinking of the exact same thing.

It's ironic when a piece of writing tries to present you with factual information begins with a deceiving title, all in the name of attention grabbing.