1) Square, because they have no fixed fee per transaction. 2.75% means 27.5c per $10 charge. It's not really something you integrate with an app, but with talking of swiping, it's not clear what the use case is.
2) PayPal micropayments. At 5% + $0.05, it's 55c per $10 charge. PayPal has a card-swipe reader the same as Square, but people can also pay with their PayPal accounts, or you can take full control over the payment interface by implementing the PayPal Pro API in your app.
Both are less than the 2.9% + $0.30 offered by Stripe, Braintree, or most any low volume MOTO merchant account.
I don't think anyone can recommend what the best input method is without any knowledge of what your app is or who your customers will be.
The assertion that Flask gives you a better look under the hood is, in my opinion, incorrect. With Flask, you get almost nothing out of the box besides some basic URL routing and request handing. For most web development tasks, that's not enough. So you end up adding an ORM, a template engine, a session handling library, etc. on top. Eventually you end up with a set of libraries that have as much "magic" to them as your standard Django install, except now they're loosely held together by duct tape. Just take a look at SQLAlchemy, WTForms or Jinja2 -- three libraries that are often used with Flask -- and tell me whether they feel less like magic than Django's equivalents. Plus, now you have to look up documentation for three libraries in three different places, keep up with their developments separately, and get used to three different coding conventions. It gets complex very fast.
As adambard mentioned, Flask is a very effective tool when you want to do something highly nonstandard and rolling your own framework is your only option. For 9 out of 10 webapps, though, Django is the right answer.
Flask is better suited to apps that are a) small and single-purpose, or b) highly nonstandard.
Django has a lot of stuff built right in, much of which you won't need. But it's nice to have a database abstraction, forms, auth, admin, etc. when you need them. Plus, it's practically a CMS already all by itself, with the nice admin panel.
I'd probably start with Django. The tutorial isn't bad at all: https://docs.djangoproject.com/en/1.4/intro/tutorial01/
While I agree that a lot of what Django does seems like "magic", getting to know how that magic works as you get more intimate with the framework will make you a better developer in the long run - so you can start writing your own magic.
I would recommendation is django, but there currently are no good tutorials for it. Kenneth Love (https://twitter.com/kennethlove) is creating django video series that should be available in December.
In the meantime my recommendation is as follows:
1. Make sure you have an understanding of Python before you get into Django or Flask. Do this by taking one (or all) of the following online classes:
a. Udacity.com: http://www.udacity.com/overview/Course/cs101/CourseRev/apr20...
b. Learnpythonthehardway.org (There are video lessons for a price of $29)
2. Once you have an understanding of python and can write simple scripts, I recommend the following video courses for web development with Python:
a. Flask: http://www.youtube.com/user/calicoJake A great Flask video tutorial series)
b. Udacity: http://www.udacity.com/overview/Course/cs253/CourseRev/apr20... not flask or django, but still good)
c. Django: http://www.kickstarter.com/projects/657368266/getting-starte... (to be released in Dec 2012 or early 2013.
In the end, you will learn the internals either way. If you start with Flask, you'll still have to learn about Django internals.
Start with Django (and you'll probably never switch to Flask).
I don't like learning from videos so can't help you there, but http://djangobook.com is awesome for learning Django, and the Flask documentation is sufficient too.
This weekend, I'm hoping to meet a kindred spirit, or a soul mate... aka. a co-founder.
Would love to speak with anyone who's interested, or just wants to hang out. I'll be in SF all day today, and obviously at Stanford tomorrow.
You can reach me at xpatel at taab dot co. My website is HTTP://taab.co. You can reach me at eight five eight two two five seven three nine nine. Text first.
Anyone going to the Dropbox/Weebly after party at The Parlor in SF tomorrow?
* The layout of the pricing page is odd. Use the plan name as a column instead of a row. Most folks are used to seeing it that way - https://drone.io/pricing
* Do not start by showing the user a free plan. Users scan a page from left to right. Don't give them something they will easily choose right away.
* Get yourself a 'features' page that highlights what you offer in bullet points.
I'm on a very slow connection and it's much faster to do a git push than to deploy a compiled application.
As a developer, it's important to realize this and act accordingly. Don't be afraid to tell them that since you're being moved to a position that should pay $X, you'll need them to pay you $X from here on out.
Further, you've also identified the key reason that people move from job to job so frequently in this industry. That's how you get raises. You're never going to convince that Fortune 100 company to double your salary twice over the course of your first four years out of school. You'll have absolutely no problem convincing the market at large to do that though.
Also, social dynamics favor not pissing people off over rewarding high performance. For example, they would rather lose a developer X than pay him/her what they're worth because it would be "unfair" to all the other developers that they are currently paying below market.
Of course, raising everyone's salary to reflect market rates "doesn't make sense" in the short term and the short term is what concerns most individuals in the company. If manager Bob gets "good numbers" this quarter, maybe he gets a raise. If manager Bob, keeps down technical debt, attracts good devs and does stuff that in general aligns with the company's long term goals it may not look as good on this quarters numbers.
Your best bet is to go to another company. If you're very lucky, another developer will leave for a lot more money and management will wake up and give you raise. A company I left once gave the remaining developer something like a 50% raise.
It's easier for you to take a below-market value without switching companies than it is for you to quit your job, take a risk and hope for a higher value on the open market.
The best thing to do in this situation is to have leverage. other offers, networks, or a side business that lets you call them out on their offer and start negotiating for something better.
For submissions you can submit a url or text but not both, and URLs in the text don't get parsed.
My two cents.
Those guys help a lot when you've only got 24 hours to get over the hump (ask the Firebase guys).
Also, I may be biased as a hardware engineer, but I only consider hackathons that welcome both software and hardware projects.
On the flip side, a friend of mine uses this tactic aggressively when negotiating salary and equity at companies. It's always worked for him and is considered a "cost of doing business" when trying to hire this person.
What's the difference? The former was being hired for a junior position, the latter for a senior position.
It's all about leverage. If you can bring a lot to the table, you can play the "other people want me" card. If you are bringing relatively commoditized skill to the table, then that card just makes you look foolish.
Hope this helps.
You aren't more interested in the money than the job, likely, unless the job is eating Doritos and watching TV all day. Most people have plenty of things to keep themselves occupied with such that, if they didn't need to work, they'd have plenty of other things to do. You go to work for the paycheck, and while other things factor into the equation, for most people the paycheck is the biggest factor.
> Right Time, Right Place
> Relevance, Comparability
> Don't Bluff
Right time is only when it will make a difference. Upfront is not the right time. The right time is when there is an actual/reasonable offer put forth with a flaw or other "bridgeble" gap, that if it were "at market" would be a non-issue. The other offer is evidence of "where the market is at". This is completely fair use.
Relevance and comparability, though, mean that you should not pretend an offer for X is the market for Y. If you do this (on purpose or unwittingly), not only will it most likely not work, you may raise some eybrows. Classic example is using a comp from one market (like, from SF) in another market (midwest), or between job-titles, or whatever. If you are truly deciding between a career in X and Y, you need to be very careful about this.
Lastly, be very careful unless you are willing to walk from the table. If you are 100% OK with taking the other job, for example. Alternatively, if the point you are negotiating is a definitive deal killer (ie, it will make you walk away) then again, it makes sense to consider bringing what you have to help get a deal done. This will give the other party some ammo to use internally to overcome a barrier, which is in both of your interests, etc.
Tell them you have other offers, and cannot respond to them immediately but will get back to them. Tell them your concerns about remuneration: quality of life, work role, etc. but so you have more points to negotiate upon.
If you make it about a singular point, it could just break negotiations and get you less in terms of total compensation than you'd have otherwise been able to gain.
Use this in addition to the value you bring and other context etc. as you mentioned.
When you use it as your main tactic for giving off an aura of competence due to the market fighting over you, it comes off as arrogant and makes you look foolish, especially when applying for junior level positions.
Wait till they ask, if they ask, it means they want to fight for your "interest" in working for them.
I will say that I have competing offers, and I'll be up front about what I want to make. I think at that point my potential employer has all the information they need.
Unlike tech, you will not have a giant windfall with real estate; but also unlike tech, it's very easy to price your product, find customers, and figure out what your cashflow will be for years to come.
I did a course on lifecycle emails for SaaS businesses recently. That did pretty well - a few hundred sales.
We haven't done any serious research or marketing for it. We simply focused down and built the highest quality app we could build, and it worked.
I run Correlated (http://www.correlated.org), a site that publishes one surprising correlation a day, using data generated by readers.
It was never really intended to be a money-making project, although I did give display ads and affiliate links a try, with very little success.
And then ... a book deal fell into my lap.
I had been shopping around a book proposal for "Experiments on Babies" (http://www.experimentsonbabies.com), and one of the publishers that was interested in that book also happened to note that I was the creator of Correlated, and asked if I would be interested in a separate deal to turn Correlated into a book.
I got a very nice advance for the two book deals, and in the case of Correlated, the writing involved is, for the most part, what I'd be doing anyway, deal or no deal.
Generally does very well. Way better than other stuff I've tried, like SEO/Marketing etc. The only problems I have is using a crap design, so it pays to know what the audience really wants before I try selling it to them.
I love to work on them and often do, but I'll frequently take weeks off at a time to travel and everything continues to run smoothly. The entire business is based on the drop shipping model, so I don't have to stock any inventory and can run the business from anywhere. Plus, the initial capital outlay was just $1,500 so I didn't have to take on any risk.
For anyone interested, I blog about running my two businesses and eCommerce in general at:
I personally really liked the book I Will Teach You To Be Rich -- it has a poor name but it's dense with incredibly practical advice particularly for people coming right out of college suddenly making an income.
I'm not getting rich off it, but it usually brings in a few hundred bucks per month and I like hearing from fellow developers who benefit from using it.
And no, my wife would not let me do this :)
I wouldn't call it totally passive, but if we ignored it, it wouldn't stop making money. We have consistently grown the sales over the last couple of years, and we are about to introduce a premium in-app purchase.
I have always thought making iPhone apps was a good business, despite what you hear on this forum.
I play on fanduel.com almost exclusively. If you have any questions or want some help getting started, send me an email (in profile). My referral link if you're so inclined: http://www.fanduel.com/?invitedby=yudarvish&cnl=da
I actually burned out within 6 months of trying to bootstrap the fledgling forum with fake activity, clever backlinks, and entertaining the trickle of registrants.
Burned out enough to take a a break for a while. Came back months later and it was a bustling forum of activity. Apparently I'd just reached that critical mass necessary for the community to be autonomous (able to entertain itself and cajole newbies to stay) before I took that break. Nowadays, I do very little beyond pay the server bill. It's staggering the amount of work volunteers (moderators) will put into maintaining a community and I'm grateful.
Recently had adsense disabled on my website after some automated process decided my website was "mature/adult-themed". The automated email cited a post in our forum's off-topic spammy section where some user copy and pasted the phrase "sexual intercourse" over and over again in Mandarin. Just some non-Mandarin-speaking teenagers being silly for a moment. Now I'm working on getting adsense reactivated.
All in all I get ~1200 USD of passive income which would be considered an average pay in Poland. I've got a startup on top of that which brings a lot more though.
Bunker is my SaaS solution which I market to freelancers and consultants who are looking for a complete solution for their small business (from creating quotes and proposals over project management and time-tracking to invoicing and payments).
Most other services specialize on a subset of what's needed (e.g. they're only doing invoicing, or only time-tracking, or only project management) and you have to go shopping for multiple solutions (and cross fingers that all of them integrate well with each other!). With Bunker my focus is on providing a complete, well-integrated experience.
So you could say my niche is "covering multiple niches" ;-)
I'd say that Bunker provides me passive income because my support burden is negligible and my churn-rate less then my conversion-rate. So if I wanted to I could go completely passive, but I'm committed to improve the app further and grow it.
Compared to my book, which fizzles out when I'm not actively marketing it, building a B2B subscription product is the best, most turnkey income source I've ever had.
In my experience it's much easier to price higher on the Mac App Store compared to iOS. Especially when you're selling a constantly-running notifier/utility. Feels more worth it when the app is passively used every time you use your Mac, as opposed to whenever you happen to find and use the random app on your 3rd home screen in iOS.
- EdgeCase http://itunes.apple.com/us/app/edgecase/id513826860?mt=12
- Reddit Notifier https://itunes.apple.com/us/app/reddit-notifier/id468366517?...
- One-Hand Keyboard http://itunes.apple.com/us/app/one-hand-keyboard-one-hand/id...
A paltry $100 per year in ad revenue.
Income is in the early 5 digits per month range (USD). Traffic dropped a bit from August to September so I've been working more on it lately :)
I'm still in the process of experimenting with my method to see how far I can take it, but the basics of it work already.
A lot of what people define as "passive income" is questionable. Most, if not all, passive income investment strategies require you to hold down a job, or other income, while financing assets that some day, HOPEFULLY, will be paid off enough that you don't have to work ever again.
Most of those plans take too long for my satisfaction. There are other means and methods if you learn and apply yourself. My book will hopefully detail and compare my method with a majority of others.
The obvious ones to look at, if you can invest time and/or money -
* Share trading* Property investment* Property flipping/options* Google AdSense (or similar)* Affiliate marketing* Tim Ferriss' muse / 4HWW* Network marketing/MLM* Website flipping
All of them have varying degrees of learning curve and time commitment to make happen. Few people will tell you how much commitment you need to make, they just focus on dangling the carrot.
It's the same deal for SEO, used to be a easy way to promote Adsense, CPA offers and what not, but the penguin change just makes it harder and harder to rank for keywords.
2012 has been definitely a slow year for Internet marketing, the worst I've faced since I started in 2006.
I get like $6/mo in affiliate fees, but I don't really advertise it so I'm lucky I get even that.
Launched in 2007 as a free service, got covered in CNBC India. Got loads of requests overnight so had to make it paid afterwards.
Around USD 2-3k income without doing lot of efforts.
It is one of the most unique ideas you can ever come across. Requires no paid marketing. You get extremely happy when Olympians, photographers use signatures designed by you on their websites and photographs as autographs.
Highly gratifying passive income.
It's effectively an online desktop publishing system aimed at making it easy for HR teams to deliver TRS (Total Reward Statements) in 10% of the time, at 10% of the cost, and with fewer errors.
It took a couple years to write, so I wouldn't say it was an easy investment, but it was fun to write. These days it ticks over and I don't spend much time on it at all.
Perhaps I should work on advertising more...
It makes ~2 dollars a day from adsense. Breadcrumbs, but I haven't spend any time on it for like half a year. Amazon affiliate adds almost nothing to this. Being in the Chrome Webstore seems to have helped a lot in page visits.
I still wonder from time to time if I should put some effort in upping this a bit. But my time is limited and the app doesn't fit my current strategy (mobile, mhealth specifically).
Although it hasn't even broken even, I'm now equipped with a ton of expertise and I have a few efforts I'm working on that I think will be quite popular. :)
I got 4 euros (minus google checkout fees) so far.
(Excellent==Successful. Money & fame are more difficult to control.)
1. Choose a small subset of available technology, learn it intimately, and embrace it. Then evolve that subset.
2. Understand the pros and cons of various data structures, both in memory and on disk.
3. Understand the pros and cons of various algorithms.
4. Understand your domain. Get away from your computer and do what your users do.
5. Be ready, willing, & able to deep dive multiple levels at any time. You must know what's going on under the hood. There is a strong correlation between "number of levels of deepness understood" and "programming prowess".
6. Use your imagination. Always be asking, "Is there a better way?" Think outside the quadralateral. The best solution may be one that's never been taken.
7. Good programmer: I optimize code. Better programmer: I structure data. Best programmer: What's the difference?
8. Structure your data properly. Any shortcomings there will cause endless techincal debt in your code.
9. Name things properly. Use "Verb-Adjective-Noun" for routines and functions. Variables should be long enough, short enough, and meaningful. If another programmer cannot understand your code, you haven't made it clear enough. In most cases, coding for the next programmer is more important than coding for the environment.
10. Decouple analysis from programming. They are not the same thing, require different personal resources, and should be done at different times and places. If you do both at the same time, you do neither well. (I like to conduct analysis without technology at the end of the day and start the next morning programming.)
11. Never use early exits. Never deploy the same code twice. Never name a variable a subset of another variable. You may not understand these rules and you may even want to debate them. But once you start doing them, it will force you to properly structure your code. These things are all crutches whose use causes junior programmers to remain junior.
12. Learn how to benchmark. Amazing what else you'll learn.
13. Learn the difference between a detail (doesn't really make that much difference) and an issue (can end the world). Focus only on issues.
14. Engage your user/customer/managers. Help them identify their "what". Their "how" is not nearly as important.
15. Write a framework, whether you ever plan to use it or not. You'll learn things you'll never learn any other way.
16. Teach others what you know, either in person or in writing. You'll accidently end up teaching yourself, too.
17. Always tell your customer/user "yes", even if you're not sure. 90% of the time, you'll find a way to do it. 10% of the time, you'll go back and apologize. Small price to pay for major personal growth.
18. Find someone else's code that does amazing things but is unintelligible. Refactor it. Then throw it away and promise yourself to never make the same mistakes they made. (You'll find plenty.)
19. Data always > theory or opinions. Learn the data by building stuff.
20. At some point, run your own business (service or product). You will learn things about programming that you'll never learn as an employee.
21. If you don't love your job, find another one.
For example, my cursory read of your list of programming success stories plus "they've made a difference, they're well known and respected" suggests that you might care about your status among geeks in particular. There's nothing wrong with that, but it would counsel very different career moves than if you cared about your status among "the typical person who reads the New York Times." You might, for example, aim your moves towards a high-status industry that skews geeky (like, say, videogames, which is across almost any other axis a terrible place to work), startups, advertising firms which employ anomalously high number of PhDs and get disproportionate love from geeks, etc etc, and away from where many extraordinarily talented programmers are likely to work (in a dark hole writing important code that the world will never know or care about even though it keeps their planes in the sky, moves their food to their table, makes sure that when they call 911 a phone actually rings, etc).
In terms of being financially successful? There are many, many approaches to it. Most of them boil down to figuring out how programming solves a problem for a business, quantifying that value, and then shaking the money tree.
I think HNers sometimes have an unnecessarily narrow view of the solution set: for values of financially successful which include "I don't need to be a billionaire but I'd sort of like to earn, I dunno, doctor money rather than marketing manager money" it includes things like "Run a small boutique consulting firm", "Become an individual specialist in a few very valuable things and just charge market rates for them", "Use your programming expertise to found a non-tech business and ROFLstomp on one core area of operations due to your unfair advantage", etc etc etc.
With that said, UML is not really used in small companies much, but when you feel a diagram would make it easier to understand a concept, chances are you're going to either draw UML or reinvent it poorly.
Yes, we teach UML because it is the most widely used modeling language. It features many profiles for specific domains and there is a range of tools to choose from.
Embedded systems, avionics, motor vehicle, telecommunications systems are heavily modeled using UML and related techniques. Industrial control systems less so, but there are areas where they are being used more and more. In the commercial applications space, there is much advances to be made.
The use of modeling is a core feature of most engineering disciplines but only recently becoming a part of software engineering methodologies. A crashed program is easier to recover from than a bridge that crashes into the water or a microwave tower that comes crashing down in the first big winds. So the demand for modeling is going to take a while to become a "must have" in SE.
So if you want to work at the next Facebook then UML is probably not going to be important. But if you want to work at Boeing then you'll be needing it.
The company that can manage that for Comcast is going to be delivering hundreds of thousands to millions of dollars in value. If they didn't pay someone for it, they'd have to employ and manage a large development team just to do billing. Lots of salaries. That's what justifies the price.
If you're a startup with 3 payment plans and sometimes you have to give someone a credit because you had some downtime, your situation isn't even 1% as complex, and you can get by with a $50/month service or a couple hundred lines of your own code.
If you are looking for simpler products focused on small & medium businesses there are plenty of options available as well.
Of course if you are in North America you have Stripe as your first bet and for bit more sophisticated billing plus more options to do promotions, automated notifications, HTML emails, customer support portal, more complex metered billing, grandfathering of price plans (happens!), multi-gateway support etc., you should consider using a billing solution.
Disclosure: I am one a co-founder of http://www.ChargeBee.com, another Subscription Billing solution focused on small businesses.
Shameless plug: If you are looking for options to use payment gateway for credit card + bank transfers for recurring to save $$s per transaction you should try our solution (launching the ACH part very soon).
While doing research I came across Zuora [...]
After I research solutions to a problem, I end up with a list of requirements and a list of solutions with notes regarding each solution (e.g., pros and cons). If you were to post a complete list of your requirements and notes regarding each solution you evaluated, it would be easier to provide relevant feedback.
(If you didn't take any notes, you might want to consider the benefits of note taking in the context of a personal or company wiki.)
Happy to have you guys visit, and we'd love to talk about using the product too.
We're in SOMA. stefano ]a-t[ betable.com
We're based in San Francisco but founded by two Canadians.
Seems like there might be a need for the startup map.
For us non-technical folk, you might wish to add a section to your how-to explaining how Kera.io would interact with proprietary data; for example, if our app happens to be financial, would you be able to see any of it? Or is the script hosted on our end?
(This may be obvious to a dev, but not to me, and therefore caused me to send this to our devs to ask)
That someone can post this on HN and get a bunch of invites back.
Does doing something like this scale? What if everybody just decided to post "hey I'm coming to SF is there a place for me to crash" or "hey I'm coming to NYC anyone want to have coffee?" or "I have a problem writing perl..."
Since there are companies that you are trying to reach, and you must have some idea of the type of company you want to reach, why not put some effort into doing something other than the obvious easiest thing which is to post an "Ask HN" and see who bites?
(For the record I wouldn't feel the same way if a top commenter who spends much time on HN made a similar request because at least they have put time and effort into HN (and I don't consider my karma as anywhere near that point for the record.)
I can't recall the app name, but I remember the UI. After typing a certain term, you could cycle through different webOS-style cards which represented different queried services.
I've been looking for something like this for a while now. Solid start.
I like being able to round file resumes from email@example.com and domains like hotmail, msn, or aol.
After you did that you'd be much, much more likely to be able to build a successful project on your own.
If you get stuck on technicalities, two good things to try are (a) Google code search (http://code.google.com/codesearch) for examples related to what you're doing (for example, if you were trying to make an S3 connection from Python, you could check http://code.google.com/codesearch#search/&q=s3connection...) and (b) a relevant IRC channel if there is one.
If there are any programmer meetups in your area, try going and asking for help in person. When I was your age and trying to learn programming, I didn't know anyone who could help me. In retrospect, that was the #1 thing that held me back.
This seems entirely expected -- you have a good background in a programming language, but no real training in software design, which is to say, in breaking down a large project into useful components, setting and using appropriate abstractions, and managing complexity. This is unsurprising, since this is an entirely different sort of task than just knowing the syntax of a language.
There are several good options here, like the textbooks _Structure and Interpretation of Computer Programs_ and _How to Design Programs_, both freely readable online. Reading things like ESR's summary of the UNIX philosophy (http://www.catb.org/esr/writings/taoup/html/ch01s06.html) might also help -- much of the UNIX philosophy exists to manage complexity in a huge system.
Another good option is to look at high-quality existing free/open-source software and understand how it's designed and why. If you can, find something you want to change in it and contribute it back. The skills you'll develop in understanding how to find your way in a large software project will serve you well in designing a large software project yourself.
Google Code-in starts next https://code.google.com/opensource/gci/2012/index.html .
"The tasks are grouped into the following categories:
1. Code: Tasks related to writing or refactoring code 2. Documentation/Training: Tasks related to creating/editing documents and helping others learn more 3. Outreach/Research: Tasks related to community management, outreach/marketing, or studying problems and recommending solutions 4. Quality Assurance: Tasks related to testing and ensuring code is of high quality 5. User Interface: Tasks related to user experience research or user interface design and interaction"
I did the college version (Summer of Code) and it was a very rewarding experience. I think the code-in can put you in contact with some organizations that might want to mentor you. The Mozilla Foundation has a bunch of projects you can contribute patches and fixes to as well.
If you don't know it already, learn how to use git. I would also suggest the book Programming OpenSouce Software by Karl Fogel (just google for it, he offers it free online).
Do you want to program something interesting for you? (then figure out what you want to program, figure out the technologies it would take to make it happen, then learn them, and do it)
Do you want to get better at the trade so that at some point someone will pay you to program? (then go through MIT's OpenCourseWare: http://ocw.mit.edu/index.htm on CS topics to build up your fundamentals, then start reviewing/helping/hacking on open source for a while)
Do you want to use programming as a tool to do other things that you are interested in? (look around at what topics are necessary to understand, learn more about those topics, and go for it)
Personally, I knew when I was young that I would be into programming; when I was 5-7, we did LOGO in school, but there weren't really any programming courses worth anything in my high school (Cobol, Fortran, Hypercard, and Pascal), and I took the two electronics courses that were offered. I held myself back until college, where I did my best to learn and program as much as possible. After college, I went to grad school, continued programming as much as I could (I wrote an editor in Python for Python, dozens of data compression libraries, several distinct MUDs, ...), and got a PhD in theoretical computer science. Since then, I've been working in industry (because the academic market is crappy right now).
So I again ask; what is your destination? If you don't know yet, that's okay. You can improve your skills, your fundamental knowledge, and your technique without taking formal classes (see my link to MIT's OpenCourseWare). Heck, you may even be able to do so without talking with others (though it is hard). Once you do figure out your destination, it's a lot easier to ask for directions to get there.
Reading Hacker News might get you excited, thinking "There are tons of people just like me out there!", but we are geographically distributed; and most aren't like you at all.
I know some of your story. I lived it. I've had a lot of success, and here's how I came about it:
Write a list called "What I want to be making by the time I'm 30", and devote it to memory. Stay abstract and philosophical. Talk to people who know about who you'd need to hire to accomplish those goals, and go learn to be those people. You have time, but not as much as you'd think. It takes 10 years to master a skill, and I'm guessing you'll have at least 4 to master before your list is ready for implementation. Start now. You can do more than one concurrently. The further along you get, the easier it will get. The goal is to master. Maintain a hunger for purity. Don't use something until you know exactly how it works, and why it was created. If you like something, try writing your own version.
It will be very hard at first. Keep that list in mind for motivation. Get jobs requiring your required skills, and always volunteer for the tasks your coworkers are afraid of. You will make mistakes, you will fail from time to time, but every year you will get better, stronger and faster.
Someday (if you stick with it) you'll be able to invent and build things that are yours, and yours alone. Things that matter. Things that change lives. Corporations will depend on you specifically. You will move the state of the art forward and make the world better.
Make sure you never forget what it felt like when you were new. When you'd take out a pen, and draw interface designs for a product you can't build yet. When "This would be so cool" outweighed "This will be so hard to build". Create your own challenges and break through them.
You'll do great :). I'm looking forward to a chance to hire or compete with you some day.
I started when I was 8, first professional programming job in 10th grade...
The jump from intermediate to "complete" is indeed very large, so expect a journey.
You need to find something you enjoy working on that you evolve over the next couple of years to learn about software engineering and what automation is important etc. This could be a game or an extension to an open source game, it doesn't really matter. It will almost certainly be a failure in some sense, so it's good to get that first failure out of the way so you can scrap it, revisit, etc.
I think coursera would be a great place for you to start, though it may require you to learn a new language (this is one step on the journey towards advanced in X language, I expect it would be octave/matlab) I'd recommend doing the introductory machine learning course and whatever other stuff interests you.
From the quality of your writing, you're quite bright for 14 - so stick to it and don't neglect your physical health and artistic/emotional/cultural education because you need to be free of distractions to reach highest level.
1. There are a lot of free CS courses being put online. Start with the courses at Udacity.com they are the most "friendly" to start with. Then move up to the university level courses at coursera & edx.
2. Find a local user group. Connecting with other programmers in your area gives you a support network to ask questions to.
3. Study algorithms.
4. Write lots of little command line apps. Don't worry about them being useful just focus on making the code good.
5. If you are not already doing it take all the math classes you can.
You are 14 and that is a good thing. If you stick with it and keep learning you will be a badass when you are 18.
Maybe a to do list app or maybe an app that you can chat with your friends on or track your DVD/other collection . . . organize photos or maybe a family meal planner.
Pick something you are interested in and then start trying to build it at a basic level.
There are lots of tutorials out there for the individual components you'll need.
Once you have the basics up and running then start adding features.
As far as the APIs go choose something simple for starters, like obtaining a piece of data you want to incorporate into your app via an API and go from there. Maybe creating a basic HTML5 mobile weather app.
You are going to have to learn some things on your own even in college so don't worry about advanced classes not being available at your school. Classes are typically going to be behind the latest trends anyway. They provide a good foundation but won't cover everything you need.
Some ideas for new things to check out . . . skills to learn.
Learn to develop mobile websites and apps using jQuery Mobile.
Learn Ruby on Rails.
Create some simple iOS apps.
Create a websites for friends and family.
It seems like you want support in expanding, mentorship etc.
There are a couple of options you have. You can see if you can take classes at your local junior/community college in python.
You can try to do what you want, and when you get stuck, go on a python mailing list, a irc channel, stackoverflow.com, a python user group, a hacker space, etc.
You can also decide things are too hard and give up, or put things off. I won't judge you, programming is often difficult and frustrating when I'm doing new stuff.
Anyway, do something else, dive in, or give up.
Get it? It should be scary. You are doing something new to you.
Watch the movie "Indie Game". If you dont have the $10 to buy it I will gift it to you from iTunes.
Ask questions, you are 14, you wont be bothering anyone. If someone gives you a hard time it is because they are jealous. E-Mail in profile.
Start small. Maybe start with a single cloud platform, like Evernote or iCloud. Once you know the ins and outs of a particular platform, and are an expert on that, move on to the next one.
Baby steps, just keep moving in the right direction and DON'T STOP and DON'T BE AFRAID.
You are experiencing a fear of success. Overcome it, and just keep your head down and ship.
As long as you keep at it you'll learn how to swim in larger and larger oceans.
You can ask questions on sites like StackOverflow or in IRC if you get stuck.
No idea what I'd do with the app, what it does, or why I'd want it. "Customize a tour to a point of interest" is not meaning heavy for me. I've never customized a tour in my life. I don't know why I'd want to. You'll want to A/B/C test lots of headlines/copy, but I'd say this is a pretty rough start.
What are hidden gems? Restaurants? Tourist spots?
Your headline/copy needs to paint a picture to the target user and make someone feel that this is the PERFECT app for them. Who is that? Travelers? Partiers? Geocachers? Bored folks on weekend? I'd start with very narrow positioning and expand from there.
The screenshot is you greatest weapon for communication and the first thing people will look at. It's a busy map with a lot of colorful pins. What are the pins? What do the colors mean? What do the icons mean?
Logo / title -> Link to app store Titles for copy -> Link to app store Big awesome image of app on phone -> link to app store.
Pick the best benefit of the app and highlight that.
For me I'd go with something like.
Impress them with a hidden gem.Wanderous helps you find great places, right next door.
(I actually have no idea what kinds of places wanderous will help me find, etc, I'm assuming it finds great restaurants or something)
Then go buy a hires stock photo of a great example of a place someone might discover on Wanderous along with two smiling people enjoying themselves, multiply the image by 20% black and put your text on top in white along with the image of the app.
The sign up should state that due to demand everyone will have to wait for an account and to reserve their spot they should put in their email, else they'll have to wait even longer to find great places.
I'd recommend focusing on making a really good first screenshot that is representative of what your app does while piquing interest, and figure out a way to get as many blogs/news sources to cover your app release as possible. After that, figure out what kind of searches within the iTune store your app can actually rank for and target those specific keyword combinations. Good luck!
P.S.: Since you're in San Francisco, do you have the Planet Granite Rock Climbing Gym as one of your points of interest?
THEN GO BE A ROCK STAR and happy shipping!
Here's a free one. There's a lot of others too. Just search for "Free App Wordpress Themes" to find some others:
Also, I like the "treasure map" phrasing, makes it sound romantic and interesting! Maybe you can work that a little more thematically into the design? Rather than simple white box, it could be on a scroll, or maybe the background could be a bed of gold coins. Something like that. (Again, not a designer, so take those suggestions with a grain of salt...)
Is there a social element on the app? Can you share your tours? Share your logs? I think that people would like to know that!
What is a "gem"? Who are the people that decide whether a place is a gem or not? Are they restaurants? Sights? Strip clubs?
I also think the 100% free for a limited time is confusing. Is it going to be 50% free later? I would revise the wording there...
I would also improve the design a bit, and change the background. It would be super cool to have something like a "pirate map" representation of NYC or some popular location in the background.
Hopefully this helps, I wish you good luck with your app!
When would I use it? What would I use it for? Why would I use it instead of any other alternative? Answer those in one or two sentences...
"Wanderous turns trips into adventures by using your friend's recommendations to identify attractions, restaurants and more that you're sure to love."
When: when you take a trip somewhere,What: things to do, place to eat,Why: friend's recommendations make for better picks
I don't know if any of the above applies to Wanderous, but you get the idea...
Also if this is your official landing page for the app, I would do something much larger. Add more screenshots and detail on what the app does...you have to lure people in and convince them they should waste 5 minutes of their time installing your app.
Otherwise, cool idea if it hasn't already been done ;)
I would suggest create a great video of the app and put it on the website. You can use one of the After Effects template to create the video (http://bit.ly/TR33cL)It will take you 5 hours to learn After Effects and make the video. Or you can hire someone to make the video. But its going to be really worth the effort.
Also, a little border-radius on the container might make the app come across as more friendly.
They have good advice on there. From a copy and screenshot perspective I think the major points have been covered.
One thing you might want to check is if user has entered a email address or not when you ask for email address to notify.
Although I suspect that your problem is that you didn't like to code in the first place (which you sort of said). I think the thing to do is to find something related and realistic that you have enough passion to keep you going. So can you be a rock star at age 30+? Maybe, but it's a long shot. But I bet that there is something that is viable that does get you excited. And I suspect that you're smart if you had the ability to go another country and earn a living (maybe your passion has something to do with that?). But whatever you do, don't try to fake a passion.
Programming can open doors into just about anything these days.
You mention "being an average programmer" and learning new things feeling like work because they make you feel "too dumb or stupid."
So what is fun? Something you are good at? What are your expectations?
You also mention "trying to find my passion" Cal Newport wrote some articles of how "following your passion" is dangerous advice because it doesn't work like that.
Perhaps you are depressed and you just need to find some meaning behind what you are doing? Have you read Man's Search for Meaning?
Because being good or bad at programming doesn't have to affect the enjoyment you get out of it. I know some grumpy rock-star programmers who seem to unconsciously be chasing this concept of being accepted or loved when they finally reach whatever level of perfection they have invented for themselves. Imagine how frustrating it must be for them, every flaw is preventing them from receiving what they desire.
I worry that your line of thinking is: I'm not happy. -> OK maybe it is because "I'm not a good programmer." -> OK, let's try becoming better -> Progress with natural setbacks -> (Frustration because you aren't becoming happier) -> Maybe it is because I'm not a good programmer -> OK, maybe I need to do something else.
Also, moving to a new country is hard for everyone, it sneaks up on you.
Have you thought about combining some form of software development with your love of music? Not sure what exactly ... maybe an educational app to learn how to read music scales or something.
It's tough feeling average when everyone wants to be a rock star but most people are closer to being average.
As far as your day job "that's why they call it work" it's not always going to be fun and exciting. You'll go through periods of time where you lose and regain your passion.
The guy working heavy construction in the construction zone on your way to work probably isn't 100% happy with his career either.
If you've been doing this for 7 years you are smart and you can keep up. Consider changing to a new company or new project. Sometimes managers have a way of making you feel not smart enough or able to keep up.
A career change is possible, typically you'll have to take a lower salary.
Music is an awesome hobby that you can do on the side. So keep learning musical skills and making music. I had a band in college so I had the dream of being a rock super star that has been replaced with being a tech super star (SaaS apps, big house, five cars).
So keep a positive attitude at work, maybe seek out a new project or maybe a new company for a change of scenery.
A nice distraction from your day job would be focusing on your music in the evenings and on weekends . . . if you have an interest in starting your own business look at starting a music related website or SaaS app or a SaaS app to replace your day job income. StartUpsForTheRestOfUs.com has a good podcast to learn more about that option.
The economy is tough out there so appreciate having a stable job as a developer.