HNHacker News
TopNewBestAskShowJobs

t1m

645 karma · joined September 6, 2012

(\ /)\n ( ..)\n c(")(")\n
submissionscomments
t1m··on An Open Letter to HN from EFF, Demand Progress, and Cory Doctorow
At least one of the three OPs is a foreigner. The problem is much larger than the US.
t1m··on What is the enlightenment I'm supposed to attain after studying finite automata?
New appreciation for the goto statement.
t1m··on The Writings of Leslie Lamport
I think it's a crime the editors failed to recognize the fundamental importance of Lamort's ground breaking paper "On Hair Color in France".

http://research.microsoft.com/en-us/um/people/lamport/pubs/h...

t1m··on Adjusting to C
Machine language won't go away either. It's just that the only people writing it are compilers.

The article was more about: Python programmer meets C, C introduces him to malloc(), programmer falls in love with malloc, C gets jealous and in a fit of rage deallocates programmer.

I think this extended love affair for C comes from the fact that it's the least-common-denominator in terms of what our OSes are written in. At some point everything has to make system calls that are using C calling conventions and data structures. It makes sense that the base layer of everything will be written in C. It's an historic anomaly, not some fundamental awesomeness of the language itself.

That said, it's a fundamentally awesome language, especially to build OSes in, but that's tangential.

t1m··on Adjusting to C
If we are looking at the universe of Rails and Python programmers coming to C, then yeah, I think we can assume they aren't doing it for the exotic address manipulation operations and their colleague's prestige ;)

It's speed.

It is also almost always interesting. It reveals a boundary that has been crossed, a bottleneck plugged. I think that us HLL devs always like to think we have C in our back pockets. We say, "well if performance is bad we will profile then rewrite that bit in C". Then, when faced with the reality of actually having to write something in C, well it's a different story. We think the performance increase will be dramatic, but often we are left with something that performs worse than the original HLL equivalent, and that leaks memory and frequently crashes to add insult to injury!

t1m··on Adjusting to C
Valgrind looks like an amazing tool. I am still a bit giddy to use a C with function prototypes, // style comments and enums, to be honest.
t1m··on Adjusting to C
I am not familiar with 'free-standing', though, I think that malloc in most environments never returns the same pointer twice (an alias). Though I may misunderstand your point.
t1m··on Adjusting to C
Well, truth be told, I'm a bit of an interloper. I'm quite old and C is my 'native tongue', although I haven't really programmed in it for years, until recently.

At the beginning of my career, I spent fourish years professionally writing K&R C. Before that I had convinced my profs that I could submit my assignments in C rather than the mainframe Pascal that was being used by the other students. The balance has been spent in Smalltalk, Java, Python, etc.

I must say that I really like the re-adjustment. Even though there are 'endless banks of RAM', C forces the programmer to be stingy with memory and come up with neat hacks, simply to avoid the enormous pain of being too clever.

Using malloc() is like lying. You've got to remember them all.

t1m··on Adjusting to C
"I always find it amusing when I write something that spends a bunch of work making sure everything is freed before it exits."

Yeah, just exit! That's the kind of cool thing about these small, short lived Unix programs like grep and cat - chew memory (stack or heap, up to you!) and bail out - let the OS clean it up. It is essentially the same argument as "prefer large mallocs to small" - the process itself is a 'large malloc'.

t1m··on Big Data at Khan Academy
It's interesting work, but it's not really 'big data'.

"Every day, we collect around 8 million data points on exercise and video interactions, and a few million more around community discussion, computer science programs, and registrations. Not to mention the raw web request logs, and some client-side events we send to MixPanel."

OK - 8 million records per day. Let's double that for the argument's sake.

Even if they were fairly fat records (1Kb), that's only 16Gb / day. That makes it around 2 months / TB.

I can easily put together a machine with 20TB of storage and run a traditional free relational DB (or even a single free node of Greenplum) and store more than 3 years of this data.

Then bang against it with SQL. Transactions are free.

t1m··on Ask HN: Who is hiring? (October 2013)
Chango - https://www.chango.com/about/careers - Toronto, ON

We are hiring for quite a few engineering and non-engineering positions, but I would like to highlight the roles available on Chango's Large Scale Data team where we have two open positions for intermediate/senior software engineers.

At Chango, we process 20 billion or so unique data points per day, and are trying to minimize the latency between times when we collect the data and make it available for the real-time distributed systems that need to use it.

We use traditional SQL databases (Postgresql), columnar data warehouses (Vertica), networked/local key/value stores (AeroSpike, KyotoCabinet, LMDB, memcache), as well as a many node petabyte scale map/reduce cluster (Disco/DDFS).

You will be programming in Python, Cython and C with forays into Go and Erlang. You are comfortable with your code running on 100s of nodes in multiple data centres. You have solid knowledge of Linux internals and tools, networking, disk, cache and memory subsystems as well as techniques to measure and optimize all of the above.

You have thorough familiarity with relational technology/theory, ACID, transaction processing, networked and local key/values stores, data warehousing and columnar databases. You should have experience with map/reduce and distributed file systems (Hadoop/HDFS, Disco/DDFS).

You have a firm understanding of the various and sometimes exotic data structures and algorithms used for processing large data sets. You will use bloom filters, hyperloglog, skip lists, b+ trees, prefix tries, hashing in all it's multitudinous forms, MVCC, two-phase commit, data compression/encoding, etc.

You are familiar with and are eager to build distributed systems. You are familiar with shared-nothing architectures, replication, fault tolerance, queueing, messaging models, CAP theorem, and distributed locking.

Competitive salary, equity and benefits.

contact: tim AT chango.com or on the site

t1m··on Joe Armstrong on Programmer Productivity
It could be argued that rapid prototyping is modern software development.

In the late 80's and early 90's, rapid prototyping was very fashionable in the 'anti-waterfall' software engineering schools of thought. The idea was to use dynamic languages with good development tools (various Lisps, Tcl/Tk, Smalltalk) to rough out the idea, which would then be rewritten in 'real' languages.

Of course this tactic failed successfully! We shipped the prototype. Nowadays, it would seem absurd to develop a web application (for example) written in a 'real' language like C++ or PL/1.

t1m··on Joe Armstrong on Programmer Productivity
I too am a slow programmer.

I have seen so many furious sprints towards the 'finished' system with so little knowledge of what actually needs to be built. The only part that has changed recently is that there is now typically a unit test suite along side that correctly tests the wrong thing.

t1m··on Don't use Hadoop when your data isn't that big
Twitter often gets singled out for it's big dataness, though the latest numbers I've seen are only about 400 million tweets per day. Even allowing 1K/tweet this is a rather manageable 400GB uncompressed.

15 minutes of US tweets would fit on your phone :-)

t1m··on Android is for startups
In 1990 microsoftland, most people were still using DOS. Borland had Turbo Pascal and Turbo C products on the market for a number of years - vt100 style text menuing systems were still king in MS-DOS.

Windows 3.1 was released in 1992, which was the real starting adoption point for the majority of the market.

By that time, the NeXT computer had already been out for four years, the Mac and X Windows were eight.

I was actually just pointing out that software development, as a discipline hasn't advanced that much since 1990. The number of KLOCs freely available to use within your code has increased dramatically. The documentation (which was on paper pre-WWW) has improved exponentially. The tools, OSes and languages? Pretty much a plateau there since the mid 80s peak.

t1m··on Android is for startups
>1990 is calling… and it wants its product development cycle back.

In the early 1990s, many developers were using an OS called Unix, with esoteric tools like vi, make, sh, and emacs. They wrote software in ancient languages like C, C++, Python, and Objective-C. Their programs communicated over TCP/IP networks using sockets. If you were lucky enough to be working on a military contract, you would be exchanging documents using XML and HTML papa SGML.

Everyone suffered until the major breakthroughs of Javascript and PHP.

t1m··on Be The Obnoxious Needy Junior Programmer
Sometimes there is advice that seems wrong, but is actually really good advice. This isn't one of those times.

The best advice for a young Jr anything is to do the job you were hired for exceedingly well. If the words obnoxious or needy are ever used in the same sentence as your name, you are doing something terribly wrong.

t1m··on The Hercules System/370, ESA/390, and z/Architecture Emulator
It sounds like if IBM were serious about getting people skilled up on their platform you'd be able to get access to a system for a bit less than $600/month. $0/month sounds about what they should be shooting for.
t1m··on Small town non-profit offers 1GB broadband to residents
It's the recognition that fast, cheap internet access is good for the community - like water, schools and roads.
t1m··on Cello: Higher level programming in C
I made the switch from Smalltalk to Java. I remember how disappointing it was to return to such a primitive language. I also used the VisualAge for Java products, which I recognized immediately as Smalltalk tools. I wasn't at all surprised to find out they were actually written in Smalltalk
t1m··on Cello: Higher level programming in C
That may have been the case in 1979, but in 1980, we got Smalltalk. This environment was (almost) completely without the concept of a file. Code was stored in a persistent 'image', like everything else, and was accessible through normal object based data structures. This, and the fact that all of the source code for the system was immediately available, made it extremely easy to build and extend language level tools like browsers and debuggers.

I would say the downside of this 'rich' environment is that your tools tend to become language dependent. Early Smalltalk code versioning tools were fairly easy to build (I'm guessing), but would definitely be Smalltalk centred. The unfortunate advantage of an ASCII text file is that it very difficult to have more than one interpretation of it's non-existent meta-data.

t1m··on Python: Common Newbie Mistakes, Part 1
Note that tuples are immutable in python. I usually use tuples as default values for collections:

def f(x=()): x = list(x) ...

def g(y=(())) y = dict(y) ...

f() is the pattern for lists, g() is for dicts. Note that you can pass in regular lists to f() and regular dicts to g().

t1m··on Papers and essays that every programmer should be aware of
Am I the only one who had to google the "docking problem"? I've been programming for over 30 years, and not once have I had to model the quaternary structure of complexes formed by two or more interacting biological macromolecules (http://en.wikipedia.org/wiki/Macromolecular_docking).
t1m··on Prince Of Persia Code Review
This is a great walkthrough, and a real trip back to the good old days. I learned programming on the Apple ][ and, like many started in Basic then moved to 6502 assembly.

I am not sure how other teenagers made this awkward transition, but I did it by writing a tiny assembler in Basic. It was fairly easy because Basic had PEEK (get contents of address), POKE (set contents) and CALL (jump to address) that everyone was used to using to get anything useful done. I think I just got tired of hand assembling programs into POKE calls.

I remember getting a thin wire-bound book with a detailed disassembly (with comments!) of the ROMs and DOS as a birthday present. I think one of the thing that inspired programmers on the Apple ][ was the amazing system code that Woz had written. He set a very high bar for assembly language programmers. His code was economical, fast, smart, and tiny. He demonstrated how to squeeze the most out of limited resources.

t1m··on Ask HN: What is the impact of opening FB and Twitter offices in Vancouver?
One of the reasons the big SF/Valley companies are opening Canadian offices is that even Canada's most expensive cities (Toronto, Vancouver) are a relative bargain. Engineering salaries are lower, rents are cheaper, and government money is plentiful (SRED, etc).

I think it will do two things to Vancouver's startup ecosystem. In the short term it will be painful as you lose talent to the better funded new competition. In the long term it is a win as the big companies validate the Vancouver 'brand', increasing exposure and attracting new investment.

t1m··on Language Design Deal Breakers
I find it fascinating that programmers working in C++ seem to spend a lot of time thinking about language design.

There is a lot of responsibility on the shoulders of language designers. There is the notion of technical debt that we all deal with as programmers, but the meta-debt the language designer accumulates is astounding.

Let's meditate a while. As we read this, some young, well meaning C++ programmer is writing another String class.

I don't even know if talking about Tony Hoare's NULL story is really that relevant. After all, that's a single feature of a programming language. In the context of C++, talking about NULLs at the language level is like arguing about the colour of your Edsel.

t1m··on Dennis Ritchie's first C compiler on Github
I remember being absolutely thrilled when function prototypes were introduced with the 'proposed' ANSI C standard (X3J11). The first implementation I got my hands on was Borland's Turbo C circa 1988.

The standard now known as C89/C90 had been in committee for many years before being 'released'. This didn't stop the tool vendors (like Borland) from supporting the 'proposed' standard much earlier than 1989.

Unfortunately, commercial UNIX vendors (like HP, in my case), were very slow to adopt the standard and update the cc compiler in their distribution. This forced us to work in K&R for a good time after 1990, all the while grumbling that $150 MS-DOS compilers already 'had ANSI'.

t1m··on CodernityDB — pure Python, NoSQL, fast database
pretty rude. why don't you offer to help?
t1m··on Amazon's Next Big Business Is Selling You
Compare this to Facebook's strategy, which is to open an ad exchange to give advertisers access to their users on facebook.com exclusively. The Amazon plan would allow advertisers to access Amazon's users anywhere on the net.
← PreviousPage 3 of 3