1. Pick a very small project, something useful to you but borderline under-ambitious. Anything that bugs you. Nothing that you would necessarily point proudly to on github; don't be thinking about github. I'm talking small, maybe even just a simple command line utility, or not much more. Implement it. Don't give up, learn it. Improve it. Pick another small project. Another. A slightly bigger one. What you're trying to do here is to get a giant heavy flywheel moving, but it's going to take some time before it's really spinning. Once it's spinning fast it will almost sustain itself and you won't have enough time in the day to implement all your ideas.
2. If you can't think of any small thing to build (hard to believe, but OK), then poke around for some technology that you'd like to learn, that has good documentation, and start going through its tutorials and documentation. Learn as much as you can about it. At some point you'll start to get ideas about things you can build. Start building them. It doesn't have to be an OSS project, it can just be your own if you want. At this stage it's more important that you get that flywheel spinning any way you can.
Off topic suggestion: When you have a home page for a project, if the name is an acronym, you should spell out the acronym in the first paragraph, if not the first sentence or the title.
From http://llvm.org/ I looked at Overview, Features, Documentation and FAQ, and did not find the definition of LLVM. I ultimately had to go to Wikipedia.
edit: LLVM once stood for "Low level virtual machine", but that is no longer the meaning. The early name comes from Chris Lattner's research paper describing an "ideal machine language", an intermediate language for compilers which is a little like an Assembly -type language for a virtual machine with infinite registers.
The first sentence on the front page of llvm.org pretty much sums it up: "The LLVM Project is a collection of modular and reusable compiler and toolchain technologies."
It may not be the clearest LLVM description out there, but that's pretty much what it is. If the description had more detail, it would not fit in one sentence.
The hard thing about describing LLVM is that it's a huge complicated project in a domain that's outside even many professional programmers' domain.
I tend to say that LLVM is (to me) a "compiler infrastructure", because I use it to build compiler back ends. However, LLVM is so much more than that, as the project includes loosely coupled tools ranging from complete compilers (clang) to debuggers (lldb) to byte code and binary format introspection utilities (llvm's binutils counterparts). So a "compiler infrastructure" or any other dumbed down explanation wouldn't do it justice. That's why the first sentence on the front page is actually pretty good.
LLVM actually still is a virtual machine, since it contains mechanisms for executing code written in LLVM IR. There are two execution paths - an interpreter and a JIT compiler. I guess this makes it a VM after all, although the acronym is no longer descriptive because the VM part is a tiny fraction of what LLVM includes and can do. As you said, its super-tool for creating compilers, especially compiler back-ends.
The LLVM interpreter is less than ideal as an actual interpreter rather than something for doing constant folding and that kind of thing; the instructions are too low-level for it to be really fast. For example, bit widths of integers are represented in the abstraction; that adds overhead to even the simplest of arithmetic operations.
I don't think the interpreter was intended to be really fast. It's pretty good for debugging and platform-independent execution. For speed there's the JIT.
"if the name is an acronym, you should spell out the acronym"
(I did not downvote you BTW)
Someone else replied that the project is now just referred to as LLVM. That's fine, but people expect acronyms to stand for something, and the definition or lack of should be way at the top of any project. Lots of people come to a project for the first time and aren't in the know.
Sorry, missed the acronym part. Anyway, spelling out the acronym only creates more confusion.
I don't understand the downvotes, if you downvoted, please tell why. I tried to be sensible in explaining what LLVM is and why it's hard to explain. And why it's no longer an acronym.
pedantic: LLVM is not an acronym, it is an initialism. An acronym is when the abbreviated letters spell something pronounceable as a word (GNU, NATO, SCUBA, PATRIOT act...) an initialism is just an abbreviation using the first letter of every word in the abbreviated name or phrase.
The problem with "Low-Level Virtual Machine" is that it gives a very wrong view of what LLVM actually is (because a "virtual machine" is associated with JVM and similar tools). That full name is not even used a whole lot any more, people refer to LLVM as LLVM which means the umbrella project under which a lot of subprojects exist.
Oh no you didn't. If you did, you should have at least made the change yourself (IIRC the LLVM website is in their source repositories in SVN or Git) and posted it as a part of your bug report.
The LLVM developers are experts in compilers, I'd much more prefer them spending time writing compilers than fixing little things on the web site.
"Exactly" would be if CarrierIQ sold a boxed piece of software that was fire & forget.
As it stands, CarrierIQ was a business partner with each of these companies in the implementation of the software, and so they are the initial point of leverage in figuring out what actually happened.
If CarrierIQ decides to roll over on the carriers and say "well, $carrier asked me to log all the SMS messages", well, then I'll take up a side business selling popcorn.
Its like your example, in some world where Smith & Wesson explicitly stated that their guns can only fire blanks. And then, of course, this armed robbery resulted in a gun death.
Make an RSS feed for the discussions (what you're reading right now), not the articles. You can always get to the articles from the discussions.
If the RSS feed linked to the discussions I would almost never go to the HN front or new pages, and nothing would ever drop out of site (for people who use a feed reader).
As it is, I don't bother with the article feed, because the value is in the discussions as much as the articles.
The ONLY reason I still use Firefox is tagged bookmarks. Every time I use Chrome to test something I'm reminded how much of a turtle-pig is Firefox. Despite claimed improvements in Firefox's use of memory and processor, Chrome is noticeably better in both these areas. I still have to restart Firefox to reclaim leaked memory; after the restart, with the same tabs open, I've reclaimed gobs of memory.
I would move instantly to Chrome if the company that gave us tags in gmail would just do the same for bookmarks in Chrome.
"Andrew: What you were doing was, you were buying ads online and running affiliate advertising against them. The profit was the revenue that you were making from the affiliate programs, what they were paying you every time they got a new order or lead, minus what you were paying for your ads, right."
For the hard-of-money-making, what does this mean, how does it work functionally (black box inputs and outputs), and why is it profitable?
You join an affiliate program that pays you some commission per lead or sale, like Amazon's that pays you 4%+ (depending on volume) per item sold, or many of the things on places like Commission Junction, which include things like 1% of airfare sold. Then you buy ads which point to your affiliate link; if your affiliate payouts are greater than the cost of the ads, on average, you make the difference.
Some affiliate programs (like Amazon) don't allow this. Others are happy to allow it because it sort of outsources the work of figuring out how much to pay for ads. Instead of a company having to decide what to pay for e.g. Google AdWords, they just decide what percentage royalties they want to pay out for leads, and let third parties figure out how to bid on AdWords in a way that doesn't exceed that cost.
Normally with affiliate links, or how most people understand it (at least I do), is to place these links on YOUR website.
This seems to go in a slightly different direction where you place and ad for some else on a third party website. However, it's not a real ad, it's a third party affiliate link (your affiliate link). Very clever.
And if you're not working outside the job, then you're not fully committed to your career.
And for that matter, why should anyone be fully committed to a job? Life is more than a job, and most lives last longer than most jobs.