1. Database, database, database 2. Database 3. It's probably your database unless you're doing something CPU or disk intensive, for example resizing and prettifying pictures, rendering a 3d image, etc. Realize that these days looping a few thousand times is trivial. 4. It's your database
What's most likely wrong with performance in a webapp:
1. No/bad indexes/missing foreign keys on your db 2. Stupid joins 3. You're doing stupidly complicated things in an ORM 4. You're doing complicated things in the DB instead of loading a large chunk into memory and doing calculations or aggregations in code. Simple DB queries are a lot faster than you think they are. Complicated ones are a lot longer than you think they'll be. There are weird gotchas in DBs like using a function in a where or select clause will cause a massive performance hit. 5. You're not caching into memory or something like memcached things that changes infrequently but are queried regularly. Memcached is actually overkill most of the time. Actually think about how much memory storing X would take compared to how much memory your machine has. Be surprised at how insignificant it is these days. 6. 1-5 are especially true if you're using Mysql - It's great and all, but all the other big DBs piss all over it for out of the box performance. You have to give it some love. I expect some dissent here. They're wrong. MS SQL is a shit ton better at handling a poorly designed db/db queries out of the box than mysql. I can't stress this enough.
Fault Tolerance: Just use Heroku. We've seen maybe an hour of downtime in a few months?
Speed (and fault tolerance): Cache everything you can, assets on S3/CF.
Testing: Rails Test Prescriptions by Noel Rappin[http://pragprog.com/book/nrtest/rails-test-prescriptions]. Then you can choose what you like, but I like Test::Unit, Mocha, FactoryGirl.
Code Abstraction: Rails is already pretty sensibly organized, and if MVC + tests + static assets is not a good fit for your webapp, you really should not be using it in the first place. One minor point: Noel and others will tell you to use skinny controllers.
Curious what other people consider best practice for Ruby/Rails startups.
NewRelic is a great tool to help you do this.
Common performance problems to look out for in Rails are:
* Missing database indexes
* Long running code (eg PDF generation, file uploads to a third party) that should be put in a job queue
* Innocent looking ActiveRecord calls that use N+1 queries or fetch way too much from the DB and the result set is further reduced in Ruby
MiniTest, which is built into ruby 1.9 has a full suite including performance tests. It's really cool because you can measure e.g. whether an algorithm scales linearly or not.
The key to speed and load tolerance is massive multilevel caching; every service does caching differently but they all do.
Some tools for the job:https://github.com/defunkt/resquehttps://github.com/tobi/delayed_job
Also don't forget to cache. You shouldn't worry too much if you do these two properly.
Oh, and don't ever establish a blocking connection without a timeout or some other mechanism to abort it.
It sounds purely educational and research driven, but his goal is to study drought's influence on the commodities markets, so there's a potentially lucrative end goal.
I know nothing about how the algorithms for building these kinds of work, but very cool none the less.
Preview function is especially nice.
Add a submit button - not everyone knows to hit enter without some kind of prompt.
Good luck with your project
Have you thought about crowd sourcing it? Maybe make localbeer.me a giant google map with all the breweries you've entered so far on it and the have a super simple form that lets people add their local breweries and their beer offerings. I feel like I know some hardcore craft beer drinkers who'd totally be into dropping in their favorite local breweries.
In the long term, you're going to have keep all the data you've entered by hand updated, and it seems like crowd sourcing would be a good way to get that info anyway.
Then get someone else to do it. Is there anyway you could automate the brewery discovery and addition process such that you could distribute the actual thought process work through something like Mechanical Turk?
It's just the first that occurs to me reading through your post. If you could offload that task to machines/other people you could focus on more value-add features, moving the project forward.
- make it better for mobile, since that's likely the platform I'll use in a strange city. Maybe this is part of the graphic design piece that you were talking about.
- make it easier to see ALL the breweries/beers near me. I would think that would be the main page instead of one at a time (I hate refreshing the page)
If this project was dropped in my lap, I would do this:
- work on UX above all else (and before data entry). Make it easy and enjoyable to see what breweries are near me and to add breweries and beers.
- focus on a single geographic area for data entry. I'm in Chicago, so I would make this a killer website to visit if you're visiting Chicago. Promote it heavily in Chicago (Facebook ads is super targeted and great for something like this, you can target beer drinkers ages 21 - 40 in Chicago only, and might even be able to narrow it further).
- Let users add content for additional cities if it becomes popular in your homebase. Remember, we already made it really easy to do that in step 1.
- I might even look into signing up bars to be listed on the site as carrying a particular beer/brewery when a user is near their location. In exchange they put up your flyer. Free promotion if the functionality is there.
I think there is definitely value here, but I would devote some serious time to improving UX before data entry. As others have said, there are ways around doing the data entry, but not too many ways around good user design.
I think your project is definitely worth pursuing. If you don't think so then maybe we could team up.
So I decided to start doing independent software development at home so I can free myself in the future. I just picked up a book on Android development after being inspired by some people here on HN. Just hoping an idea or two hit before I'm done with the book.
You could go for the E2 with about $100,000 in investment.
So Waiver the YC and then E2 when you get investment. Or B visa and change status once you have funding.
Best talking to a lawyer though I think.
Best of luck!!!
I guess the takeaway is that the business model is probably B2B, and you need to fulfill a real need.
What I would recommend is to connect the dots and clearly position your service as cloud alternative to desktop / server data manipulation packages. Get very explicit about it and target similar customers. Do not limit yourself to just data on the web and allow file uploads. Make a feature-light free version and charge for a premium one, determined by data volume or number of manipulations or something like that.
I think there is a lot of room for cloud-based statistical service to undercut traditional players in this market.
I guess maybe you need to provide some better examples of what your service will be. Now it all sounds like something I can do in Google Doc spreasheets or Yahoo pipes.
And how will you make money?
It is a huge amount of work to integrate disparate data sets and build a system that can efficiently handle many customers' requests.
It may be difficult to show customers how they can actually use it. Comparing two stocks isn't cool. You know what's cool? Comparing all stocks with realtime updates.
For the second problem, I mean that users won't use their imagination much to figure out what your product does. You have to spell it out in concrete, actually useful examples. This is a challenge between engineer-thinking, where general functionality is king, and user-thinking, where one particular goal and the path of least thinking/work is king.
Therefore to apply logic to the situation, if you created a Google+ account for the email address you would enter your own age as you are (currently) the legal owner of the account.
But I agree, it's pretty clear the marketing department used some artistic license with their ad.
When I saw the ad I thought, 'surely no one would be that weird to their kid...right?', then I immediately realized that someone would do this exact thing.
Just let your kids grow up with you in real time.
There are surprisingly few good, secure ways to save and share memories of your kids. Particularly if you don't trust Mark Zuckerberg with your child's private data.
Please have a "Do not try this at home" disclaimer on all your videos.
A guy with a disabled account,
So the solution to both the real names policy and the under 13 year-old policy is simple. Take matters into your own hands.
Buy a domain name and DNS service. Sign this service up for Google applications for domains and then give accounts to up to 25 kids if you wish. Note that you will be responsible for complying with the COPPA regulations ... not too hard if it's for your own kids but perhaps it wouldn't be wise to provide this service to other's kids.
At some point in the relatively near future, you can expect G+ will be enabled for applications for domains (gradually almost every Google service has) and I don't see how they can force these domains to use any more real names than those entered for the domain's users. By definition, these are the names the users are commonly known by. Whether a real name or an alias, their colleagues must know this to be a valid alias/nick since they're using it as an e-mail handle.
that's why they use bots to automatically suspend accounts...because a real human being wouldn't have cared to do it.
Google makes about 2 billion in profit every quarter...how about spending 30 million(10mm/mo) to hire 3000 customer service reps to double check before ruining people's experience? Call it a good will investment and count it as a PR expense.
Handbook of Natural Language Processing - http://www.amazon.com/Handbook-Language-Processing-Learning-...
If you're using Ruby on Rails in your startup, start directly with www.railstutorial.org - it's a great introduction to not only programming but all the side things that programmers do (version control, deployment, etc.)
If you need a Python or Ruby introduction, Zed Shaw's are very good too!http://learncodethehardway.org/
You'll probably find a lot of references to LPTHW.
It is a cloud based programming environment so you wont have to deal with setting up your own coding environment which is usually the biggest road block to new coders.
Below are some live demos of apps built on the platform and a couple of video tours:
*Firefox, Chrome,Safari or Opera required.
Here is an example of the above programs embedded in a blog post:http://colabopad.blogspot.com/2011/03/public-release-of-simu...
User Demo : http://www.youtube.com/watch?v=PhZcIMvejVA
Developer Demo: http://youtu.be/wma9MU2e_U0
Feel free to contact me with newbie questions!Ed.
When I started out, though, I had a clear vision of what it was I wanted to do, bought a book, and started hacking away. I learned best by jumping in head first with the hard stuff, but I realize a lot of people learn differently than I do. I would say that if you find the Codecademy courses too easy or boring, you should try my approach instead.
Look at indeed.com and salary.com and aim for 75th percentile and higher. Unfortunately the only way to really know is to put yourself out there and see what offers you get.
I don't think the updates are capricious or arbitrary, I think they are the result of doing lots of testing with lots of users and then having the strength to weather the criticism that inevitably comes with change while they watch the metrics to see if things are actually improving.
To be honest, 99% of the time i just check for new messages or use the chat and don't care about anything else.
There may be a lot of people who care about this stuff, but how are they supposed to find anything relevant?
Is facebook obnoxious? Yes. Do their features generally work well enough to keep the unwashed 95% happy? Yes. Are people proficient with computers/interwebz more likely to be upset anytime FB/another entity changes something? Yes.
This post seems to fall into the latter of the above 3 categories. The take-away, I suppose, is that people tend to be averse to change. No surprise there...
As best I can, I've listed broad categories of what demotivates me:
First, lack of clarity of what the next task to be completed is, and a perplexing reluctance to simply ask.
Second, a task in front of me that is too large to attack at once and for which I haven't found an angle from which to attack it.
Third, something else is temporarily much more interesting/threatening than work. Facebook and Twitter can be interesting, but I find if I'm spending hours on them it's to avoid something, not because I'm enjoying it. So it's unlikely something temporarily interesting.
Fourth, there's that "wait a second, we're doing this wrong" feeling, which if it's leading to a drop in productivity is probably followed either by "I don't know what the right approach is" or possibly "the right approach is so different from what we're doing now that soon we'll be screwed." The developer senses an impending technical dead end.
Finally, there's disillusionment with the overall goals of the job/company. A "we're doing it wrong" but on a more fundamental level, followed by either "there's no way I can convince the company to do it right" or "I have an aversion to the core business we're in". The developer senses a dead-end job- or lifestyle-wise.
Regardless of which flavor of problem it is, I think mcherm pretty well nailed the solution.
Another possibility is that your developer has been assigned something he hates and is hoping that by avoiding it long enough it will go away. This is a particularly easy and self-destructive (usually) pattern to fall into.
If he isn't getting the expected stuff done, then that is the discussion you need to have.
If you aren't happy with the amount of stuff you are expecting then discuss that.
Some days are productive and some days aren't (and I find unproductive days tend to follow really productive ones). Try and view it purely from an output point of view, and not what his method is.
It's my experience that a lack of deadlines and a bit of interest from someone monitoring the progress, can lead to a state where a task seem unimportant. It's a bit weird, and I can only guess at what process is at play, but I have seen this effect in otherwise great developers.
It takes different things/approaches to motivate people. For me, inspirational speeches work really well or knowing that your manager is actually interested in your work.
However, it does sounds kinda odd that he didn't take the equity... He might just be an immature person that doesn't want to take responsibility. And this could be for various reasons completely outside the work environment that you have very little control over.
I think that just talking to him and asking what's up and what's going on is the best solution. Maybe he just needs a wake up call? The sincere, "I'm worried. What's up?" usually works pretty well?
- Understand why he is having trouble focusing. Does he have impediments and he avoids them by going to twitter/facebook ?
The feeling of being part of something. If I were a rockstar hacker I would want to feel this project was something that could blow up, otherwise it would simply be a stepping stone for better things.
Best thing you could do personally is have a chat with him.
Best of luck.
- http://hackaday.com/ : general and also arduino based hardware hacking
- http://makeprojects.com/ : great books & resources
- http://www.instructables.com/ : projects (some based on arduino)
- http://arduino.cc/forum/ : the arduino official forum
Kinda plain, but works well in my feed reader.
get off the internet and build things
If they don't like it, you can always email them / call them to have a second look when you feel you've made noticeable progress.
EDIT: If using it in production carries a lot of risk for this customer, don't pussyfoot around and advise him to wait.
Here, I'll do it for you: http://www.surveymonkey.com/s/PT56NHC
... and now that I've gone to take the survey, I can't finish it because there is no suitable answer for question 6. Another of the questions I had trouble understanding the distinction between "None" and "0" as answers.
So I gave up.
Good surveys are really quite hard to design, and bad surveys are pretty near useless. It's pretty clear you're asking how much people will pay for something you're thinking of producing, so I suggest you think a lot harder about how you're going to get that information. I'll be very surprised if this survey gives you anything reliable.
We do pay for tools we find useful.
If a product could solve that problem (classifying updates and performing code analysis to determine if something could break) it would definitely be worth paying for.
Note also that you're asking the wrong people, and it's going to be hard to ask the right people with an Internet post. The best candidates for this tool are busy founders/CTOs/sysadmins/engineers who don't have time to manage their updates, much less take surveys on Hacker News.
i work for a small consultancy that builds bespoke solutions using open source code - we have loads of projects, some ancient (cvs!), and i am sure no-one has a clue what versions of what we used when (sure, it's documented for the client, but we don't have our own central list). now perhaps we should be better organised, but i suspect many other companies are in a similar position.
but if we were going to pay for this, how would it help us make money? is the idea that we can approach ex-clients and scare them with lists of security holes? or are they the target clients - perhaps they should be running this code to audit their systems? and that sounds so useful i am surprised that nothing like this already exists...?
It should also include the option "I don't know, depends on how useful it is".
I just chose a random answer since that option wasn't there (and the question was required).
It's just too vague and it implies that I'm lazy/behind. Let's say I'm using jQuery 1.x, for example, because when I was building/testing last, that was the most stable version. Today jQuery has probably 20 more "updates" since I rolled mine into production - the version number has incremented 20 times - but it doesn't mean I'm "out of date", does it? I don't believe that I have to update my use everytime jQuery goes from 1.34 to 1.35 to 1.36 all the way to 1.99.
So "out of date" is a bit problematic for me in that I don't feel the need to test/use every incremental update.
The quick answer is that my band performs none of those things in a concert setting. The most MVP we perform is a song that maybe doesn't have all of the lyrics worked out or maybe needing another section of music added to it - a work in progress. In our private practice sessions, of course, we build songs from scratch and you could make some comparisons to MVP.
I would compare music to hardware rather than software. You need to have things pretty well worked out before public performance because no one comes to a show to hear you play one riff and most audiences don't care to listen to a boring set full of rock instrumentals and no lyrics.
Also, it is generally difficult to get real-time feedback from an audience while performing rock music. Some audiences just stand and stare at you while bobbing their heads and other audiences jump around so long as there is a beat. You don't have the constant feedback that a comedian has after every joke. Pretty much the only feedback you'll get is that people will leave if you suck, or they will clap a little less after a song if they aren't as entertained. I have to ask my close friends after the show what they think of certain songs.
I don't think any musician creates music for the sole purpose of pleasing the audience. A musician creates and performs music as a means of self-expression. So, in my opinion, MVP and its market testing methodologies are less applicable to musicians.
I also know that artists will often do studies of their ideas before doing a full-scale piece, but that's more along the lines of a development spike than an MVP.
The closest thing to a true MVP that I've heard of in music would be a band that labors away in obscurity for a few years, has a hit, and then re-releases some of their old material but with better production values.
Thinking out loud, I think the difference between the sort of software where an MVP is important and both music and art is that the former is a tool and the latter is entertainment.
The entertainment industry is built on novelty, and the sheer amount of material out there is so vast that the media can really only cover what's new, what's especially good, and what has made important innovations in the past.
If what you're building has utility above and beyond its entertainment value, you have the freedom and in some sense the responsibility to release early and often.
I posted on HN about 8 months ago, came out here to work, we got some funding, and now I'm taking a semester off class to work as the first employee. so, keep being proactive and ask the right questions - the rest will fall into place.
When I first started http://anynewbooks.com, the occasional un-subscription or "Enough! Stop sending me emails." message would bother me a little.
Today, I don't even blink at unsubscribe notices. And when I get the occasional "Remove me!!!!111!!!!", I simply unsubscribe the person who doesn't understand that an unsubscribe link is provided.
No big deal. I know that refunds are a little more personal, but like most things in life, you get used to it. You'll grow a thicker skin.
Just focus on selling more copies of your product. And focus on improving your product for all those people who didn't ask for a refund.
If after issuing dozens of refunds you still can't get over it, then outsource it.
If this is a subscription service, automate the refund process such that you can you can send a single email with a link that will let them provide feedback, cancel their service, and refund their money.
If you're selling software bits consider a serial number system that will allow you to remotely disable people who have requested refunds. Also, keep your refund policy but stop advertising it. This way you prevent bottom feeders from even knowing it's an option. If you notice this is costing you more sales than you gain, go back to advertising it and re-read paragraph one.
1. It'll offer you an opportunity to get feedback which can help make your product better.
2. It can turn a hater into a net promoter if you do it right.
3. Direct outreach from the founder of a company makes your firm more human (not sure what industry you're in but in ours, people really appreciate it). It may not turn the "gamers" into buyers, but if you believe most people are good, they may be less inclined to game if you're not just some "evil business"
And although I also sometimes remember rejection more than successes, I find these requests motivate me.
Note: I've got no sense of volume you're dealing with so I'll caveat the above with that if it's becoming a time-suck.
We do have such a policy, but we do ask 'why?' in a manner that aims to clarify and improve our service. A subset of the users are nice enough to explain and sometimes addressing that root cause cuts refund rates by about 25%.
Btw, would you mind sharing the points in your refund response email template? I would assume the effectiveness would depend on the nature of product, but it'll still be educational me thinks.
It's really easy to turn a refund request into a repeat customer. If you're getting people "gaming" the system, change your policy.
However, I continue to offer the policy because my refund rate is low (about 1-2%) and the increase in sales due to the policy is substantially higher than that. The way that I see it, giving out a few refunds is a cost of doing business, and I don't begrudge refunds any more than I begrudge taxes, merchant fees or rent increases. Looking at refunds mathematically takes some of the pain out of paying them.
I'm also somewhat comforted by the fact that a refund policy is a way to resolve genuine client dissatisfaction: In my view, giving refunds to undeserving people is far preferable to clients actually leaving dissatisfied and possibly badmouthing my company.
"Its the other 50% that are mostly not in good faith anyway that are really bothering me." particularly "not in good faith"
If someone gains access to your email, it's game over anyway.
I like to think I'm smart. Two years ago, prior to HNducation, many common-as-dirt features of cap tables like e.g. liquidation preferences would have been a totally successful ambush on me. (If you can't explain three ways why 2% of $40 million is zero, consider carefully whether your best interests are being represented in a negotiation with someone who can.)
And founders/managers complain about not being able to hire talent.
I believe that's referred to as a "market disconnect."
Back to Work isn't really tech or programming related, but both hosts do have tech backgrounds. They mainly talk about things like dealing with fear, workplace issues and personal productivity. There is humor and chemistry so I'd say it might be right up your alley. The first couple episodes aren't that good (it seems like they are circle-jerking each other until you get to know them), but stick with it till at least Episode 5 (one of my favorite podcast episodes ever).
If you find that you like Back to Work, maybe try Build & Analyze after.
Changelog has the technical detail, if you are looking for more of that. They seem to be releasing less often these days (or maybe I'm just not following it as closely) and the whole "we love sass, we love ruby" recurring theme is kind of annoying.
But I really love Tech Zing the most, so I'd be keen to find any other recommendations that are similar.
 http://5by5.tv/b2w http://thechangelog.com/
As you can see, I like podcasts; but all of them are fascinating and fun! :-D
In short, consider it a job - any payout from the acquisition will be minimal. Evaluate the job based on the work you'll be doing and the immediate compensation you will receive, and even more than when working for a stable company, be prepared to move on whether by your choice or events beyond your control.
Just remember to set your expectations correctly about cash/equity incentives: http://www.bothsidesofthetable.com/2010/09/06/how-to-discuss..., http://www.bothsidesofthetable.com/2009/11/04/is-it-time-for...
On the one hand, it _could_ turn out wonderfully for all. Spend a few years playing with some fun tech, don't have to worry too much about profits/long-term viability - just keep enough cash to operate, and exit with a nice chunk of change and move on to the next.
On the other hand, it's a VERY risky strategy -- it doesn't necessarily build a fundamentally strong business (it certainly might though) and if the exit doesn't happen (or doesn't happen quickly enough), the company could very easily vanish with nothing left to show for itself.
I personally prefer the more fundamentally sound approach - build something great, viable, and long-term successful. Maybe you exit with a huge acquisition. Maybe you exit with an IPO. Maybe you don't exit and reap profits for years to come. But that doesn't mean that the flipping approach doesn't have the potential to reward or should be avoided (heck plenty of people are doing it and making a ton of money).
I'd say the key points to consider are these:
1. Do _you_ believe this is something that one of the large corporate/whoevers will want to buy in a few years? Or do you think that's an excuse for a lack of a viable business model?
2. Do you like the project? Regardless of exist, it'll be your home for a few years, so you should enjoy the work and make sure it will help your long-term aspirations beyond the next few years.
3. Since the goal is a flip, that means that equity is key. Will you have enough equity to reap the benefits? If the flip doesn't happen, will you be paid enough to make the time spent worthwhile?
Just consider all angles and make sure your interests are looked-after. That's the best advice I can offer.
If the pay is great, and you don't get locked into chasing the dream of a big payout in 3-4 years, and it'll be technology you want to work with, why not?
If it's a good job opportunity otherwise, just don't marry yourself to the work, as its likely to burn you down the road.
If it turns out to be a bad move, or you're otherwise wary, just keep your feelers out there and don't be afraid to jump ship to a better opportunity if you see fit to do so.