Off the top of my head the biggest issue with using Microsoft's MVC is not within the framework itself, it is within the wider Microsoft ecosystem.
If you use MVC you now need Microsoft Servers (which cost more), maybe CALs, and you'll eventually need to pay for MSDN (for the latest Visual Studio and tooling, TS Online is wonderful however).
For us it made sense since we're in education so Microsoft gives us tons of stuff for either free or at a massive discount.
If I myself started a small business (with a limited budget) I'd likely look at something which offered a similar experience but without the dependencies (namely Ruby on Rails).
But I'd rate the MVC 5/Entity Framework 6/MS SQL setup alone very favorably. It definitely helps your productivity hugely and if done within the MVC-style will help maintainability somewhat (although you can write anything badly).
It is just the dependencies. That's really the only major downside.
PS - Speed wise it is pretty similar to compiled Java. Faster than [most] PHP (compiled or not).
PPS - If you go this route check out Stack Overflow's wonderful Miniprofiler. Great tool for SQL development (it work with anything Entity Framework can connect to including non-MS SQL servers like Oracle SQL).
Anyway, as for constructive feedback - I don't quite understand why many of the Framework options would exist. How does a PaaS "support" Spring? Or CodeIgniter? If a PaaS supports the language runtime, why would it need to explicitly support a framework?
The text on the splash image looks blurred because of the background shadow. Had me thinking I needed glasses. (Chrome 38, ubuntu 14.04)
Ben Heckendorn is known for very clever console modifications and has forayed into accessible controllers in recent years. He sells a custom made one-handed controller for a few hundred dollars, and this may be worth a look!
- Age of Empires Series
- Command and Conquer series (aka Red Alert Series)
- Stronghold Series
I am sure there are modern equivalent of these. Isn't starcraft in this genre?
He ran 3D Studio by pushing the trackball and hitting keys with a stick gripped in his teeth...and with a pen, he could kick most of the studio's ass sketching - so long as someone set the sketchbook on his lap...he used that as a pickup line with the ladies.
Your friend is grieving. You can't fix that. But it will work itself out.
Nimbus, Desktop Dungeons, Cogs, Osmos, Papers Please, Peggle, Bejeweled, World of Goo, Any poker game..
Machinarium, Evil Genius, World of Goo, Civilization V
With a controller like the G13 there's many more which could be programmed to playable state: http://www.amazon.com/Logitech-G13-Programmable-Gameboard-Di...
Something like a Razer Naga, a mouse with a ton of side buttons, could allow him to play other games with one hand. Probably not FPS though. Other manufacturers will sell similar mice, I just thought of that one first and have no idea if it's the best.
You could get an IPAC or other arcade control board (I've used X-Arcade kits with success for other projects) and build some kind of custom control surface, maybe using a trackball or joystick and some big arcade buttons.
Final idea, if you're crazy: Bolt WASD onto a mouse, and wire in as extra mouse buttons or to a keyboard controller.
 Maybe sensors or pedals for movement? Seems like it would be hard to WASD with the side buttons on the mouse. That way you could get good enough mouse fidelity for aiming and still have enough buttons to do stuff.
I have no special knowledge on the subject, but I did a quick Google search. I'm sure you might have run across some of these before, but I wanted to share them since I'm pleasantly surprised by the depth of things that are out there.
You should let your friend know that they are not alone and they almost certainly can still have plenty of enjoyable gaming ahead of them.
 - http://www.nbcnews.com/tech/video-games/disabled-gamer-shows...
 - http://www.reddit.com/r/leagueoflegends/comments/120per/ama_...
My initial thought is there has got to be some kind of foot pedals for the left handed controls. If you can't find one, take an old keyboard and eliminate all the keys except the ones needed for gaming. Then attach foot pads to the gaming keys he needs. It will probably take some time, but he'll eventually get used to it.
Many of them were built for the PS2, so you need an adapter to play with something like the XBOX or Playstation, try http://xim4.com/.
Also check out: https://www.kickstarter.com/projects/70308014/kings-assembly...
Looking for alternative controllers might be nice, finding some way to make do with the standard one could also help him gain more agility with the one hand he has left, which will be useful for many other things in his life.
Unfortunately I don't know of anything in the way of custom joysticks/setups that might be helpful, but maybe I can offer some reassurance for your friend. Even with the standard input devices (mouse/keyboard, controller) people have been able to adapt to very extraordinary circumstances. Anything's possible.
For PC FPS i would try a mouse with a lot of buttons on the left so you could put wasd on 4 buttons on the left so he could control the shooter enirely by mouse.
Depending on how much use he has with his left arm he could also probably build a simple custom Joystick to replace wasd movement keys...
Also i would get some One-Handed Keyboards for fast Typing with one Hand.
Hope he gets adjusted quickly!
I recommend the Razer Naga, or Razer Naga Hex. The hex has 6 extra buttons while the original Naga has 12 I believe. Both mice are in the $60-$70 dollar range but are well worth the purchase.
I stopped in to comment ( my first comment actually ) because games are a big part of my life, and I couldn't imagine a world without games. I'm a game developer by day and player by night. My best wishes go out to him and I hope he continues to keep playing games!
I couldn't google any of this device, but I saw one in university lab. It was circular board - much larger than usual pedal-size with 4 springs at edges. It may be possible that it was custom built though.
There are also mice with a lot of buttons, like the Razer Naga: http://www.amazon.com/dp/B004AM5RAM
Voice commands in games is becoming real: https://www.youtube.com/watch?v=RmsuTiuRaog
edit: I mean, hell, dance dance revolution sort of does that already and the savants that play that can do crazy speed with their feet.
There was a girl at my school a couple of years above me who was born with no arms. She could write reasonably well, feed herself, etc. via her feet by using her toes like fingers. I was always impressed with just how able she was. She ended up getting her drivers license and everything with a steering wheel that she can use with her feet.
What type of games does he play?
Dell XPS 15:http://www.dell.com/us/p/xps-15-9530/pd?oc=fncwx1602h&model_...
Out of the box all of my hardware is supported, though I'm running Mint 17 (same base). The keyboard is a pleasure to type on, though the laptop is a bit weighty. The trackpad is great under linux, something that was sorely lacking on every single other machine I've tried (System76, IBMs, Dells, everything!). Even the function keys are recognized - which was a pleasant surprise over my System76.
I've successfully run it on a non-retina machine, and currently have a 2013 MacBook Air running 12.04 (I'm too lazy to update).
The installation is fairly simple and just about everything worked out of the box.
You need to ask yourself why you want this..You have to realize you aren't going to ahve the same level of display. Switching to Ubuntu you are going to have to make a lot of consessions.
What is that you like about the Macbook Pro Retina? The display? the weight? the size? Go find a laptop with the specifics you like and install ubuntu on it.
Dell Precision mobile workstations such as the m6800 are Ubuntu Certified. 
The m6800 can be provisioned with:
+ Spare batteries.
+ Raid 5 over three drives
+ Blu-Ray [limits hard disks to 2]
+ Processor: Intel Core i7-4940MX (Quad Core Extreme 3.10GHz, 4.0GHz Turbo, 8MB 57W, w/HD Graphics 4600)
+ GPU: Nvidia Quadro K5100M w/8GB GDDR5
+ 4G LTE mobile broadband
+ Hardware crytpography accelerator
+ Intel vPro Management
+ Ram: 32GB (4x8GB) 1600MHz DDR3L
+ 5 Years 24 x 7 Support with Next Business Day Onsite Service.
+ 5 Years accidental damage service
+ 5 years data recovery service
+ A 17" Display
And of course Ubuntu pre-installed and supported by the hardware manufacturer. 
The complete list of Ubuntu Desktop certified hardware is available. 
Immediately, with brutal honesty, and positively.
1. Immediately: Never delay communication. Most people will be less upset about the schedule than the fact that they weren't informed.
2. With Brutal Honesty: Explain exactly what's going on. You may end up with a pleasant surprise. "Oh, can we just have xyz then?" or "How can we reduce the scope?" or " How can we help you make this easier." An informed customer/boss is a resource to be used.
3. Positively: Find a way to deliver something by the deadline. "ABC will be delivered as planned on October 31, but we have run into unexpected issues with Feature xyz, so it may not be fully implemented at that time." sounds a whole lot better than, "We won't hit the October 31 deadline." You may even give them options in terms of features & dates. They may not like it, but once they make a decision, they feel more a part of it and you will have bought some goodwill for a while.
Here are some challenges that come to mind in software estimation:
1. Estimates are almost always done too quickly, with too little information. If you can wait, spend more time, or reduce the unknowns, do so. If nothing else give it an extra fifteen minutes. If you can say "I'll get back to you with an estimate by ..." (e.g. tomorrow or end of day) that's even better.
2. Estimates are ranges, a probability that the work will be done across a range of time. but are often given as a specific date or amount (e.g. "It will be done tuesday/take 5 working days"). Early or quick estimates may be ranges of 15x or more (e,g, "it will be eight hours to three full work weeks"). Don't be afraid to capture that ambiguity in a range. Others may not understand ranges, so give them the high end if needed, but at least be aware that ranges exist. Often ranges, or high estimates get push back. This is your opportunity to specify what questions need answers, what requirements need refined, and what areas need more design and architecture to reduce ambiguity. These things can reduce ranges of estimates.
3. Know the difference between estimates, targets, goals, and commitments. Confusion between these leads to miscommunication and frustration. Often we'll make a guess like "maybe two weeks" which is a wild instant estimate, and others will see how nicely that lines up with their target date, and believe you have committed to that goal. Commitments should be explicit, and part of your process.
4. Do not negotiate estimates. Managers are trained to negotiate, and a naive manager will almost always reduce estimates through negotiation, which is a distortion of reality. Developers should collect the information they need about the requirements, ask questions, then produce their estimate in isolation, and refuse to change it. The way to change an estimate is to change the requirements, often addressing ambiguity and questions, and re-estimate the work given the new information. This is hard to do, because a "better" timeline can make everyone feel better in the moment, but will lead to problems later.
5. Renegotiate when change happens, or when you are in danger of failing a commitment. This one answers half of the original question, to my mind. If you didn't make a clear commitment, or requirements are changing with out any renegotiation, you have to fix those first. After that, keep a close eye on scope creep, and changes. Change happens, accept that, but make sure that those you have commitments to understand that change has impact on your commitments, and you can either commit to the original work and timeline, or you can commit to the new work, and a new timeline. Holding you to new work on an original timeline is not fair to you, and not a problem to be solved at the developer level. This one can be quite challenging, some people use "change management", itemized / ticket based change requests, even explicit signoffs. If you have trouble here, find what works for you.
6. Learn from history. You won't get it right. A lot. Keep track of how you are doing, improve processes and spend more time refining requirements/acceptance criteria etc. Make sure commitments are negotiated and explicitly agreed to. Keep learning.
7. You will make mistakes. If you uncover new questions, requirements, found work, it was in a certain sense an estimating error, but it has a different fix. If you had a reasonable view of the work to a fair level of detail and spent reasonable time on the estimate, and are still missing your commitment, you have made a mistake. That's OK, especially early on, or in new areas for you, if a team has shifted etc. The answer is, communicate. Let your manager know immediately, as soon as you realize it, that you feel you are at risk of failing a commitment, and you need to revisit. From there, you can investigate the new work, or re-estimate based on your increased understanding of the problem. Perhaps note some data for your historical tracking. Learn. Next time, make a better estimate. It does feel bad to miss a commitment, or even to not make a deadline that someone else set up. That's very human. The way to feel better about it, is to get better at it.
The above is based on my decade of experience as a software developer, and a solid foundation from Software Estimation: Demystifying the Black Art, By Steve McConnell http://www.amazon.com/Software-Estimation-Demystifying-Devel...
I highly recommend the book as a learning resource, and having the whole team, managers included, read at least the first portions of it. It also has specific tools for various estimating challenges.
What you really need to do is help the person setting the deadlines plan. There are things they're doing that are synchronized with finishing the project, and there are things that simply depend on the project. Marketing may want to publish a blog post. Sales might want to promise a delivery date (or already has). Management might want to claim victory for a Q3 delivery. All of these things are outside your knowledge, and they're frequently based on your initial estimate.
So, over-communicate, but also slip once, and slip hard. If you're a week out, and going to miss by a day, slip the date a week. Fuzzy, frequently communication isn't useful, because nobody can plan around that. Make sure you are clear about the moment in time you want the project manager to go from "I'm worried about date X" to "We've change the date to Y", because while it's fuzzy in your head, it needs to be clear in theirs.
If you give a single number, there's a 100% chance that it's wrong -- you're never going to hit it exactly.
Instead, what you should be aiming for is to give an interval that is correct, say, 90% of the time (so still wrong 1 out of 10 times).
If you do it honestly, the intervals have to be much wider you than you are used to -- the "two weeks" you would usually say is realistically more between 8 working days and six weeks, with 90% confidence.
A major benefit of giving intervals to people instead of fixed numbers is that it makes it really clear that it's not a deadline and can't be treated as one.
If they tell you this is unacceptable, then only give the high number, and McConnell's book.
Most people have a hard time realizing they are stressed out -- you are suddenly completely freaking out! If you wait until there is a problem, you've waited too long. Risk shows up way before it manifests.
Daily gut checks are an easy way to notice risk. Ask yourself "how is the estimate aligning with the actual work left?"
Once you know there is misalignment, the most valuable way to discuss is focusing on work left.
The most important thing to remember when you know you are stressed out is to take a deep breath and relax. Understanding how you are evaluated for success and primary business drivers will allow you to discuss risk and delays in a language that can influences others and address what is more important.
Things that really help estimations:1. Thinking about work in relative complexity rather than time allocations. More complex work increases time exponentially. Unknowns are almost always filled with gotchas. Any work that is more than a medium in complexity is best experimented on in spikes or broken down into smaller pieces of value.
2. Use your gut. It knows better than your head because these problems are often too complicated and deep to really have any idea how long they are going to take
3. Firm up definition of "done." There is a lot of overhead beyond coding the solution that makes something complete. Having a well known definition of done that everyone agrees on will help consider all the things that are often forgotten.
Go easy on yourself. Your estimates aren't wrong, they are off. You don't make good money because you are solving easy problems with well known solutions. You are creating simple solutions to complicated problems. Estimating anything when its complicated is most often inaccurate...
When all else fails default to Uncle Bob's standard answer: 3 weeks :)
- The person who you inform may have others within their organization to update. It reflects badly on them too when they find out last minute something won't be on time and can break all of their internal assumptions about their timeline. They have goals too.
- Delays pile up. 2 days here, 4 there, a week on that other thing before you know it youre a month behind schedule. Its much easier to discuss things incrementally than it is to spring the totality of all delays on them when they believe theyre much closer to a completion date than they really are. But were only a week away, how is it going to take another MONTH?
- Finally, though wed all like to think otherwise clients often make some changes during projects. When those changes occur and youre already on the same timeline, its much easier to discuss how the changes the client is requesting are going to affect the delivery date. This helps with their confidence in you, and their capacity for accurate internal debate about project changes/additions and what it will do to the delivery date.
Estimating development time is incredibly difficult; most methods involve some kind of padding which is obviously not an exact science. There are always hidden rabbit holes, unexpected problems and tasks that were completely unaccounted for. If youre transparent with the client and communicate when there is good news (hey, check out the xyz feature we just finished) as well as bad news like delays, most of them will understand.
The basics should be the same with either party, though.
Always open the communication lines as soon as you know you are behind. You don't have to say "My project is definitely going to be late" but rather be honest. If you are behind on a milestone, speak up now.
Don't assume you can just make up the time during the rest of the project. The worst thing you can do when your project is running behind is make it a surprise to everyone on the day of the deadline.
When you speak up early, this is also good for everyone else involved in the project. If you are a freelancer, you can work with your client to make adjustments to the scope to keep things on track or they can delay other parts of the project if it is a coordinated effort of more than just your work.
If you are an employee, your manager or team can assess the situation and make plans to make the project successful. This can include changing scope, getting you help from more senior developers, reassigning parts of the project, etc.
There's no shame in this: the ultimate goal is to be part of successful projects not looking like a hero. Plus you look a lot better if you give everyone a chance to come up with a plan rather than just springing it on them at the last minute that you aren't done with your part.
It is also a lot less stressful when your team is working together to work toward a solution. A lot of the stress from this situation is worry about letting the team down or trying to work too much to make up time.
Be prepared for people to ask why you are behind though. Give honest answers. I hope your answer isn't "I underestimated the project so I thought I had a lot more time to surf HN", though.
This means you need to be completely honest with everyone on your team and speak up early so plans can be made. Again, if you wait until the last minute to say something, after you tried working long hours to make up time (and failed), there isn't much that can be done. The project is already late at that point.
This is when you get some real anger directed at you, because you screwed over the team by pretending there wasn't a problem. You also took away the team's ability to make adjustments to compensate and you know.. work as a team.
So really, how you bring up the fact that you underestimated part (or all) of your project isn't really as important as doing it right away. Be honest with everyone about where you stand.
You demonstrate willingness to do this by actually doing it.
During the project, if you realize that your estimates were originally wrong, fix it asap and communicate immediately. Frequent communication is the key.
The advantage of things like Scrum is that a 1 week sprint size should flag up slippage within a week.
It's hard for people to actually know they're going to miss a deadline, and they might feel that they can course-correct. But if you have a really clear definition of done, and work broken down into pieces that fit within a week, and you do planning each week... then you will know as soon as you slip, that you are slipping. And if the product owner is involved in planning, then there's just no hiding it and he can communicate it upwards.
Things like agile and Scrum are core processes for this... they give you nowhere to hide, and that helps those who need delivery to get that feedback early so they can prioritise what they most want delivered (if the deadline is more important than the totality of the delivery) or how they're going to communicate slippage up the chain (if the totality of the delivery trumps the deadline).
If this is all noise to you, then just do this:
1. Break your 3 month project down into logical pieces of work, each one small enough for you to understand roughly how to do it (realistic work effort) where no single piece of week should be larger than 1 week (if it's bigger, it's a smell that you're estimating badly and don't understand each of the parts involved).
2. Order all of the pieces of work such that you are doing the most important things (decided by the project sponsor) first.
3. At the start of each week declare what you will finish that week, always the most important things you could be doing... and get to work.
4. On Friday, see whether you finished everything you said you would. If you have not... you have slipped and it impacts next week and gets communicated.
Granted, 90% of clients don't really work that way. In which case you need to gauge your comfort level with getting them to buy in, or in some cases, you simply have to walk away from the client that has a one page overview of a complex web site and wants a fixed cost, binding bid.
If they want a fixed date, take 60% of your velocity and you'll be pretty sure your math will work out to give you the project on time.
Anything not based on data is pulling numbers out of your ass, and it's hilariously disastrous every time.
If you're not managing your project in such a tool then you should be. If you're not breaking your job into small enough tasks that the chart looks reasonable then you should be doing that too. Both these things will force you to come up with better estimates and give you a record to learn from to provide better records in the future.
There is lot of stuff about honesty and so on. After being maintenance programmer for a long time, I would just say: Do not stress about it, and always inform relevant people.
Once that is clear, the customer is prepared and will be expecting and able to handle estimate revisions whenever you make them.
If you can't pick reasonable milestones, there's no way you can make a meaningful estimates. And without reasonable milestones there's no way to analyze where the process slips and to learn from it.
If anyone asks you why estimate wasn't accurate provide him with list of all the things you've done since estimating related to the task, if he inquires further also unrelated.
If you see anyone that thinks that estimate is a promise or a price, remind him that it's just poorly informed guess, and any decission based on a guess is gambling. And you can't win them all. You can't even win enough to break even.
Estimate is such a misused word. It suggests that some process of estimation was performed and given number is result of that process. One might hope that some math was involved. In reality this word is used for numbers about the future pulled straight from someones ass.
To get an actual estimate of what will be done and for when involves a team, planning poker and few sprints to measure team velocity.
All above is for when you are employed. If you have your own customers pad heavily both the budget and the deadline. Even if you think you are pessimistic in the end turns out that you were still to optimistic, because task mutated.
Seems like it would be not to difficult to source listeners via some kind of songbattle site or Mechanical Turk if you wanted to to AB tests.
 Maybe different strains of the same algorithm competing head-to-head rather than through AB testing?
I suppose for python, with its motto of 'one way to do it', doesn't suffer from a need to unify.
That is one of the reasons I have never been able to pick up either ruby or python. I just find them boring.
I was given the chance to take over some ruby projects at work recently. I powered through some popular ruby and rails books over the weekends, not in an attempt to learn ruby, but trying to learn cool hacks with it. You know, stuff to impress people with. The 'hubris' that perl people love. And well, I couldn't find any.
Do you want to create fantastic 3D graphics and visual effects? Best learn C++ and OpenGL.
Do you want to develop a highly resilient parallel system that can be patched without downtime? Learn Erlang.
Do you want to program an embedded system, or anything where you need to be close to the hardware? Learn C.
Do you want to program mobile apps? Java, Objective-C or Swift.
Do you want to "program" hardware on an FPGA? Verilog.
Do you want to quickly make 3D games or other interactive experiences? Try C# and Unity.
Do you want to advance your own knowledge of programming and computation, even if you don't have a particular platform restriction? Learn any language in a different language family than you're used to, something like Clojure or Haskell or Prolog.
And as you get familiar with other languages, you'll find it's easier each time to pick up the next one.
The truth is, if you focus on being a great engineer then picking up another language and framework isn't very difficult. It will make you a better programmer to see how other systems solve problems.
Not to speak out of both sides of my mouth, but I do advocate being a master at one or two languages and learning how to write idiomatic code. I just think there's room for more than literally one.
Seriously, from a software engineering perspective, the past decade has been a peculiar time: JS used to seem like a joke to many, but it's got past that and is now a serious contender as a platform compared to established ecosystems. However, we're also starting to see other languages include JS as a target platform; once that matures, those other ecosystems can piggyback on JS's features, and it loses much of its appeal.
From a computer science/hobby programming perspective, JS is a 'Jack of all trades, master of none'. If you only know JS, you might get really good at churning out code, debugging language-specific nuances, sculpting libraries to your whim, etc. but I would argue that you won't be really good at the big-picture stuff.
Without the perspective of multiple paradigms, you might not see the wood for the trees. Your thinking will be a fuzzy mixture of important ideas lost in a sea of JS implementation details; you won't have the clarity that comes from thinking about a problem from multiple perspectives.
It can be difficult to learn a different technology; especially if it's not by your own choice. The key is that, once you've got past the initial "It can't even do X, Y and Z!" stage, you'll realise that:
- It *can* do X, just in a way you didn't recognise because you didn't fully understand X - It can do A, B and C that you never even knew existed - Y is actually an anti-feature, which you didn't realise the problems of before
If you want to get some real "Aha!" moments, try something out of your comfort zone like Erlang, Haskell, C, FORTH, Prolog, Maude, Scheme, etc. (admitedly JS is like a cheap knock-off of Scheme, but those missing pieces like call-cc, tail-recursion and macros can drastically change the mindset of its users).
If you want to get stuff done, stick to what you know ;)
A client side web app however still needs a back end API. The good thing is, if your front end runs (mostly) on the client side, you can pick almost any language / framework for the back end you want (e.g. Python).
> I am a die hard Python lover, but I do not know what do to at this situation.
Ultimately, if you don't know what the other options are and their strengths and weaknesses, you will only ever have a hammer. And you won't even know that your only tool is a hammer. And you'll be trying to eat with it and sew with it, thinking that it's your only option.
If your life depends on manipulating bits. You should learn all the ways to manipulating bits. Because you will then know the best way to manipulate a bit in any given situation. Maybe you should be focused more on one than the others, but that doesn't mean you should ignore everything else.
First off, because learning is good for you! Even if you dislike a language, there's probably something to learn from it if it's widely used.
There's a lot of great developments in the JS world and Node has really pushed the envelope in terms of asynchronous IO and making it easy to use web sockets and such. That said - most apps you'll make don't need some of the more unique features of Node and personally, I find it's easier to make web apps in high level languages like Python.
That said, it comes down to personal preference. It's the ol' optimization vs. discovery problem - you can't figure out what the best tool is for you without exploring new things.
I wouldn't worry about JS/Node replacing server side code, to be honest. Python and other languages are slowly going in the same direction (see Python 3's asyncio module). Learning a new framework or language is never a waste of time.
2) The web is just one of several mediums for delivering content these days.
3) Node.js has a highly suspect concurrency model that might not be suitable for all the various types of programs you could be building.
To answer your question more on point, the first thing you'll find is other languages add much, much more safety into their language than js-node can. Indeed, that's what makes js-node as much fun as it is. But if you're a new business owner, and you have to choose between building your server backend on java/c#/etc technology, which can be rigorously checked for stability, and js, chances are high you're going to go with the languages that have such automatic checking features.
If you really want your mind to learn something you can get back to your JS code, you should try to use a functional language:
- Clojure (I recommand compojure-api for the server and reagent in clojure script for the frontend)
If you really want to blow your mind:
- Haskell (scotty if you want to start small, Yesod if you want all batteries included) for the back and Elm (for the frontend)
It will make your code cleaner in the end, and you'll start to focus on the important stuff instead of just the syntax.
If you're building simple websites for clients (publishers, small business owners, etc.), PHP is probably still the best choice, and usually Wordpress. It runs with no config on standard web hosting platforms and you mustn't underestimate the power of the Wordpress plugin ecosystem + the fact that most people are comfortable with Wordpress.
If you're building more advanced websites (not web-apps) for clients, Django is a great choice, in large part because it has an excellent drop-in admin panel, but also there's a ton of third party apps available.
Ruby is also a good choice for this, having an even more solid ecosystem.
That said, Ruby is trending down, Python is trending up. Also, hipsters are now learning node.js and nearly everyone who went to engineering school knows Python. Hipster savants are learning Go, Clojure, Haskell, and Scala (in order). Who do you want to work with?
node was built with event-driven apps in mind. In other words, it's for web apps. It would be unwise to build a traditional website with node unless you have a particular reason to.
Same with Go, Clojure, Haskell, and Scala.
If you want to work at a cool startup, you won't do yourself a disservice learning node. If you want to work at a cool startup doing more hardcore stuff (think Firebase or Cloudfront), you wouldn't do yourself a disservice learning Go or Clojure.
If you want an all-around framework and to broaden your skills, go with Ruby or Python. If you're more of a hipster (aesthetics, web-only) then choose Ruby. If you're more of an engineer (academic, data science), choose Python.
Another perspective on Ruby: Rails skills will be in demand for maintaining old code-bases for awhile into the future, even if it's declining in relative popularity.
You should have a look to rails, it's still the state of the art in term of framework design. The java/scala Play framework is also worth trying.
Both our current company and our last one were in the adult space (sex toy design and manufacturing, and our adult mobile app store). For a few years we ran both companies simultaneously, mostly from home in a room that was both our bedroom and office (because 1. #startuplife and 2. adult startups don't usually get funding that affords us office space). We even moved to a small factory town in China for a couple of years to lead a group of designers and engineers and oversee manufacturing, where we had no friends aside from each other.
Sounds maddening, doesn't it? Except it isn't.
Some might say there are a lot of land mines here. Having virtually no separate life from your partner is dangerous, working in the adult space can be hazardous to your sex life, the pressures of running a company can turn you against each other. But only you and your partner know how you tick together. I believe that as long as both of you are putting your all into it (the relationship and the business) AND you genuinely love and admire your partner for who they are, vice and virtue, it can be an incredibly rewarding experience. You'll both be working for the same dream personally and professionally. Remember some of the greatest companies in the world are family-owned.
Things I would look out for are not so much about what your partner does or their personality traits, but more about how you both are together. How do you argue? How do you make up? Do you turn to each other when you're under stress? Do you value each other's input? Do you inspire each other? Can you tell each other when the other is slipping up? Can you handle harsh criticism from the person you're most vulnerable to?
If you haven't already, you need to learn how to argue. Say what you mean, criticize what they do not who they are, and when you're done, apologize right away. Both of you. Actually, both of you should get used to apologizing a lot. I've found that because you're under a lot of stress, the smallest jab can become a war wound. Likewise, offer accolades often too. Unlike traditional business partnerships, you don't get a lot of emotional distance when you work with your significant other. I'm not suggesting you coddle each other either. You need to learn how to give and take criticism with the understanding that it can be emotionally charged and received.
You should inspire each other and feel accountable to each other to work efficiently and effectively. If either of you don't feel this way about the other, I'd advise against working together because inevitably one or the other will feel they're pulling all the weight. You don't get extra leeway because you're sleeping with your business partner.
Speaking of sex, embrace the quickie. Because, let's face it, you're not gonna have a lot of time all the time.
Lastly, and importantly, don't shit with the door open. Also, take a shower, brush your teeth, put on pants. Keep some of the little mystery you have left. :)
Also, I think it's good for our relationship because we share the same hobby. I don't know how it's going to be when working together on something that isn't a side project, but a day job.
There's business. There's what's actually important in life.
My personal experience has been if you two communicate well and can work together well on other tasks, then it is just extending the partnership. With my wife now she is involved in aspects of the business and does awesome things for the business. However, she doesn't want a day to day role because she likes having some separation, which honestly has really been the best for us.
We work really well together because we respect each other for what we bring to the table, and for the most part we can swallow our egos.
I'd say for what to watch out for: having separate time is important, having the ability to separate work from home is critical, having time set aside where work topics are not a focus etc. Respecting each others decisions and abilities as well as checking the ego is very important. I don't believe it is possible to say you can't talk about work at home etc, but you have to be able to have conversations about life outside of the job. To me that is no different than dedicating time to work out, having hobbies together etc.
There have also been some spectacular meltdowns too, and in general, intimate relationships between senior executives tends to correlate to dysfunction.
A lot will depend on your personalities and skill sets. You will get pushback from some investors (though traction has a tendency to quell pushback of all kinds). But you could do worse than starting with someone who deeply understands your target audience -- and with whom you know you're compatible.
I'd do a "pre-nup" agreement on which one of you is going to bounce if it doesn't work, and call it an experimental situation.
There are many examples of organizations created to support open source software: the DSF (https://www.djangoproject.com/foundation/), the ASF (https://www.apache.org/foundation/), and the GNOME Foundation (http://www.gnome.org/foundation/) are a few prominent ones. Are you sure you need this level of formality at this point, though? This carries a certain amount of overhead, and if you mean 501(c)(3) when you say "non-profit", it's a long process that may not go well (http://blogs.gnome.org/jnelson/2014/06/30/the-new-501c3-and-...).
It sounds like you're talking about a relatively new project with a small number of contributors. Would it be possible instead to make an arrangement with the core developer(s) to support the project financially? You may be able to structure this as a normal contractor agreement or via services such as Gratipay (https://gratipay.com/, formerly gittip) or BountySource (https://www.bountysource.com/). This would allow you to contribute while deferring the overhead of an organization until there are more people and resources involved.
It's not very big, but somewhat active.
Then there's a Finnish-language one:
you might try there if the first one yields nothing.
You can find free samples showing few excercises. There are for example basic multiplication assigments. That book is for 3rd graders.
(I went through finnish elementary school and I think they taught multiplication tables for us on the 3rd grade (9-10 years old)
On the other hand, if you want to learn how properly design a web application to scale, I'd suggest to get a couple boxes on DO. This article describes the common design for 99% of applications on the web (The last 1% is reserved for companies that have achieved enough traffic to justify hiring their own ops team). Finally, I'd suggest you read through this slide deck. It goes through the steps of scaling up your application from one server to a cluster of machines.
1 - https://www.digitalocean.com/
2 - https://www.digitalocean.com/community/tutorials/5-common-se...
3 - https://speakerdeck.com/modulus/planning-for-the-horizontal-...
Scaling steps with traction:
1.) dedicated server for DB
2.) loadbalancer (AWS ELB) & 2nd app-server
3.) scripting server mgmt (AWS OpsWorks, chef, puppet, ...)
4.) adding missing server roles (e.g. caching through memcache) to scripts
5.) deployment, up-/down-scaling with button clicks
6.) Slave-DB (more for ongoing backup and fail-over than for read-distribution)
7.) if you don't use AWS ELB don't forget to make sure the LB is not your single point of failure
Usually I have more than 1,000 registered users before I start with scaling step 1.
If it's a professional project in any sense (as in: something I'm being paid to do) I'll at least route the DNS to a load balancer, and I'll use some kind of hosted RDS or NoSQL service for the DB. That's kind of the bare minimum effort (just in case the client is right about the product getting a million hits on the first day...).
But for 99% of side-projects, you can build and refactor for scaling concerns after you've done practically everything else. Scaling is the ultimate "Champagne Problem".
Worry about server setup when you have those problems or otherwise you might be over optimizing the wrong things.
Looks like nothing but branding to me, but I guess you could argue it provides some sort of consistency with the status bar. It might also be preparation for a more interactive lock-screen similar to what iOS 8 offers (http://9to5mac.files.wordpress.com/2014/06/img_00071.png).
Faploid hasnt officially launched, but has already build an active audience, is socially accepted and actively mentioned and promoted by various mainstream media outlets. Faploids users are as diverse as the content we serve. They are socially engaged, digitally equipped and searching for safe and quality adult content in an user friendly environment.
All content including movies, pictures, articles and more are based on our user's taste and interests. Faploid evaluates millions of new adult content every day and uses this information to match content to their personal interests and then delivers them automatically to their personal Faploid magazine.
Our users aim high and for that reason we only work directly together with the best publishers/content owners in a variety of niches from A to Z. For them Faploid isn't only a trusted partner in brand building, but also a quality partner in sending them traffic of people who are seriously interested in their content and willing to pay for safe and quality adult content.
After a long time of developing and deal making, we're in our run up to public launch. In the upcoming months, partly because of the enormous positive attention weve received from both (mainstream) business and consumer side, we will invite all the subscribers on our waitinglist step by step.
Cheers, Team Faploid
She's approaching it from a great, sex-positive way but is having issues whenever the company touches the "regular world" - hard to get funding, taken seriously by non-adult industry people, payment processing, etc.
The "problems" in Internet porn do not appear related to reducing barriers to access or better tech, but in solving issues with how people cope with sudden, instant access to a historically unprecedented amount of material.
Yet again, porn is trending ahead of regular tech use, which is also starting to deal with the same issues of addiction, information overload, how to monetize premium content in the face of a vast universe of free, tech saturation causing detachment and loss of intimacy (and the controversy over whether it does any of these in the first place).
Kit Maloney, Oactually http://oactually.com/
Cyan Banister, Zivity https://www.zivity.com/
Tina Gong, HappyPlaytime http://happyplaytime.com/
Sarah Jayne Kinney, UnboundBox https://unboundbox.com/
Dema Tio & Hermione Way, Vibease http://www.vibease.com/
Danny Wax & Tyler Elick, Spreadsheets http://spreadsheetsapp.com/
Akbar Dhanaliwala, MinnaLife http://www.minnalife.com/
Kathleen Funk & Alan Harris, XSync http://xsync.com/
Colin Hodge, Down https://www.downapp.com/
Ben Tao, Offbeatr http://offbeatr.com/
Kaitlin Prest & Mitra Kaboli, AudioSmut http://audiosmut.ca/
Roger McNulty, Gasm.org http://gasm.org/
Joe Nelson, TheyFit http://www.theyfit.co.uk/
Meika Hollender, Sustain http://sustaincondoms.com/
Sherif Maktabi, Glance http://www.glanceapp.info/
Cassie Robinson http://www.cassierobinson.net/
Kathy Harris, Slixa https://www.slixa.com/
Christian Thorn, Pinsex http://www.pinsex.com/
The guys I know all communicate in private communities though, and not for the taboo reason but because the industry is overtly hostile and aggressive towards competitors. There are only 3-4 big players and they play dirty(no pun). They own the pay sites and free sites. They leak their competitors product on their own free site and pair it with upsale ads to their own sites. It is very dog eat dog and hard to innovate in because of the players not the taboo.
and the Daily Beast:
Silicon Valley welcomes innovation and disruption in every other area of our lives except this one - which is why I gave this short talk at New York Tech Meetup back in Feb on why the Next Big Thing in tech is disrupting sex, and intro-ed Colin Hodge of Down and Dema Tio of Vibease to demo their products (go to sex+tech in player):
and why I organized a 'Changing The World Through Sex' track at Social Media Week New York also in Feb:
You can get a sense of the various #sextech startups who demo-ed in 'Sex Tech Shark Tank' here :)
We welcome as many people as possible to join us in disrupting sex and porn - for anyone interested, this is my talk on 'The Future Of Porn' at SXSW last year:
and I spell out the business opportunity in my open letter to David Cameron and Silicon Valley published by Wired last year - 'Don't Block Porn, Disrupt It':
One day I want to start the YCombinator for porn - who's in? :)
So, I'm trying to solve the problem by creating adult games that have realistic plots. My goal is to try and create a niche and prove that adult games can be a profitable business, so that big players take interest and we see some major adult titles that are rated "A" not because of the gore and violence in them, but for the erotica/porn content.
Since I'm only one person, I have to start small, with sub-genres where it is possible for one person to make something worthwhile in a reasonable amount of time--currently it's illustrated interactive fiction. So far I've released one game that is more of a demo than a full featured game. I'm currently working on my second game which is much bigger.
I founded Revel Body (www.revelbody.com) with the goal of using our new vibration motors to build better vibrators. We have been working on increasing the sensation and versatility of our products (more power and a broader range of vibrations than existing products) and removing the drawbacks of noise, reliability, numbness, etc. Right now we build and sell the most powerful, quiet and reliable battery-powered vibrator on the market. It is strong enough for muscle massage and can do things like create underwater suction and vibration (using the backside).
Unlike a lot of brands in the 'sex toy' world, our branding and design aesthetic are purposely designed to be clean, healthy and accessible. We focus on health and wellness as a way to enable consumers to buy and try our product. We want to remove barriers from people trying our products. We believe that the industry could double in size if people we not embarrassed to buy these products, so we are focusing on enabling that. We need to remove stigma, give people permission, etc. Focusing on the many almost endless medical benefits of regular orgasm is our focus right now.
These products are about as intimate a product as anyone can use, but they tend to be called 'sex toys'. This does not do justice to some of the better products our there, but probably is good for cheaper/mass market items. Toys are cheap and do not do anything important, and these are not just for sex in the traditional sense. Some brands are starting to use 'pleasure product', but we are looking for a new name for a high quality category of products like we build. Personal Appliance is too bulky. I would love if someone could put together a new for this category of product which really captures what these products can do.
We launched on Indiegogo, because the biggest crowd funding site would not allow 'sexual' related products. We blew past our goals nicely, but do not think kickstarter will come around and allow other sexual related products.
Unlike other sexual products, we have had good success at raising equity capital. We have done three small rounds which closed very fast and we ended up leaving many investors on the outside. I think our experience was different because we had a technology disruption story that made sense as well as being able to point out the many ways in which the industry is mainstreaming and growing rapidly. These points create a path for a company that can disrupt and industry as well as lead the charge to make it mainstream, which will lead to a great exit when a big consumer product is looking to enter this industry (they will want the best brand and technology). Other companies like Crave (raised $2.4M to angels), and Pipedream and Peekay show that mainstream PE money is entering this space.
There are ways to position companies for investment if you understand how investors view these kinds of investments; they are looking for an exit based return and to be part of something cool. Think of what kind of company would be bought (build versus buy decision). On being part of a cool startup, I think it is difficult to imagine better cocktail party talk than being part of a disruptive vibrator company. Companies in this space will probably do better with angel investors than with VCs, many VCs are funded by institutional funds which limit investment into 'morally questionable' activities (think fun stuff like sex, drugs, tobacco, rock and roll).
Like other sexual start-ups, we have had a lot of issues with other companies not wanting to do business with us because our sexual nature or association/proximity to porn start-ups. This includes banks, merchant accounts, advertisers (Facebook included), retargeting ads, etc. It is ridiculous but if you plan for it, you can work around it.
Lots of interesting things going on here...
I've done a good amount of sex things in different venues ranging from phone sex systems to phone dating systems to sex robots in Second Life, so I've long ago lost my aversion to such things. But it surprised me how many people seem to be scared of participating in the industry.
It's easier to make high quality content now than ever before, and it's only going to get better from here.
This is what innovation looks like.
I think they are the definition of innovation in online content delivery of any kind. Live video streams, monetizing content, creating minor internet celebrities who can live off of their online work, confronting head-on issues of privacy and censorship. All of these things and more came far earlier in internet porn than anywhere else, and theres a good chance that whatever edge they're struggling with will be where the rest of tech finds itself shortly thereafter.
It's like graffiti in the subway as a precursor to ads for HSBC. It may be grimy, but they have nothing to lose so there's a good chance what they're doing is a brilliant move.
We're making a sex toy platform (our library is named OSSex of course) so that it won't matter if your sex toy is made by guys. You can reprogram it to your liking, attach sensors that respond to your feedback or even build your own.
It is super hard to find a payment processor, but I imagine that their hands are tied by the card networks. I bet Stripe would love to support adult payments if they could: lots of adult specific processors charge like 14%. Seems like that'd be some nice action to be a part of, even if only in the adult industries that are lower risk (the adult industry is huge and there's no way some dildo shop is as high risk as a cam site, even though every one treats them the same.)
What problems for example?
All the main video sites you go to are startups that are trying to innovate and make money. Porn is a very competitive industry. Pornhub and redtube for example are innovative startups it's just hard to amit it to ourselves because they are peddling smut.
I've been in the adult industry for almost a decade- both in "hardware" (sex toys) and software (mobile app store, video streaming). What sort of innovations are you looking for? Content, social, tech?
A sex toy company I find innovative is Revel Body. Most vibrators use a rotary motor that spins an off-kilter weight to create the vibration. Revel Body developed their own patented linear motor that uses magnetic fields of alternating polarity to slide a weight back and forth in a linear motion. It's super quiet, more powerful and last longer than the older motors. They also designed their own chip to give the user precise control of the frequency and speed. I would have loved to have used RB's motor in the toys I designed.
Lovepalz has the Zeus and Hera toys that couple hardware with software for long distance partners. Minna toys have pressure sensitive control panels.
The folks at Utherverse created an immersive adults-only virtual world. I believe they launched a major overhaul to their platform last month. They've also built a VR compatible platform specifically for the Oculus Rift universe. In terms of VR porn, Utherverse is at the forefront.
For software, I think we tend to look at consumer-facing sites and products, but there's a wealth of tech innovation happening behind the scenes. SendFaster, while not an adult company (but a tech co that powers a number of adult sites, mine included) has amazing TCP acceleration and image compression software.
While not a startup, Streamates developed their own live streaming technology that's used by millions of visitors daily.
Speaking of my company, I co-founded the MiKandi Adult App Store. We launched almost 5 years ago as the first adults only app store, before Android really hit it big. Being early adopters of Android and one of the few third party Android app stores at the time, we really dove head first into it. Under our belt today, we've got app distribution, mobile video streaming, in-app billing, notifications, DRM and content management, and soon-to-launch an ebook reader, mobile game creator, and comic reader and creator. We've tried to push other tech forward but are usually shot down soon after launching them- our Google Glass adult app, Tits & Glass, and our third party Chrome app store, MiKandi Mint.
As far as the problem we're trying to solve, it's less about a problem in the adult industry as much as it's a problem in the mainstream tech and banking industries, which is being discussed a lot here. I wrote about the hostile business world here: http://modelviewculture.com/pieces/sextech-startups-in-a-hos...
For one, it scrapes all the top sites.
For another, you can see what people search for in which region. I.e. I am in Denmark and danish people apparently wants to see danish porn. I wasn't aware of that.
For a third, they have a live-search which is quite interesting. (and amusingly, read aloud by porn actors here: http://www.pornhub.com/view_video.php?viewkey=1025156889)
For a fourth, they also have a chrome extension, which if nothing else is curious as the adult industry has so far shied away from apps and such (I believe because of regulations).
Another interesting take is http://www.porniq.comThe site speaks for itself.
The much needed disruption is how to bring positive impacts to the mainstream market by using sex technologies, without leaving the sex element. How to use sex technologies to help couples to stay intimate, increase safe sex awareness, help individuals to understand his/her sexuality, sexual wellness, help men to understand female orgasm (no, it's not about bigger dick), etc.
In the recent years, we started to see sex-positive startups stepped up to this challenge. From MakeLoveNotPorn, Jimmy Jane, Crave, RevelBody, HappyPlaytime, PerfectFit, DOWN (Bang With Friends) and many more.I'm the co-founder of www.vibease.com, the world's first wearable smart vibrator. I created Vibease because I was in a long distance relationship and I couldn't find any solutions that was easy to use and not invasive. Eventually we 'pivoted' to create immersive pleasure experience for women using audio erotica.
Cindy Gallop from www.makelovenotporn.com has been a great advocate to disrupt the old adult industry. She successfully brings the hard topic, porn to be discussed in the society. She takes the good parts of porn and leaves the bad ones behind, to encourage a healthy discussion about sex.
The challenge is that these startups always being treated like the old shady sex business, especially from the mainstream and holy (aka. hypocrite) institutions. The best way to overcome this problem is to pitch it boldly and hide nothing.
Often it feels like the issue with the industry is that it's so uncertain financially that it's too scared to make content for anyone other than the assumed stereotype porn consumer (straight dudes mainly) so there's over saturation of very similar, repetative content which breeds a strange, one-upmanship quest for never ending novelty.
The ease of access to consistently good and cheaper video equipment (dslrs that support video etc) mean that the people making the most interesting work exist outside of the industry, uploading onto tumblr or sites like clips4sale. Basically they're Etsy of porn, allowing independence from selling the rights to your work to big companies. They take a bit of searching but they're like gold dust when you find them.
our work is: http://afourchamberedheart.com http://fourchambers.tumblr.com
It would be quite powerful if it work with publishers and has face recognition ability, so when people upload a screenshot, they can be directed to the porn video over at the publishers.
Also, it is strange how one cannot search by body type by specify a 3D model of the body... we can only use descriptive terms.
I have no idea if now they are frontiers of innovation.
Like the idea of shared cams where all people can see even if just a few pay. Also That the people on the cam can do their own thing.
Most innovative idea I've seen in That sector for long.
"isexdb is the biggest global directory of adult entertainment locations worldwide"
Programming mostly done by my buddy.
Yes. They blocked Bingo Card Creator back in the day, because of concerns that it was gambling-related. I successfully appealed and convinced them that it was not, in fact, gambling-related.
I'd send them approximately what you just posted. Emphasize that you are from the clean, upstanding side of the Internet and, while you're aware that you happen to abut a hive of scum and villainy, explain that you are squeaky clean. Offer to stop referencing marital aids. If you have external indicia of credibility, I would reference them. ("As cited on 20/20." "Written by a PhD in human sexuality.", etc)
Ultimately, if you can convince a rep at MailChimp, you win. As an anti-spam researcher in a past life, I want to mention the possibility that you're going to lose, even if they trust your intentions. You're a negligible percentage of the email and business originating at a MailChimp IP. It is critically important to them that that IP and the email/business going through it does not get burned. Various automatic and manual processes do not consider your business to be of equal worth with other businesses, and your opinion on that being unfair will not change their mind.
Additionally, and this is just a "facts about the world" thing rather than meant to discourage you as someone making things: "I collate links from across the web" is, virtually everywhere, not seen as a high value-added activity. That goes for MailChimp, for Google, and for virtually anyone else you want to convince to like you. It pattern-matches with "content scraper." I would strongly consider investing in quality first-party "content" which you could thicken with curated links rather than relying on the curated links being the whole of the offering. You've already got two and a half strikes against you due to the nature of the business.
Thanks for the clear communication in the MailChimp Compliance email I have received. The ability to send email from my account has been blocked. I regretfully understand as to why my account has been blocked thus far. Having said that, I have a few questions.
Pillow Talk provide a weekly collection of links from across the web to educate couples on how to have a better sex life. The majority of links I include are from legitimate blogs, Reddit, YouTube, IMDB and Amazon.
Were not a scammers or spammers and every recipient has has to double opt in to receiving this email. I appreciate that your abuse prevention system Omnivore, has highlighted content, keywords or activity that 'indicate the possibility of harmful information being sent through your service and Id love to understand exactly what were doing that is inappropriate?
I was attempting to send issue 8 of Pillow Talk last Friday 17th October. I have used Mail Chimp for 7 weeks without any problems. Why now? What exactly has caused Omnivore to highlight us?
Our email is clearly about sex, but were not sending thousands of emails selling viagra pills or pornography! I understand why your ToS has been written the way it is, but I cant imagine it's for small educational mailing lists like ours. I feel we have been bucketed with all the bad guys, but clearly were trying to educate, not spam!
In the last issue, I did include a link to a porn site for an educational how-to video. Im very happy not linking to porn sites if this is the issue? Please could you confirm?
Its a really unfortunate kick in the teeth. Im at the beginning of building a sexual education platform for the 21st century and already hitting institutional roadblocks and rules which are there to stop the scammers and spammers, not legitimate businesses trying to educate couples!
I please, please, kindly ask you to review your decision. I know you dont have to at all! But, for everyone suffering from boring sex in the long term relationships, or for all the sexless marriages out there, this is a huge problem for millions. We need to get better at talking and learning about sex and at the moment the scammers, spammers and porn industry are winning because theyre making it difficult for anyone legitimate to make things better! Can you be part of helping stop that, please?
I did try speaking with someone at Mailchimp to plead our case. Unfortunately it didn't work. You might have some luck though because you're more in the health & wellness area of the industry, whereas I own an adult app store, so I'm 100% in the "porn" side of it.
There are some adult friendly newsletter services out there, but they're usually very costly. I think I saw one a few years back that was $150 a month. We've been using Amazon SES to send verification emails for new registrations, so we opted for SES for our monthly dev newsletter, neither of which have any porn or adult content in them whatsoever.
As a bulk delivery service, a huge part of our job is providing greatdeliverability for all our customers. ISPs and spam filters arebecoming more sensitive to certain types of keywords and content.
Keeping this in mind, MailChimp is not able to serve as your emailprovider, because the content associated with your industry conflictswith our acceptable use policy. For direct questions regarding ouracceptable use policy and the types of content that arent supported,please visit our Acceptable Use policy under Prohibited Content:http://mailchimp.com/legal/acceptable_use
Nothing personal against your content or industry; there are just somevery strict spam filters and ISP rules that we have to comply with tomaintain the best possible sending environment. These filters arebecoming increasingly sensitive to certain keywords because someindustries tend to generate greater than average complaint rates(legit or not) with their emails. A risk that we unfortunately cannottake.
We appreciate your understanding in this matter.
The account is open so that you may log in anytime to back up data. Ifyou have any questions related to billing, please firstname.lastname@example.org.
All the best,
The MailChimp Compliance Team
I would suggestion just switching to another service. I've had better experience with https://mailgun.com/ because they will try to work with you more. They also have more options so if your industry is high risk, you can use your own IP addresses but still get the MailGun service.
Switch over to aweber, getresponse, etc.
Move with arrows jump with z
This is one of many, many, many reasons why we don't generally do cost-based pricing and, when we do do cost-based pricing, the markup is absolutely phenomenal. It has to include risk premiums. As long as it do include risk premiums, you don't have to sweat the small stuff like e.g. an uncollectable $4k invoice. (n.b. Small stuff! $4k hiccups are utterly routine events and largely dealt with by processes rather than by treating them as sudden emergencies, even if they feel like that to natural humans.)
2. Report it to the VPS provider. Explain that you've reported it to the police. Ask for their cooperation in investigating the problem.
You do not have to pay. If they try to force you to pay, depending on your country, you'll probably end up in small claims court where you'll find judges are very reasonable people who usually side with the little guy. (IANAL)
It was a nerve recking couple of days but I contacted AWS support and they were extremely good. They helped me secure my machine and then cancelled the 1.4K payment they were going to take from my account.
In all the whole process took 2.5 weeks and I only had to pay $15 for the I/O requests.
The best thing I can recommend is to talk to your host and tell them honestly you can't pay that much and you weren't the cause of the charges either.
That brings me to my point. How did the hack occur? When you get a VPS you are fully responsible for what goes on in there. It is your responsibility to secure it and keep it updated. It's not the provider's fault you did not apply the latest security updates. It's not the provider's fault your Java application was using outdated and vulnerable libraries nor is it their fault you didn't set a CAPTCHA in front of your submission forms. Either hire a competent sysadmin if you can't take care of that yourself or find a provider that offeres managed hosting instead of a VPS, as that's what you'd most likely need.
There are some cases where it's the provider's fault such as the Linode BitCoin hack a few years back but mostly it's just poor server maintenance
You might also offer to suggest writing up a post mortem for them, that they can provide to their customers as a lesson/tutorial on how to protect a VPS.
Finally, you can suggest that they might want to implement (and perhaps help them implement it) some kind of warning system, i.e., if a VPS suddenly begins using exorbitant amounts of bandwidth, and far more bandwidth than it ever has before, they really should email/text the owner an alert within 24 hours not let it go on for 6 weeks. I'm surprised that they don't cap/throttle the bandwidth once you go over your plan's limit, to go along with sending you alerts. It borders on negligence on their part that they don't already have such a system in place.
I would suppose your first and best resort is to consult your lawyer, advocate, solicitor, barrister, Anwalt. I wonder what your relevant legal jurisdiction is.
I wonder whether it would help if you can account for your own whereabouts and your own usage of endpoint data services. I wonder if your method of payment to your VPS provider is mediated by a financial service that can help you dispute the bill.
I am not a lawyer.
If they insist for you to pay: simply don't. State the truth: You can't afford it. Tell them the only way they will see this money is by taking legal action against you and even in that case you won't be able to comply - as you don't have the money.
Hope it helps :(
Post the link when you do and I'll be sure to comment on it (I'm somewhat very-active at WHT)
Which means your case is probably covered by consumer protection rules when it comes to informing you about data usage, and I seriously doubt a VPS provider has covered their ass as well as mobile providers tend to do.
Unfortunately, I can't think of anything else. I wish it was realistic to tell you to go to the police.
Also, if you would give your email, I would definitely consider sending a donation through paypal... Hopefully other readers here will do the same.
If I had the skill to modify a browser this would be one of the first things to go.
As for your particular problem, if there is a clear space where some content should be, I resort to: right click -> Inspect Element with Firebug. I doubt there is a good way to reliably change styles across websites.
Absolutely I'd want to keep them, but sometimes that's not possible. Even if they leave, I'd help them remain productive, plan their exit, and control the hand-over.
If finding another job is the path they'd take, I'd find a way to let people take calls and attend interviews. Obviously we'd discuss either longer hours to make up the time, or a reduction in pay, but we'd find a way to agree how it would work.
If you can't talk to your current boss, moving out is the best thing to do, but the least you can do it talk to them first and give them the chance to make things better, or help you transition to a job where you're happier.
Hopefully, taking a vacation day (or half day) isn't impossible at your current job. Having appointments in the middle of the day isn't unusual. Make sure all phone calls are scheduled and step out to take them.
You can always schedule job interviews on Saturdays. Again, most interviewers understand the circumstances and usually do hiring on Saturdays to accommodate those who are working.
"I have no network, what do u mean widen ur search criteria, like doing a barista job, which I already have" is full of spelling and grammar issues. If you want to work in tech I would expect it to be possible for people to look up things you write online. Take the extra time and spell out words like "you" and "your."
Also, it's "supposed to get a job," but that one is less obvious.
But to help answer your question for real, I recommend internships (hopefully paid) and agree with agilebyte, who mentioned looking for the jobs that don't require the 5 to 10 years of experience to start. Practice hard at interview-type questions and really make sure you know about the stuff you might be working with. There's lots of great starting jobs in tech that require less experience. Start there and get the 5 to 10 years, or be so good that you can knock 'em dead in an interview.
Case in point: My first job was a typical development role at a startup. I got the gig by going the extra mile. I took the product-idea they were working on (which they had described in detail in the hiring ad) and then built a working prototype from scratch (designed it, coded it, launched it, and sent them a link to the website and a zip file with the code).
Would I do that for a job today? No, probably not. But when I was starting out, going the extra mile was the only way to get my foot in the door, and it worked.
Work-history is just a way for hiring managers to know you can get the job done. If you're just starting out (and have no experience for them to review) you must figure out a way to prove to them that you can perform well.
Hope that helps.
Basically just tailor your CV to highlight what you've got to offer, and then just keep applying. If you're a good fit for the role and can demonstrate that, then few places are likely to hold hard and fast to the experience rule. Experience is only a general 'easy' way of assessing somebody's suitability, but there are enough terrible employees with decades of experience under their belts to prove that it's not a guarantee of quality.
If all of the offers available online require 5-10 years of experience, perhaps you should widen your search criteria? Or look for local jobs? What meetups, if any, are available, for networking? Have you asked your network for help--not to find a job, but to introduce you to people who are in the industry that you are interested in?
If you believe you have more expertise than meets the eye, you could give freelancing a try.
The maintainers of LogStash, for example, have a philosophy that "If our users are confused, it is a bug. It is not that they are stupid."
Another good example is PHPUnit, whose maintainer unarguably has a much higher prestige in the PHP developer community than I do, yet responded to trolling by implementing the change I suggested and taking the time to hash and PGP sign all of the past releases.
The CodeIgniter maintainers responded to my gripes about their CI_Encrypt library by researching and writing a brand new library to fulfill that role.
And of course, we have some good bad examples.
Etcetera. Humble lead developers are less caustic and create less barriers for entry. This encourages people to contribute and allows a community to flourish.
Here are my assumptions after spending time in China since almost 2 years now:1- Nope, it's not vindictive. If you can't access any other website after visiting a blocked site, you maybe have a problem with you network configuration (just an assumption).2- You cannot connect your VPN in a Starbucks because they block the ports/protocols that allows your VPN to work. Sometimes, it's also the reason why it's hard to connect to your VPN. It's also the reason why sometimes your connection may suddenly stop working (download speed drop to 0). My assumption on that is, if, randomly, they detect too much trafic through encrypted channel, they block it.3- No, if you're not using a Chinese browser, you're probably not infected by any "virus". Although, some says QQ may include some spyware in it. I don't know much on that.4- Your provider knows what you're looking at. Like any provider in the world. Because internet companies in China are owned by the government at more than 50%, then indirectly yes, the government potentially knows what you're doing.The truth is quite different. In reality, their system is pretty similar than prism (yes, really). When the "police" require some data, they ask the providers about the metadata. That's it. From what I've heard, they're much less organised than they seems. The real difference between Chinese gvt and others it that they don't hide doing it. Plus the censorship.5- "I assume that, somewhere on a government database [...]", hm, probably not.
I've heard GFW had several ways to "censor" the internet: DPI and DNS poisoning mostly. Also some "random control". Also, the GFW is this kind of system able to learn and adapt itself. Apparently, if too many people try to access a foreign website, it gets blocked. There is also some crawlers looking for keywords ... Not 100% sure, it can be only guesses.
About the "QoS downgrade" @auganov was talking about, once again it's a bit different. What really happens is that the providers have a limited bandwidth to go outside of China. Biggest providers (China Telecom/Unicom) have "a lot", others have really not much, but it's still pretty limited, and when many people are connecting together, we're back in the old days of "rush hours" and slow internet. In the middle of the night, I can easily reach 5MB/s (which is about 40Mbps), through VPN.
Hope I answered your questions :) Also, if anyone knows a bit more about GFW, I'd be glad to hear about it!
I see two core issues, and neither are readily fixable.
First, "I've received nothing but positive feedback on both the concept itself, and on the Kickstarter project, from individuals ranging from 20-something techie dudes to 60-something mothers of 5. Everyone loves it, in theory."
Second, "Finding backers has been like squeezing blood from a stone, even after nationwide exposure on the #1 morning show."
I'll take them in reverse order.
"Kickstarter is not a store," and Kickstarter means this two ways. As a consumer, there's a chance you won't get your product, or it won't be high-quality, or won't be what you expected, etc. But as a project starter, it also means there aren't roving bands of consumers looking for something to buy.
Common metrics for Kickstarter projects say that if you don't have a large enough social network to get you 25-33% of the way to your goal in the first 24-48 hours, you won't succeed. That's not a factor of money; you don't want one wealthy aunt to contribute $3,000. It's a factor of social reach. This is because most of your funders are people who know you, and their friends, and their friends, and their friends. You get bumps from strangers with media coverage and social networking, but that's not a primary means of finding backers. Expectant parents are not stopping by Kickstarter to shop for baby-tracking apps between Target and Baby R Us.
That means you needed $3k in expectant parent friends on day one, and you had $1200. Kickstarters aren't slow grinds to success, they're two big bumps: beginning and end. You have three reward tiers which don't require someone to actually be invested in your application, you didn't regularly post backer updates to keep engagement up, and you had no user comments for a month. You didn't have enough traction, because you didn't try to get enough traction before you started. Everything is marketing.
Sure, some of the lack of viral spread might be bad timing -- more babies are born in September than any other month, and once the baby's here, you're too busy to discover and use a new app. Maybe you need to be pitching this nine months ago, or again after the new year, to newly-pregnant parents.
Or, maybe everyone loves it in theory, but experienced parents know they would never, ever use it. And that's the first issue.
There's one sentence in the entire video + text description that describes a benefit for a parent in using your app. "You can use the data you collect to identify patterns in your infants life, useful for narrowing down the causes of sleep problems or watching for allergies or illness, and to track growth and development over time."
That's it. The rest of the video+text talks about the app itself, which doesn't tell me why I'd want to use it.
That tells me there isn't a use case for your app. You are one parent with one data point about how you raise your (first!) child. You emphasize personalization in the app because you don't know how other families work. Your experience is not universal, and neither is your desire to collect data.
There are baby tracking notebooks (the paper kind), and there are sites like Trixie Tracker, and they have very niche audiences, because people have been raising babies without apps for thousands of years. A parent has enough to do without figuring out correlations in data on their own from the data they laboriously log in your application.
If you don't basically live on sites like Trixie Tracker, talking with their users, discussing the shortfalls of it and related apps, how can your app be any better? How can it provide real value?
If you're not literally living with other new parents and collecting data for them, so you can figure out the correlations and provide advice to them, and see if the advice works, how can you be sure your app will provide enough actionable information once people start logging data in it?
This is an app you're building for yourself, not for other parents with newborns, and you don't know enough people who want to support you financially in doing that.
If I was hired tomorrow to fix this app, the first thing I'd do is a literature review of common problems new parents face, and common questions and concerns, and common patterns of sleep and sickness, etc., etc. The thing new parents want the most is reassurance everything is normal and okay. You could probably draft a new version of the app to start testing just from existing literature, instead of your own experience.
Then I'd make you decide if your market is obsessive-compulsive data nerd parents, the kind who already use trackers, or if you're trying to make something for a general audience.
For data nerd parents, I would then camp out on every baby-tracking stats site and app, and start spending days and weeks living with new parents, to figure out not just how to log data most effectively, but also, what are the things they're not getting out of their current trackers and why? And how do those things change as their experience as parents changes (second kid tracks different things than first kid) and as the kids age (older kids track different things than younger kids).
A general audience includes Android phones, and doesn't pay for apps, for starters. But a general audience also wants more immediately actionable data, "I have a specific problem, I want to put a bunch of data in, and I want the app to tell me what to do about it." That's a different app from what you've got going on right now.
The net effect of doing all that real-world legwork means when you're ready to restart your Kickstarter (in 18 months), you'll hit your 25-33% goal in 24-48 hours, because you have enough of a network of invested users now.
Marketing consumer apps is REALLY hard. I can't possibly overstate that. It's expensive as hell and requires a lot of hustle on your part.
The reason it's so hard is that consumers don't want to download apps and rarely do. So asking consumers to just download and try your app is hard enough, but you're actually asking them to pay for it ahead a time. That's a tall order.
I'll also give you some more honest feedback than others seem to have been. It's a great design and idea, but it's almost impossible to get people to create a new habit.
If people weren't already tracking their baby's every move, they're not going to start doing it now unless the benefit is really, really clear.
A good example is fitness/calorie tracking. That's something that a pretty large percentage of people bounce off of, and the reward is feeling better, living longer, and looking better. That's a pretty big reward, and it's still not an easy thing to get people to do. (Though I should note that people have actually been doing that activity for a long time.)
So this is a really steep hill for you to climb, and it may not be monetizable in the end. That's ok, though, because you're done a fantastic job so far and will always be able to point to this product to show that you can execute. That's really valuable for the rest of your career.
My suggestion, which a VC gave me years ago, is to choose metrics for success (number active users, dollars made, etc.) and choose a target date. If you don't hit a goal for those metrics by that date, walk away from the project. If you don't have a concrete way to cut yourself off, you'll allow hope to string you along forever. Trust me, I've been there more than once!
I think this is your issue, and you are targeting the wrong market.
As i parent i have personally tried a few baby tracking apps. Good in theory, but not really solving a problem (IMHO)
While your app may have a better UI and be simpler than others out there, i think these class of apps all suffer from:
* You have to remember to enter in the information, open the app and capture it. With a newborn, who is quite demanding , having to nurse every 2-3 hours, sleep deprived etc. Just seems to be a bit more work than needed* What use or benefit do i get from the data? So i can monitor trends? Why?* Monitoring trends is easy for parents, especially when they are doing are caring for the kid themselves. My wife is at home.,She knows when my son is not nursing enough, or she knows when he has not pooed or has not had enough wet nappies.
You are currently marketing this at "Parents" in general, maybe if you target it Parents who have their kids in Daycare (i.e Remotely keep track of whats going on with your kids) it would be an easier sell.
I know i would want this data if my kids were in daycare.
In your video, I didn't see one concrete thing I get from collecting the data. The most depressing thing about committing to collecting data is finding out you can't make meaning from it. There are tons of reasons why that can be, but you didn't put my mind at ease. Collecting data is too much work to do with no assurance of payoff.
In addition, I have experienced Kickstarters that are over a year late (others have been on time). If I'm trying to track a newborn, I'm not gambling on a Kickstarter. It's fine for a trinket, not a time sensitive thing.
I really hope you find your success recipe, but these two problems are deadly to me.
Being hyper-aware of everything happening with your infant adds stress but provides very little benefit. There are a few things people do need to track or at least be aware of: meconium; billirubin, vaccinations. Tracking temperatures when the child is ill.
If the app was linked to evidence based advice ("when should I call the doctor?"; "can my age X infant eat food Y?"; "what are the recommended sleeping temperatures") then I could understand it. But that would be a scary app to write because you're giving medical advice.
Why do I want to how many nappy changes my three-month old infant has had today?
Some people have weird ideas about forcing the infant into a routine - especially around sleeping. Tracking sleep patterns is probably going to raise anxiety around sleep, when what parents really need to know is to put the child down to sleep withput rocking it or cuddling it to sleep, and to respond to the infant when it cries. "Cry it out" techniques are abusive if they start before the child is six months old, and need to be done carefully if tried after then.
The only use I can think of for the app is specifically advised against in your faq:
> While Newbee is great for tracking daily events and statistics, it's not really meant to be used as a digital journal or scrapbook.
I get it--there are a lot of "first year diaries" that get sold as shower gifts but far more often than not remain untouched. My guess is that a lot of your positive feedback might come from these buyers--people who are buying this for someone else.
The premise might be to find some angle where the quantification can be done very passively (since it is really "quantified other") and put into a form suitable for years later when moms finally get around to scrapbooking the early years--when they finally have breathing room and are longing for the original new experience.
People are generally nice because it is considered polite.
Looking after a newborn (and beyond) is often more than enough work on its own - the last thing you want to do is also record everything that's happening.
1) $16 for a year of app access is a lot. We could argue about whether that should be a lot or not, but in the current market it really is.
2) Timing is a bit difficult on this - with most Kickstarters, people are ok with getting it "whenever" - sometime in the medium-term future is fine for a widget or a computer game. For your app, I'd want it ready the day by kid is born - no sooner (if it's subscription) and no later (I'd miss some events). So it's a tough thing to back in advance. You say it would launch "later this year" - not helpful if I either have a newborn right now or aren't already expecting.
Edit: that said, it looks like a cool project, please continue with it. I fully expect to have a need for this app within 2 years, and would probably pay $10-$15 for a subscription.
Create the app on weekends and weeknights if you have a full-time job. Then release it and start making revenue.
Then, if you have ideas that need funding to improve the app, go for it.
Most people I talk to won't fund weekend project apps, no matter how good the concept seems. Get it out there and see how the market responds.
If this was an existing product on the app store, and was also just a few dollars, I may have bought Newbee because it looks prettier. But $16 for a chance to use a 1 year subscription (if it's ever made, and I have another child around the same time), of a product that doesn't seem to have any advantage other than "prettier"... I'll pass.
First of all, 3 million rows a month is not that much from a database point of view - if evenly distributed (though I'm sure it's not), it would be about 1 per second. (It is impressive to me from a business point of view though). You don't need Redis's throughput, and you are hitting Redis's limits with respect to memory.
1) This is _exactly_ the use case which relational databases were built and optimized for (fixed schema, OLTP, presumably some analytic queries). You might want to normalize the data a little (e.g. the menu_items, employee_name, pos_type & pos_version), but you don't have to - though this would enable faster & richer querying.
On your schema changes: I bet you'll be much happier using a relational database which takes care of this stuff for you, then you will be implementing it yourself in Redis. You probably won't need partitioning either. If you do end up needing partitioning, I would guess your DB is "trivial" to partition by restaurant.
I suspect you'll also find that a relational database stores the data more efficiently, particularly if you normalize a few things. Your data will probably fit into RAM again, but a relational database can cope even when it doesn't.
2) Any relational database would be a great match for this, and would allow rich querying (e.g. by employee, by date, by restaurant). My personal bias is to prefer Postgres.
3) I don't see what Redis is getting you here. It doesn't support rich querying, is memory bound, and you don't need the throughput it promises.
1. As with most things it depends, but I'll make the mistake of assuming you don't need all of this data in memory and you won't be iterating over the entire set of data on a regular (<1m) basis. In that case, it most likely makes sense to move to a relational database. You should ask yourself what kind of queries you're running on the data and pick something appropriate. But for the data you're listing, then yeah - go with a relational DB.
2. Again "It depends". Postgresql is the most popular alternative to MySQL and I'd say at this point is more in vogue with the developer community. It's supported on AWS RDS and Heroku has a great postgres.app for OSX. Your data is so simple that I'd encourage you to start there. In the future when you have specific needs then you can research more appropriate database technologies.
3. From what you've shown us then you should most likely move to a relational database. The size should shrink dramatically, too.
"Write-heavy" means your application processes thousands of records per minute. Three million orders on a monthly basis doesn't look like too big of a deal. Any database should be able to manage that easily. Redis would have been my last pick to do that. Redis I only use when to keep high-volatile non-essential data in memory, not much else.
Key in picking your database is how your data is being used. Are the most recent data records accessed most often and the rest almost never? MongoDB and an RDBMS will do quite nicely. Do you really expect _extremely_ heavy growth, a NoSQL datastore might be better. Are DBA's in short supply? Use a managed datastore.
As a big fan of NoSQL, I'd say; be cautious when using NoSQL datastores. Any SQL database will do the majority of workloads quite nicely and offer you with plenty of tools to do any type of query you might need to. NoSQL databases do analytical queries usually quite poorly; separating OLTP and OLAP is painful and costly for smaller apps, only for that reason it is best to avoid them in most circumstances.
Above all; use what you can run cheapest. The available skillset should play a role too, if most engineers are familiar with SQL Server, use SQL Server... I generally use MySQL or PostgreSQL on RDS (AWS) given DBA's are hard to find. I use DynamoDB when I have extremely high dataloads. I use MongoDB when developing a common app for NodeJS because NodeJS simply works very well with MongoDB I consider other NoSQL datastores only when processing many millions of records per day. For all the rest (and majority of use cases); pick an RDBMS.
// In production I've used Oracle DB, MySQL, PostgreSQL, MongoDB, DynamoDB, Cassandra, Google Cloud Datastore, Redis, RedShift and Elasticsearch.
Look for a NoSQL solution which will help in the flexi-schema model. Helps you add different types of data models relatively easily. Check out Aerospike (http://www.aerospike.com), the product scales like scaling problems have disappeared from this planet. All of the characteristics that you would need based on what you have stated is in the product. Best of all it is free for startups. Just give it shot. Open Source server and client libraries in multiple programming languages. (Am a big "C" and Python guys so like them client libs a lot). Lots of startups and many large software companies use them.
If you like it and works for your application tell others, if not tell us what did not work.
I ain't sellin and you ain't buyin;
Alternatively, if you want to continue using Redis - with the current or a slimmer version of the data model - without having to worry about machine upgrades or clusters, then I recommend that you look at http://redislabs.com/redis-cloud (disclaimer - I work at Redis Labs). Our managed service is built using production-proven Redis clusters that allow your database to scale well beyond the limits of any single node, without you having do anything or change a line of code.
You could continue to use Redis as a write cache, although a message queue or something like Kafka might be better for that purpose, and of course as a read cache, while using Cloudant or some other "real" database for permanent storage.
(On a side note, you described your application as "write-heavy" but you also said you get "about 3 Million individual customer orders on monthly basis" which works out to just slightly more than one record to insert per second, on average, which doesn't seem "write-heavy" to me. I understand that you get orders submitted in batches, rather than evenly distributed, but it still doesn't seem especially write heavy. At any rate, a database like Cloudant can take as many writes as you want to throw at it.)
(Disclaimer: I don't work for Cloudant; I am a satisfied customer; I don't use Cloudant for everything.)
3) Redis is a great tool in its own right but it's more of a key-value data store than a full fledged database. It's fantastic for caching, tasks queuing or cross application communication.
Your use case, running a restaurant is certainly a mixed use case. You'll certainly want to query the latest orders if this is going from the waiter to the kitchen. But yesterday's orders aren't that much important.
As others have mentioned, this data is exactly the kind of data you would store in a relational database. Just be sure to not query for the last 10 orders or something like that. I'm not a real database expert, but I've made this mistake before and as far as I know ordering by date usually means a full table scan.
RDBMS shine when you just store your data and run interesting queries on that data whenever you want to answer a question about that data. Redis is the other way around. If you want to query your data, you'll have to think about your question ahead of time and store it in an appropriate data structure.
What I was wondering is, do you shard your data in different databases? I would guess, every customer should have their on
Redis does have its own (official but not at a stable release yet) cluster implementation. (http://redis.io/topics/cluster-spec) I'm not sure how production ready it is - has anyone here tried it?
If you decide it makes sense to switch to an rdbms, you should probably consider postgres rather than MySQL.
I can't comment on the non-relational options as I've never used them, but for your data volume I would expect Postgres to be adequate.
Yes. It is a very poor choice for your needs.
No. It is a very poor choice in general.
>What other databases
Postgresql obviously. I'm honestly shocked that people are still considering mysql in 2014.
0 - http://basho.com/riak/
I think redis should have current data only which may be needed to process or crunch daily sales or so etc.
Apache: The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data. Cassandra's support for replicating across multiple datacenters is best-in-class, providing lower latency for your users and the peace of mind of knowing that you can survive regional outages.
>> menu_items - string(comma seprated list of all menu items that customer ordered along with their price & Qty)
you may prefer to rework the menu_items as an independent table depending on your uses cases and if you don't have strong reason against.
What I would consider though is keeping your Redis up front for accepting/processing the records in real time coming in and then batching them into your RDBMS. This provides you the ability to do reporting and other analytics through the RDBMS, but utilize Redis as a buffer for the writes. It also gives you the ability to massage the data into the specific schema that best fits the usage of the data in the RDBMS, but allowing the most efficient schema coming into Redis from the POS systems. It adds complexity though so that would have to be weighed.