skysight-inc/HackerNews huggingface dataset:
Kool-Aid-free answer:

"Functional programming" can mean one of three things.

1. Higher-order programming: the use of higher-order functions to make code more general/compact. Since you know Ruby, you're already doing some higher-order programming, but you may not understand it well enough to take full advantage of it. The best way to learn higher-order programming is to read SICP.

2. The use of immutable (aka persistent, nondestructive) data structures, i.e. data structures that can be updated without mutation. For example, linked lists allow you to prepend an element without changing the original list. This makes code cleaner in some cases and has advantages for concurrency. For specifics, look up Clojure.

3. Functional purity, aka referential transparency: the property that, for any input x, a function must always produce the same output x'. That is, all functions must be functions in the mathematical sense of the word. In practice, this doesn't really mean eliminating impure functions, but rather partitioning your program into "provably pure functions" and "possibly impure functions," using a clever hack (monads) to ensure that the output of possibly-impure functions is invisible to the provably-pure ones.

So, supposing you had a pure function whose behavior you wanted to randomize, you couldn't just throw in a call to the random() function, but would also have to convert it and all the functions that depend on it into impure (monadic) functions, replacing all function calls with the bind operator (>>=). It's quite complicated and I have never found a reason to believe it's a good idea, other than some theoretical stuff about "safety" and compiler optimizations that make your program 2% faster. I suggest not wasting your time on it.
Certainly you can define classes at runtime. But I think this is the wrong way to go about logical reasoning. What happens when you want to express that Socrates is a dead Greek philosopher? Do you have DeadMortal (subclass of Mortal with isDead() returning true), GreekMortal, PhilosopherMortal (subclass of UnemployedMortal)?

I think you may get further if you look at a language like Prolog -- work along the lines of predicates, rules, and attributes.
Developers are still people, and people do care about aesthetics.
I have an idea for how to do a better reverse image search engine. The problem with this one is that it only matches exact images. But what if it was possible to match against any feature within the source image, rather than the exact, entire source image you search for?

For each image in the index, break it up into 4x4 tiles, then store a hash code for each tile. Then repeat the process, but offset the boundary of each tile by 1px along the X axis. Repeat 2 more times. Then, for each offset along the X axis, offset down along the Y axis. So you store 16 hashes per 4x4 pixel area.

Now, when someone searches for an image, repeat that hashing algorithm for the source image. The results page then returns any image that contains a 4x4 tile that is also contained in the source image, ranked by the number of tiles within the image that is common between the source and result image.

The end result is that you can see how the features within an image are used in other images -- so if someone takes the red stapler from Office Space ( http://www.yunasville.com/img/102005/milton.jpg ) and puts it into a different image, and you search for that red stapler, the results page will still return the photoshopped image, because it'll match the 4x4 tiles on the stapler in both images.

I've explained this in a convoluted way, but hopefully I've communicated the essence of the idea.

On one hand, there will be more results to filter through, and it's more computationally expensive. But that's fine, the image results are still ranked effectively. On the other hand, it's more computationally expensive.
I'm guessing level of skill. I can draw stick figures, but that's a far cry from making pretty pictures.
This question has been asked many times before, but to summarize my past answers briefly: It depends on what sort of code I'm writing (http://news.ycombinator.com/item?id=36784), but my long-term average is about 1000 LOC/month (http://news.ycombinator.com/item?id=105410).
Well said! I usually consider a day productive if I've made some code smaller and faster, and just feel worn out if I typed a lot.
Laptops are nice for light computing tasks such as word processing, but there are a lot of applications that just aren't going to run well on a cheap laptop. There's also the issue of hardware failure, malware disasters, etc. Students are not, in general, competent sysadmins. The computer lab is critically important when your laptop's hard drive crashes two days before the due date of an important project. On a university supported filesystem, your data is backed up and the failure of one PC is not a problem because you can just use another one. Also, university site licenses for software can be cheaper than buying individual licenses (even with an student discount).
Depends. If you have money, check out bizfilings.com. You can setup a C-corp for around $184.00, it's pretty quick and they do everything for you. They file all the appropriate forms, they have a registered agent in the state for you (which is required), they remind you to pay your yearly Delaware taxes when they're due, to just name a few things.
Ah, the cost of premature optimization: a couple thousand bucks, and a couple days of monkeying around. Better to first figure out where the bottleneck is (and maybe listen to your developer, since he thinks parallelization will help.)
What is the matter with you?
You would probably want to implement your own concept of classes to do this, in which case you wouldn't have to restrict yourself to languages where classes could be declared at runtime.

But if you really wanted to use the language's classes, there are languages that support it. Javascript is one. I think Ruby lets you do this too. Python lets you declare classes at runtime, but I don't think it gives you as much flexibility as the former two. Still, any of the three should be powerful enough to do what you want. Scheme will let you do it too.
Actually, through reading internet minicelbrity TheFerrett, I know there are extensive forums dedicated to that. I suspect the forums still win.
Well get impatient about yor own human rights problems in the black ghetto's and US prisons.
Re: How to Design (Declarative) Programming Languages
http://www.folklore.org/StoryView.py?project=Macintosh&s...

Or, if you prefer Dijkstra:

"In this respect a program is like a poem: you cannot write a poem without writing it. Yet people talk about programming as if it were a production process and measure 'programmer productivity' in terms of 'number of lines of code produced'. In so doing they book that number on the wrong side of the ledger: We should always refer to 'the number of lines of code spent'."
Interesting, but I hoped author learned more than 2 things in 4 years.
Or maybe, like many scientists, they were truly interested in advancing the sum of human knowledge and the state of the art.
To engender the feeling that Google is a factory for big new ideas, making it the place every top-flight developer wants to work, and the tech company that everyone talks about when innovation is the subject. I'd say it's paid for itself, and I'd also suggest that it hasn't hurt them. Google has as much of the search market as ever, as far as I know, and the only dents have been due to non-technical factors (Microsoft, and others, modifying the search bar in browsers, ISPs making deals to push other engine, etc.).
Haha, no way. Links?

Your Mechanical Turk mission, should you choose to accept it, is to identify this porn actress...
I think a lot of people underestimate what they can actually do. You can learn certain techniques, even if you lack natural talent. There are also a boatload of psd tutorials on web.

check out http://psd.tutsplus.com/
User interface design is a skill of artistry. It takes a certain talent in order to do that.
In Python you can create a class at "runtime" using "type(name, bases, dict)" as per http://docs.python.org/library/functions.html#type

You can also use "new.classobj(name, bases, dict)" -- not quite sure what the difference is.
Your business is doomed to fail without a graphic designer? Unless you're selling graphic design, I'm not sure how that's possible.

But if it really is that crucial, maybe you should revisit the business idea you're pursuing. If your team doesn't have one of the core competencies you need to succeed, there seems to be a disconnect somewhere in your planning.
Don't let this be your roadblock! Start working on tutorials for gimp and you'll be surprised how good you can make things look (my 'goto' in graphics has always been to add a gradient and/or a shadow).

When you have something working you might be able to attract more interest from graphic designers.
In the meantime, try art schools or high school students looking for a project.
I haven't yet, but my summer / fall is going to be spent working with one of my profs to set up a lab with CUDA workstations and a Tesla. If you're interested in GPGPU programming, CUDA works with any system with a GeForce 8XXX or higher GPU. So ~$150 for a 9800GTX will get you 128 equivalent cores, which you can easily double at any time by running SLI.

What I'm interested in is seeing how OpenCL plays out, as Khronos seems to have the entire industry behind them (with the exception of Microsoft).
Bingo! Beat me to it.
Anyone trying to sell a SaaS is essentially selling graphic design. The interface is what makes or breaks many applications.
Inkscape might be a better choice. The tools are dramatically better for incrementally improving a basic idea. The GIMP rules for bitmaps, but vectors are a better tool for the job for a lot of stuff...like icons and such. There's a lot of good SVG artwork out the to look at for inspiration, and even borrowing within the bounds of the license. The Tango icon set is a great source.

I'll also mention that we've only recently gotten serious about design and graphics, and we've been profitable (by some definition) for a couple of years.
Calling Hunch 'silly crap' is a bit harsh, especially if you haven't tried it out yet. Let us ignore the fact that they have 'MIT scientists with backgrounds in machine learning' on their team, and that they started working on it in 2007 and launched only today. I just signed up to check it out, and the results look promising even with the limited amount of data it has about me and everyone/everything else.

Crowdsourced machine learning isn't new, but because Hunch has enough weight behind it, it might eventually become much more useful than a lot of other 'silly crap' out there. A native iPhone client for Hunch would then be quite welcome.
I think this was just an excuse for Joel to get SSD's for his laptop and workstation - and a good one at that!
Talent helps, but I believe certain things can be learned, including design patterns, which quite a few have expounded on. There are many resources available to learn from.

http://www.alistapart.com/
http://www.smashingmagazine.com/
http://psd.tutsplus.com/
Inexperience != idiot.

Although, experience would make it easier to determine if the relative lack of clue is due to the former or the latter, or perhaps both. The former is far easier to rectify, but only if they also have the curiosity and passion that rokhayakebe mentions.
I think it may just be because the title "De-anonymizing social networks" didn't actually convey what the experiment found, and it's the result (as communicated in the title here) that got people interested enough to click.
What's your favorite game on the iphone?
The best I've found so far is "Let's golf!".
Seriously? Compiling? What language are they using that requires actual, regular, compile processes?
I'm a big fan of incremental builds - no point in recompiling 1M LOC when only a few source files have changed. Image based systems (like Common Lisp) are particularly nice because you can just recompile the functions that have changed and have the changes instantly take effect on a running image. Unfortunately, ASDF (the most common build/packaging system) doesn't have particularly good support for incremental builds yet, but it's an area of active developement (particularly with XCVB and other new build systems).

But don't GCC, Java, and Visual Studio all support parallel builds pretty easily? I've never looked into it, but I know I've read articles about it.

What sort of language/env. does FogCreek use? I vaguely remember hearing that they had written their own compiler in Java that transformed ASP to PHP or some other such ludicrous thing.

Edit: Some googling showed that they decided their software had to run on Windows and Unix boxes, and that the best way to do that was to support ASP (pre .NET) on Windows and PHP on *nix. They already had a large ASP code base, so they wrote a compiler (named Thistle) that could translate a subset of ASP into PHP. Then, it seems like MS deprecated ASP (and they started to realize how much it sucked) so they wrote their own language (Wasabi) that is based on VBScript and can be compiled into ASP, PHP, or JS. My God. I would gouge my eyes out if I had to work there. From the fragments of code I've seen, it frankly seems horrible. See http://www.fogcreek.com/FogBugz/blog/category/Wasabi.aspx

Although, I guess I can't really judge. I recently just wrote some ridiculously convoluted Java code that could automatically and transparently trick the JVM into making certain recursive functions Tail Call Optimizing (i.e., use constant space on the stack, regardless of how deep the recursion is) by transforming the function into automatically issuing/catching Exceptions to manually unwind the stack when I want to. Ah, I miss Common Lisp - I never knew how good I had it.
Robin Dunbar talks language, politics, and cyborgs
He doesn't mention that the "compiler" that they're bottlenecking on is the one they wrote themselves, for "Wasabi" -- compiling their private language into VB or PHP.

On top of that, you don't fucking parallelize compilers!

You use a goddamn build system to do that (make, et. al.). Of course, that requires that your compiler be decent enough to be able to compile modules independently, and not have to recompile unmodified source. What do you want to bet that their compiler is just ridiculously awful?
I just installed the beta in a VM. Looks like they still haven't replaced the hideous default theme (Human). If Ubuntu is going to go head-to-head with Snow Leopard and Windows 7 it needs to be more appealing out of the box.

On a positive note, nice to see Ext4 available. I think the next release will enable it by default.
Their bullshit private VB dialect that was someone's weekend project: Wasabi http://www.joelonsoftware.com/items/2006/09/01b.html
Exciting Parts:

> Cloud computing (mimics AWS)

> Faster boot up (always yay)

> Easy mail servers (big hassle addressed)
motoko did not quite say: "When every student has [a Kindle-style eBook], why print books?"

Yes, you are right today. Give me four years and ask your question again.

(I'm skipping the issues of DRM. I suggest we not wander down that rabbit hole. I'm just talking technical questions.)
I'm just afraid they're being driven by their desire to increase revenue rather than benefiting humanity.
I agree, 'artistic' design is often overrated. Functional (interface) design is not, but it can be done by a programmer.

Just look at Google. There is no graphic design to speak of.
There’s an open source app called Clonezilla, which, I have to say, is only free if your time is worthless.

What about dd if=/dev/old-disk of=/dev/new-disk bs=16M ?
Summary: Tricky sales people can sell the fact they are good at a lot of things. How do you figure out what type of people they really are? By tracking the energy that interviewees have around their responses and digging deeper, people will inevitably reveal the behaviors and principles they live by day-to-day.

----

When trying to hire someone you may find that you are looking for a particular type of person (maybe someone who works well in teams or, instead, is more of a performer on their own). To learn more about the way the person is (I mean they way really are, not just what they sell about themselves) try these steps:

1. Ask them questions that might reveal one of the characteristics (Are you better at working on teams or by yourself?)

2. They will usually answer “both” and try to sell you on it

3. Ask them to recall some productive/highlighting/significant experiences in working alone

4. Then ask the same for working in teams

This obviously doesn't cover the whole process, but can be a helpful technique.

5. Feel a sense of energy coming from each response

6. Ask the base question again (“Teams or alone?”) and see which they give more weight to.

7. Assess how strong you can confirm a conclusion of which they truly prefer
that's true but interface design is not the same thing as graphic design, and most graphic designer suck at interface design...
No, you're not alone. I've been playing Settlers for years, and it's long been a favorite of a number of friends of mine in different cities who don't all know each other. Perhaps it's been a niche game this whole time and will go "mainstream", but its niche hasn't been that obscure.
I appreciate the advice. There is a clear idealist (developer) vs pragmatist (business person) clash here that I may need to overcome to survive in this business.
So to your mind, interaction/graphic design is the major differentiating factor, and you're looking at outsourcing that work? That seems roughly analogous to a bunch of business students failing to find a CS major who will do their coding, and wondering whether they should pay someone to develop their idea for them.

I honestly think you're psyching yourself out with respect to the design. But if you really think it's that important, and you really don't think you can do it, why did you pursue this idea in the first place?
Review of 3D Engines for the iPhone
It's a common subject of threads on imageboards (4chan et.al.). People ask for "sauce" (the source of an image), and for MOAR.
You can "untag" yourself from other people's facebook photos.
There are many places where you can grab very liberally-licensed graphics. If those don't do whatever unspecified thing you need them to do, they can probably still serve as a base since it's easier to modify than to start from scratch, especially if you find SVG/Inkscape/whatever source too. A bajillion web designs can be found too with liberal licensing. The combinations of liberally-licensed graphics and liberally-licensed web designs opens up yet another easily-accessible vista of design combinations.

Someday when I get around to it, that's what I plan to do with my site. (Once upon a time, I decided to do the design from scratch myself. What have I learned since then? I'm absolutely, utterly terrible. Oh well, lesson learned.)

Look around, search for things with Creative Commons commercial licenses on them. You'll probably be able to come up with what you need.
Listen to the last Stack Overflow podcast. Every single month that they ship FogBugz earlier is an extra $200k in revenue share for the developers.

The developer may know how to solve the problem in code. But, Joel is the CEO. He has a better idea of how this affects the Balance Sheet and Income Statement. It's kinda, sorta his job.
Has it really been that long? Seems like I was on Edgy Eft (6.10) yesterday.

And please look up and post the official link in the future: http://www.ubuntu.com/testing/jaunty/beta
Nor me when I found it a couple of months ago and I needed such a service. I wanted to source the true manufacturer of a product and all I was finding at the time were a lot of traders who were using the same official product photos. I think it will improve though and the web needs it.
There seems to be an undercurrent here and on programming.reddit that anything Atwood says is immediately wrong. Just about every codinghorror and blog.stackoverflow post gets on here and programming.reddit and you can count on 100+ comments where most people are criticizing whatever Atwood said this time without pausing to consider what he said or what point he was trying to make.
...by design
Except that (a) he spent a couple days of his time being wrong about it, and (b) he then wrote a blog entry about how he was wrong about it.

Imagine if instead he'd said to the guy "okay, spend three hours profiling the build process and get me some suggestions with time estimates", and they'd found some likely prospects, and three days from now he gets to post about how they'll be shipping the next release a month earlier because of the improvements they made to the build process.
I've spent some time with Haskell and I like it well enough, but: In all seriousness, if you don't already know Haskell, I would not recommend using it in a web startup. That's not a time to be learning Haskell. Go with something you know, or, failing that, one of the Python frameworks.
If you define your dependencies correctly, make can do parallel builds (using the -j option). Of course you will have to use Makefiles in that case, which a lot of people don't like.
It's trivial to folks familiar with nix-a-likes but for others it is too unlike the abstractions they're used to for it to be entertained as anything other than some sort of bizarre incantation.
getting a freelancer is cheaper than you might think. $200-300 bucks can probably get you what you need.
Ok, I'll sign up when I have time, but I doubt this will change my mind. There's maybe a fine line between decision tools and banal self-indulgence, and my guess is this app will encourage the latter. The issue is that somebody has to ultimately take responsibility for a decision that's been made. What's the disclaimer for bad decisions? Can the site be sued? And when this happens, will the site be reprogrammed to ignore the subject it was sued over?

I assume the app will ultimately recommend that it not be used for anything but novelty purposes.

Additionally, why is it more reasonable for a MIT scientist to make a decision for you than for you to make your own? The issue I have with it has nothing to do with who worked on this app, or for how long.
You don't understand monads very well, they are orthogonal to 'impurity', and don't even necessarily involve state or sequencing at all.

A more straightforward way to describe how you do random() is that your function takes the randomness as an argument. Functions that take input take IO as an argument, and those that produce output return IO in some form. You don't even have to mention the dreaded word.
There are several languages that allow dynamic creation of classes. Any of the dynamically typed scripting languages can do that javascript, python, perl, ruby, etc.
so, what is it- graphic design or interface design?
This is probably very cool for people doing CG work. It's still too limited for most scientific work though because only single precision floating point is supported. If they'd make a version of this that supports double precision arithmetic and support it in the BLAS library so that parallelization of matrix operations occurs automatically without having to change existing MATLAB code, these things will sell like crazy in the scientific community.