These days it's just software. You have free software that gives you a limited user experience or timed trial to decide if you want to buy the full thing.

Look at any app store and look at the free rankings. It's practically full of nothing but "lite" versions that only exist to give you some features to help you decide whether you want to pay for the full version.

If anything 'shareware' is more alive than ever although it goes by different names these days, 'lite', 'freemium', etc.

Shareware as a business model is alive and well. It's likely that most commercial software a user uses these days started as a demo they were testing, maybe with a few features missing, or nag screens or a timer -- then they upgraded it to a full licensed copy. For whatever reason, we stopped calling it shareware, but that's basically the model in use for closed-source commercial consumer-level software.

In many ways, shareware has become the "default" method for distributing commercial software, and it's non-shareware software that's kind of weird. This even happens on the high end. I worked for a desktop software company years ago, and we gave away our software on a 30-day trial, if they liked it, a seat cost $30k. It was called the "30-till-30" model by our sales guys who didn't realize it was just shareware.

Looking at my own list of software I have installed right now:

Chrome - free with open source version

Firefox - open source + donationware

Thunderbird - open source + donationware

MS-Office - shareware

Foobar - open source + donationware

yed - free, but with commercial tools as part of the ecosystem, this makes it in my mind pseudo-shareware

Gimp - open source + donationware

Simcity 4 - fully commercial

Notepad++ - open source + donationware

Sublime Text 2 - shareware

FileZilla - open source + donationware

Mirc - shareware

Anki - similar model to yed, desktop version is free, mobile is paid

Bulk Rename Utility - donationware, closed source

Caustic - similar model to yed, desktop version if free, mobile is paid

Pycharm - shareware

renoise - shareware

bunch of steamgames - most started as a demo, so I'll go with shareware

skipping over python, perl and the usual open source suspects

and on my phone: most started as a "lite" version so many of the apps are all shareware

The word is pretty decisively dead [+]. Lots of companies make money by selling software over the Internet on a free trial model. As was routinely observed in the shareware community as we tired of the name, "How can we differentiate 'shareware' from the rest of the industry when Microsoft Freaking Office is sold on a free trial model these days?" After the widespread rise of the web "You can give the installer executable to other people. Please do!" was no longer a really compelling advantage, and it always confused a lot of civilians. ("You mean I don't have to pay for it, right?" "No, that is not what shareware means." "You greedy bastard!")

I just sold my business which did this back in April -- it supported me above my previous day job salary for a while back in the day, before the rest of my business eclipsed it. I was, ahem, very much not the most successful HNer with the model, but many of the others like to keep things under their hat.

At least one received a check written on purple paper with an exclamation point on it, as if the dollar amount wasn't an exclamation enough. (He's occasionally active on HN and can tell you the story if he wants to, but it isn't mine to tell.)

[+] I used to be a card-carrying member of the Association of Shareware Professionals, which is now the Association of Software Professionals, because the membership expressed its opinion that the shareware branding communicated "crappy software which will give your Googles a virus but is otherwise free."

Yes, Shareware is dead. The entire idea with shareware was that you could share the software with others. The distribution channel was sharing. But the shared software was limited, and those who like what they received could call and upgrade.

There's no "shareware" per se, but there's plenty of "indie trialware" if you will and it's doing really well.

I have long-time friends who live very comfortably from a small herd of shareware products. I also know others who decided to grow at some point and now operate moderately-sized software shops that too are doing well. All of these are on Windows, and nearly all of them are desktop software. One thing to keep in mind that smaller companies tend to put up a larger corporate facades, so the chances are that you've seen plenty of single-man shareware shops without realizing it.

The channel is the path from developer to end-user. At one time, one had to purchase hookers and blow for the distributors. In some respects the app stores are helpful but I regard them as eliminating our ability to determine our own destinies.

http://atp.fm, but I rarely finish one episode these days... I wish I could listen to fun smart folks talking about computers other than Apple. Also, I'd love to hear people that weren't so overtly progressive.

Most stuff I find is too serious and I rather hear podcasts to entertain myself instead of trying to learn more stuff while driving.

I listen to dotnetrocks.com podcasts during my commute to work and while taking a walk. Love it so far. Learned so much new stuff.

edit - I also follow asp.net\community, techcrunch, robert scoble's updates, the hacker news, fb engineering, scott hanselman, guy kawasaki and few more tech resources via my fb news feed. I also watch few videos from time to time at youtube.com. MSDN blogs, Channel 9, mvc conf, dotnet conf are also in my reference list.

My problem here -I come across so much great content everyday but it is very hard to digest everything or keep everything somewhere conveniently to refer later. Currently, I email content links to myself. I tried pocket and other similar services but they do not have good features to retrieve or refer content later on. And, this is the reason I started work on this site - www.LinkSto.re few years ago. It provides you summary of articles that you saved, clutter\ad free reading. User profile to show you what they have saved.

Features coming soon - great search capabilities by tags, date or content. Calendar to locate stored articles or schedule reading for yourself or with your friends. Article recommendations.

Episodes are usually small bites (~20-30 mins) of discussion/interviews on one of the upcoming technologies/trends by a couple of Andreessen Horowitz partners and an invited guest. Content is usually pretty insightful and they are really good at doing a thorough analysis of the current status of the tech industry.

Just found http://fullstackradio.com/ yesterday and I've been listening to most of them. They're pretty great. They talk about their subjects in a mostly language/framework agnostic way so it's really useful. I don't know why but it's hard to find podcasts that don't assume you're a web developer by default.

I'm currently working on http://engineeringblogs.co - its a list of engineering blogs from tech and startup companies such as Facebook, Twitter, AirBnB etc. It currently needs more work and that will be happening soon!

Software Engineering Radio is in my podcast software but I don't find myself listening to it much.

I have a variety of others more oriented to productivity and freelancing, but they're less technical. I do highly recommend the Home Work podcast by Aaron Mahnke and Dave Caolo - one of the few I have set to auto download.

I follow all of them via RSS. In English: Hacker News, InfoQ, Planet Clojure, O'Reilly Radar (and ocasionally listen their podcast in SoundCloud), Ars Technica, The Server Side. I save some episodes of some podcasts which I find interesting (eg. The Cognicast) but takes me a long time to catch up.

CppCast [0] is a pretty good C++-focused podcast. Starts with a summary of recent C++ news (and related topics), followed by an interview with excellent guests (usually luminaries from the C++ community).

The Jeff and Casey Show is a weekly podcast by software developers Jeff Roberts and Casey Muratori that is, for lack of a better description, almost completely random. Often both meticulous and erroneous, somehow both offensive and compassionate, and always unorthodox, the one thing you can say for certain about The Jeff and Casey show is that theres nothing else quite like it.

It touches everything and keeps me up to date on important security vulnerabilities. (Otherwise I would probably disappear in my coding cavern for months and not know what is happening on the surface...)

Would you guys be interested in an open magazine that curates content from several blogs to give you a general overview of hardware/software technology industry? Anyone interested in collaborating on that?

A long time ago I ran a file hosting service that almost exclusively served one particular "fringe" community (for some reason it got really popular on one site and spread from there). I was running it anonymously at the time (for both me and for the users), and logging was minimal...

Imagine their surprise when I told them that I didn't have most of what they wanted in the first place, and that they could kindly go suck a pig. I checked out the company in question, and they seemed rather sparsely established, so my assumption was that they were a shell company for somebody. Never really looked into it after I told them to go to hell, and never heard back from them. AFAIK there wasn't a lot of pirate traffic (I shut that down and banned/reported aggressively whenever I found it/was notified about piracy or other illegal stuff), mostly just niche content that I assume was original... so I doubt it was an MPAA/RIAA thing. Odd.

(Sorry for keeping names out of it. The site was super well-known within the community, and I'd rather keep my involvement in said community quite isolated from my real life.)

Haha that's not dodgy at all. There is a legitimate business around selling data;

This is OK in 3 scenarios I can think offhand: 1) A company collects personal/contact information on behalf of another and is upfront about this at collection 2) A company contacts their list asking if these people would like to share their information with a company 3) Permission to sell information is in the T&C on sign-up of the original company.

If one of these 3 is not covered I image companies should purge data if the business closes. Option 2 would be good for companies that are looking for a cash bump on the way out.

At a financial level I see a bunch of people with lists in the 10's of thousands and they are surprised how little it is worth. To earn a western level income from a contact list you'd likely need a hundred thousand plus of contacts assuming a typical consumer audience and reasonable response rates. Lists are worth significantly more for specific hard to reach groups like CTO's or surgeons etc. For me these would be 15x what I pay against a standard consumer list as a massive generalisation.

I was approached a long time ago with an offer to pay for users' info on a forum I ran. You should have seen the shock at my refusal. The buyer just couldn't understand why I wouldn't want to make free money for just selling the list.

Funny, it gave me the impression that I was the first to say no and that most people would gladly sell off people's privacy for a buck. Sad.

Yes, several years ago I ran a self-created political site in favor of a specific candidate. I stated in the Privacy Notice that all information collected would not be shared and be deleted after the election. As I recall, I collected name, birthdate, gender, email, address because I wanted to correlate and display the info in a summary fashion, and I allowed people to make comments and come back and edit them so I had a password system, and some other things.

I had a few people contact me and offer rather significant money for the info (in total over $10K) if I'd quietly sell them a copy before I deleted it - pretty disappointing to me that they thought I'd do that.

I've never been contacted to sell user information, but I have been contacted to purchase information. Before I purchased whois privacy on my email's domain, I was frequently propositioned to purchase lists of users and emails relevant to information security and general SaaS products. It was pretty sad, actually. The emails never explained where or how they got the list of users, they just promised I would have an incredible ROI from these "qualified leads."

I have switched from Gmail to Zoho sometime back. But problem is people I am emailing use Gmail, majority of them. Last time I checked, I had sent about 85% of my emails to Gmail. So, my emails are anyways being ended up on Gmail servers. I am trying to get my friends and family to switch to Zoho, but they always end up back using Gmail :(

But I switched to https://runbox.com a few years ago.30 euros/year for 5 gb, 100 aliases, a very good hotline and the option to put your mails on a server without backup, which means that when you delete a message, it's deleted, not stocked on a backup (yes, if their servers fail, you lost everything you didn't backup yourself, but for now, it has never happened :)

And they can get you your own domain name for 15 bucks/year.

And they're green and in Norway and if you use their roundcube webpage, it manages GPG keys and yes, I sound like a fanboy :).

I am using https://www.fastmail.com with great results. They do have some features in there interface to ease the transition like being able to both send and receive mail from your old address directly from there interface.

This responsible disclosure policy was first put together by rain.forest.puppy. (One of the first people to discover SQL injection, and one of the founders of the OSVDB.) We have had good results with it, and nearly all the people that we have disclosed vulnerabilities to have found it to be more than fair, and motivating. The researchers have found that it also gets results quickly.

By default it requires you to disclose that you are following this policy, disclose the vulnerability, as directed in the document, then give them 5 days to respond. If you have done everything you could to contact them, and they will not respond, then disclose.

However, as others here have been saying, it may take a while to fix this problem. If they do respond, they may want to "negotiate" more than 5 days to fix the issue. That's great. Get some details, set up a reasonable timeline with them, and get a contact's information. Then it's up to you to hold them accountable. Sometimes this means disclosing on the agreed upon deadline, other times it means following up and seeing if more time should be given before disclosing.

The main issue, as you point out, is keeping users/data safe. If the company is unwilling to work with you, not disclosing could put other people at risk, because you didn't stop unsuspecting users from signing up for the service. On the other hand, disclosing without working with the company can unnecessarily put the current users/data at risk.

It's good to have a balance. The RFPolicy has helped me to have that balance when doing responsible disclosure. Give it a look over. It's not too late to use the RFPolicy now.

First thing is you need to be aware that anyway you do go with this could end up with legal action against you from the company. This can happen even to people with the best intentions or who try to be responsible. Just make sure you are aware and understand the risk.

You've already talked to the company, so anonymously releasing the information is out of question, they could probably track it to you.

Do they not have any sort of policy on this? Maybe try to talk to their team again but make sure you get it in writing and signed first that you're not going to be held liable, and just make sure you're safe. Maybe even ask a tech-orientated lawyer first?

My advice would to just try to be nice and open to the company, but stay firm that this is a major issue. Maybe write up some documents with exactly how you found everything, what it could mean to their company if it got out, and what they could do to fix it.

Just really be aware of your safety/risk. If you try to help and they don't want to fix it, don't feel bad or unethical, you've done what you can.

1) I mailed the company again saying that they have not yet addressed the issue. And that the vulnerability is now critical given how much info they are adding per day. Expressed that I would like to know if a patch is in the works.

2) Contacted several people in the IT security and audit business and asked what the standard procedure was. The response from our CERT was that for a vulnerability of this nature they need to respond with intention and details of fixing within 24 hours else I'm free to send one more email expressing intention to disclose vulnerability to public. Disclosure of vulnerability will not include how to exploit, proof of concepts, or any personally identifiable information.

3) if they say they need some time, and they say how much ( or I have to ask) I have to allow them that.

Lots of people routinely publish vulnerabilities; anecdotally, if you do it the same way everyone else does, I think your risk is probably minimal.

Some thoughts:

* Have a calendar and stick to it. If it's 90 days from acknowledged contact, don't publish anything for 90 days.

* Be careful about upselling services (my advice: simply don't do it). If you're effectively breaking someone's terms of services by testing (spoiler: you probably are) and you "ask" for a service contract in return for doing something favorable (ie, not doing something unfavorable) with the results of that testing, you're being coercive. Doing something unlawful to coerce someone into giving you something of value is extortion. Don't extort people.

* Be extremely careful testing other people's sites. The short answer to "is it lawful to test someone's site" is, "probably not". If they've posted a bug bounty or a list of thank-yous to researchers, you can reasonably infer that they're allowing remote testing --- but if your testing crashes their site or compromises user data, all bets are off.

* Do not under any circumstances post actual user information, sanitized or otherwise.

* Do not post exploit code, or information that makes exploitation trivial. If the world doesn't believe you about the severity of your finding, get better at gauging severity, or become a better writer.

If it were me, I'd probably sketch out a policy as follows:

* A calendar and set of escalations for confirmation of a finding --- first contact in order to find a safe way to relay the finding, escalating to public (Twitter) requests for someone to relay the finding to (maybe 2-3 business days later), escalating to simply sending the finding to public support addresses (maybe a week later). With no acknowledgement of a finding after, like, a month, I might escalate to posting the name of the company and a SHA2 hash of the finding, repeatedly confirming the finding every other week or so, and then maybe a month later more details on what the finding enables (the "Phone numbers. Names. Location." thing you wrote here, I would not write for a long time.)

* Once the finding is confirmed, a simple schedule for public announcement. Maybe 30-90 days, depending, on generating a patch, and then N days after than for an announcement on my blog or whatever. If we're doing a coordinated announcement where you send a bulletin that credits me and agrees with my assessment of the finding, maybe I'll give you an extra 30 days after the patch if you want it. If I'm the only one who announces, maybe I'm announcing 5 days after the patch. Things like that.

The important things are:

1. Write a policy and stick to it.

2. Get the vulnerability confirmed before you announce it.

3. Negotiate with the vendor to minimize harm.

Again: be especially careful when you're testing someone's servers. The law is generally pretty supportive of testing software you personally install, but not at all supportive of you testing software on other people's machines.

I would start by assuming it will naturally take them more than one week to completely fix this problem, and ask if the fault is so severe that it would be better to take the service down until it's fixed, both from the company's viewpoint, and that of an external entity able to force it being taken down even if it kills the company.

If the answer is no to both, it's not that dire and they can be given 3 more weeks, precipitate action would not seem to be required.

As for deadlines, experience shows they are so frequently required that you will need to set one; there's a lot that's been written about this so I'd look for that.

In the future, submit it anonymously to https://hackerone.com/ and let them handle it. You open yourself up to a substantial amount of risk (e.g. massive fines or going to prison) with the upside being a tiny reward or perhaps a "thank you". It's absolutely not worth it to try and be the good guy here.

You could refresh any folder in Explorer, not just your desktop. It's not just about Active Desktop 'michaelt mentioned (which had a refresh, but I guess it was a different refresh, coming from IE and not explorer.exe), but - as 'UnoriginalGuy hinted - because Explorer could, and often did, go out of sync for various reasons. It didn't affect only networked drives, it happened equally well when you had enough many files in a folder (something must have been timing out) or your computer was overloaded. The most common case I recall - Explorer didn't automatically show files created by other programs, sometimes it didn't even show a folder or a file you created via context menu.

Actually, I'm pretty sure some of this still happens today, in particular I remember noticing on Vista/Win7 that Explorer sometimes doesn't immediately refresh the folder contents when there's a new file created by external application (e.g. a log file), and refresh/F5 is useful to get this file visible immediately.

Funny thing, per the phenomenon of operant conditioning, over the years of using Windows I learned to regularly refresh Explorer windows via F5 to ensure I always see what's really there, sometimes just for my own peace of mind.

It is possible, although rare, for Windows Explorer to get out of sync with what exists on the file system or virtual filesystem(s). The refresh button re-acquires the data from the source and re-draws the result for the user.

For example, if you open a network share, delete a file using another machine that file might take between several seconds to a minute to disappear visually (although if you try to use the file you'll get an error and it will refresh removing it). You can alternatively use the refresh button to get an updated view instantly.

It is mostly useful with non-standard virtual file system services rather than the normal NTFS/FAT32 file systems Windows uses.

Back in Windows 98 there was a feature called 'Active Desktop' that could use web pages as desktop wallpaper (or partial desktop wallpaper). It was intended to be an early version of desktop widgets like stock tickers. As these were basically web pages, you could refresh for the same reasons you might refresh in a web browser.

As you could execute javascript it was also possible to do things like change your desktop wallpaper when you resized or rotated your screen. But active desktop was never heavily used enough to have all the bugs in it sorted out - if you widget's javascript tried to display a message box you could trigger a crash, for example.

I assume that feature is gone now - but presumably you can still put files on the desktop, so presumably there's a refresh button in case you have some strange configuration like your desktop folder mounted from a network share.

Like other people said, it is about refreshing the view for changes that didn't trigger an automatic refresh.

If you dig the details, behind the scenes an API called ReadDirectoryChangesW is called, which uses a notification-like system to report changes within a directory. However, that API is weird, so various types of changes are not correctly reported and explorer.exe is stuck with outdated data. The refresh forces it to update the view.

If you ever work on two computers over a shared network drive with Macs working in the exact same folder you'll immediately know the answer to this question ;) I don't understand why every system doesn't have one.

I use it when I do a Subversion update. TortoiseSVN puts a red icon on non-current folders and a green icon on up-to-date folders. Sometimes the icon doesn't change color when you update though, so you have to refresh.

In the past when CRT monitors were in usage,the ui needs to be painted on the screen.The crt technology refreshes screen so that pixels can work properly.If they are not refreshed,then some pixels become 'dead'.

I've worked and talked with various dev/IT consultants over the years, and the advice I've gotten boils down to this: specialize in a niche or product. Don't just be a web development consultant, for example. Be a web development consultant with a focus on X.

That X can be anything. Things like Wordpress or Joomla, or product companies like SAP, MS CRM, verticals like finance/banking or energy, or even your own open source project on GitHub.

"I'm 22 and I feel if I don't hit it big within the next 2 years I probably won't. "

I'm not sure what you want to achieve but in general the real world is not that strict. You are stuffing your ambitions into a tiny box and for no good reason. I would advice you figure out where you want to be in the next 20 years. This will give you a far larger scope for your thoughts.

Old people are not junk, if they keep their mental and physical faculties.

Referring to people who aren't knowledgeable about a subject as 'tech-handicap' rules you out as a potential evangelist in my opinion. You need to be an expert, you need to be passionate about a product, but most of all you need to be a nice person who doesn't look down on people who know less than you.

I've been a tech evangelist. It's an interesting and stressful job. If you can cope with lots of (international) travel, repeating the same speech over and over and over, subsisting on pizza and cheap beer, and listening to over-confident neophytes explaining why their plan to beat Facebook is rock solid - it may be the job for you!

As with any role, the best way to demonstrate your worth is to develop a portfolio. Give talks at every meetup you can. Make sure they're video'd - watch them back and learn from your mistakes.

Get a name for yourself on StackOverflow (or whatever) as someone who can clearly and concisely explain a solution.

Write dozens of blog posts - and get them syndicated - showing how you can write tutorials, answer questions, and explain moderately difficult concepts to a lay audience.

Finally, find a company (preferably with some funding) who you can see needs to get their message out there. Write up your plan on how you would help them succeed. Which meetups are they best to sponsor? Which merchandise has the best response among developers? What parts of their proposition need the most explaining. Pitch your experience.

A word of warning. I quit the evangelist game because I couldn't cope with frequent international travel. It's fun at first - but can play havoc with your personal relationships.

> I'm 22 and I feel if I don't hit it big within the next 2 years I probably won't.

Two years is not long enough to become regarded as an expert at anything. You are potentially shutting yourself off from much with this attitude. I think many people have this fear of "never going to be as good as the others", but here's the thing -- many people think it, very few admit it, which makes it seem disproportionately scarier.

Stick with it. Learn from the 15 year olds until you beat them straight.

Anyone who made it big before 25 just got extremely lucky. That doesn't mean that they're not smart though.

You shouldn't give yourself such a short timeline for achieving your career goals - The odds are severely against you.Capitalism isn't optimised for fairness; it's optimised for making as many people work for as long and as hard as possible (and this effect is only going to get worse with time).

Financial success is actually an oddity - A flaw in the system. It goes against what it's optimised to do.

Think of capitalism like the carrot dangling in front of the horse to keep the horse moving.

If you've learned to enjoy watching the carrot dangling and wiggling around aimlessly at the end of that stick, then you're getting the most value out of the system.

> But I do the google code-jams and what-not and 15 year olds can beat me straight.

There's this guy who won the Abel prize in 2012 called Endre Szemeredi. He said that throughout his career he always felt himself slow compared to the other guys around him. He started to do maths at 22 as his parents wanted him to go to medical school - that he left and went do do manual labour in some factory. His professor though he'll never be able to become a proper mathematician.

Here's what worked for me. You could say I was an evangelist of sorts. I did not set out to be an evangelist, more to educate myself about devops, and https://sysadmincasts.com was the result. Ended up getting hired by one of the companies I created a video on (but not in an evangelist role).

Here's some things to think about:

- you do not need to be an expert - you can teach yourself to be an evangelist (probably the best way) - 22 is *young* (I have 10 years on you) - almost better if you know nothing as you learn from the ground up - you will learn everything you need to know along the way - possible to brute force your way into it via consistent hard work

Here's my suggested strategy:

Start a blog or youtube channel where you review products around an eco-system. Boom, you now run your own evangelist company, congratulations! Keep at this consistently for a few years. Focus your reviews on a specific type of company or series of product lines. You will get on people's radar. This will bring in job offers as you have proved yourself as an evangelist. A few things that I can think of off the top of my head re: the journey.

- pick an emerging tech eco-system (I chose devops) - something shiny and new (devops) - educate yourself about said eco-system - educate others about what you learned (brain dumps) - chunk these into small 1-2k word postings (blog or video) - was doing a weekly text/video release (hope to get back on a schedule) - it will be extremely painful in the beginning as you will suck (I did) - you will quickly become better and improve your craft - have a release cycle to keep you motivated with an end in sight - set clear goals for what each posting will be about - show examples (code, workflow, diagrams, etc) - weekly cycle will force you to keep things small and workable - just takes time and effort to research - it's easy to write simple brain dumps about what you learned - this could take years (it did in my case) - don't write crap postings or spam content - we are sick of corporate marketing/hype/vapor crap - an unpolished human-to-human conversation works very well! - show example use-cases (who, how, what, why, when, etc) - think unboxing video for tech products (what does the gui look like) - people will recognize you provide value - this will open doors beyond your wildest expectations - you will gradually become an expert - very rewarding to help people from around the world - can take over your life if you let it - force yourself to keep quality up over all else (don't be lazy) - you can do this alongside your day job - builds proof that you can be an evangelist - you will become much better at distilling concepts - this provides extreme value for time crunched people - you taught yourself how to learn & keep current!

The trick is to keep yourself motivated. If you look at many information products today (podcasts, youtube channels, magazines), most of them follow a model like this, just copy it. Just the reward of helping others alone makes this worth it, so you really cannot go wrong! In that, even if you do not become a full-time evangelist, you have educated yourself, educated others, built a public profile, and that will pay off big time when looking for work in the future.

Assembly[0][1] is a great example of this I think. They have a number of community driven products in all stages of development. I think rather than just feeling like they have ownership the contributors do get some actual real form of ownership in the product. I am actually unsure of how that works though.

Please note that I also don't know much C, but this implementation does work. Also included is a Postgres version of the Ref DB backend (so nothing hits the filesystem). There are a few bits that are not implemented since we didn't have use for the reflog and those parts are technically optional.

Would probably be good to get another set of eyes on this from someone much more familiar with C.

Have you tried https://github.com/davidbalbert/libgit2-postgresql? I know nothing about libgit2, but came across this repo while looking it up. If it's got some issues it's a great place to start from, since it also gives you somebody who could code review and you don't need to start completely from scratch.

I propose we use "Task HN:" and do these requests more frequently. We'll surely learn a lot, come to ingenious solutions, and maybe, just maybe, make our time on HN more productive. I, for one, want to at least see, if not help, what small but interesting byte-size hurdles others encounter and how others can solve it in different ways, and all the discussion around it.

It's sort of telling that you refuse to put any effort into showing anyone you can at least put together a crappy implementation to demonstrate understanding and contribute back to the same knowledge space (beginner knowledge is knowledge) you wish to extract from.

The demand for the highest quality code for what is essentially begging is also not becoming. Even contributing a terrible implementation would tickle people's motivation button (so they can teach someone without building your entire project, show they are measurable better than someone, etc)

When working with string and vectors C++11 can actually be pretty straight forward, productive, and clear with no manual memory management. It definitely doesn't have as many string functions out of the box as modern scripting languages though.

As some noted, the fact that you realized what drives your desire is very impressive. It takes a certain skill to understand those things!

As someone who's been at it for years, I'll just give you one little piece of advice. If you've already been through the fundamentals, you've done enough. Now, instead of focusing on learning technology, focus on building things, this is what real engineers do.

Let me explain. You'll probably get much better with at least one thing once you ship a real project to the end, and this is where you'll get better.

One of the best programmers I've ever worked with was a PHP guy when I met him, and he was good because he shipped efficient, tested, and working code fast, all while being able to document and communicate about it with his team. That's what being a programmer is. You won't become a good professional programmer by chasing after hip technologies (even though learning different paradigms always help), but by building things, and preferably with people, because this is how things work in the real world.

As long as you stay with startups and technology companies, you'll see that any CTO or lead dev worth his salt would rather hire a smart Perl programmer with strong fundamentals who shipped things over someone (maybe smart too) who knows a bit of JS, a bit of Java, and a bit of Haskell. This is, however, not true with a lot of non-tech companies, where keywords on resume, a professional-looking attitude, and some good sales skills will usually get you better positions.

I think you have found two problems that many people will bump into: (1) there are two many subfields to keep track of everything; (2) in any particular subfield there are people who seem to be infinitely much better than you are :).

Both are true: there are simply too many subfields if you want to excel in all of them, for any particular subfield there are people who are much better than you are, because most of them have invested a lot of time to become an expert.

My first advise would be to get the basics right: many commonly-used algorithms and data structures haven't changed the last 20-50 years. If you know then inside-out, you know what to pick to solve a problem. Get a good book on Algorithms & Data Structures or follow a course or two.

My second advise would be to pick the area that interests you the most. Read the foundational books, follow the leaders in the field, and do projects (they are good practice and help you to build a portfolio). Put a strong filter on the stuff that irrelevant to your chosen area (only read the most interesting bits). You will find that you quickly change from novice to expert in your area.

When it comes to programming languages: it's fun and useful to know some languages. But in the end what you ship is more important. So, just pick a language that feels natural for solving the problem and don't get too distracted by armchair PL philosophers ;).

The first is a good feeling :-) Too many programmers don't have this realisation. Embrace it!

The second is something that worries me slightly. All of the programmers that I know who are driven by fear let it chase them into failure. Getting the "joy of tinkering back" is what you need. Forget the "ever changing rules". Chase what you love and forget about the rest.

Now for some specific advice. You are at a level now where you need to integrate your knowledge, not learn bits and pieces. Stop everything else you are doing and start a major project that will occupy your time for the next year or so. It doesn't matter what it is, only that it is something you love. This will help you more than anything else.

I feel good when I see posts like this. I have suffered and in past month have gone from an employee of very good company to broke unemployed. I am typically starting from scratch.

Reason: I thought I wasn't a good developer. More I read HN, articles, stories, more I got anxious and left my job to pursue research degree. I figured out I lacked mathematical abilities to do research in the field I wanted to. I became depressed and I felt regret all the time.

After 7 months, I realized I was chasing the horizon. I have realized it's not the new things you learn or the awesome technologies you learn that matters. Things that matter are: Being good at what you do, whatever it be...some people spent life juggling balls. They aren't genius in maths, science etc. but they are awesome at what they do. It makes you feel wow !

Second, it's about being happy. If you are writing this post in HN then you belong to very privileged class of people in the world. Be thankful for what you have. Love your family, friends. That is what matters. It doesn't matter what technologies you learn when you turn 60-65. All that matters is the happy moments you have shared with your loved ones.

Third. Don't take what's written by founders or geniuses seriously. Read, acknowledge and move on. If you question yourself over what others are doing and learning, you will be in mental hospital soon. So take things easy.

Last month I took a job in a company. Technology wise it's crap. No process. But everything works there. People get things done. We laugh, chat and go home early. I go to gym after work and sleep well after I come back. I enjoy time with my wife on weekend and thank god for this life.

It doesn't mean I'm doing nothing. I have compiled a list of books I want to study. I have read 2 chapters and I started a small project for fun. These are the only two things I'll work on..but no rush....slowly. After all they are last things I have to worry about in my life. First things first - Enjoy life and be happy.

Focus on one. Finish it. It will feel like an accomplishment. Genuine interest in things is certainly better than lack of it, but ability to say "no" to an interesting thing is a skill that needs learning on its own.

> I want to study data science, maths, devops and find that my desire is driven by fear of becoming outdated and irrelevant. [..] and conquering the anxiety of ever changing rules to the game.

If that is your genuine concern, I'd suggest focussing on timeless topics. Two easy rule of thumbs: (1) if it's been around for a while and still relevant, it's probably going to stay that way (eg compilers/parsers, operating systems). (2) if it's hard and math-y, it has a good chance at staying power, even if new.

In any case, do what adyus said: pick one thing, and ship, ship, ship.

Whatever you're not enjoying, stop. Whatever you are enjoying, keep. A career is too long to be carrying the things which turn it from being "a hobby" into a "real job".

I've often found that if I tried to do something because I thought it would be good for my long term career prospects I just wasn't that motivated. However I often found myself circling back to the same technology or topic at a later date out of pure interest and was highly motivated then. Attitude toward what you're working on and your reason for doing it is almost everything.

Sounds like you're maybe feeling a little burnt out if I'm honest. It happens to all of us. Whenever it happens to me I either increase the frequency of my other hobbies I enjoy (water sports) or if its a particularly bad spell, try looking into some completely unrelated area of inquiry (for me that can be space, cartography, travel, electronics, brewing beer, etc - even learning a musical instrument). I find that it not only stimulates my mind again but ultimately I start to make new connections about how my existing software skills can be applied to this new area of interest. New project ideas start to flow... and off we go again.

I have been programming for over 20 years and have very similar thoughts all the time :)

My eyes are bigger than my stomach. I believe that these days it's probably impossible for anyone to really understand everything.

Personally, I think PHP is a fine language when coded well (most of my PHP looks like my Java, though I haven't coded much PHP since just before the introduction of lambdas). I feel like it undeservedly gets a bad rap, perhaps because it's so easy to write horrible code in it. But that is just evidence of its complete accessibility in my books. I think that some of the coworkers I had at my PHP jobs would agree that it is an adequate tool for the job of web development (some people even use it for other purposes, but that's not my style).

I wish I could give you some solid advice, but I don't feel qualified to do so. I will say, however, my favorite experiences in programming have always been upon completion of a project -- seeing it go live, get real users, and actually work, from start to finish. Most of those times have been in my professional career where I was paid to complete something and had a hard deadline (that has nearly always slipped), but a few have been school assignments and personal or open-source projects that have 0 or nearly 0 users. Sometimes solving a problem or scratching an itch is just the thing I need.

Also, in nearly every case where I've shipped production code, I look back on it fondly some years later (especially if it is still running and getting used) and think, "damn, I must have done an incredible job. I got everything just right." But on the rare occasions where I get to look back at the source code, it's always got plenty of TODOs lying around, and things I wanted to fix, stuff I would do if I had a bit more time but just never got to, etc. It's never perfect... but sometimes it still works. Memory is a funny thing.

Instead of picking technologies, pick a project. Let your development be project driven. When I needed to inject javascript to scrape a complex static page and change it into an angular app, all of a sudden I learned less and gulp because I had heard about them and they helped for that goal. Choosing a project will let you learn while focusing on one thing, although potentially learning a lot of things.

An airplane pilot once told me that when young airplane pilots experience turbulence, their reaction is to speed up to get through it faster. That makes the turbulence worse. An experienced pilot will slow down because it reduces turbulence and makes the trip enjoyable again.

Apart from the desire to learn those skills that you state is driven by fear, with a bit of introspection can you cut through that and articulate your actual core desires? i.e. when you're able to quiet that nagging voice, what topics/subjects/work bring you true joy/pleasure? Put differently if you had infinite money what would you want to spend your time working on?

First of all there are not good and bad languages, there are programmers who know a platform well and others who dont. So as a first piece of advice Id say choose a language, any language, and stick with it. Sure, sexy things are published all the time but you dont need to know a dozen frameworks to get your job done.

Your fear of becoming outdated is well founded. Well all become outdated. Thats why every five years or so we learn a new language. Thats the fate of the IT industry, things change and sometimes they change too fast. We learn to adapt. But once you learn a language pretty well youll realize that there are commonalities between them all. Learning a new one is a matter of weeks. So stop worrying too much.

My last advice would be to choose a project and focus on it for the next two to three months. Stop reading and start implementing. Thats probably the hardest part. But it will help you get in grips with the language of your choice and feel more comfortable and self-confident. And it will also help you realize the path you wish to follow.

Buy the American self-help classic, How To Stop Worrying and Start Living by Dale Carnegie, and read a small portion daily regularly before bed. Seriously, that book changed my life, career and studies. Brought a new level of focus and mastery into all my works.

I am in a similar boat, that is after being at least 20 years of practicing software engineering. I work in deep embedded, so my language is either C or assembly. Over the years, I have touched on Perl, Java, python, php, various shell scripts, and many others. Also exposed to various technologies and industry as well.

The question that I keep coming back to is whether I am doing the things that I find interesting and engaging. The answer is an absolute YES. However, if I need to do something else where I would need to learn some other language, or technology, so be it. It is all part of the process.

You sir are a generalist at heart not a specialist. Embrace it and make it your strength! Of course, some focus training is good, learn to fight distraction, but also realize that your brain craves that extra breadth.

In my 2nd year, I was selling website templates and earning good money. It required little knowledge of html, css, and js.It was good. But soon saturated my hunger.I read up on solving problems, from a development perspective.It's a lazy man's job but a brainstorming one.

Solving problems gave me direction.I proceeded to learn different languages for different tasks that were required. I read about implementing backend in django, ruby on rails, node.js and php.

In late 2nd year, I decided to work in a team, and solve problems as a team. I took the job on CTO, for various startups in college. Each startup would present a different problem.

Instead of learning it all. My direction became problem centric. Sure, most of my startups failed, I was working with resourceless people in college. And had to always be the one to start everything from ground-up.

Investing my time in too many startups, too many problems, too many languages ... hung me up on my degree. :P

Sure, you'll meet people who have a mindset that they'll get you to make the product and then ditch you. But I never cared about it. :P Don't feel bad.The world will always be like that. I got what i signed up for. :)

I am now a full stack developer by choice, I design my products, create apps and I have functional knowledge of most of the awesome frameworks.My journey made me work with deployment, asset management, managing servers, deploying hybrid apps, scrape data, building performant and consistent apis.

It was a hard time. I will get my degree this autumn. Look at the bright side.

People always get happy when you can turn their idea into product in <15 days. :)Just solve problems and youll emerge as a magician. :DAll the best !

I am as well guilty of starting many side projects and working on them in parallel (about 20 currently). I tried various approaches of "managing myself" in order to get some progress on all of them. I tried to limit the number of projects drastically and also to a single one. That did not really work, because my heart was always drawn to these other projects that I had discarded. So currently I have these 20 projects and try to keep track of all of them. I choose one from day to day and try to work on it. And so far this approach works quite well.

I think it boils down to weither you keep track of all your projects (what's to be done next), that you do not try to plan ahead too much and that you do not plan too many tasks for a single day. If you stick to these guidelines there is a high probability that you get a good experience ("did that, finished that") every now and then which keeps you going.

Same for some of us. In my case, I'm busy building too many side-projects, and I do it just for the sake of learning new stuff, I have a lot of fun and it works!

With 5 years you're just starting. You need to pick an idea related with 3 or 4 fields you want to learn (Data Science, DevOps, etc) and build it. For example: An app that analyses tweets from a twitter stream in real-time and applies predictive analysis for certain (or funny) topics. You can use docker containers and setup a CI server yourself.

It must be an idea that excites you. Build it from a paper sketch, to a MVC app, to CI server. You'll learn along the way, bit by bit, don't rush things...

This is very effective for learning, and there's also something special seeing your small (or big) ideas come to life. You'll get an enormous satisfaction...

I am the exact same way. I find it difficult to want to specialize in a certain area. I always want to learn everything. Xyz company is using Go? I should learn Go. Abc company is using RoR? I should learn RoR. It can be a bit of a perpetual drive which may at times be mentally exhausting but I think it's good to have that and to not be complacent.

I find it overwhelming at times. But I think uniclaude said it best, you just need to jump into it and make something, build something and don't be afraid to write shit code. Afterwards you can step back and have a look at what new knowledge you've just acquired and begin to fine-tune any rough edges if it still interests you.

I think it might help if you start looking at different technologies and languages as tools to get done. And those are guaranteed to keep changing. So you start focusing on doing or building something with those tools. This way you won't be overwhelmed by too many things floating around and try to get something meaningful out of whatever you are learning. It is really difficult to be an expert in many things at one time and very few succeed in it - but it is possible to be moderately successful in learning those and put them to use (and unless you use those, reading blogs/books etc won't be long standing IMO and you will keep questioning yourself if you have really learnt it or not).

I think something we all need to remember is that there will always be something new for us learn, but you don't have to learn it. I started programming in PHP about 10 years ago. At the time, people told me not to waste my time, it's a junk language that will good the wayside. Today? Still writing PHP, and getting paid alright to do so. I follow the industry and trends and I look into the latest and greatest and I'm aware of what's going on but I rarely spend any time learning it. As long as I know the pros and cons of X and what I would use it for I'm content.

TLDR: Don't worry or feel the need to know everything. Pick what you love and enjoy working in and focus on that.

Do you want to learn all of those because you have a genuine interest in doing so, or do you want to learn all of those things because you feel you "should"?

I browse HN and read comments and articles I do not even begin to understand, and it's hard not to feel rapidly inferior. But you don't have to be a genius to make a difference, and you don't have to be a genius to be happy.

I make my living off the back of PHP. Sure it's got a bad rep, but it's hard to knock something that keeps a roof over my kid's heads and their bellies full.

If you want to learn because of genuine interest - do one thing at a time. Let your curiosity guide you. And good luck!

When you don't know yourself even a victory has a defeat inside. Among all that you said: math and data science are very nice skills to have. A theorem is not a matter of fashion it is true (under his hypothesis) it will always work for you.

I am extra full of things running in parallel so no good teacher here! But I can share my experience: what made me step up from random to mediocre programmer were the test classes, because finally stuff was making sense: the test class is the theorem, my code is the demonstration, I could work with that. You have to find your ways to make cool things work efficiently and reliably.

Good programmers think they are mediocre, bad programmers think they rule.

Watch ancient code of you in PHP and after all you learned, read it again. Was it really that bad code? I always thought the same like you did, but when i read old code... I sometimes think it's beautifull ( can't explain it otherwhise)

Learning other programming languages helps you understand architecture and programming concepts, that you can probably implement in your "old" programming language. Not learning them, doesn't mean you're a bad programmer, perhaps just a lazy one :P

I don't actually think there is anything wrong with being a generalist. If you're starting your own company or you're going to be the CTO or first technical hire of a startup, general knowledge is the best kind.

You can always find specialists later. If you know a bit of everything, you can set up your solution by yourself. Maybe it won't be perfect. Maybe it will have to call someone's API that's too expensive, but later your specialist will rewrite that code, for example.

I experience the same anxiety - I have a divergent way of thinking about things and tend to get interested in lots of different things at once rather than one thing in depth. Sometimes its good - I can think of different approaches to problems, for example. It seems like it makes it difficult to learn new skills to the point where they would be useful/worth anything to prospective employers, however.

My current strategy to address this is pretty simple: choose one thing at a time. To echo uniclaude's comment as well, it helps to build things - don't read about 10 different ways to do linear regression, choose one and try to make it work. I would also add that its fun to work with other people, and it can help you stay focussed. Obviously there are a million ways to contact people who you can work with on the internet, but I have been using meetup.com to find groups of people who share my interests. going to hacks, workshops, presentations and even having general discussions with people around one topic can make the learning process more engaging and you get the added benefit of being able to draw on other people's expertise and experience.

Before anything, know that it is actually the people that matters in the end of the day, not "topics". You are creating with people for people, it is people that'll give you the "push" you needed, people who give feedback, people who love you and your work, people who challenge you, etc... Love people and learn from them.

As to skills, and topics and work, just focus on doing things that you love and repeat. Because you will end up doing them anyway. The rest will follow.

I think the desire to learn many things at once is something most of us would share. But be careful that it might also sprout from a fear of somehow "missing the game". Trust that you are not "missing out" anything. Don't buy too much into competition (which is again actually something about people). You may try just getting an overall idea of the things you are curious about, but still stick doing what you love. Because if a topic is important enough, it will show up again anyway, which is when you will know for sure that "it's the actual time" to learn that topic in depth.

Languages are so simple to pick up these days: stackoverflow, teamtreehouse, git, etc. Latch onto a fun project with a fun mission, learn languages on the fly, and finish it. In a book, you wont learn how to debug that broken ruby gem. This will guide you in the right direction as well, it will force you to pickup pragmatic practices. [As opposed to sitting in the break room debating abstract factory patterns vs factory pattens]. After 13 years of coding, I just code on projects I enjoy now. I have to learn Go? Meh. Whatever. As a side note on php (my true love), I encourage the hate - it helps my pay.

This needs to change. What's helped me a lot in recent years is to focus on finishing projects. I don't even care what the project is as long as I finish it before starting a new one. That is my desire now.

tldr;Instead of pure "learning-driven" activities, tackle side projects. You'll cover a smaller problem space but learn it much better and have something to show at the end. Copy something that already exists, build it from scratch with few to no dependencies, possibly make it better in one single dimension.

Actual examples Marc built that changed his career: Mongrel clone in under 500 lines of codeAnt clone in under 400 lines of code

Build something tangible in each of the areas you are interested in, and then focus on the thing that was most exciting.

Btw, the problem you outlined makes a very good answer to the question that is often asked in interviews -- "what's your greatest weakness". Not having deep expertise in anything is not so good, it's a weakness indeed. But excitement about many things and broad experience make up for it.

I feel that Im in a similar boat, the advice in this thread has been helpful to me. What Im starting to realize is that its better to focus on a particular field, such as mathematical analysis, or network security. This way you have a skill in a particular field.

I think it is important to balance between how much new things you are learning and how much you are using previously learned things. The challenge is to squeeze in the most potentially useful new things to the limited set that you are going to learn. For example: is GO or Rust going to be the language that I can use in my projects at work in the future? Should I learn Clojure or Scala? Should I learn machine learning or statistics? etc.

I balance these based on the things I would like to do in the future. I become and learn what I would like be and try to find a job where I can use those new skills.

I feel the same after doing web programming for over a decade. I started out doing database stuff and actually with hindsight I think I could have quite happily narrowed my focus towards being a db specialist, and avoided that feeling of treading water. People say it's great to be an all rounder but it's only when you are focused you excel at one thing. After grappling with an ad-hoc task, I master it after a day, only to forget it by the next time I need to use it.

I'm gonna regurgitate what everyone is saying. Stop learning "because learning" and start learning to complete a project/challenge. It's like fighting, playing a sport, or writing poetry... It doesn't matter how much you study the topic, you will only get better if you apply your knowledge to some goal.

I can relate myself here. Many people who are suggesting to focus on on technology seems difficult now. If you are a web developer you need to know many things. Apart from main programming language you should know about Redis or other Q system, Build systems and many other things.

1 - What has helped me is to categorize my insterests. Sure, they're connected in my brain and it's not like x is disconnected with y, we can always find a connection.. but I needed to separate them into categories to be able to manage them more easily because I don't need to tell you the state of the brain if you dump all of them in the one and only category most of us have which is labelled "Interesting" since we find every darn thing interesting.

Here's what I did:

I separated things into "Pillars". The way I think about them are Ministeries (I needed a really bureaucratic rigid structure to balance out the clustermess the brain is): Engineering, Business, Lifestyle, and Self Improvement.

Doing this alone has allowed to be conscious that I'm neglecting this category or that one, because now they have a name and I can measure stuff. Before, everything was just "Interesting" and it's not really easy to track down since they all blended together in a homogenous whole. It's like being in a bath and you're not really aware of when the water became cold. Tagging avoids that problem.

Compute how many hours you can dedicate for the whole stuff per week. There was a time I studied for 16 hours a day but it's not really the best course. It depends on your situation (work, etc). Most people say they don't have time but they really have a lot of time. A lot would spend hours on Facebook, then hours watching TV, and then complain and describe themselves as if they're not the "sitting facing a computer person". Most are on a 5 hours minimum wasted per day diet.

Each of those "Ministeries" gets a chunk of that time as a weekly budget. And this budget gets divided between the "Departments" making up that Ministery (say Engineering has Control Theory, Programming, Signal Processing, etc. Each one gets its weekly ration)

So imagine 40 hour per week for the whole 4 Ministeries. Say Engineering gets 20. From those 20, Control gets 5 hours per week, etc..

Thinking in weeks was important because there's only so much stuff you can fit in a day, and if you think in days, you wouldn't be able to see the whole picture, which is: Making sure you touch each of your areas of interests on a regular basis.

I'm sure you spent so much time on something really interesting, only to find that you completely forgot another thing that's really interesting on which you've spent a tremendous amount of time and of which you now recall nothing. Right? Sounds familiar? The feeling of the wasted time and still barely remembering a thing can make you punch walls.

So, instead of doing the same stuff for whole weeks or months.. You do many things that you visit several times a week. This sort of refreshes your cache with a high enough rate that you don't neglect a topic, but low enough for other things to be touched, too. In other words, you don't touch TOPIC 1 every single day, but even if you touch it every other day, the switching is fast enough you have the impression you're doing it every day.

This doesn't work if you have very few areas of interest, but works wonders if you have many. This is also why a week goes by "really fast", and why some people feel it's long (because they're not doing much. Some people actually do get bored).

Finally, limit things.

Not the amount of things you're interested in (although that helps.. But limit resources. I was interested in Python and was wondering which book was good, and where to start.. 4 years would pass. If I had read 10 pages per day of any book while I was trying to decide, I would've been much better at it right now.

This is where you have to be narrow-minded.. Want to learn Calculus? That one is tricky since most books suck and aren't my style, but pick one book and go through it. Even at 10 pages a day, 3650 pages per year. That's 6 books in a year on Calculus.. I'd bet anything that you'd be at the very least better than if you were still deciding which one to read.

Hope this helps (I struggled a lot and still have to pay attention to that).

Pay for full time, beat-walking emergency medical technicians in shitty neighborhoods. This would prevent a lot of unneeded hospital visits and offer basic health services. A lot cheaper than 911 calls. I imagine having people on the ground would prevent a lot of problems.

A Google Glass like device without most of the functionality (no camera or mics) or processing hardware (doesn't have to run its own OS), except the display (this should cut down costs quite a bit and make it a bit more feasible to manufacturer and purchase than Google Glass itself).

You connect devices to it using Miracast and/or some other wireless display tech and extend/mirror your smartphone/laptop displays.

It can serve as a portable multi-monitor setup for productivity, or a simple portable heads-up display for entertainment (video playback, reading) or utility uses (navigation).

That'd be the MVP anyways. In future revisions you can maybe add things like a mic and/or camera for things like augmented reality and voice control, but figure out how to offload the processing to the master device (laptop/smartphone) rather than dedicating hardware to it on the device itself for affordability and battery life.

Netflix, but mostly decentralized. End users can be paid to allocate part of their PC's storage toward movies and shows that they stream to their neighbors, taking a lot of the load off the public backbones and central servers.

Of course, these are encrypted and only decrypted (transcrypted?) when they're transferred to someone nearby, intelligently based on `tracepath` or something. My thought (may or may not be feasible) was that the central server only gives you the public key for the data, and then provides the private key and a new public key when the data is transmitted. I'm not sure that's even possible with any level of secrecy, but if so it would remove a lot of redundant traffic and I imagine you could pay people less than you'd save on bandwidth/peering if you could just pay them to P2P content (securely).

Get theaters involved in the initial distribution since they're everywhere and have digital copies (and probably decent pipes).

Basically, my internet got really crappy every day at about 6 PM and I imagined that 90% of my neighbors were streaming the same episodes of Breaking Bad, and it bugged me that it wasn't just sent once and the distributed locally.

Problem: Advertising is a big industry. Billions of dollars are spent to bolster brand awareness and drive sales. Increasingly, advertising is digital as consumers spend more time on phones, computers and tablets. Social platforms like Facebook exploit user data for enormous profit, while all the user gets is a free product. There is an opportunity for users to reclaim a significant amount of this value, and in doing so realize a greater sense of worth.

Mission: To measure and honor the value of every individual.

Vision: Corporations and Individuals providing value directly for each other.

Product: A URL shortening service for individuals to monetize the content they share. Monetization occurs via an ad featured between the platform sharing the short url (e.g. Facebook) and the site the short url takes the user to (the content being shared).

1) An application that connects restaurant chefs and managers to local farmers. Local farmers could upload their goods for the week on a marketplace board, and chefs could find things that they would like to cook with for the week and buy them. Typically chefs meet local purveyors at farmer's markets, but for small enough producers, it would save them time and money to just have their goods bought directly without having to go to a central market and run a stand. Chefs would be able to order local goods similar to the way they order through Sysco or FSA.

2) A dribble-like site for artisans. A site to showcase and upvote artisan work and hopefully drive business to them. Baked goods, building airplanes, cedar strip canoe building, kinetic sculptures, etc.

A product hunt type website but for adding features to current app/websites. User can thumbs up or down a feature request, and can also thumb-up a request with some small money tagged to it. The money collected will go to a non profit.

I play soccer recreationally. I've easily played more than 1,000 games and all I have post-game are memories ( which are nice ), but I feel we could do much better.

I have a vague idea for a solution - but it would involve drone-filming all my recreational soccer games, and then have the content edited/produced - so I could see al my plays, everyone else's best plays, and so on and so forth.

It would be really interesting because it would also augment the social in-pitch experience with post-game online socialization.

I sometimes even registered the domains, e.g. toothing.org The name offers various cell phone games, even the toothing hoax itself.

The next odd idea requires expert knowledge in Babylonian contracts. Every change of ownership without a contract was theft. Contracts involving people required a cancel clause for each side. And ownership on people without contract was punished by death, as illegal slavery. So most contracts are marriages. The contracts are highly formalized, so one can use them as templates and exchange the names. Print them on a clay tablet, burn them, and send them by mail. I'm sure marriage contracts would sell, especially those with the cancel clause: "and when she says you are no longer my man, he can throw her into the river".

The 3rd and most challenging idea would be a project and freelancer site that does not suck. Where projects, prices and skills do not race to the bottom.

And last shameless plug about something real You can contact me on #o3db @ irc.freenode.net - currently developing a Browser-4GL in Scheme.

- Startup: create a universal and convenient micropayment system that would allow content creators(writers, comics-artists, video creators) to monetize their content.The problem now is that current systems suck, and each website has it's own, so that it's not convenient for users to pay for content, they have to enter credit card, or go to paypal, etc. There should be a nice embeddable button that allows users to pay for watching a video or reading an article in one click, on any website. Or maybe something even more elegant and convenient.

- Startup: xprize meets kickstarter. Or a reverse-kickstarter. You create and back the project first, and then anyone can execute it and collect the reward. People come up with projects they want to see happen, submit the idea. Anyone can vote on the idea by sending some money. As a result you have a list of user-created project ideas, ranked by how much money people deposited on them. Anyone who completes a project gets all the money.

- Project: A convenient website where users can add feature ideas, vote on them, and discuss implementatuon. It would be a convenient way for developers to prioritize which tasks to work on. Probably connected to git. Basically like submitting issues, but it's feature ideas and it's ranked by importance.

- In-browser markdown editor like on gitbook.com. Please somebody make this. Ideally it would be open source, but I would totally pay for an opportunity to use it on my website.

- slant.co, but for things other than tech. Movies, books, music, whatever. Or a similar open-source system so that I could spin up my own website with this.

- Awesome open source chat that I can embed on my website. Like chapp.is or gitter.im

-A robot simulator programming game where you control a virtual robot with your code. Targeted to CS and AI students. You could use this game to practice algorithms you are learning. Challenges(levels) are somewhat similar to AIMA exercises, or can be taken from berkeley AI class curriculum. Later you add a "competition" feature, where several teams program their robots to fight each other. Check out Screeps and Starcraft AI Tournament for inspiration.(the whole game is in the browser, robots are controlled with REST API so you could use any language.)

Send me an email to raymestalez@gmail.com if you are interested in working on any of these. I know Django, I can contribute, especially if it's open source.

A mobile app platform based on images. Keep a basic JavaScript bookmarklet to decode the images into HTML, so they become browser-based apps. Store everything in the 50MB of cache-manifest. Use the same apps on iOS, Android, etc. Evade parental controls and device restrictions on app stores. Copy app-images directly between phones. I call it "Fondant", meaning "chocolate coated". Because I can have chocolate coated Apple, and chocolate coated Jelly Bean/Lollipop, etc.

1) A lightweight CRM for friends. I'd love a tool that takes the teachings of someone like Keith Ferrazzi and builds a simple tool around making it much easier for me to be a better networker. Facebook doesn't quite get the use cases right, and neither does linkedin, and other CRMs are too heavy weight to be practical. Maybe with tips on managing my professional networking life in addition to my individual relationships (eg, suggest among my network a group of 4 that would make a good dinner party, and see that I haven't done a dinner party in a while and suggest to send an invite to the group). Or, tell it a handful of aspirational goals (work at Google, start a company, go to YC) and have it suggest a path to get closer to that goal by probing my network, discreetly connect me to others with similar or complimentary goals, suggest when I can help someone that has a goal that's close to my expertise, etc.

2) It would be really cool to get the 'magic' of the command line into the hands of everyday people that don't even know what it is. Magic sort of does with with SMS. I'd love to see an app toy that you totally interact with by emailing it. Then you could email it for all sorts of automated things -- :bcc the app to log data, send it an email for reminders, simple commands could be parsed and understood. It wouldn't have to do a bunch of NLP at first, you could be strict about how the data needs to be formatted for it to work.

3) This one is nebulous, but I think software discovery for the enterprise is really broken right now. There is still WAY too much outbound phone sales and old fashion 'network' selling going on. There should be some place I could go as, say, a sales ops manager to check out the best software eating the uses cases for sales operations (Ambition, BaseCRM, Yesware, etc etc). Maybe it's product hunt style group voting. Maybe it's a curated, impartial look into the 'stacks' of the industry companies that are considered 'best in class'. Maybe it's something looking at Google trend data and finding 'momentum' sort of like Mattermark. Maybe it's a 'pagerank' style connection map by looking at VC investors and the 'client' pages of startups. I dunno the best way to get good information that scales and nimbly identifies new ideas when they emerge, but if you figured out that problem you'd be solving a huge, very real problem and be in the middle of what will be billions of dollars in $ shifting around in the next 10-20 years. Search like Google works when you already know what you want, but it's really hard to distinguish the signal and noise with all the new tech and tools and toys emerging to take over different use cases for large companies. And the people in the large companies that need to know this information often don't have enough time to do the research or even where to begin.

For the love of God, someone create a World of Warcraft where the quests are educational. Instead of "go kill 8 green dragons" the questiver says "Mata a 8 dragones verdes". The immersion and addiction to progression (i.e. unholy motivation) would have us speaking multiple languages in no time.

Global demand for almonds will continue to vastly outstrip what California can handle via traditional outdoor growing. That would have likely happened even without the drought. The water requirements will place a cap on the almond industry's growth. The solution is drastically more efficient indoor growing.

Every two or three months, I check to see if there have been new write-ups on the architecture of big sites, or otherwise interesting budget scaling examples (think: plenty of fish, Etsy, or Stack Exchange). Maybe once or twice per year I find myself looking up something I read there previously on an architecture.

I've hired >50 engineer in the last 12-18 months. They are experienced hires I will grant you, but education is something I barely look at on a resume. In fact, I can't even tell you how many are self taught vs not, but I suspect it's 30%+.

It's a little different for junior engineers, as it can make a difference, but in my experience the only thing you can ask for from any engineer, which is especially true for junior engineers, is: attitude and aptitude.

For example, if hiring someone with a CS/MIS/CIS degree with 4 years experience. We'd accept 8 years experience in lieu of a degree.

If you find learning in college boring, what do you think this field holds for you? You have a world full of knowledge you could be learning if you're bored, no professor is preventing you from becoming knowledgeable across many programming disciplines.

It seems you don't even have a rudimentary idea of what goes into building software yet, you just want to skip ahead to the getting paid part.

If you can't build your project/idea already, why would someone pay you to work?

I don't have degree and I worked in the second largest internet company in Russia (where university degree is mandatory for 90% of population due to soviet mindset).

Currently, I'm in process of interviewing with London Office of Facebook. They told me that they don't care about my degree. The only important thing is my skills. Also, I had conversation with Google HR, he told me the same. Ripple Labs has very advanced position for C++ developer and they don't care about your degree at all.

But I found that average tech companies care much more about degree than Google and Facebook.

So answer to your question:

Yes, top-tier employers in tech industry don't care about degree. But in order to get there you have to gain your first experience in average companies and it will be harder than with degree (but it's not impossible).

Degree is very important to getting work permit in USA (H1B visa), Canada and many other western countries.

I got my work permit in Sweden without any degree, but salaries here are low.

If you dream about California, you have to get your degree even if it's super boring.

TL;DR --> You can find programming jobs flooding on the internet 24/7/365. If you have confidence in your skill, theoretically speaking, you'll get a job in an hour or less. Just search for "freelance programming jobs online".

Learning C++ course on college may not do much to enhancing your problem solving capabilities in programming because when the classes are not fun itself (as you mentioned), I can assure you that you will not learn much but detest the programming classes itself and I regret to tell you this but you may end up renouncing programming itself, which you just said you want a job in. Albert Einstein said that after a year or more of mind-numbing classes in highschool that did nothing to excite his creative potential, he found that the same scientific concepts that fascinated him in the past felt utterly distasteful for almost a year when he entered college.

Finally, after reading half of the Internet's how-to on "how to code" and "how to be a skilled programmer", one answer was always common in all of them:

- THINK OF AN IDEA AND WORK ON IT.

They mention that if you don't have a purpose to learn to code, you shouldn't learn to code at all. So, let me link to eye-opening articles that debunk the myths of programming I found in this thread: https://news.ycombinator.com/item?id=9823985.

When you build apps or websites that do something you wanted, only then you gain the confidence and skill to work for others on their projects, isn't it? And that time will come when you will be overwhelmed by the number of jobs you can apply to. So, "no skill, no job". :-)

There are exceptions to this rule. If you're self-taught and have done something amazing, like created your own programming language used by thousands of programmers, or you've got years of experience in some area thats hard to find experts in, like realtime systems programming then they'll make exceptions and you can get in.

If you want to work in R&D you're going to need a PHD, the only exception here might be in startups.

But aside from the big players, you can almost always substitute experience over education. Given two programmers, one with 3-4 years experience and the other with a bachelors degree and no experience, its actually the case that exp will trump education just about every time, especially on general programming positions and in the startup community, where all that matters is what you can do and have already done.

Overall though, do yourself a favor and finish up your degree, you'll always have the advantage over candidates that don't have one.

Short answer, focused on the USA's job market: Yes, with some effort you can definitely find companies that don't require a degree.

Long answer: The long-term trend has been that it's becoming harder and harder to get by without a degree. It's just supply and demand in action. A long time ago, people with programming skills were hard to find, and companies had to settle for hiring whoever they could find.

But people with programming skills are becoming increasingly common nowadays. Supply is starting to catch up with demand. That's making it harder to find a job that doesn't require a college degree than it used to be. Now companies start having an incentive to add a degree requirement just to reduce the number of applicants they have to consider.

Even if there is not a degree requirement, it's only going to get more common that you find yourself competing directly with people who are similar to you in every way except that they have a degree and you don't. When that happens, they're likely to pick the person with the degree. It's just the safer option from their end.

I was in a similar boat.Classes did nothing but made me yawn, spent time creating web apps for myself and for personal group of people.Soon, people realize that is your specialty, got a few part time job as a web developer during college through invitation. It was good to know how a paid job works.I quit college seeing no hope of willing to complete it, then several years later, started to work in a company for a year just for the sake of it, now I go independent getting enough work without asking for one for years all thanks to the knowledge I acquired back then.If you're imterested in a tech, dive into it, create something out of it, so you and others realize what you're capable of. Take your time to learn what you like, it pays off well later as you have no time to learn deeply after you start working as schedule becomes more important than quality of your work most of the time.

I was in the same situation and after 3 years of open source projects, figuring out what language I wanted to stick with and finally nailing a interview "after many many strange ones" I got a great job. I've quickly grown in my company and others look to me for guidance "I actually introduced them to git".

I hated general college classes that weren't related to programming and sitting in rooms where after a semester people still didn't know how to add a image to a webpage. Now I've learned so much working 50 hours a week getting challenged left and right by so many real life issues.

There are plenty of jobs open to self tought programmers around me they simply want you to master your language and stack whatever that may be and my problem was trying to be a jack of all trades like trying to learn Ruby 3 days before a interview.

If you're already in college and borde with your CS course, stay there and study something else. Knowing programming plus anything else will make you more attractive than someone who just knows programming. Especially, now that 'everybody' is teaching themselves programming.

Having any sort of degree + experience can be an advantage. For example, I'm a programmer, but have my Bachelor's in Music and a whole previous career worth of experience. Achieving a college degree shows perseverance.

Spend some time working on your idea outside your studies. If you are already in college, you've already made a huge investment. Take advantage of the resources (including professors) and the network you have available to you during this time.

Do extra work, especially if you don't currently have a job or are raising a family right now. So many people piddle away this time and skip through college as if it doesn't cost thousands of dollars a semester (even if you didn't pay it, someone had to), or if it's some magical job-providing mechanism.

That's a hard question and I expect there'll be lots of wildly different answers. This is applicable to me, as an EU college non-CS dropout.

What matters most is to show competence. If you can make someone interested in some things that you've built, you can probably make do without a degree, but you'll have a tougher time getting through the door.

My two cents is try to stick with your formation, while you build yourself something impressive. Chances are you'll pick up something useful and the social network of peers will help you at least as much as the formation itself.

Many already said but I also would like to say yes as a college/university dropout.

Programming was my biggest interest since I was a child. So started with Basic, then moved to ASP 3.0, then C, then web programming with PHP and now, at the age of 32, I am still working as a full stack developer and getting paid well.

The hardest part of self-education is to learn best practices and how to do things on a large scale. So learning the syntax is easy but getting the principal and methodologies will take some time and practice.

Start working. You won't learn programming until you actually do it. You can always do some kind of degree online in the meanwhile (or afterwards when you have time). That should keep the credentialists at bay. There are lots of websites where you can pick up paying gigs: elance, odesk, guru, ... The point is, however, that you will have to be able to do the job, or else, they'll expel you from the job and they'll just get someone else to do it instead of you.

Never got a CS degree (got one in management, but that's a joke of a degree). I can say that i really feel lacking in maths, and it's nearly impossible to compensate by just googling, and it made me troubles with some projects. Otherwise i made quite a successful career and never had a problem getting customers/jobs. So forget it, if it's not one of the world's top IT schools (obviously these are not found in Indonesia), it is as good as nothing.

I also thought I would be bored with CS (well not with the subjects... with the nerdiness) so I decided to study design at University. I knew that whatever happened I would always eventually end up doing a lot of code as it's something I always enjoyed doing even if just for the sake of learning how something works.

Now I'm a web developer and after having worked in one of the most interesting design studios in my country I'm pretty sure my previous choices helped a lot broaden my horizons.

It seems likely introductory courses will keep you bored if you are already interested in programming and/or CS. There is a lot to be gained from the higher level material, but you can also be productive with self-taught skills in many application development environments. To grow with your career, though, you will need a deeper background than self-taught programming skills, whether it comes from a parallel study of CS concepts or general scientific or mathematics training.

But I wouldn't suggest you to quit college and seek for a sw developer job. In most cases those (usually talented) developers have knowledge gap when it comes to algorithms, data structure or deep understanding of the HW / OS. Thus, you might be able to find a job right now, but in time you will need to catchup or you will have hard time to compete other developers with formal education.

Sure, as long as you're able to provide value to a company, you can get a job. I recently got a job at a startup as a frontend developer, after going through a 3 month coding bootcamp. I had been learning coding on my spare time a couple of years before that, but no formal CS education. As for websites, use Upwork to get some clients. Won't be well paid, but it's a start and will help you grow your portfolio.

programming is a blue collar job, no degree required. Try climbing the ladder in a technical company (not a startup). You won't have the skills and understanding to assume the responsibilities of higher positions.It's been this way for a long time. Programming can be taught at a vo-tech.

short answer is yes, just make some things that show your knowledge. But I wouldn't suggest to drop out.

A little bit longer answer:I'm from Germnay, I've studied architecture but I've decided last year I want to make my hobby my job, and I've applied for a few jobs and got some offers. On a sidenote our (sofware) architect did never finish school.

But I have a huge knowledge gap compared to my coworkes who have studied CS. I personally feel inferior to them. So I'm going back to university to study CS. I would suggest you shouldn't drop out.

Some will, some won't - concentrate on smaller companies, and have a portfolio of your achievements. Try to target a niche. Don't be put off by rejections, you only need one yes and you get infinite lives.

In order to get a job, you have to get an interview. You are way more likely to get an interview with a CS degree, then without. It really doesn't matter how good of a self-taught programmer you are, because no one will take you seriously. In my experience, side projects and code tinkering are discounted during the interview and hiring process - I agree, this is dumb.

I don't like or agree with any of the above, but that's how most of the world works. Put in the time, get it done. 10 years from now you will be very happy you did.

Studying is still very important and valued by a lot of companies. I'd recommend to study in something else "complimentary" that passionate you and learn/improve in software engineering outside school to have a more diversified skillset. That's what I did 4 years ago, landed my first software engineer job and now had the opportunity to move to London because of that!

The best policy is not to invite illegal content. Any idea where moderation over legally questionable content is an obvious impediment to community growth is inherently problematic because it is basically an "attractive nuisance", e.g. a site that appeals to people who think 4chan banning jailbait photos is heavyhanded has baked-in problems in regard to moderation.

Despite the passion and emotion about what is appropriate for StackOverflow, the debate isn't about links to free downloads of PhotoShop or cracking commercial Wordpress themes because people who are interested in that sort of thing go elsewhere. Likewise, nobody on HN complains when such links are killed upon posting here.

The solution isn't in mechanism, it's in policy at the highest level of abstraction; that of "What this site is about."

Are you talking only about content that is potentially illegal? Or questionable in the general sense of being "wrong" in some way, even if legal? If the latter then I don't think there's a universal "right" way to handle it. Censorship can be a big value-add in many communities.

You may argue it is full-body nudity, depictions of erections, exposed female genitals or breasts... but then someone will produce some art that everyone accepts really is art and shouldn't be censored, or a photo of breast-feeding. And so you make an exception as you do not wish to censor.

Then what differentiates the porn from the art? Is it simply the context of where it appears... a porn site or a gallery? What is the context of your site?

I'm arguing here that everything is subjective when it's not obviously illegal (against the letter of a law).

Law itself struggles with these definitions and tends to rely on the concept of what a jury or judge "reasonably" determines to be against some wording of a law.

The underlying key question in determining a moderation policy is whether you, the site owner, wishes to take on the decision making for those subjective cases. And, in doing so, whether you wish to accept the liability that comes with it.

Simply: Are you willing to be liable for the content posted by third parties?

If yes, then you need to have the equivalent of editorial processes, clear definitions you can communicate to users, declared processes for handling breaches of those definitions (and repeated breaches).

If no, then you can have the equivalent of "mere conduit" or "safe harbor". Anything you're unaware of you can't be liable for, and once you're made aware you need to handle it with whatever declared process you have.

Reddit and others were the latter.

And the latter works fine until you start moving towards advertising and those paying for advertising start to say "You cannot show our brand next to this (or that) type of content". Suddenly you need to know what content is where and your ability to deny knowledge of what is on the site is reduced and you have been pushed down the path, and probably taken the first steps, towards a more editorial process.

Trying to encapsulate processes in a set of rules, as you've done in the Ask HN, will fail if the rules themselves are against the nature of the site. The nature of a site that survives on advertising is that the processes and user terms and conditions need to create content acceptable and favourable to advertisers.

For most of what you've outlined above, I've had lawyers create terms and conditions for sites I run that does encapsulate a distributed and hands-off moderation policy that complies with European law. You can see those docs over here: https://github.com/microcosm-cc/legal

Anything sufficiently challenging and plain-spoken will experience external forces that attempt to dismiss, discredit or co-opt it - starting with one's own self.

As well, ideas that are serious and challenging require the reader to make a great, intentional effort to understand them. Rationalization mechanisms will always find ways to avoid understanding otherwise. A narrow band of "interesting" is allowed, but not something which triggers defensiveness.

Thus, the optimal way to teach the reader is to find a way for them to engage in play with the idea and solve a mystery that unlocks the real information, creating the intentional effort without waking up the rationalization guards.

Conspiracy theories act as the foil to "mainstream" propaganda by presenting a story which is just fractionally harder to follow, but not tremendously so; the initial reader effort is basically one of "what if They are lying to me?" Subsequently the reader is showered with evidence that yes, they are being lied to. This point and counter-point effort allows people to remain anchored in a binary, yes-or-no, right-or-wrong framing of events and actions, where their identity and opinions can remain stable and confident.

There is an inevitability that a popular medium will hew close to surface dualism. Anything that achieves more in that realm hides something of itself.

Another way to think about it is that understanding is concentric - the group in the innermost circle can't directly speak to the folks far in the outside. They have to teach the people they're adjacent to, first. In the process the understanding may become a little more basic and limited, but still more "correct" to the expert's understanding.

If I were to take you literally, I imagine the newspaper would serve as a few things

1) Devil's advocate - This would be the worst it can do

2) Speak the opinions people would rather hide - This would be the best it can do

3) Break Down pros and cons of equal two sided debates - I'm a big believer in give people as much information as possible to make decisions

Maybe more. Conspiracy enters into hidden opinions however, if we are talking about the "tenth man rule" then I doubt leaking private information would be this newspaper's bread and butter.

Honestly, I skim through things to try to get to the meat of materials. So if you provide information that was easy to sort through, about current and heated topics and attempt to hit every angle with logical arguments, I would read it.

1.0 All this should have been spelled out in the articles of incorporation.

2.0 If your goal is a greater benefit than the other founders, then:

2.1 The system is based on a finite pie model.

2.2 The process is inherently adversarial.

2.3 The goal is very short term.

3.0 If the concern is over distributing profits to founders rather than reinvesting net revenue into growing the value of the founders' equity then the enterprise is not a startup in the "Silicon Valley Sense".

3.1 It's more of a Lifestyle Business

3.1.1 There is nothing wrong with that.

3.2 Startups in the Silicon Valley sense are organized around creating value for founders via increases in the value of the company rather than increasing the value of their take home pay. The quintessential example is Amazon which "loses" money but becomes more valuable because a large proportion of its expenses go toward growing future revenue streams rather than toward recurring operational expenses to maintain the current revenue stream.

Are they really cofounders if you are trying to structure it this way or are they just valuable employees? If you don't trust them now it will only get worse later when real money is on the line.

That said, there are ways to structure it through stock classes like restricting the voting of their shares etc. Probably best to consult an attorney that is familiar with corporate structure and setup though.

Also you can word the profit sharing agreement and even the AOI so that any changes to the profit share require all shareholders to agree not a simple majority. This protects you all from two people icing out the third.

You're doing it wrong (unless your are not a tech startup but a partnership such as a lawfirm).

The money coming in belongs to the company, not to any individual, therefore you cannot share it the way you describe. There are two main mechanisms that you can use to share profits among individuals:

1) stock in the company: as shareholders and co-founders, you must have split the equity somehow (check http://foundrs.com for a calculator to figure that out).

2) the company can offer commissions to employees, as part of their compensation

Something in your description doesn't make sense: either you are the sole owner of the corporation, and those two other people don't own any shares. You are wondering how to bring them on-board. Or they are already shareholders, and you already had the discussion about how to split the equity.

Assuming you really really really trust your partners, and that you completely see eye-to-eye on how future business matters will be handled and how cost structures will go as the business ramps up, use an LLC with everyone listed as a managing member. And meet regularly to make sure reality and expectations are aligned, and keep the books up to date.

This will probably still go horribly for you if you are successful. Instead what you would be better off doing, if you are launching the product alone, would be for you to have controlling interest in the entity, be the only managing member, and treat your partners fairly but ultimately be in control. This might result in a happier situation for everyone (yes including your partners).

Profit sharing is vulnerable to hollywood accounting, if you're serious go for the equity option (with proper vesting, also for yourself) dividends are all you need, otherwise expect a lot of bickering in the near future (and quite probably a falling out later on).

If you don't want these people as co-founders then of course that's another problem entirely.

it seems all of it would change over time. Seems like alot of the effort going forward would be theirs. selling etc. maybe you set up a vesting schedule based on who accomplishes what. Initial customers etc.

Like others, I use whatever text editor I find most convenient and write it in Markdown-like syntax (on Windows, that's MarkdownPad). When I want to get it into PDF, I'll either use Leanpub to make it into an eBook, or I'll convert it into LaTex and use something like http://overleaf.com (wysiwyg preview of your LaTex) to improve the formatting (or do things that Markdown-like syntax doesn't handle).

Abiword is a lightweight word processor. You'd probably want to use Abiword's template feature to set defaults to what you want. EG I prefer light text on dark backgrounds. I like monospaced fonts. I have all the toolbars turned off.

This allows me to do basic "text editor like" typing, but with the option to apply styling and export to PDF.

I don't think there's a reason to be limited to 3 programming languages. Perhaps you can only be fluent in 3 languages at once, but knowing more languages is definitely not harmful. I know more than 10 languages to a degree where I have written at least one non-trivial project with them. I can't claim to be fluent in all of them at this moment, but I can quickly ramp up to a productive level in a matter of a few days.

Now if I had to pick three languages, they would probably be something along the lines of:

1. C. This language has been relevant for 40 years, and will remain relevant for at least another 40 years. Low level understanding of computer operation is paramount for a lot of advanced tasks.

2. Python/Ruby/Lua. A dynamic "scripting" language is very useful to get stuff done quickly when you need it.

3. A functional language: Haskell, ML or Lisp. Knowledge of this paradigm will make you a better programmer, regardless whether or not you get to use it in your day job.

There are languages I'd like to add to this list, namely something like Java/C# (a "managed" imperative language). And then some "brain teaser" languages to expand your horizons, Prolog is a good one for a rainy weekend and doing some simple Brainfuck programming because Brainfuck is to Turing machines what Lisp is to Lambda calculus.

But I disagree with the "3 languages" rule here, I'd recommend trying to learn a little bit of a new language every year. Next on my list is Rust.

Python - Python is by far the best 'glue' language out there. There are things Python isn't good for, bit it's far far easier to replace the performance critical bits of a python impl with a faster module, than the other way round

C - Gives you a good understanding of what the actual impact of each line of code has. Unlike ASM, it's still fairly approachable, and useful at scale. Unlike Java, you retain a good feeling of the instruction-level impact of each statement you make

JS/DOM - HTML + Javascript is the future of user interfaces (for the next 5-10 years anyway). QT/GTK/Win32/IOS/Swift all have their places, but for a dev speed / cost-benefit payoff point of view, just do it in HTML. A deeper understanding of the DOM API will allow you to make better choices that mean you don't end up with a sluggish, unusable interface

This is, of course, only based off of what I know so far and what I would find most useful. I could probably trade JS for a SQL, though, if I was thinking purely in terms of work that I'm into now. I don't use C at all, except to look at Python bindings occasionally...but all the concepts I've learned from learning C are vital, even when working with high-level languages. Plus, it'd be nice to switch to iOS development at some point.

I used to be a fan of polyglotism and knew a bunch of languages to various degrees of profiency. But the market pays much , much more for depth than breadth. The tools that pulled me into the quarter million paycheck territory were -

I will suggest 3 languages, but first, if you could only be fluent in one language, I would argue that Clojure would be a very good bet: practical, huge number of libraries (native and Java interop), with Clojurescript you can get by without being a Javascript expert, and the good libraires for web programming.

Otherwise, it depends on what your main task is; possibilities: front end web, Anroid, iOS, back end web services, data science, etc.

In general, you need a scripting language. I prefer Ruby, but if you need to do data science, machine learning, etc., choose Python. A scripting language may suffice for web development also.

I am a proponent of learning Java. The Java ecosystem is huge and there is a lot of good stuff.

Choose an esoteric language. I personally like Haskell, Smalltalk and Lisp languages.

Erlang - Because it handles scalability and reliability very well, is Actor based (each process being an Actor), has a great library for backend stuff in OTP, and because I love it.

Tie between Elixir (because scripting language that runs on Erlang BEAM), and Javascript (because it is so ubiquitous, despite having so many bad parts - though it has a fair share of good parts too).

Java - Because it is the modern COBOL...everyone hates it, but there are so many systems and shops that use Java that it becomes a de factor requirement to learn it.

Close runners up are:

* Clojure - Because it is based on Scheme, which is based on Lisp, and takes the functional approach. * Python - Because the philosophy and syntax are beautiful* Ruby - Because it is really fast to get web server stuff done

I'd go with practical and diverse if possible: Clojure, JavaScript, and C.

With clojure/JVM, you get a Lisp as well as good knowledge of java interop / apis, so you'll be able to work in Java if you have to, plus you get all the java libs, and there's basically a java lib for anything you could ever want to do.

Then I'd make sure you know JavaScript, its gotten to be a good enough general purpose scripting language, plus you'll be able to do anything you want browser side with it.

As your third I'd pick C since basically every other modern language / OS / low level lib is built on top of it. But it depends on how much you want/need to go down to that level. If you're just going to be doing web/mobile service development I might say go with something like Go, since it'll be more practical there.

1) C, for the low level concepts and fundamentals it bestows the programmer.

2) JavaScript, because if learning one language, such as C, is important, so is learning a language on the other end of the spectrum. And in some important ways JavaScript stands opposite C. Learning both forces the programmer to understand managed vs. unmanaged, working with and without a compiler, strict vs. dynamic typing, deploying a binary vs. a web app, etc. Those are all opposites programmers should gain experience with at some point.

Plus, JavaScript's ecosystem is just too rich too ignore.

3) SQL, b/c working with databases and relational data has always been important, and that won't change.

I don't know if one can be fluent only in 3 languages, but I'm in the rank of those who say that learn more will not harm you.

You can reason a lot about, but when you've to learn a new language, just for the pleasure of learning and because it will make you a better programmer, one thing counts: instinct.

I'm often inspired by a blog post, a snippet of code or simply a tweet that sings the praises of something!I don't make forecasts for the future of a language, if it looks cool to me, I try play with it and see what's going on. (I think you can found practically any REPL on my laptop...)

Anyway I'll give my list of 3:

C#- Because I work with it from beta.F# - Because I can use .NET knowledge with a functional-first language (and it helps me open the path to other functional langs).Ruby - Because I'm still a fan of RoR and I love its KISS approach (and a smart dynamic language is useful for various tasks, e.g.: related to DBMS).

Others:

Erlang - It makes distributed computing "easy". I love vanilla Erlang, but other langs of its ecosystem are promising: LFE and Elixir, for example.Haskell - Knowing it will make you better in every language.Go - Because it's fun to work with it.OCaml - Because I love ML syntax and I'm interested in all ML-family langs.ELM - Because I prefer delegate to a transpiler the duty to write javascript.PureScript - Same as ELM.

That said, whilst programming languages are fun to learn and tinker with, I find a lot of people give them too high a priority (hence you hear stuff like "now that Swift is open-sourced and available on Linux, iOS developers will be able to easily write Android apps"). Compared to UI frameworks like Cocoa, etc, a programming language is very quick and easy to learn.

First I will say, in addition to the 3 that I will mention, you should have some level of experience with Javascript, ES6 and Node.This is due to the pervasive nature of javascript in web development, mobile,realtime and client side build systems.

That aside here are my choices:

For highly scalable, fast and realtime web appsElixir\Phoenix is my choice for its ruby like syntax, Erlang based language witha framework that has built in websocket support.Alternatively you can go with Golang or Scala\AKKA throwing in some Node for realtime capability.

For medium scale web apps, rapid development, building MVPs.Python\Flask is my choice for an expressive dynamic language and flexible framework with big ecosystem of extensions.alternatively you can go with django, ruby\rails or php\Laravel

For the enterprise, large project, large team, maintainable web appsC# and ASP.NET 5\Signalr is my choice for a dynamically compiled, statically typed, decently scalable with async capabilities framework including websocket support that runs on windows and linux

1. Rust - Low level systems programming. It has a ways to go, but it is so pleasant to write. In reality this has started to replace my usage of C++.

2. Javascript - Both a scripting language and the Web language. If it weren't the lingua franca of the browser I would much rather choose Python or Ruby instead.

3. Java - A typesafe, managed JVM language perfect for writing microservices, Android apps, etc. For anything bigger than would be appropriate for a scripting language or that must be maintained by several people. Java hits the sweet spot.

It makes me sad almost nobody mentions Perl and/or Perl6 (they are essentially entirely different languages, but designed by the same guy, so I'd say they follow similar design methodology). Although it is not as popular as it used to be, Perl is still extremely useful, and I found that the community around the language is by far the best and most welcoming to newcomers. Also a lot of people will say that Python is superior due to its readability, concise formatting etc., and indeed there are areas in which Python would be the better choice (machine learning and statistics to name a few) but for a quick file processing, OS admin tasks, or a simple multi-threaded web scraper, Perl would be my first choice. And I find that due to the flexibility and TMTOWTDI motto, I find the language much more expressive and I feel more creative writing Perl code. But I wouldn't dwell too much on picking the right scripting language, Python, Ruby, or Lua are all fine choices.

For lower level stuff and performance, definitely C++ and then eventually if you need it C as well, but I think it doesn't make much sense the other way round.

And as already said in this thread, it's good to pick up a functional language, just to broaden your horizon if nothing else.

I'm almost kind of serious. I had Ada in there, but C++ is building okay concurrency support, and is otherwise better at interfacing to other things. Maybe pull Fortran in favor of Ada? That's a thought. Not sure there are enough libraries in Ada.

Why these? Because you can build serious stuff. After awhile it gets boring writing yet another regular expression to parse yet another 'text file as database' blob thingy. I don't want to glue, I want to make what others glue together.

I can simulate rocket flight, planet formation, ocean temperatures, and predict the weather. I can write neural networks, do computer vision, deep learning. I can implement any type of database, implement Google search. I can write my own OS. I can hack a lot of this stuff together with Matlab, and then make it scream in C++ or Fortran.

Yes, C++, not C. I can write faster code in C++ (e.g. qsort vs std::sort), I can interface with both C and C++ libraries, and if I know C++ a pretty much know C by default. You can get to bare metal, or be more abstract. Why limit myself to learning C? Makes no sense. A lot of my C++ code looks like C, other times I use a lot of template magic. Depends on the needs.

I actually do most of my numerical stuff in the Python/NumPy/SciPy stack, and perhaps that is a better choice than Matlab. I'm being a bit contrarian to give contrast to the endless C/Python/JS answers, but Matlab does have a lot of libraries that aren't yet in the NumPy/SciPy stack. On the other hand, you can just write them in C and add them to Python if you need them. Trends are changing, but everyone I know that is into heavy math/algorithmic work is pretty handy at Matlab. I'm solely getting work to switch over to Python. Even then, down in the guts NumPy and SciPy are Fortran - you kind of need to know that stuff if you want to be a wizard and not a glue sticker.

Yes, I recognize this is a deeply individual answer that won't resonate with many. Variety is good, I think.

*edit: okay, Python/NumPy/SciPy stack wins over Matlab, even though STEM schools are still churning out Matlab jockeys. Like it or not, we do need to glue a lot of stuff together, and Python is fantastic at it. I'll leave my original answer here, as I assume the point of the thread is 'food for thought'.

1. Ruby - Productive dynamic glue language that gets things done. Chosen over Python because of jRuby and significantly better JVM integration than jython. jRuby opens up the entire Java ecosystem of both libraries and containers within your Ruby code but without having the productivity drop of having to do everything in Java to use it. Also chosen over the other JVM based languages because those are limited to the JVM where it might not be necessary or beneficial. Ruby plays in both worlds better than anything else and is surrounded by so many excellent tools for productivity, infrastructure management and server scripting that it is in my opinion, the best single language to KNOW. Not the best to do everything by a long shot, but it has the best balance of everything when all factors are measured; putting a premium on productivity because if you're going to be able to do that much you need to be able to do it in a timely manner.

2. PHP - There's a reason so much of the web is powered by PHP and that reason is simplicity for small stuff and dirt cheap hosting. PHP scales down better than any other language in that you can fill up a TB hard drive on a 512mb server and all of that code is going to run. It's too useful for the likes of simple sites to forgo, despite its other issues as a language.

3. Go - For high volume concurrency operations and other backbone "must be performant" code. That's where Go really excels and it's significantly faster to write this type of code with Go than with Java. Go just isn't there yet for your typical "websites" so it tends to be better for backend operations or APIs.

Note: I'm purposefully leaving Javascript off of the list because while it is necessary to know, fluency isn't required - similar to SQL. If either of those are list-worthy, then I'd choose SQL sheerly for scaling sake.

Clojure is a powerful and simple language that gives you access to the jvm and the web. The community follows a composable library based approach to functionality which allows you to really understand how your stack works.

Rust, because it's a safer alternative to c/c++ but still allows you to be bare metal. Want to work on microcontrollers? No problem!

So combined Clojure and Rust fluency give you the ability to develop for pretty much everything and they are incredibly powerful in their own rights.

And finally c# because it's a nice language with lots of well paying jobs.

This is an interesting question and depends on your domain. However if we want to optimize "get stuff done across the most domains", I would go with:

Python: proof-of-concept, web-dev backend, scientific exploration

C: performance (low-latency), system (interface to most kernels), game-dev

JavaScript: UIs

Remark that I would not consider these languages my personal favourites, but in fact, you do not have much choice. C is enforced as it is tight to *nix which is the most spread OS, JavaScript as it allows you to build cross-platform UI's (that do not require user-installation) and Python because of its huge library diversity (in particular in the applied sciences).

If you speak them sufficient you can tackle most problems. If you then want to go further I suggest

Haskell: expressive, performance (through-put), reliability

Scheme (e.g. Chicken): expressive, simplicity, explorative computing

Additionally one might consider Java (and later Clojure, which should be easier if you already know Scheme and Java) to interface with the JVM world.

- OCaml: my favorite (at least at the moment) functional programming language and a very good choice when writing compilers and static analyzers, which is my main research area.

- Rust: a safe system programming language with a lot of good ideas imported from languages that I respect, and also with its own new things (i.e. borrow checker). I feel it's going to be a very important language in a few years.

- C: although I predict that Rust is going to become very big, C will always be there. Though not my favorite language by a long shot (I'm way too bad a programmer to be expected to handle it properly), its importance can't be denied and being knowledgable in C will be a skill that will be useful and desirable for a long time.

F# - Functional language where you can cheat more than haskell if you need to. Can use all the .net ecosystem and works everywhere (linux, windows, mobile, can compile to js.)

C - Pretty much everything is built on top of C right now.

Javascript/html/css (using Flow to add a robust type system, since dynamic typed languages are shit for long term ease of development)- Required if you want to do anything web plus its the only true cross platform GUI to use on top of your F#.

Java, for choosing an object-oriented, static typed language.Ruby, a dynamic scripting language that I love its syntax, but maybe python would be a better choice for general dynamic scripting language, not because I like it, more because of its ubiquitousness.And finally Clojure, because it's a member of Lisp family and I always wanted to try one of them, and by running on the JVM it inherits great amount of Java libraries.

1) Erlang/Elixir - For when I need to tackle concurrent/distributed problems.2) Clojure - Ensure I'm able to be effective on the JVM; Clojurescript allows me to be effective in the browser.3) C - For when I need to do systems programming, interact with low level drivers, etc.

I'm writing as a mostly server side developer:- C: It is good to know low-level programming. (ASM would be a good pair). C is prevalent: Linux kernel is written in C.- JAVA: if you want cross-platform and GUI- Python: if you want something quick and dirty

Well, this question has different ways it can be answered. Here's the approach I'd take to be versatile:

1. Javascript because there is no other choice for the browser. Even things that compile to JS will occasionally have you debugging the transpiled code to figure out what went wrong;

2. C. This is really C or C++ as you need something that's close to the metal and on some occasions nothing else will do. C probably edges out C++ in terms of versatility here;

3. Honestly, it'd probably be Java, which makes me sad. I'd like it to be Go but Java is just too ubiquitous and useful to ignore. It covers you for both a ton of web apps and Android development.

An alternative to (3) is really Python. The above list doesn't include any scripting languages, which is a weakness. Python covers this but really loses (first class) Android support. I don't like Python for large systems either.

For fun it might look a lot different eg Go, Swift and yes even C++. It really depends on what your goals are.

Software errors are really the easiest kind of mistakes to fix. The compiler doesn't have any feelings, it doesn't care, it just prompts you to fix things until you get it right. Wait'll you blow up a relationship, or make a fool of yourself in public, or cost your company a few million dollars.

When it comes to traditional programming languages, no. Thanks to test driven development, static analysis, and experience I feel like I very rarely have to track legitimate errors and more often than not either something changed elsewhere or the requirements have changed (which is a feature, not an error in my mind).

With CSS in particular but JavaScript to a degree, yes it can get frustrating. You will often deploy something which works fine on all current gen' browsers, only for months to years later have it break in unexpected ways and maybe then in only one major browser (but now the "fix" has to be tested in all of them).

I will say JavaScript is getting "better." If you stay away from bleeding edge stuff and use things like "use strict" and popular libraries (e.g. jQuery) not only is it largely now "someone else's problem" (e.g. jQuery updates the library with the fix) but you also see less breaking changes because a lot of features and functions are locked.

CSS, to me, hasn't improved as browsers continue to break fairly old functionality and libraries only add competing styles rather than supersede and simply things. It is also impossible to write tests against, and even if you could one browser version later and your test can be wrong.

Just recently Firefox broke because of how an overflow: auto was handled. No other browser, just Firefox, and even then just during a random normal browser update not a major update revision. We had to fix by adding a float: left to that element and then test it in Safari, Chrome, IE10/Edge, and Opera. We only discovered this issue by luck, otherwise it would have entirely broken a major user facing menu.

That's the problem with having no tests for CSS, there's no red flags to warn when stuff breaks.

Linters are a huge help for me since I fix as I create. Testing also helps since its far easier to have an automated build and test process that will tell me what went wrong then having to manually compile and check each part for erros.

Loyalty is great, but if the other situation is going to shore up your immigration situation for the time being, it's a growth oriented first that will get immediate higher pay + equity, seems like you really want to take the new opportunity but feel loyal to your existing employer.

I mean, people understand you have to do what's best for you and that these kinds of opportunities don't grow on your trees. Be gracious, create a runway for your exit to ensure that operations are minimally impacted as best you can.

But in my estimation, seems like this is a no-brainer in the decision department and that since you'd considered leaving the other firm anyway, the other opportunity showing up when it did was fortuitous.

I wouldn't go sharing all of that with them (e.g. i was planning to leave anyway..) and instead be very gracious, relay you've accepting a different position that aligns better with your immediate and future goals and ask how you can help the transition before your exit date.

Take what you think is the best job. Treat your old employer nicely, but you are not their slave.

The only reason I see that you would stay put is if you want to relocate to SF (you'll need the visa). If that's not a major goal for you, then take the new job. If you relocate to SF, be aware that it will be a life-changing event, and you will be exposed to many more high-paying jobs in really cool companies. Either way, you won't be with your current employer for much longer, so don't worry about loyalty. Again, just treat everyone professionally.

How much loyalty do you really owe to "Said company in SF have been cutting costs and do not evaluate salaries more than once a year. Even after staying a year, I feel like my salary will only increase by $5-10k."?

Also, even assuming immigration and relocation issues get resolved, have you investigated what living in SF on $90k is going to be like? It's a spectacularly expensive place to live.

More stressful, less pay, less opportunity for growth. It sounds like the only thing the position has going for it is help with immigration.

My thoughts if I were in this position: If immigration would make me happier than working for the company you are considering jumping to, your original plan seems to be sound. Otherwise, I'd make the jump.

> I have worked with said company's team in the past and have found it delightful.

> Otherwise, I plan to continue with this company even though the pay will be significantly less and work significantly more stressful. Said company in SF have been cutting costs and do not evaluate salaries more than once a year. Even after staying a year, I feel like my salary will only increase by $5-10k.

I would love an open-source Heroku. Yeah there's OpenStack, Dokku, etc - but they're nowhere near as easy to use as Heroku (not knocking them, by the way, they have a place and are great projects). Presumably such an application would run on a server of its own and you would give it an API key for DigitalOcean, Linode, etc, and then push your repos to it as you do with Heroku. Massive undertaking, of course.

Something else I'd love to see is a server that's as easy as an iPad. Sandstorm is doing some work in this area, although I'm not convinced that the end result will be great. I want a server I can connect to, install apps from an app store as easily as on an iPad, configure as easily as an iPad, etc. Linux/FreeBSD/etc will always be needed for high performance websites and intensive or innovative computing needs but 95% of people just want to host a website or some email. I should be able to log on, go to the App Store, download the Minecraft server and be playing my game within minutes (with a nice GUI for configuration). Don't believe this is needed? The existence of SaaS is proof that it is - software is too hard and too complicated to install, configure and keep updated on your own server.

An encrypted email server thats as easy to setup as apt-get install. Managing your own email is still a huge headache, and it really shouldn't be this bad in 2015. I'm talking some service with a reasonable config file format (json?), and high quality built-in anti-spam utils, so you don't have to deal with that. Ideally, it would take the Elasticsearch route and make everything manageable over a REST-API so anyone could build clients for it. I really wish this existed.

I'm trying to make business apps and legal practice management apps. Most of them don't exist as open source projects or free software. I'd like to see someone make an attempt at making them.

I think after seeing how Microsoft has a big lock in with businesses offering FOSS solutions for like Linux or OSX would help some migrate away from Windows. Most Business and Legal apps are Windows only and commercial.

What would be the point of open sourcing your hard work? I'm sorry but I don't believe that you should solve by giving it away for free, how,does that benefit you? I'm genuinely curious to know if any of you have gained a real business value by open sourcing.

However, I do believe in open source if the soul purpose was to open source to begin with, just as long as people aren't naively jumping on the bandwagon after failing to gain traction or sales.

Perhaps a little too black and the white thinking above but in my own experience, open sourcing your product seems to attract freeloaders, your conversion falls, someone that would have gladly paid walks, leaving money on the table.

1. What you are interested in is only tangentially relevant at best. Consultants are hired based on their clients' interests.

2. You have discovered the difference between pretend work and real work. SEO, blogging, branding, tweeting, etc. are pretend work. Real work is identifying leads, qualifying prospects, and closing deals...then doing the work and actually getting paid. Pretend work is easier because you can control it and nobody slams the door in your face when you tweet or goes with someone else because they were $5 cheaper or closes down with your invoices unpaid.

For all the things you've mentioned, I don't see a value proposition. How does Docker make someone money? More importantly how does Docker make any specific business money? It's a long road to develop a consultancy with a backlog.

It's all about fixing their problems and/or filling a need or desire. In other words, start with the "why": why does a company need your services? What problems do they have and how would you solve them?

When I go to your web page, it looks nice, but put yourself in my shoes, I'm a small company. Why would I care about "sustainable software development"? I'm a small biz, and when I hear "software development", I think of a barrel of cash being thrown out the window.

Consulting is really no different from product development: you have to be finding the pain, talking to people about their pain, and then you can mention how you might be able to solve that pain. As an example: "Has your company's systems been hacked? If you think the answer is no, think again. 83% [made up] of all companies have been hacked and don't even know it. We can do a basic security audit for you for [free/fixed-price] and if we can help you fix it, there's no charge."

Good luck and if you'd like to chat about Docker, let me know -- I'm working on a Docker sideline, but I try to focus on the pains it solves, e.g., the "it works on my machine" problem rather than, "hey, Docker here!" ;).

I would suggest picking one field - either security or usability. While you may actually be an expert in both, it will be easier to position yourself as an expert in one. This will make your marketing more straightforward.

Then, you'll have to figure out how to educate your potential customers. If they don't know they have a problem, you'll have to teach them. Where do they hang out (online and in person)? Can you teach them why they would need your services and how you can help? Perhaps with a presentation or a whitepaper?

How would you sell Park & Eaton's services to yourself? I sometimes get most creative when thinking about myself as the customer, particularly because I personally do not like buying things.

It takes time to generate attention on social media without controversy or craziness. Hang in there.

You have a great logo (hooray for spaceships!). Your website is also clean (not too overwhelming) and easy to navigate. I would recommend first selecting a few small businesses that you would like to have as clients. Can they understand your website - your message? I ask this because there are some areas where the wording can be rephrased. Especially with small businesses, you won't just be selling to technical people, but you will be selling to busy people.

Examples are powerful. These don't needed to be displayed publicly, but have something ready (and interesting!) to show potential clients what you can do. I don't see a problem with your two interests: security and usability auditing. Some people may advise you to focus on one or the other, but this is IMHO.

If you are willing to write blog articles, would you consider writing and submitting articles to other sites, like the huffingtonpost.com or medium.com? You want to make it as easy as possible for people to find you online; it doesn't take much for a website to get lost.

Ultimately, to get your first clients, I'd recommend treating each one with a lot of personal attention, and showing them that you truly care about them and their businesses. When you initiate contact with them (try to get a meeting, invite them to lunch or coffee, offer a contest, etc.), present your services as accessible, valuable, and profitable - a direct way to help their bottom line (with metrics to back you up). Even without client history, you can do this by doing old-school research and by being as prepared as possible for misinterpretations and specific concerns. Good luck!

Pick up the phone and start calling people. Sell them your service. You get a lot of rejections to start with, but that's how you learn what to say to get further. Eventually you'll start to get positives.

Do you know who your prospective customers are? Can you profile them to a very narrow group? Small companies as a group is a big segment. You need to narrow your prospective customer base to a very small group and then reach out to them.

Letting them know they need something has just resulted in defensive attitudes. So I can't figure out how to show my usefulness without forcing someone into (what they feel is) a corner.

Smaller the business more focused they are on either increasing the revenue or decreasing the cost. If you can't show how your service immediately impacts revenue or cost, you are not going to get much traction with them.

If you've ever tried marketing your services to small businesses who tend not to even be aware they /need/ your services, what have you done?

Tough proposition if you have to educate the market that they need something, you are going to need lot of money and resources for educating the market. You need to offer something that businesses already know they need. You may need to look at service providers who already providing complementary services to small businesses and target and consider them as customers.

Personally, I can't figure out what are you offering and why should I buy.

I used to be where you were - I wanted to be an independent consultant, I wanted to find clients and I wanted to grow my business. Now I operate as a high-end consultant for application security. I can tell you what I did, and hopefully it will help you as well.

I offer web and mobile penetration tests, source code analysis and best practices workshops for companies between the seed and Series A stage (I have also worked with recognizable enterprises you'd know of). Through September I'm fully booked at 100% capacity, mostly with Y Combinator companies. I charge a static rate of $10,000/week, though I discount this for certain circumstances (good referral, long term contract, etc).

So, that's me. How did I get to this place? How can you get to this place?

1. I network a lot. I don't go to meetups. I don't have a blog. I don't hand out business cards. I network with people in 1x1 ways that show my value. My best referrals have come from people who I helped pro bono for something seemingly insignificant who turned out to be very well connected. I don't network in a way characteristic of a salesman, I do so in a way that starts by genuinely listening to someone talk about a problem. If I can help, I frame myself as a person who can solve a business problem that happens to be related to security, not as a fly-by-night freelancer. I talk to people because I genuinely like talking to people - I will often just welcome people to email me to chat - not for a consultation, literally just to chat. It opens doors. The best way to start this is to literally reach out to people who are in influential groups - not influential people themselves - and help them in an honest manner. They will naturally refer you to people who have both problems and excess money, who are your qualified leads.

2. I have a strong value proposition. My work involves a lot of technical proficiency - I'm not just using a vulnerability scanner - and I deliver very solid results every time. I don't give canned reports and I can communicate effectively with both developers and managers. I am consistently well referred to others and over time this has led me to a place where I have excellent clients more often than not and I have to say no more than I can say yes.

3. I have read probably every comment by patio11 (Patrick McKenzie) and tptacek (Thomas Ptacek) on consulting. I have probably read all of them several times, in fact. They are both very good people (talk to them sometime) and they both have excellent advice. Those comments give you literally everything you need to know to run a consultancy on your own. They will give you all the non-technical savvy you need to run a technical business.

4. I am confident in my rates and don't back down from them. I will change on scope, but not my rates. I charge weekly and if I am not a good financial fit for someone I make a good faith effort to redirect them somewhere else.

5. I'm honest. I used to work at a security firm, one of the largest in fact. A lot of firms do things I don't agree with, like writing "has autocomplete enabled" on a security report. This doesn't mean that they are bad people, but it is tonedeaf to what your client really wants most of the time. I don't exaggerate findings and I do present my work in a very honest light. I also strive to be honest in business dealings as well. There is a lot of snake oil in this industry and I don't rip off my clients - I will not work with someone if something feels "off" or I don't feel I'm legitimately contributing value.

You can do it. It took me a long time, but you can do it. I would advise you start out by subcontracting another firm that needs work. Dirty secret - many security firms will subcontract to you, and you can build a client base that way.

Let me know if I can help you in any way, my email is in my profile. I agree with what others have said here that you should focus on either security or usability. Do one thing, and one thing well (or at least one domain well). I also don't think you should be putting so much effort into marketing. A blog is helpful for long term leads, but it won't help you in < 6 months usually. Ads are impersonal and probably won't get you what you're looking for either. Find influential groups and mingle with them in an honest way.

Also, if you're going to work in security, I advise you to work at a security firm before striking out on your own. If nothing else, it will show you the entire process the "real players" use.

I think you need to figure yourself out a bit more, because you're not achieving what you want to yet. Sit down, and write answers to the following:

1. Who are you? What is your value proposition? Why should I hire you?

2. Look at your answer above. If you're dispassionate about it, does it really solve a business need? Ask a few uninvested friends in the field.

3. Do you have a network? If not, why do you have a blog or Twitter? That's not how you build a network. That's how you maintain a network and grow a network. It isn't a seed, it's water.

4. Who can you immediately identify who needs your services? How can you put yourself in front of them in a way that is more organic than forced?

So as someone who has a consultancy where we have focused quite a bit on the SMB market I can speak with experience when I say that it is a tougher market at times. Our enterprise clients are harder to get usually but much easier to sell to in a lot of ways. You are doing a lot of the right first steps IMO, many of which I personally did too when I started out. Some suggestions after reading your site quickly and reading your questions.

1. Your site doesn't communicate to the small business owner. You need to tell/teach them what you can do for them, not use "jargon" or terms they can care less about. In the end they are wanting to know what problems you can solve or how you can help them make more money. So for example, instead of just saying security and usability on the site. Frame it in the terms of "did you know", and mention some specific statistics on SMB's where you have relevant knowledge which you can use to improve upon their issues for them. This is helping them understand what you offer versus just stating terms they may not be 100% familiar with.

2. In general SMB's don't care about you making their team slightly more efficient, they care how you can save them $10k/yr, or better yet, how you can make them an extra $10k or whatever the magic number is. Many times it is about how you market yourself and what you say more then what you are offering that helps them buy.

3. SMB's get defensive typically when you approach them too fast or too hard about what they are doing wrong. They all know they are doing things that aren't necessarily correct but they have "made it this far". So generally it is not about telling them they are wrong and need to change, its about framing the conversation to say, hey did you know that you have done amazing so far and I am impressed, but it got me thinking that if you did XYZ, you could actually make more money every month or save 1 FTE's time per year making you more net income etc. That is how you spin a conversation and avoid the defensive response. Of course you have to find your own valid position but that is how I do it. But this opens the door for them to say, oh yea? Tell me more. Even if they say your full of shit tell me more, it is opening the conversation and they aren't defensive.

What I think you are finding is that while you have the skills to fix issues, you don't yet know how to present and discuss those skills with people to convince them to hire you. You probably have had some luck but I would bet it was with people that were either introduced to you by someone they trust or you had a prior/current relationship with somehow. That isn't a knock, it is how we all start. The great news is at least IMO everyone can learn the sales/marketing skills, they aren't secret or all that hard, its just how you frame conversations with prospects. And you have to expect it will take building up a little bit of a relationship with them.

Feel free to reach out to me via email, I am pretty happy to share my experiences good and bad. And good luck, it is fun figuring it all out, at least I think it is.