HNHacker News
TopNewBestAskShowJobs

buckie

326 karma · joined May 27, 2014

submissionscomments
buckie··on 153k Ether Stolen in Parity Multi-Sig Attack
It's closest to the middle, assuming that you meant that you're stating the properties that you want to test. It does more than that, but at its base that's effectively how it works so it's close enough for a solid intuition. We're working on a paper about it now -- or at least a sub-paper in the clutch of papers that pertain to a public chain version -- that I'll link to when it's out (a couple weeks probably).
buckie··on 153k Ether Stolen in Parity Multi-Sig Attack
> Not just proof of "design", but proof of the implementation.

Absolutely, few people really get this. Even those that do get it generally don't know what it looks like in practice because it's so rare.

In case you're curious about what it looks like in practice (at least one way), we presented direct user code compilation and verification[1] in Jan for our smart contract language Pact[2].

The idea that you can write a doc test that triggers a formal verification about some aspect of your code is, for lack of a better term, strange and yet the power to weight ratio is just off the charts. For the first few days that the system started working (I built the FV portion, Stuart the language + H-M type system) I thought it was broken... turned out we just had a bug in our demo code that we never noticed.

Usually, tests check the things you know to check so when they find something it's not a surprise what they find. Sometimes you can fuzz and randomly find something, which is cool but doesn't guarantee that there isn't a problem somewhere else. However, FV just feels uncanny (as a dev) because the test either finds a problem in the code -- and tells you how to replicate the bug -- OR proves that a problem cannot exist.

[1]: https://youtu.be/Nw1glriQYP8?t=1071

[2]: kadena.io/pact

buckie··on Bitcoin Is Having a Civil War as It Enters a Critical Month
I think this is the problem or at least what permits what we're seeing. If coin holders had to choose a side for their coins to be found on I bet things would be rather different. However, this is in no one's financial interest.

Right now, the risk isn't that high as the worst case (added uncertainty breaks bitcoin completely) is very unlikely. Instead, (a) one side wins you still have the same amount of coins or (b) both sides win and you probably have +2x the value long term.

buckie··on Bitcoin Is Having a Civil War as It Enters a Critical Month
I think they mean that a blockchain doesn't exist in a vacuum, someone has to write the code. While anyone can write a new client/protocol upgrade people won't upgrade to just anyone's new client given how much value Bitcoin represents.

No one has hard-control over bitcoin, but the leading dev group has some manner of soft/non-coercive control (by momentum alone).

buckie··on Blockchains are the new Linux, not the new Internet
> A contract language has nothing to do with blockchains.

In a strict sense, you're right. All a smart contract language needs to run is a linear set of inputs. However, they have a lot less utility without the other parts of a blockchain (distributed, crypto-data structure for assurance, etc.). If you don't care about being distributed, just use an API or run the external code in a container/vm.

> they refuse to abide by the decision by retroactively modifying the interpreter to interpret the contract in their favor. And why wouldn't they?

While I don't agree with the hard-fork decision, I understand (from a biz POV) why they did it. They didn't have too many options. Either hard fork or let the "hacker" collect the prize. IMO this lack of options was a failure of the EVM and solidity language itself.

While the DAO debacle had a bunch of causes but the main problems, from a language point of view, were: (a) centralized governance (upgrading/migrating) of a live contract isn't a first class citizen in solidity, (b) there's no distributed governance mechanism at all, (c) formal verification of solidity contracts is still years away.

Pact has (a) already and we'll be upgrading it to handle (b) as well next month (via a weighted vote mechanism). Either of these would have at least been able to mitigate the impact of DAO's issues -- just upgrade the contract and migrate the table the contract is guarding. Pact also has (c): https://youtu.be/Nw1glriQYP8?t=1072

buckie··on Blockchains are the new Linux, not the new Internet
If you're thinking about the EVM's take what smart contracts should look like then you're 100% right. General, replicated computation is a good first step but a poor idea long term.

Blockchains, both public and private, are really just distributed DB's. You wouldn't fold a protein or price an option in your DB, you'd use some external system and save the results to the DB. The same line of reasoning goes for blockchains.

This is why we made our own language from scratch -- Pact is a bit like regular SQL + procedural SQL + programmable auth. It's not Turing complete and can compile to Z3 for formal verification. Given that every execution is a transaction, and it's interfacing with a normal DB, it's performance bottleneck is are the underlying DB itself.

buckie··on Blockchains are the new Linux, not the new Internet
tl;dr -- private blockchains make it possible to distribute a common piece of infrastructure between businesses with competing interests. The sit between the stream of new inputs and the database.

I've built one of these types of systems (kadena.io). The key differences between a replicated DB, though let's use consul instead because it's closer to a private/permissioned blockchain (distributed) and the differences are the same, are two-fold:

#1 They are designed to run in a multi-administrative context (i.e. where you don't own all the servers). Imagine running consul where you only had direct access to 20% of the nodes. You could do it, but you'll eventually have problems as it's possible for a few misconfigured servers to slow/halt/collapse the cluster. The problem is that in multi-admin you can't directly fix the troublesome servers. The system itself needs to be robust against them -- you need BFT consensus (for this and other reasons).

#2 The killer feature of private blockchains is having a smart contract language. It allows you to write and run code that runs on my servers without me having to trust/audit your code. This is only possible because of the frankly ridiculous level of security that the system provides. It is also a fundamentally new feature. For a new language that's actually appropriate for serious work (which EVM-based langs are not) take a look at Pact on the aforementioned site.

Simply, if you want to be able to host logic and data, with the infrastructure distributed among multiple administrative units (businesses/firms) that don't completely trust each other, then you end up building a "private blockchain". You need a decentralized way to replicate new information (consensus), that is robust against bad nodes (BFT), that linearizes the new information (blockchain-like), that can execute logic on your machine written by individuals that you don't trust (smart contracts), that tracks/enforces auth at every level (PPK-Sigs everywhere!).

buckie··on Inventor who built an Iron Man-style flight suit has flown it at TED
I'm pretty sure they are JetCat RC engines (based on the purple cowling): http://www.dreamworksrc.com/catalog/Jetcat-Engines
buckie··on PostgREST – A fully RESTful API from any existing PostgreSQL database
Nothing. I honestly have no idea what they're talking about. Haskell apps tend to be tanks once they're deployed. The only issue I've ever seen was a Haskell app getting OOMed because the dev box only had 8GB of RAM and someone deployed some data science infra to the box sometime later (which needed >8GB RAM). I think this statement is more accurate:

> "Problem: There is the PostgREST written in Haskell, not in Go"

Moreover, if you want to use something like PostgREST but need to extend it, and don't know Haskell, this is a completely legitimate problem. While I'm all for competing implementations, the pREST author's claim for why it's needed is inaccurate.

buckie··on 1.1B Taxi Rides on Kdb+/q and 4 Xeon Phi CPUs
While I agree that it's possible to write maintainable in kdb+, I'd argue that it takes noticeably more effort; or, as in inverse, if you drop your coding standards things get worse faster. I'd say the same for regex as well (though in a more limited sense).

The "characters to clever/unmaintainable" ratios you achieve with k (which most kdb+ platforms end up reaching for at some point) are almost unparalleled. A famous example of how awesome/powerful/ridiculous k can be is the "4 lines of K" text editor: http://www.kparc.com/$/edit.k

I guess my point is that letting your guard down, for even a single line, can be orders of magnitude more trouble than it would be in most languages and for that reason I wouldn't base a new stack on it. Also, the developers for it are rare-ish and expensive + it has a serious learning curve for those unfamiliar with FP or Lisp.

buckie··on 1.1B Taxi Rides on Kdb+/q and 4 Xeon Phi CPUs
In my experience, kdb+'s k and q (which is broadly speaking a legibility wrapper around k, which again broadly speaking is APL without unicode) are phenomenally fast for dense time series datasets. Though they can struggle (relatively, still pretty fast) with sparse data that's not really what they are built for. They were built for high-performance trading systems, and trading data is dense.

If you like writing dense, clever regexs (which I do) then you'll love k & q. The amount that you can get done with just a few characters is unparalleled.

Which leads to, IMHO, their main drawback: k/q (like clever regexes) are often write-only code. Picking up another's codebase or even your own after some time has passed can be very hard/impossible because of how mindbendingly dense with logic the code it. Even if they were the best choice for a given domain, I'd try to steer clear of using them for anything other then exploratory work that doesn't need to be maintained.

buckie··on Measuring GC latencies in Haskell, OCaml, Racket
Also, `ByteString` as the qualified name is a bit unusual but it probably is helpful for clarifying what's going on for people unfamiliar with Haskell. I'm more used to seeing:

    import Data.ByteString (ByteString)
    import qualified Data.ByteString as BS
    import qualified Data.ByesString.Lazy as BSL
    import qualified Data.ByteString.Char8 as BSC
buckie··on The States That College Graduates Are Most Likely to Leave
> People who grew up in one state, went to college in another and then moved somewhere else are counted as migrating from the state where they attended college.

I suspect that may have something to do with it. Maybe Vermont has more initially out-of-state college students, or they represent a higher relative proportion? Also, keep in mind that NH is 2x the population of VT and is close to a major metro area (Boston, ~1hr away). I have friends that live in Southern NH and commute to northern regions of Boston for work.

I'd like to see a 20-year later study that looks into the number of people that went to VT for school (from out of state), went to another state for a career (not a huge number of options in VT) and returned late. Everyone I know that went to school there wants to do this; they love the place but couldn't find a non-service/tourism job post-graduation.

buckie··on Goldman Sachs Drops Out of R3 Blockchain Group
Maybe, our system gets 8k-12k transactions per second with full replication + crypto up to a few thousand consensus nodes (slows down around 4k nodes). That type of performance opens up a lot of potential applications.

As for "a horseless carriage with a horse" perhaps, we'll see. These systems do give you something that you can't get otherwise which is a distributed DB that you can share with competitors without worrying about them stealing from you/breaking it. Blockchain is to overloaded right now, but it's the name that has stuck likely because "a Byzantine-Fault-Tolerant Consensus database" (BFTCDB) is just too impenetrable. If one of these BFTCDB take off, if may not actually be a blockchain (though I suspect it will be because cryptographic data structures are just too useful for them) but I bet it will be called one.

But that the end of the day, that's what a permissioned blockchain is -- a DB you can share, which is a seriously new capability.

buckie··on Goldman Sachs Drops Out of R3 Blockchain Group
I did, though I can't edit it now sadly. And it's not that TLS isn't secure but about what features TLS gives the system.

The gist of this is that TLS doesn't give one a durable/persistable form of security vs ppk-sig's ability to verify that x signed y at any time. TLS is much faster than verifying the sig with every transaction on every node but after, say, a cluster restart the question of "who sent x" is answered via consensus and not cryptography.

There are a couple other issues too. Using ppk-sigs means that the mail clerk and the CEO use different keys to sign transactions vs TLS where you'd either have a logical "from:" field or a different connection for different users. Both of the TLS solutions have rather obvious flaws. Finally, a TLS based approach puts an attacker 1 server away from impersonating, potentially, an entire organization because the system using TLS cares only that it came via the correct pipe.

Overall I'd describe systems using TLS as not being paranoid enough about who authored a transaction, as PBFT/SmartBFT are by default very trusting of a client's transactions vs Bitcoin's model where everything is to be questioned/require independently verifiable cryptographic proof. Hence the tradeoff.

buckie··on Goldman Sachs Drops Out of R3 Blockchain Group
Pact[1], the language we've built, has the idea of an `admin keyset` that enables admins with the right number of signatures from the right number of keys to migrate contracts. Our approach is rather different from the EVM's as smart contracts interact with/guard a table in a DB (think stored procedures accessing a table) and the system has modules.

This way, if a bug is found, the admin can update the smart contract module guarding the DB table directly vs having to track down the on-chain contracts for migration (if it's even possible). From a normal user's pov, they don't see a difference (unless the admin decides to change the namespace or something).

It's a subtle but important difference. When someone using Pact sends the transaction `(payments.transfer "me" "you" <amt>)` the transaction (after doing a bunch of auth with ppk-sigs) looks up the `payments.transfer` command from the on-chain smart contract and executes it with the provided args. As such, the admin can update buggy contracts without issue (and roll-back, fix tables that have bad data).

[1]: http://kadena.io/pact/

buckie··on Goldman Sachs Drops Out of R3 Blockchain Group
I'd say there are a few ways to think about blockchain's utility in private contexts (public chains are pretty different because of their ability to allow for anonymous participation). The two best ones are the intra- and inter-organization use cases.

For intra-organization, one way to view private blockchains is to look back to the days of mainframes and the shift to databases. While you technically never need a DB and can get things done with code, DB's are incredibly useful as a general utility because of the baseline features you get by using one. Private blockchains are similar, in that they give you some new features (e.g. sharable DBs) and are much easier to build with as they raise the baseline on how bad a solution can be that is built with them.

While you can have a pretty messed up DB schema, bespoke mainframe solutions can be much worse. Private blockchains are like that (especially when they have smart contracts) -- sure you can really mess up the systems setup but issues that DB's can have like high availability and disaster recovery are 100% commoditized. Also, they demand a higher bar for authorization making them generally as more robust the most hardened DB by default.

That isn't to say that a private blockchain will replace the DB as blockchains can be wild overkill for many domains. A small company that needs a DB doesn't need a blockchain's feature set, but a large company that needs a globally distributed DB for holding a ledger (of anything) would be well served by one. When you're working with a system that by default is BFT, incredibly paranoid about authorization, perfectly replicated and highly available then build a solution gets much easier.

As for the specific problem that they solve, it's the settlement problem: organizations currently hold internal ledgers of truth about what they own but they can't inherently trust other organizations' ledgers of truth about what they own, so we need 3rd parties to settle cross-ledger. Currently, institutions handle this role but private blockchains represent an algorithmic solution.

buckie··on Goldman Sachs Drops Out of R3 Blockchain Group
Smart contracts definitely have a tradeoff between new toolset/languages vs infrastructure level features. With smart contracts, anyone can write code for the chain vs the "write your application to be deterministic" approach where new code needs to be at a minimum vetted by some central org/group, though they're usually written by the vendor/provider/etc. Each has its strengths/use-cases. For inter-org I prefer the smart contract approach vs the intra-org can see the benefit of using regular code -- it's not like you're worried about malicious code in the intra-org case. I do think that smart contracts increase the utility overall (sorta like having SQL for a DB > not) and improve its reliability (accidentally non-deterministic code can be a bit worrying).

As for Tendermint BFT, it's one of the few that somehow I never got to dig into at JPM. Do you know if Tendermint BFT's performance & performance-vs-scale numbers are published? These are notoriously hard to come by and I'm always curious for more data-points on the matter.

buckie··on Goldman Sachs Drops Out of R3 Blockchain Group
I can't say I'm all that surprised. R3 serves as both an R&D lab and a place to connect vendors and potential clients. Moreover, the focus is on private/permissioned blockchain tech. The tech in this space is still quite immature overall and pretty much everyone has had a hard time building actual blockchain infrastructure vs things that are sorta like a blockchain. If you can't show clients value for their membership in R3 (because the tech's not there) then what's the value of staying a member (especially if you've seen all the vendors in their portfolio already) vs rejoining when things change? This isn't R3's fault of course, as I think the tech in this space is just getting started and they're in a great place to help it along; members will come and go.

I spent a year investigating blockchain applications for JPM so I've seen most of the permissioned blockchain solutions that are out there. Unfortunately, none of the solutions I saw were real blockchains. The more technical groups in banks (which GS has) surely realize this as well. The solutions I've seen consistently lack at least one of the following necessary features:

- Fast, Deterministic BFT Consensus (mining doesn't work as intended in private contexts[1])

- Smart Contracts (you need a deterministic language)

- Signed Transactions (TLS based authentication trades security & audibility for speed)

- Cryptographic data structure for transaction storage

There are other features you need, but these are the big distinguishers I noticed. While technically you don't even need smart contracts or fast BFT consensus, I believe the tech isn't useful enough to justify the migration costs without them.

Disclaimer: I'm a founder in the private blockchain space[2] and founded specifically to make an infrastructure that addresses these issues.

[1]: http://kadena.io/blog/MiningInPrivate.html [2]: http://kadena.io

buckie··on How Blockchain Will Change Your Life
Well, it depends what you really want out of the system. I'd argue that generalized computation is inappropriate for a permissioned blockchain. For a public blockchain, sure, though I'd still not go with Ethereum for a bunch of reasons (e.g. it's compiled so when you find a compiler bug you need to upgrade all of the contracts vs upgrade the interpreter, because it's a pita to develop in, etc...) EVM was a great first step, but like all first steps it is in need of iteration.

Also, I would note that "with a consensus protocol" is very, very tricky... well if you want BFT anyways. Rolling your own consensus is on the order of difficulty of rolling your own crytpo -- this is experts only, don't do it. It's not quite as difficult as crypto but you still need to formally prove it which is very hard. We didn't make our own consensus, instead we used Raft for consensus and figured out how to make it BFT which is hard but nowhere near as hard as making consensus from scratch.

Here's my off-the-cuff guide to figuring out if you want a blockchain and what properties it needs:

Do you want a distributed DB?

* No -> postgres.

* Yes -> you need consensus of some fashion.

Will some nodes for the DB be hosted by competitors in your space?

* No -> You don't need BFT, use hashicorp's stuff.

* Yes -> You need BFT, welcome to "I need a blockchain" territory

Will competitors be able to directly write logic that will run on the system?

* No -> regular language is fine

* Yes -> you need a smart contract language to write in

What type of scaling and performance do you need?

* 3-100 nodes + high performance -> PBFT/SmartBFT for consensus is fine, but keep in mind that if you ever need to scale beyond this you're screwed (maybe you can get to 200 but I doubt it).

* 100-10k nodes + high performance -> email us at info@kadena.io, we're literally the only ones able to do this currently

* +100 nodes + low performance -> Mining based consensus could work, but you need to lock it down and centralize pending transactions a bit to avoid incentivization issues.

* >10k nodes + high performance -> wait 5 years, maybe someone will figure it out.

What do you need to do with the chain?

* track allocation of things/conserve mass -> no need for a smart contract language, adapt a bitcoin approach

* conserve mass + run logic -> you need some type of language, though maybe not a smart contract class one

Assuming you need to run logic...

* and don't need BFT -> glue python/whatever onto consul, be careful to only write deterministic code

* need BFT, and want to be able to fold proteins -> use EVM (though I'd recommend rethinking your approach... why should you replicate massive computations like this?)

* need BFT, and want the system to work a lot like a very paranoid DB -> email us

buckie··on How Blockchain Will Change Your Life
Of course. If Bitcoin dropped the number of transactions per block to 1 tomorrow would it stop being a blockchain?
buckie··on How Blockchain Will Change Your Life
For the case(s) you've mentioned, you are correct: the state that is built up disappears on error.

However, when last I checked, there are several operations that fall outside of this guarantee, e.g. new account creation, that are not rolled back on error. This would be as easy fix but to my knowledge is still unaddressed. Hopefully, they've changed this and if they have please let me know.

Edit: I stand corrected, thanks!

buckie··on How Blockchain Will Change Your Life
Yeah, sounds interesting. Ping us at info@kadena.io so we can chat more/keep in touch.

Pact should be O/S Sunday or Monday, we're putting the finishing touches on the web editor now and the Atom plugin is already out there[1] though without a binary to run alongside it there's not much to see.

[1]: https://atom.io/packages/language-pact

buckie··on How Blockchain Will Change Your Life
The blockchains we're discussing here are about uniform replication & inter-node agreement, so constant performance is as the system scales is the goal. Our implementation of ScalableBFT runs at 8k-12k transactions per second, not 5-15 tps, and it maintains this performance as cluster size increases (up to some limit, we haven't managed to test it past the limit yet and think it's around 5k-15k nodes).

The other deterministic BFT systems like PBFT and SmartBFT are a little bit faster for small cluster sizes but slow down for every added node, encountering full system locks before 256 nodes. It's worth noting that these systems generally do not do pubkey sig verification on every command, instead relying on consensus and direct replication via TLS for authorship guarantees. The drawback, of course, is that an attacker is one server (the client's TLS server) away from inputting fake commands that the system deems real + smart contract authority is handled logically and not cryptographically... we see the CEO and the Mail Clerk having different keys to be a huge benefit from a Bitcoin-like approach.

This makes the bottleneck for us crypto-verification. Verifying 8k-12k signatures per seconds is pretty tricky if you don't skimp out on the crypto, which a lot of vendors are doing in the name of speed.

buckie··on How Blockchain Will Change Your Life
We're focused on private deployments currently but are playing with the idea of a public chain. The issue is that it would look so different from what people are used to that we're having a hard time with the monetization strategy/figuring out what people would use it for.

For one, there's no Mining so what's the meaning of the initial coins? Also, it'd be much closer to an AWS Lambda + Stripe/Ripple than anything else which makes fee structures tricky. The big reason is that we would run all of the nodes ourselves because our core IP is ScalableBFT and we think that's the most valuable bit.

It's the first/only deterministic BFT Consensus that can scale into the 1000's of nodes + maintain constant performance as it scales. Being a bit of a breakthrough, we are keeping the protocol and its implementation proprietary.

buckie··on How Blockchain Will Change Your Life
Before I founded a company[1] in this space I investigated blockchain applications for JPM and I agree with your take on bitcoin-style blockchains being mostly BS for industry. I'd take it a step further to note that mining is incompatible with private blockchains of any form because the new coins+fees incentive structure doesn't exist.

Permissioned/Private Blockchains don't need to look like Bitcoin, they just need to offer many of the same features plus a few more. What we're really talking about is a database that competitors can share, which is largely inspired by Bitcoin's system. Some things it needs to actually work:

- Vastly increased performance: 5-15 transactions per second is useless for industrial use.

- Smart Contract languages designed for safety over generality: more of an empowered SQL than a C/Go. Tokenization doesn't provide enough of a benefit over traditional approaches and generalized computation is too dangerous.

- Deterministic BFT Consensus: this is to replace mining + remove anonymous participation, it needs to be fast and scale.

- Confidential transaction support: the trickiest of the lot, as we cannot currently hit performance + double-spend protection at once.

In case you're curious what our approach is: BFT Raft-like for consensus (8k-12k trans/sec), soon to be open sourced smart contract language, signal protocol over the chain for confidential stuff.

[1]: http://kadena.io

buckie··on Krypton Abandons Ethereum-Based Blockchain After 51% Attack
I've been working in the permissioned blockchain space for a couple years now, even OSed a POC of a raft based system we tested out at JPM in march. It is truly scary how little most people focused on blockchain understand about consensus. Some get it, but most don't.

When I was doing vendor vetting the talk usually revolved around the "blockchain revolution" but glossed over over the consensus issues. In the permissioned blockchain space, mining is really not an option (how do the incentives for mining work when there are no coins involved?). Luckily, we have a lot more flexibility in the consensus system we can pick.

Moreover, the term "blockchain" itself is ill-defined/overloaded. If all blockchains use mining then the 51% issue is ever present (though if I remember correctly problems arise at 30-ish%). If the broader "BFT consensus" definition is used then no, you can use PBFT/SmartBFT and a host of others to come to consensus without ever needing to touch crypto let alone mining. The issue, of course, is that Mining-based consensus is the only system that works for truly public blockchains, as it allows for anonymous participation at all levels and can also scale flat.

If anyone else is a consensus nerd, I wrote a technical-biz-persone level white paper on permissioned blockchains that goes into more depth and covers the issues associated with using TLS vs PPK sigs [1].

[0]: http://github.com/kadena-io/juno

[1]: http://kadena.io/docs/Kadena-ConsensusWhitePaper-Aug2016.pdf

buckie··on Byzantine Fault Tolerant Raft With Smart Contracts
Author of Juno here -- surprised to see this on here at all given that I didn't tell anyone that it went open (was saving it for tomorrow). I'm losing out on all this sweet sweet karma </s>.

Anyway, to your question (carter focuses on the smart contract language, not the consensus layer): This is actually a semi-normal/expected thing in the case of a network partition. Say one node gets cut off, transitions to a candidate and achieves some high term (but potentially has an out of date log index). When it comes back online/partition ends, it will start spamming the rest of the cluster requesting votes.

What protects the rest from this or other faults is a combo of signed RPC's and extra logic (i.e. lazy votes). With sigs, chatter from someone who you don't have the key for (or invalid msgs generally) just get dropped + authorship is verified (Follower can't pretend to be some other node). With lazy votes the portion of the cluster in a good state basically chills (stays in same state, doesn't vote) until the Followers hit an election timeout (AE clears the lazy vote).

Of course you can still DoS the NIC or Haskell server, but the important thing to note is that this isn't meant for a public-facing deployment. It's designed for an internal network -or- inter-corp via leased lines/secured pipes setup. That's the whole point of Juno really... for enterprise applications bitcoin-class tech gives you more features than you need (at the cost of performance).

Tangaroa was a great first step, but we have internal fixes for a number of cases it didn't cover, issues caused by incomplete implementations and (I think) some novel ideas to give back... but I'm still finishing the paper on the enhanced/new (not sure what the line for that is) protocol and its implementation so it didn't make the cut for this release.

buckie··on Pokemon or Big Data?
Lots of fun, though don't miss the comments. Some are gold:

> Tokutek claim to improve MongoDB performance 20x. Unclear if this also mean lose 20x as many documents.

buckie··on How it feels to join an all-Haskell startup
As someone who also recently joined an all haskell team, but hadn't coded professionally in haskell before, I'll add the biggest thing I've noticed to the "how it feels" list:

On a biweekly basis I'm shown something new causing my brain to melt, leak out of my ear & pool onto the floor near my desk. It's awesome[0]!

Today's was using impredicative types + `$` has a special case for dealing with it[1].

[0]: ...some number of hours later when I've collected my thoughts and think "OHHH... duh" [1]: https://ghc.haskell.org/trac/ghc/wiki/ImpredicativePolymorph...

← PreviousPage 2 of 3Next →