ixmatus
From my limited experience as a founder, forming a C corp early has made some things easier. The time we had to convert a California C corp to a Delaware C corp became messy and I imagine converting a {whatever state} LLC to a Delaware C corp also has the potential for being messy.
The conversion cost us a lot of money to have done right when instead taking boilerplate docs and simply forming in Delaware first would have been much easier.
Angels and incubators will generally want you to be a C corp first or convert ASAP, too (which is a valid option but I feel like there are other more important things to be spending cycles and money on). Raising money without worrying about converting your corporate structure is a pretty big reason to just do it as a C corp from the start.
Form a C corp in Delaware and get the ownership figured out ASAP. I also generally think that all of the founders should vest (no cliffs or anything, but a four year vest for everyone will keep the company safe in the event one of you leave, even the CEO).
I agree with cglee's comment that you don't need capital right now, get more traction and build more product. Then in six months revisit the topic and determine if your organic growth is enough to sustain further growth or whether you'll need capital injection.
Raising money, btw, isn't always just about the money - if you pick your investors correctly they can help you and your business tremendously.
I'm encouraging psychological healing. I've very much been through a very similar experience.
[EDIT]
It actually sounds like it turned out well since she did end up with a solid co-founder relationship anyway. I'm leaving this up for posterity but now think my thoughts on this are unwarranted.
I think she is 100% in the clear for glossing over it and I personally would have left out bits like "backstabbing" &c... They may or may not have but describing her personal emotional experience while leaving out the hairy and sticky co-founder dynamics is a great way to share an experience of the "dark underbelly" [that is startups].
It always takes two to tango and you're right to not bitch about them but then saying you were stabbed in the back is silly. Being a founder is tough, having co-founder problems is tougher, clearly understanding what your part in the dynamic is or was is even more difficult.
Sometimes, too, to get this level of internal depth takes distance from the people and the experience. It took about six to eight months for me to figure out what was rightfully my fault and what was rightfully my co-founder's fault - beyond "seeing the warning signs early".
Also, I don't know what your captable looked like but if you were the controlling interest you cannot and should not expect anyone to care about what position you're left in - you must be prepared to shoulder the burden on your own for a bit if they decide it isn't worth their time anymore. The more you own it the more you own it.
Hope you're okay and sorry if this comes off as admonishment, it actually comes from a heartfelt place. You're welcome to contact me personally if you want more support.
[EDIT]
Re-reading my comment, I might be coming off too much as an armchair psychologist, I'll leave the comment up for posterity and maybe you'll find something useful in it or not. Either way I think you've handled yourself well and hope that you yourself are doing well.
Higher rates help filter out demanding clients and also make it "worth it" when you do get a demanding one. Higher rates helps focus you, with 20 cheap clients you'll feel like going bonkers. With one or two high-paying clients you'll feel focused.
With higher rates and therefore more focus you also provide better customer service during the day. That will help reduce the amount of off-hour communications (this is also a boundary thing that Patrick already mentioned, be firm). Clients that understand that they get what they pay for and are comfortable paying a higher rate usually let you do what they are paying you to do and only communicate on the set meetings over minutiae.
As languages go, Haskell out paces (not just in elegance but pragmatism too) most of the mainstream imperative languages.
The tooling for scientific computing does need to catch up though.
If you had posted the link asking for a comparison, that would've been different, but your ignorance seemed obvious to me because of the haughty wink at the end of your posted link implying we were being let in on some kind of secret.
The syntax is nice because it enables the programmer to express software in a terse way, generally favoring the types as documentation and a strong mental model to understand the abstraction.
Hacker News is a funny place and you'll find contrarian points of view tend to be "jumped on" unless you use difficult to refute language that pulls your disagreeing commenters or downvoters into a logical argument.
The other guy that commented on yours is a good example of language that's less "enticing" for trolls and still provides an interesting counterpoint to the original article.
Right now "cloud" stuff is looking a lot like Subversion back in the day - I'll love it when the "distributed cloud" arrives (mesh networks are kind of the first iteration of that but they won't catch on until more people have fiber internet and there comes a commercial use for it like what Kickstarter did for crowdfunding).
[EDIT] The downvote trolls have been out recently - this guy has a legit comment; it's not detracting and it provided an interesting point of discussion that I myself took up. There's no real foul in his comment.
I have yet to see frameworks offer routing coming in from the websocket connection itself because it also requires non-standard javascript to send the route requests through a parent websocket connection.
Which is why I was thinking that it's the way this framework was designed.
I've had a similar idea for something in Haskell and it's cool to see someone doing this.
I used to feel as you did, until I started thinking more mathematically; the idea behind composition and clarity. Erlang has amazing properties but Haskell can, honestly, do much of it better and faster and safer.
Erlang has Dialyzer and type annotations and quickcheck. Use it all religiously because your Erlang programs will get big and messy fast.
What made me switch? STM > message passing actors, Haskell's type system is incredible, and the libraries / tools available are also pretty amazing. Programming in a way that encourages me to think mathematically is just so much more natural, personally.
Composition + a strong type system is an incredible experience. If you want more personal war stories we can do it over email?
I've built very large and performant Erlang software in production and very large and performant Haskell software in production for two of my own startups.
Don't read the monad tutorials. At all. Get a feel for the language with http://learnyouahaskell.com/chapters (you don't need to read the whole thing through, but probably should).
Once you've played with the basics then you should absolutely read the http://www.haskell.org/haskellwiki/Typeclassopedia which gives you a very thoroughly walking through of the Type System and is essential but heavy reading to be at all productive with Haskell.
After that make sure you are using Hoogle to search for functions that already exist!!! http://www.haskell.org/hoogle/
One strategy no one really told me about: search for functions based on their type and less their "name".
Then after that, Gabriel Gonzalez writes some really great noob-intermediate friendly tutorials on Haskell in-general: http://www.haskellforall.com/ (don't start with his stuff though as you should have familiarity with Haskell basics first!!).
Once you're proficient, having Hoogle built into your command-line, using CTAGS + codex, Lambdabot + Emacs, and GHC-mod + emacs is pretty crucial to my workflow.
Hoogle in the commandline is really powerful, CTAGS + codex is basically CTAGS for haskell source files (if you don't know what ctags are look it up), and lambdabot is a powerful tool that is tough to explain but it's the omnipotent haskell bot sitting in the #haskell IRC channel (but you can install it on your machine and query it from Emacs).
Hipchat isn't bad but I vastly prefer IRC, particularly with a good IRC bot.
The funny thing is, I believe (from real-world startup building experience) that Haskell has allowed me to iterate / prototype my products faster than I ever would have with Python and Erlang (my old go-to tools).
Also, with Haskell, there's no late-night and weekend fires to put out :) Which makes me more productive and generally happier.
[EDIT] To whomever is downvoting these legitimate comments, speak up why you think they are inappropriate for this discussion instead of downvoting.
Strong typing allows you to do a lot and it also solves the problem we fallible humans bring to the table. Humans are pretty good at being creative but extremely terrible with details, remembering things, and keeping track of "hairballs".
Strong type systems solve pretty much all of that.
Now, with some of Haskell's newest features (like Type Holes) it's starting to make dynamic languages look more like children's toys because you get all the power and safety of a type system with the same "do what you want, it will (usually) tell you what you're intending to put there".
Dynamic programming came from a need for rapid iteration of a program because that's how humans work, we "start" then iterate till we have a more complex and functioning program. The problem with that model though, is that the burden of correctness is on us in the end.
Programming in Python is like leaving your dishes pile up in the sink for a week, then spending two hours doing dishes on Sunday.
Programming in Haskell is like taking your dish to your cleaning robot that will wash it, dry it, and put it away for you. All you have to do is know what you want to use the plate for and return to where the robot can get it.
Emacs is like that, you internalize the editor which makes you 5x more productive than you are with an editor that externalizes the abstraction requiring your brain to use another layer of translation (the visual one).
If you learn Haskell, you'll find it quite enjoyable (I do now). The way I think in that language is so much more abstract and precise than it ever was in Python / Scheme / Erlang / Ruby / Javascript.
[EDIT] To whomever is downvoting these legitimate comments, speak up why you think they are inappropriate for this discussion instead of downvoting.
The investment is pretty big, yes, but I also believe it is great from a commercial perspective because it really improves the result for End-Goal-Programming (end goal is to serve business needs, not technology for technology's sake):
1. Time to market for a product
2. Easy / clean refactoring
3. Massive scale code base management
4. Program longevity and maintainability
1) Time to market is extremely important for businesses and products and schedule over-flow is a common problem in software engineering that Haskell really does help solve. Since building production software in Haskell I've become completely frustrated by Python because I spend far more time building in it due to debugging my own undisciplined habits out of the end product. I'm not a very disciplined dynamic type programmer.It also produces cleaner and less buggy product for the end-user. Which is so important!!! Particularly as a startup.
2) If you need to cleanup some technical debt from taking short-cuts or not accurately pre-planning architecture, Haskell's type system makes it so friggin' easy your eyes will bleed when you try to do the same in a Python / Ruby / Erlang program.
Additionally, it really allows you to respond to the market better too! If you have to pivot your product it's not "Oh shit, now we're going to have to take that duct taped sewage monster and turn it into a duct taped ninja turtle." it's "Hmmm, well, let's think through the new types a little bit and re-shape some of this code, I know the compiler will tell me when I'm being a silly human."
3. Python and Ruby aren't really appropriate for large scale code bases because dynamic typing means you need an equally massive amount of tests to ensure no one else in the org fucks shit up. It makes team based programming on the same codebase far more manageable!!
4. Once I've built my Haskell programs and wrote a few minor property tests with QuickCheck, they usually run forever. I've rarely ever had a case where I would get unexpected crashes (usually from my not understanding Haskell's laziness earlier on in my Haskell career).
Long-term maintainability is massive factor here too; it's so much easier to figure out what the damn thing and all of its constituent pieces do with the type system!!! It's like having an index and a table of contents for a book. Since most programmers forget their own code anyway (comes back to that fallible human thing), having a neat and correct abstract description of your program and its parts is invaluable to a commercial enterprise.
So, in short, I actually think Haskell is the best language a commercial enterprise could choose. All you need too is one really good programmer that can mentor, then train them as you go; the good news with Haskell is even when you write shitty Haskell code (un-idiomatic, mostly in the IO monad, and barring space leaks), it's usually better than even the good Python and Ruby code those people would be writing.
I have one built in Ansible for our Python webapp and the entire configuration is encoded in the playbooks, rolling up the application into a source distribution, pip installing it, and also installing the dependencies...
Very easy, dependable, and extremely flexible.
So, for myself as a generalization, I'm writing it down as prime your target with something accessible (free knowledge, free feature-set, etc...) and engage them early in the funnel so you can iterate the lead-gen and the resulting product early.
So yes, this is a feature and not a product as evinced by the numerous plugins and projects that take existing dynamic web application software and can produce static sites (Flask Freeze, Drupal's plugin, I think even WordPress has one).
[EDIT] Which means, what's to stop the existing "site builder" companies from doing the same? They don't sell the feature (static builder from a dynamic site), they sell the product (build yourself a site), and people buy it. The "background benefit" is a slightly faster site and who does that really matter to? Not the customer. The service - reduction of bandwidth and server resources; the could easily introduce the feature, cut resources, and keep the margin.
There are so many facets to this argument I won't attempt to cover them in this comment but people with solid social skills are not only easier and more pleasant to hire but are also better hires in many ways due to organizational social cohesion and the fact that the "hacker" may have a better understanding of the customer or recipient.
That's what I don't buy about his Xah Lee's argument that he's terrible at it - if he's written tutorial material that people find useful, he's more socially capable than he thinks. My suspicion is that his drop-out and autodidactic arc are social inhibitors for him; I think he lacks self-esteem due to it (no matter how well self-educated you are). I know that all too well because I wrestle with it myself as a highschool dropout and self-studied person.