4,272 karma · joined April 27, 2009
This limitation has also sprouted ancillary sites attached to the HN Tree of Life, such as searchyc.com, hackermonthly.com, and hnrecap.com as mentioned in the post.
In a similar vein, carving out a sub-HN seems to be: a) downloading the source code, b) bringing it online at another domain and c) announcing via "Tell HN".
All in all, unless someone with >10^5 karma decides to take the time and add some community features to HN (for various values of "community" and "features"), we're all going to continue and see more noise and many different signals.
As an aside, I wholeheartedly appreciate the name, "Bloomfilter."
Just wondering, is it better performance-wise to explicitly check for key membership than to rely on exceptions?
Existing:
for line in sys.stdin:
name, marks = line.rstrip().split('\t')
try:
if agregatedmarks.get(name):
agregatedmarks.get(name).append(marks)
else:
agregatedmarks[name] = [marks]
except ValueError:
pass
Or for line in sys.stdin:
name, marks = line.rstrip().split('\t')
if name in aggregatedmarks:
aggregatedmarks.append(marks)
else:
aggregatedmarks[name] = [marks]
This is a common idiom I find myself using (append to an existing list or creating a new one in a larger dict).Illustrator is where I head for scalable vector stuff (duh). Despite having seen some crazy, crazy awesome wizardry with the Photoshop pen tool, in AI the pen tool is much more manageable and powerful IMHO, especially in conjunction with the all-powerful Pathfinder.
With aliases (and zsh completion support for aliases), I can do "ann<tab>" which saves me even more time.
It won't be long before all I have to type is tab :)
Good tip about TRAMP, although I tend to exit out of my emacs sessions frequently. For my long running ssh tunnels, I just screen them.
There's a good chance I was just doing it wrong™ though.
I haven't taken the time to figure out key agent -- for shame! -- although I would be interested in a write-up.
In my experience, the lack of a sane garbage collector burned me in the end. I believe the reasoning was that Flash apps were ephemeral, from page load to page load, and definitely not meant for a desktop application with a long life.
It was very hard to ever really free memory, and I remember writing a fairly straight-forward AIR app which would start at 70MB RSS, and balloon to 1GB the next morning.
Branches and commits can be merged and rebased left and right, and it only seems to follow that commits have an intrinsic state that's (not to be cliché) timeless. Patches and commits, regardless of when they're written, provide changes and accomplish X Y and Z -- it's only when one runs the code that time comes into play.
Semantics, I suppose, or I have had too much coffee this morning.
Use a sane editor with syntax highlighting.
2. Accidental assignment/Accidental Booleans
I always wrap my assignment-conditionals with double parentheses. It sucks when you miss these but I usually type out the right sequence of equal signs when I mean equality.
3. Unhygienic macros
Treat macros like a search-and-replace with a little more intelligence, but respect how literally the pre-processor might take you for. So, add parentheses.
4. Mismatched header files
I've not encountered this before, so I can't comment on it. Be careful with namespaces.
5. Phantom Returned Values
Luckily, gcc -Wall returns: warning: control reaches end of non-void function
6. Unpredictable struct construction
Can't comment on this one either, although I avoid literal assignments given in the example like the plague.
7. Indefinite order of evaluation
The example code just looks messy.
8. Easily changed block scope
Always use curly braces, that's what I say.
9. Permissive compilation
Not sure in the example why one would just remove the CALLIT macro and assume things to work. Of course, the comma in C means something. Not sure why one would put an assignment before a case in a switch either.
10. Unsafe returned values
This is certainly expected!
I did the same thing for Minecraft SMP (passing 512M instead of 1024M for memory usage).
And an oldie but a goodie: