HN user

cmbaus

847 karma
Posts30
Comments216
View on HN
baus.net 11y ago

Misconstruing Salary with Professional Advancement

cmbaus
4pts1
paperless.io 11y ago

Show HN: Paperless.IO: prototype to create bootstrap grids by dragging the mouse

cmbaus
9pts2
www.chrisnorstrom.com 12y ago

Idea: The ‘Liquid Grid’ Street Layout (2011)

cmbaus
1pts0
finance.yahoo.com 12y ago

Apple buying Beats for $3.2 billion? Smart move

cmbaus
1pts0
www.youtube.com 12y ago

Minecraft: The Story of Mojang (2013)

cmbaus
3pts0
www.forbes.com 12y ago

Is Hierarchy Helping Or Harming Your Organization?

cmbaus
1pts0
www.youtube.com 12y ago

Why JavaScript Programmers Hate You (2013)

cmbaus
1pts2
baus.net 12y ago

Example Race Condition in Node.js

cmbaus
1pts0
john.freml.in 12y ago

What's wrong with using double floats (2010)

cmbaus
1pts0
baus.net 12y ago

I met Jack Dorsey in South Park, and all I got was this blog post

cmbaus
12pts2
www.youtube.com 12y ago

Twttr 101 (2006)

cmbaus
3pts0
evhead.com 12y ago

The Birth of Obvious Corp (2006)

cmbaus
1pts0
baus.net 12y ago

I don't like public speaking (but I do it anyway)

cmbaus
1pts0
news.ycombinator.com 12y ago

Anyone need a ride from SF to Startup School?

cmbaus
1pts0
baus.net 12y ago

Note to developers: not everyone has home mail delivery

cmbaus
2pts1
baus.net 12y ago

The SwitchFlow C++ HTTP Proxy: A Postmortem

cmbaus
2pts0
www.youtube.com 12y ago

Steve Jobs interviewed just before returning to Apple

cmbaus
2pts0
blog.greaterthanzero.com 13y ago

Cash Distributions: Understanding Mutual Fund and ETF Performance

cmbaus
3pts0
baus.net 13y ago

Beyond the technical start-up, meet Chicago's king of the question.

cmbaus
4pts0
baus.net 13y ago

An apology to Zach Holman.

cmbaus
2pts0
baus.net 13y ago

You can't impress developers

cmbaus
265pts163
baus.net 13y ago

Rockstars have bands (2011)

cmbaus
1pts0
baus.net 13y ago

The house I was born in sold for $4000

cmbaus
115pts153
zokos.com 13y ago

Zokos: Has anyone in SF tried it?

cmbaus
1pts0
vimeo.com 13y ago

Grant Petersen. Rivendell People.

cmbaus
1pts0
news.ycombinator.com 13y ago

How do you handle user profiles when using multiple OAuth services?

cmbaus
1pts0
www.ludumdare.com 13y ago

Video of developer building a game in 48 hours.

cmbaus
1pts0
news.ycombinator.com 13y ago

Are all the good ideas taken?

cmbaus
1pts1
baus.net 13y ago

To my generation (of programmers that is)

cmbaus
1pts0
baus.net 13y ago

Documents are Skeumorphic

cmbaus
1pts0

What political factors are you referring to? I think Linux took off because it was easily accessible and widely available, and Linus made a lot of pragmatic choices.

I remember in the 90s how awesome it seemed to get a *nix system for free with a book.

For me it was a Subaru STI. I enjoyed it more in almost every way than the Porsche, other than how it looked. My father has a nice 90s Miyata. I've driven it quite a bit and for the money it is a pretty well thought out and fun vehicle. He's got less into the whole car than I have in my Porsche engine and trans.

Magnus's collection is beautiful and I love his aesthetic, but I can't help but think it is the ultra wealthy buyers who own a dozen 911s who are driving up the prices into the stratosphere. It might be sour grapes, but honestly, how many Porsche's does one guy need?

I have a vintage 911. It is fun as hell when the thing is running right, but it is never running right. Even the years they call "bullet proof" don't hold a candle to the reliability of a modern Japanese sports car (which I've also owned).

When you start to pull the car apart you see all the hacks that had to be done to modernize the car to keep the original chassis design alive. My favorite is the air conditioning. It is obvious that air conditioning was not part of the original design. Another favorite is the oil cooler under the front fender. There are oil lines that go all the way from the back of the car to the front just for cooling. The original car didn't have them because the engines were much smaller and ran cooler.

If anyone is considering buying an air cooled 911, I'd say unless you've cashed out a bunch of stock that is blowing a hole in your pocket, stay away. With the current cost of parts any common problem with the cars could easily be a $10k fix. Ask me how I know.

That's interesting. I had been working something similar years ago. I eventually open sourced it, but discontinued work on it. Http://github.com/baus/swithflow

I'm surprised more systems don't take this approach of doing more work in L7 proxies.

I'm a big fan of horween and alden. If you care about quality and craftsmanship, then I think the products are worth the price (even if it has gone up a lot in the past few years). It is possible to wear out cordovan, but you really have to work at it. Horween shell is an awesome material.

OpenSSL has an abstraction layer over malloc, which uses an internal stack-based free-list, and which it uses for all allocations

To be clear, this is NOT TRUE. The freelist is used for some allocations, but not in the patch in point. Here is the patch that addresses the bug: https://github.com/openssl/openssl/commit/731f431497f463f3a2...

It clearly uses OPENSSL_Malloc which is basically the equivalent of calling malloc.

https://github.com/openssl/openssl/commit/731f431497f463f3a2...

I believe there is some confusion (at least I was confused until I looked at the code) that the library had universally replaced malloc with another allocator. While the library allows users to provide their own allocator, it is not done by default.

The code in question does not use the freelist implementation. It goes directly to OPENSSL_Malloc which is basically malloc.

What happened was the exploit allowed remote clients to read beyond the size of the buffer allocated by OPENSSL_Malloc. There just happened to be data from the freelist sitting next to it.

Even if the freelist implementation wasn't used, that wouldn't have prevented this exploit. There would just be something else sitting there in memory, but we can't predict what that would have been.

There is a big discussion going on that could be misleading.

To clarify, are we calling the freelist implementation, which the heartbeat code does not use, an allocator?

Update: I agree with the author that it is wrong to point the blame at the freelist implementation. If every C application that manages the reuse of commonly used data structures is doing wrong, then pretty much every modern server application will have to be re-written -- for instance Apache [1].

C is fast and portable and binds to just about any language which is why OPENSSL is in such wide use. Maybe it would be better to use more 'secure' languages like Go, but if OPENSSL was written in Go, how many applications would use it? I'd say almost none.

[1] https://apr.apache.org/docs/apr/1.5/group__apr__pools.html

So the focus on the self-written allocator seems to get a little biased in this discussion.

I feel like I'm missing something here. Where are the self written allocators? This article states that the OPENSSL_Malloc is simply malloc by default.

Regarding point #5. If the performance of OpenSSL was terrible we would not be having this discussion. This is system level component which must pass all encrypted traffic.

OpenSSL is ubiquitous and runs everywhere including phones and low powered VPSs that everyone is using. If OpenSSL burned RAM and CPU cycles for the sake of correctness, alternatives would appear. The hard part about developing a library like OpenSSL is it has to be fast AND secure.

I'm sort of surprised an allocation occurs every time the heartbeat is sent. That is a lot of trips to the heap.

I'm not very familiar with how TLS heartbeats are implemented, but I wonder if the buffer could have just been alloc'd once when the connection was created.

Depending on the language, delegation can be faster. For instance in C++, virtual function dispatch is slower than calling a non-virtual member. It is easier for the compiler to optimize member function calls vs virtual functions which cannot be inlined.

To clarify, what concerns me is that by adding syntax that is similar to Java, developers coming from other languages (namely Java), won't take the time to understand the differences between the two languages and continue to write applications as they would in Java.

Everyone has their biases, and my bias would be to embrace the dynamic and functional aspects of the languages that separate it from Java, rather than creating new syntax that pastes over the fact that the language is fundamentally different.

In JavaScript, like other duck typed languages, you have dynamic dispatch without inheritance.

For example:

    var objA = {doIt:function(){console.log('hello from a')}};
    var objB = {doIt:function(){console.log('hello from b')}};
    
    var doItDynamically = function(doitObj) {
        doitObj.doIt();
    };
   
    doItDynamically(objA);
    doItDynamically(objB);
a and b do not share a common class (since classes do not exist in JavaScript), but they implement the same interface. For this reason, they can be used polymorphically, as if they shared a common base class or interface in Java or C++.

I am bit concerned that the standard committee is going to make the language worse while trying to fix it.

Yes it is inconvenient to do traditional OO programming with JavaScript, but I'm not convinced that is a bad thing. Encouraging subclassing, as pointed out by the author, could actually be detrimental.