Anders Hejlsberg: You Can't Maintain Large Programs in JavaScript. - <AUTHOR> http://css.dzone.com/articles/you-can-write-large-programs <comment><USER2> And, once again, this is why _WE NEED A BROWSER BYTECODE STANDARD_. Let us all go to hell in our own way.

There is no reason to lock the browser in a cage half-designed and half- implemented by an engineer under a tight deadline over a decade ago.

<comment><USER3> We need a standard wire format for code to be run on browsers. Fortunately we have one: it's called JavaScript. If you look at the internals of that format, it happens to be designed to be written directly by humans, but if you find that design suboptimal (and it would be surprising if it wasn't, considering it was put together on a ten day deadline with contradictory requirements) you can ignore it and just treat it as object code to which your favorite language can be compiled.

Doesn't Google make some internal use of a tool chain that compiles Java to JavaScript? And then of course there's Dart and CoffeeScript. I'm sure there'll be more.

<comment><USER2> You can compile anything into anything, but for the vast majority of languages, the easiest thing to target with sane semantics is a virtual machine, not a crazy half-baked language (that I end up coding in for about 40% of my day.) A bytecode standard would free us from the crazy design decisions of javascript, give us source-level debugging, etc. And it wouldn't be that hard, given all the fine examples of VMs sitting around.

My sense is that the people that suggest javascript as a compilation target really don't want competition for javascript in the browser.

<comment><USER3> > A bytecode standard would free us from the crazy design decisions of > javascript

Not really, because most of the complication and mess is in the document object model, not the language syntax. How do you propose to solve that problem?

> My sense is that the people that suggest javascript as a compilation target > really don't want competition for javascript in the browser.

You sense incorrectly. I'm not working in that area, I don't have a dog in that fight. I just think it's a good idea to point out problems with a proposed solution before somebody goes off and puts a lot of work into trying to implement it.

</comment></comment></comment></comment><comment><USER4> The problem with JavaScript is, somewhat paradoxically, too much flexibility. There are no standard language features for very basic things like namespaces and modules, also what it provides for OOP is so confusing that it makes people want to roll their own OO system from scratch. Objects as dictionaries and first-class functions make it possible to implement those features in hundreds of ways and almost every JavaScript program tends at least in some places to use some own, original solution for one of the very basic problems of structuring programs, because it is so easy to built one. It is good that this is possible, it is bad that people _have to_ do this (or choose one of the countless existing solutions) before they can actually write the program they want to write.

A lot of the problems would go away if the following was part of the language and present in every browser:

* namespaces/modules

* a sensible OO system people would actually enjoy using

* the ability to require/import/include a file/module

* the functionality Underscore.js provides

Then, at least the basic structure of the code would be consistent across programs from various people, and I wouldn't have to work out the details of yet another OO system, yet another way of just laying out the code across functions/objects each time I want to read another JavaScript program or yet another way of doing function () {}.bind that works across the browsers (here the problem is also the long time it takes for the majority of people to install a browser new enough to adopt the revised standards). And it's not only about reading code, how do you write an object-oriented refactoring tool if every program realizes OO in its own distinct way?

The situation is probably slightly better with server side JS where you are free to adapt the newest version of the language/runtime and also the server- side frameworks at least to some extend tend to encourage to use a common structure for all the modules.

<comment><USER5> Your 4 points are exactly why I always use Require.js, Backbone, and Underscore in all my large projects.

Require.js solves point #1 and point #3. Backbone solves point #2. Underscore solves, well, point #4.

In my experience, the other important thing to maintain coherence and sanity while creating large JS apps is to have a system that makes dependencies between modules very, very clear. Require.js basically also does that for me; it requires every module to define their dependency on other modules on top of its file.

I highly recommend people creating large JS apps to at least check it out : <http://requirejs.org/>

<comment><USER6> What's your largest project that uses these?

<comment><USER5> Let me explain to you the two large projects that I'm currently working on that are both using Require.js (it's hard to explain one without the other):

The first is basically a web framework that lets you compose a fully working website from a whole slew of independent, pre-built, unique components. Each component is made of Require.js modules (like its own HTML, CSS, JS). This isn't exactly the largest project, but Require.js really comes in handy with its ability to conditionally load modules (or components, in this context.) because you simply won't use all the components in the system, and also its ability to treat pure text file as regular modules (for HTML and CSS part of the components).

The second is a visual drag-and-drop web builder that lets you visually build a working end product of the first project that I mentioned. This is a large project simply because there's usually quite a lot of that you have to do in order to make a completely visual system work. I simply can't imagine building this system without explicit module dependency that require.js enables.

<comment><USER7> But how large are these? E.g. in LOC?

<comment><USER8> I think a better starting point is defining how large does something need to be to be significant. Otherwise we are nothing better than the guy in the back of the room shouting "Does it scale?", which given the amount of context in the question renders it impossible to answer.

</comment></comment></comment></comment></comment></comment><comment><USER9> I believe an underrated factor is the quality of tools (IDEs) available for the language. E.g. imagine refactoring a 50mb source code C# or Java application without the help of tools like Visual Studio/Resharper or Eclipse? I remember trying to write a java app in java 1.0 with just a text editor and the command line compiler - it was painful as hell, but things have progressed massively since then..

<comment><USER10> Being an OOP language, the interaction between modules is very explicit. This helps weed out bugs, since "what you wrote" may look close to "what you meant", but is ultimatly violating some rule of the system. This is one of the reasons why I find OOP languages good for large, complex systems, but not for small, hacky programs, since I can't hack around things to implement "just what I want". Javascript defintely fits into the latter category, and requires some good engeering for large projects.

<comment><USER9> I know what you mean and I agree that when used correctly OOP can achieve great modularity, but an OOP-capable language by itself can't protect you from spaghetti code just as horrible as any other non-OOP language could produce.

</comment></comment></comment><comment><USER11> I wonder if we all agree what "large programs" are. Our team, for example, we are developing a "large program" in Java (Spring, JSF). It's 13'200+ .java files and total 54mb of source code + about 90mb of third party .jar (open source) library dependencies.

I don't think you could grow to that size codebase with Javascript.

<comment><USER12> Not that I disagree, but in my experience a lot of the code in a Java application is just a workaround for the poor expressiveness of the language. A lot of the stuff one has to do in Java to get halfway decent encapsulation/abstraction is just not necessary if you use a more expressive language and write code in a more functional way. Not that JavaScript makes that particularly easy or that it's even a nice language, but it _is_ more expressive than Java. With first class functions and closures alone a lot of the Java boilerplate just vanishes. Not that I want to defend JavaScript, I personally think it's a horrible language, especially for large programs. But I think Java seriously suffers from lack of expressiveness which results in an explosion of classes to implement convoluted design patterns and such. I hope it gets better with Java 8.

<comment><USER13> I always found this argument lacking. In any language you can build the necessary abstractions for higher expressiveness. Sometimes these reach things like auto-generating code from a DSL, but in the long run if a good team is working on a large project, I can believe the amount of code can be 2-5x vs a more expressive language, but not 100x.

<comment><USER14> I agree with the 2-5x comment, but I don't think this is the right way to look at it.

Taking it to an extreme to demonstrate the point - a good team working on a large project could also just implement a new, more expressive programming language than Java and use that to implement their application.

The whole point of language selection is to begin with a more capable toolset.

</comment></comment></comment></comment><comment><USER15> Google and a few other companies manage to do this with Closure Library and Closure Compiler. Compiler's static analysis detects a large set of errors that you might introduce after a broken refactoring, or just during normal development. Among the most useful are the missing properties check, and the type mismatch check.

</comment><comment><USER16> I watched the video. Just to clarify, his argument is that it's hard to refactor large programs in javascript. In other words, it's likely that large web-applications written in javascript will be having difficulties to innovate. Only time will tell though...

<comment><USER17> Umm.. in my personal experience using IntelliJ IDEA for Java and JavaScript code, the refactoring experience is the same.

<comment><USER18> How could it possibly be? Refactoring a dynamic language will always be more difficult because you never know exactly what an expression refers to.

<comment><USER19> In Java you have dependency injection, which is fancy name for calling constructors/methods with reflection, depending on some XML file or annotations.

Which makes Java more dynamic at the cost of making it as hard to refactor automatically, as any dynamical language.

The part of code that doesn't use reflection is the part of code, that would be easy to refactor, even if it was written in javascript.

<comment><USER20> This comment packs a lot of confusion into very few words. You're conflating a factory abstraction like Spring with dependency injection.

void foo(Reader r) { / _do stuff with r_ / } ... foo(new BufferedReader(new FileReader("/log.txt")));

There, I just did dependency injection without a trace of reflection. Additionally, since everything is statically typed in Java, refactoring is still vastly simpler than with a dynamically typed language. The few spots in the code where you might be trying an invalid type cast are just that - a few spots. Such problems don't permeate the entire codebase as they do with a dynamic language. And I'm saying this as a huge fan of Clojure and Groovy, preferring them over Java on the JVM.

[edit: changed "strongly" to "statically"]

</comment></comment></comment></comment></comment><comment><USER21> JavaScript lacks a real library/module system, namespaces and OOP facilities. I usually spend more time maintaining a JavaScript program than a program written in Java/C# with equivalent size. That being said, my skills in JavaScript are limited.

<comment><USER17> Umm .. On the server, node_modules / NPM driven modular system (AMD) works quite well. RequireJS can be used on the client as well.

<comment><USER19> I especially like the fact, that "importing" module in node returns imported module, instead of putting it into namespace like it does in Java. It's much better design.

       var myModule = require('./module');

instead of

       import com.company.module.Sth;

</comment></comment></comment><comment><USER22> I think it's very good that javascript discourages writing large programs. Large programs are not a desirable goal, and it's rather a disadvantage of java that it allows and encourages such awful behaviour.

<comment><USER23> Have you written mainly todo-apps or do you have by any chance experience writing payroll software or stock keeping applications for a retailer?

<comment><USER22> Okay so may I ask what is the point of this question? (edit; I guess asking for clarification is looked down upon here?)

<comment><USER23> As for my reply to your deleted reply:I thought you were tongue-in-cheek.

As for my reply above: "you should not have that problems" does not make them go away: some problems solved by software are inherently complicated and cannot be reduced to some simple API calls or a 5kloc code base. Composition of 100 multiple 5-kloc code bases still makes them a 500-kloc code base with all mutual dependencies.

Just saying "you should not write so much code" might display inexperience with problems which fall outside of the currently common javascript apps ...

<comment><USER22> It perhaps depends on how those 100 multiple code bases were written. I won't lie and say I have experience with inventory systems. But I will take the position of the young upstart dipshit and suggest perhaps the reason you end up writing such huge tangled messes is you just haven't thought of a better way to do it. Javascript might not be the best tool for such jobs though, the way the number type works- on its own, makes it impractical for accounting tasks.

<comment><USER23> I'm completely with you that messiness is best tackled by loose-coupling parts early on. It's only that I found the combinatorics of many small systems not so much easier to tackle than their monolithic counterpart.

The worst is even that you (or somebody else) begins with good intentions ... and then , 4 software generations and law changes later, the complexity starts to smell.

Heijlsberg argues, that javascript will be harder to refactor in those cases. I can't really disagree with him.

So it find it's not so much lacking thought. The current thought for some is "let's use javascript", let's see what comes of that... :-)

<comment><USER22> I couldn't watch the video. I am starting to think though, that the sweet spot is to not just simply use javascript for everything and hope for the best- or to use java or something else and enjoy the sweet refactoring IDE glory, but a synthesis of making well tested components in a static language that you orchestrate with a scripting language- (if I have a choice, I actually would probably choose lua). In my experience so far, a lot of tangle often comes about by a confusion of library code and application code- the two styles of programming are very different. A module is very structured and regular, while application code seems to be ad hoc, specific, and irregular. There's nothing stopping both from being written in the same language, but if you decide that libraries go in one language, and application code goes in another, there's smaller risk of the two accidentally forming interdependencies. Then you set the goal that the dynamic portion of the program is to never exceed 2000 lines of code- and you have the basis for --- an experiment at least. Since really that's kind of what we are all doing. It's pretty well known by now I think that nobody has discovered a One True Way of doing this software stuff.

We haven't really figured out how to write large complicated applications- Static analysis is no magic bullet, and neither are dynamic languages. I think what we are seeing is just a kind of physics of the mind- reactions and re- reactions to unpleasant experiences we've all had, and are trying to avoid, which leads us to polarise on the static/dynamic divide.

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> Steer clear of "enterprise scale" ExtJS 3.x projects - tens of thousands of lines of javascript code that just duplicates server logic and absolutely positions text boxes and buttons on the page.

</comment><comment><USER25> I downloaded the Flow app JavaScript to see how they handle relations and composed views etc. I swear I could be commiting fixes and new modules to that codebase a few hours later. With OO, TDD and established conventions you can achieve reasonable maintainability.

</comment><comment><USER26> Posts like this make me wonder why OCaml isn't much more popular.

<comment><USER27> Functional programming is difficult and the large majority of developers haven't even heard of it.

<comment><USER28> OCaml is multi-paradigm - the O is for object. Type inference is a huge productivity win.

<comment><USER27> I'm not super familiar with OCaml but I have written a fair amount of code in F# which is supposedly based on / very similar to OCaml. In the end I had to convert it all to C# because none of the others developer at my company could grok it. I agree with you that the type inference is really neat but writing F# (and probably OCaml too) consistently in an imperative style is a bit of a pain in the back; it feels like the langauge is simply not meant to be used like that. And, as I said, functional programming is difficult and most programmers never even heard of it. (I wish I could use FP at work but jobs like that are really rare here in London.)

<comment><USER29> If you are able to use C# 4.0 then you have most of the FP concepts already at your disposal.

</comment></comment></comment></comment></comment><comment><USER30> The video link for anyone else unable to access the site (it's down at the moment) [http://channel9.msdn.com/Events/Lang-NEXT/Lang- NEXT-2012/Pan...](http://channel9.msdn.com/Events/Lang-NEXT/Lang- NEXT-2012/Panel-Web-and-Cloud-Programming/player?w=640&h=360)

</comment><comment><USER17> Language wars erupt again!

Should it be titled: "Anders Hejlsberg: I Can't Maintain Large Programs in JavaScript." ?

</comment><comment><USER31> The same has been said of almost every language in existence.

Let me maintain my larger program in JavaScript. It will require smarter staff, but the application will be more flexible and change more quickly than that same large program written in Java or C#.

<comment><USER29> smarter staff == higher salaries, not welcome in big companies.

<comment><USER31> If where you're working has a big company mentality, someone in the decision making process screwed the pooch when they decided on JavaScript as an application programming language.

<comment><USER29> I already answered on a previous post that I only work in big projects where we stay away of languages like JavaScript for application development.

For us the proper place for JavaScript is the browser, just to do some DHTML stuff.

</comment></comment></comment></comment><comment><USER32> Shame the link only talks about the JS part. So much other great stuff in this video.

</comment><comment><USER33> My favorite thing about JS now coming into wider use is how it drives a certain class of older hackers bonkers.

It has 0 and -0! The default namespace is global! It has a === operator, for crying out loud!

For folks who spent a bunch of time writing AbstractPatternVisitorHandlerFactory classes, it probably looks like the end of the world at the hands of a bunch of freakin' degenerates.

<comment><USER34> These things, like default global namespace, aren't just bad to a particular class of gray-beard enterprise developers who build AbstractFactoryFactories and are correspondingly easy to ridicule. They're _bad_ bad, net-negative properties of a language. I'm not sure why you would (appear to) defend them. Can you please clarify?

<comment><USER35> I imagine the OP isn't defending them, but just remarking about how sick they are of hearing people bitch about javascript.

</comment></comment></comment><comment><USER36> I had a lot of respect for Anders in the Borland days. Now he seems more and more to be just a Microsoft shill.

</comment><comment><USER37> This is how people that think in oop and love java think, everything that does not have classes is unmaintable, this is very subjective.

<comment><USER38> It's about the type system.

Dynamic, weak typing makes writing static analysis/refactoring/etc tools extremely hard, but more importantly makes nearly any compile-time guarantees impossible. Having your app crash because of a small typo of a member name is impossible in C++/C#/Java. It happens to me almost once a day with Node/JS.

<comment><USER28> Anyone doing a large project in an weakly-typed language will eventually spend more time writing unit tests than features.

No-one should even be thinking about unit tests if they are not already using a language in which all code paths can be evaluated and type-checked at compile time. Why get a dog and bark yourself?

<comment><USER39> This is not why you write tests. You write tests to be sure nothing breaks when you make changes.

And you should do this with _any_ language, typed or not.

<comment><USER40> Using a language with static typing means that there are a lot of tests you don't have to write. Do you remember the units trick from physics? If you forgot which equation you're supposed to use, keep on using identities until you're in the units you're supposed to be. Static typing checks that your units are correct for free.

<comment><USER41> Well, not entirely for "free", but I do agree that the price is much lower than what you end up paying eventually for the convenience of dynamic typing.

</comment></comment></comment></comment></comment></comment><comment><USER42> If you're going to attack Node.js, do it to its face.

<comment><USER43> Yes, he's very afraid of Node.js, that's why he said those things. I mean who is this Anders Hejlsberg guy, criticizing the BEST work of language designer giants like Brendan Eich and framework masterminds like Ryan Dahl.</comment></comment>


Rackspace Hits 100,000 Customers, 80 Percent Are Cloud Customers  - <AUTHOR> http://www.datacenterknowledge.com/archives/2010/05/04/rackspace-hits-100000-customers/

<comment><USER2> The cost reduction going from dedicated to cloud can be enormous on the order of $30,000 a month down to $5,000(for us + restructuring our architecture). But this idea of 100,000 customers not exactly great because many of them might all be $15.00 a month clients, which is not the same as their previous clients.

<comment><USER3> Did the cost reductions come from your server usage varying over time, allowing you to scale up/down?

<comment><USER2> Servers remain up the entire time we just have less cost from dedicated machines that were being wasted. They were more power than needed and we consolidated the architecture, and their cloud servers are much less expensive.

</comment></comment></comment><comment><USER4> Too bad the article has a flash ad covering up the text with no close button. :/

<comment><USER5> Top right corner

</comment></comment><comment><USER6> Looks like buying slicehost has been good for them.

<comment><USER7> The average cloud customer probably pays less than 5% of the average dedicated customer. But, yeah, it seems like a good buy.

<comment><USER8> I don't know about rackspace prices, but generally speaking, the margin on VPS or "cloud" services is much higher than on dedicated servers.

<comment><USER9> I don't think you've used Rackspace before then :)</comment></comment></comment></comment>


Ask HN: Just got $200k from an angel, where do I stick it? Savings?  CDs?   - <AUTHOR> Hi, HN,
An angel investor just cut me a check for $200k (convertible note, solid terms).  My questions is, what do I do with the money?  I have a business banking account that has about $3k in it right now.  Do I just deposit the 200k in the savings account there?  Do I stick 150k of it in a savings account so it can generate some interest?
I realize this is a super elementary question, but I've never seen it addressed here or anywhere else.  What does a startup do with its cash when it gets a bunch of it like this?
FWIW: Our burn rate is about $5k on 9k monthly in revenues at the moment. <comment><USER2> Don't put it in "investment vehicles" of any sort. Keep it all at the same bank that your angel knows about. He is not paying you to be a fancy treasury management guy. Risk aversion is the name of the game. You also should keep it at that bank to avoid the appearance of funny-biz.

DO put it in a MMA to get some yield, but understand that you'd be doing amazing to get 2% on it, and that should be lost in the noise if you're doing well in the real work.

You might also be able to extract some concessions from your banker for having more assets at the bank.

<comment><USER3> MMA's may not be fully insured.

<comment><USER4> Or not fully liquid. Look up The Reserve Fund for an example. People got nearly all their money back, but not for a while.

</comment></comment></comment><comment><USER5> There are a few banks whose business is specifically startups; the two most well-known are Silicon Valley Bank ("SVB") and Square One. I'd start a relationship with them and deposit there if I were you. I've personally worked with Square One before and they're awesome. You should look into the Square Roots program there, since it's designed for exactly this scenario. They can give you more specific advice. But generally the rule is not to get creative.

<comment><USER6> I've heard nothing but bad things about SVB.

<comment><USER7> Using SVB for a second startup; in my experience, they've been fine and even helpful. Good customer service. No experience with Square One, so I can't compare the two.

<comment><USER8> The bankers themselves are wonderful, helpful people.

The online banking (which I want to use a lot) needs a lot of work.

1) Does not allow logins from linux desktops

2) Password entry uses a virtual keyboard where you manually click on-screen letters with a mouse; this discourages logging in and encourages worse passwords.

3) The actual online interface has significant work to do to catch up to that of larger commercial banks.

<comment><USER7> Agree with all of these points, except that I've never had to use a virtual keyboard; password entry does use sort of an odd widget, but I can type normally into the password field (typically Chrome/OSX).

Thanks especially for noting the linux problem; I'd forgotten about that.

</comment></comment></comment></comment></comment><comment><USER9> Your main concern is the safety of your money. This savings isn't supposed to make money for you, that's what the business is for.

You can put it into a savings account or CDs at an FDIC/NCUA-insured bank or credit union, and that'd work just fine, but make sure that you stay UNDER the insurance limit (currently $250k), otherwise if the bank goes, so does the portion of the deposit beyond the limit.

If you're feeling curious about other options, a money market account[1] would work too, as would short-term treasuries via TreasuryDirect. But it's likely the case that neither of those will be better than a plain old bank account.

As an aside, there are some states which allow banks to buy private deposit insurance (eg ASI), but I don't trust that system; it's already failed many times in the past[2]. Basically, if they don't have a FDIC or NCUA logo at the bottom of their page, skip it. However, I've only seen one place that actually used that crap (SF Fire CU).

[1] I'm referring to actual money market mutual funds (which are NOT insured like a bank deposit, but are regardless considered 'safe money'). Some banks offer "money market" accounts, but they're identical to the normal insured savings accounts with a different label slapped on the front.

[2] [https://www.clevelandfed.org/Research/commentary/1994/0501.p...](https://www.clevelandfed.org/Research/commentary/1994/0501.pdf) "Lessons from the Collapse of Three State-Chartered Private Deposit Insurance Funds"

-

This is probably more info than you really need, so here's the tl;dr version: Yeah, a savings account is fine. Just keep the balance under $250k.

<comment><USER9> Oh, forgot to mention: Savings accounts have a 6 transaction per month maximum (as mandated by the Fed). If you exceed that, you'll be paying fees. So if you're going to be doing a lot of frequent deposits/withdrawals, you'd want to use a checking account.

</comment></comment><comment><USER10> Any investing decision should answer this question:

      When do I need the money back?

Since you'll want to access the money pretty soon, _preservation of cash_ is the primary goal. So a savings account is the answer for you.

(Likewise, someone saving for a retirement in 30 years would do well with aggressive capital gains investing, but that's a whole different thread. Just stick to answering the above question for any financial question and you'll be ok.)

</comment><comment><USER11> I would not mess around with CDs or Money Market Accounts to chase yield, because the returns from doing so are very low and it can be a distraction from the real business. This is particularly true now because rates are so low. For example, the average CD Rate for a 6 month CD is 0.38% (<http://www.cdrate.com/?term=13>).

* A CD requires you to lock your money up in the CD for a certain amount of time, e.g. 6 months

* You can get the money out early only by paying a early withdrawal penalty, which is typically 30-90 days worth of interest for a CD with a term less than a year (<http://banking.about.com/od/cds/a/cdpenalty.htm>)

* This is not applicable to you, but FDIC insurance typically covers up to $250k per CD, so you may need multiple CDs ([http://en.wikipedia.org/wiki/Certificate_of_deposit#Deposit_...](http://en.wikipedia.org/wiki/Certificate_of_deposit#Deposit_insurance))

Money Market Account rates can be as high as 1.10% (<http://www.cdrate.com/money-market/>). However, they are not like checking accounts and you'll have to plan out when you withdraw what amount.

* Because of "Regulation Q", MMAs allow only 6 withdrawals a month, which sometimes includes ATM transactions, and only 3 may withdrawals may be checks (<http://en.wikipedia.org/wiki/Money_market_account>)

* FDIC insurance is up to $100k per account

A $200k deposit in a CD earning 3.8% would make around $7.6k over a year. The same deposit in an MMA earning 1.1% would net around $2.2k over a full year.

My personal view is that a CD or MMA requires extra effort and management time and reduces flexibility, so I don't use CDs or MMAs for my businesses unless there are very large amounts involved and a lot of stability in the business. I also don't chase rates from different banks, because of the convenience of having a single bank provide all my accounts.

<comment><USER12> ingdirect.com has a checking account that gives 1.25% APY with a balance over 100k

[http://home.ingdirect.com/products/products.asp?s=ElectricOr...](http://home.ingdirect.com/products/products.asp?s=ElectricOrange)

<comment><USER13> That's a personal banking product, not a business banking product. Here are the business banking products: <http://business.ingdirect.com/>

Best rate is 0.95% for a business savings acct. And note that it requires linkage to a "regular" bank account.

<comment><USER12> What's the difference? Besides the obvious name.

<comment><USER13> As a business entity, you won't be able to get a personal account

</comment></comment></comment></comment></comment><comment><USER14> Put it in the business banking account in plain cash.

</comment><comment><USER15> Your angel investor presumably has relevant experience - have you asked their advice?

</comment><comment><USER16> I would recommend the Business banking for the full amount. Give that you can 'maximize' your interest/return in other forms of accounts BUT it is much more important to you as a start-up to be able to have cash at hand quickly if an opportunity presents itself AND if you are to negotiate larger deals you might have to prove that you have funds at hand.

In my opinion it's not worth the hassle and small extra income to complicate your capital structure.

<comment><AUTHOR> This is more or less what I was hoping/expected to hear.

<comment><USER16> Well also depending on what your business is, there is also the risk that tying up funds might end REALLY badly. For example if you happen to be hosting your own servers or tangible assets and suffer a major breakdown just a few days of not being able to access enough funds could kill or at least very seriously hurt your company.

</comment></comment></comment><comment><USER17> Minimizing risk should be supreme! It's not worth chasing a few tenths of a percent or spending too much time doing something fancy. Plus doing something fancy usually costs some admin fees. E.g. An extra .1 % on 100,000 is only $100 a year.

I'd toss nearly all of it into an FDIC insured savings account (ING Direct is 1.1%) with the rest in your corp checking account.

</comment><comment><USER18> My question is why did you accept money that you have no use for at the moment?

<comment><AUTHOR> We're going to hire a crapload of people to hack for us and sell for us.

<comment><USER19> Planning on taking more? $200k seems a bit low for a crapload :)

<comment><AUTHOR> 3 FTEs and a contractor feels like a crapton to this longtime bootstrapper!

<comment><USER20> 3 FTE's and a contractor seem 4-500,000 to me who knows nothning and would want to run a year before going broke.

curious what others think is 150k/yr per fte (sallry, taxes, benifits, equipment, office) high or low

<comment><USER21> I think that's a bit high - possibly a _lot_ high. You can likely find quite good qualified people at $70-$80k - base of $50k plus benefits and overhead. Be prepared to offer some equity stake in the operation in exchange for that somewhat lower base salary.

<comment><USER22> > I think that's a bit high - possibly a lot high

This seems very low to me.

Let's assume 3 employees at your rather low rate. That's: 3 x $70k = $210k.

So all you money is now gone.

With no money left how are you going to pay the rent, pay for equiment, pay for any other day to day business expenses (i.e. phone, electricity, insurance, taxes etc).

I'd say $200k is even too low for 2 employees (in any western country).

<comment><USER23> That's assuming he's taking money for a full year…

In reality, he's not paying the employees a year's salary upfront, so at this point all he really needs to have in cash is the first couple months' salary.

Imagine that he's going off 6 months, at which point he would reassess the financial situation (whether he needs to raise more money, lay off, or is now making enough profits to pay for the team.)

Just a thought…

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER24> Just one quick comment: a lot of people here seem to be concerned about putting the money in an FDIC-insured account.

I'd say that this isn't a huge concern, as long as you don't put it anywhere particularly stupid. You're running a startup. The chances that your startup will go broke are 80%. The chances that your startup will go broke due to the bank vanishing are 0.0001%. You're more likely to go broke due to your servers being eaten by giant ants.

<comment><USER25> Clearly you have been living in a cave for the past two years; we are currently in one of the largest bank crises in history, and it's not over yet.

The definition of "anywhere particularly stupid" changed radically in the past few years. There were 157 bank failures in the U.S. in 2010, and another 140 in 2009.

Those depositors with FDIC-insured accounts did not lose a dime in these bank failures. Those who rolled the dice and exceeded the $250K limit, well, who knows what happened to their money.

<comment><USER24> Actually as far as I know nobody has lost any money out of their bank accounts. I'm under the impression (someone can correct me if I'm wrong) that banks which have failed have had all their assets and liabilities transferred to another bank -- the FDIC limit hasn't come into play because the FDIC hasn't actually paid out any money.

</comment></comment></comment><comment><USER26> I agree with other commenters. The investor didn't give you the money to invest in, they gave it to you to invest in your business.

In Australia we have easy access to high interest savings accounts that can be attached to a regular savings account. So money you put in this account can't be accessed by an atm or used for daily transactions but you can put it into your main savings account instantly when ever you want. But for every day it is in this high savings account you will earn 5% interest.

Ask the angel investor they would also probably have some great ideas.

But focus on investing that money in your business. You have a burn rate of about $5k-$9k would increasing that burn rate by investing more into your business (people, sales, marketing, etc) help you reduce that burn rate quicker?

Anyway I have no idea what business you are in, but use it to invest in your business, that is what is was given to you for.

<comment><USER24> As someone currently maintaining bank accounts on both sides of the Pacific, interest is _way_ higher in Australia than in the US right now. You can easily get 6% or even more in Australia with money at call, whereas circa 1% seems to be the norm in the US.

For me this means a change of strategy: I'd bother with the additional bank account to get six percent, but not to get one percent.

<comment><USER27> Exposing yourself to exchange rate risk isn't worth it in this case

</comment></comment></comment><comment><USER28> Well the central question is why did you raise the money? Your case seems to be atypical, but I think the best thing to do right now is to grow your business.

Instead of letting everything stay on a static basis of consistent 5k burn rate on a 9k monthly revenue, why not think of strategies to increase burn rate and increase revenue? If you took investor's money, I believe the key thing to do right now is to think how to increase your investor's stock value, which will also benefit you.

Don't even consider putting in a CD and Savings. If you do, it would be considered unethical if you're going to earn your investor the pathetic 3-4% in risk free asset, he's better off investing it from a mutual fund.

Hire. Spend. Grow. Never let cash sit idle, be a magician and transform money into more money.

<comment><USER29> Over-spending has been the doom of too many startups. Don't just grow for the sake of growing. Plan strategically and try to get your business profitable at least on an operating basis. More revenues does not mean more profits. Some things take money but there are other things that just require time. Sometimes, you just need to be around for so long for some things.

Keep the money in an FDIC-insured account, and don't worry about the interest. You need to focus on your business.

</comment></comment><comment><USER30> Thanks for asking this. I am in a similar situation.

I already have a strong relationship with a local bank that I use for my personal accounts and my other business. After reading the comments here, I guess I will stick with that plan.

<comment><USER16> 100% this. The little interest/dividend you might be able to squeeze out of $200k is by no means worth any of the hassle when you should be focusing 24/7 on your business.

<comment><USER31> More time than I can count at my last startup, our personal relationship with an actual live human at the bank saved our bacon when stupid bank bullshit strikes (i.e. big check from client comes but the bank automatically freezes the money for some interminable time period, etc.) I highly recommend business banking with people who know you. You can do specialty stuff with specialty bank later, when it's warranted. Right now you just need a business checking account. (And it sounds like you could use payroll, too.)

</comment></comment></comment><comment><USER32> Just wanted to thank you for asking. This is a fantastic question that has not really been thoroughly addressed.

</comment><comment><USER33> Put it in the savings account. No big deal.

</comment><comment><USER34> We setup two separate business accounts with the same bank. Put 90% of the money in one, and 10% in the other.

Monthly float is transfered from the main account to the second account, and checks/wires/etc come out of that, and incoming checks are deposited into it.

If someone manages to forge a check against your account or recall a check you deposited then you don't get cleaned out.

We were in advertising with lots of incoming and outgoing payments, so the additional work was worth it. Check fraud against businesses is still a big problem, and the law states the party that put in the least amount of effort to prevent the fraud is ultimately liable for the loss (which is you if you are using any type of off the shelf inkjet business checks).

</comment><comment><USER35> I haven't seen it mentioned yet: Make sure whatever you deposit it into doesn't have a lockup provision. The last thing you would want is to need the cash only to have the bank tell you that you will pay a penalty for accessing it early.

</comment><comment><USER13> Most commercial bank accounts offer a "nightly sweep" that moves your funds overnight into an interest-bearing account, and then back into your operational bank account. You will find that this is only offered for Treasury Managed services or something similar. This will incur higher monthly fees as well as per-transaction charges, so any benefits you'd get from the nightly sweep would be outweighed by the costs in this economic environment.

Stick with a regular business banking account, preferably one that charges few, if any, fees. Fees will eat up any interest you'd get anyways.

</comment><comment><USER36> $200K isn't enough for you to bother doing all the research to maximize your yield. Just keep making money and improving your business. Then when you hit a scale where you have a CFO/VP Finance, let them worry about how to make a couple extra percentage points on all the billions of spare capital you have floating around. For the time being you have way more important things to do like doubling your revenues and maintaining the same margin. Good luck!

</comment><comment><USER37> You need to figure out your future expenses. You should definitely put the money into higher yielding (but SAFE) investment vehicles and such but which ones depend entirely on the timing of your cash requirements. You probably want 25% in cash, 50% in longer term vehicles and remaining in medium term vehicle. Key objective is to minimize penalties of withdrawal should you explore and require cash immediately. Terms vary so read the fine print.

</comment><comment><USER38> Avoid CDs for now. The interest rates they pay don't justify the commitment. You can easily compare the interest rates of savings/checking/CDs here:

[https://www.google.com/comparisonads/ussavings?s=1&kw=sa...](https://www.google.com/comparisonads/ussavings?s=1&kw=savings%20rates&cat=12&q=savings%20rates#ti=0)

Right now it looks like AmEx's "High-Yield Savings" is leading the pack w/ 1.30% APY.

</comment><comment><USER39> Great question and I can admit that I have inquired on the same logic. However, I am wondering why you accepted $200K if you didn't need it? $9K monthly on $5k expenses demonstrates that you could have taken less and made other changes to better utilize current resources.

</comment><comment><USER40> Put it into a sweep account, look for government subsidies and subsidized loans. I know here in Canada there are quite a few you can take (with requirements) that literally pay off 60% of the loan up to $150k.

</comment><comment><USER41> Have you thought about investing into advertising (not sure of your product, so you would have to gauge where the best place to put your money).

</comment><comment><USER42> Definitely talk to a banker. They will give you advice on how to stagger the CDs, put some in savings, and keep enough cash on hand.

</comment><comment><USER43> Ask your investor.

<comment><USER24> Depends on the investor. If he's big-time and busy then maybe it's best not to bother him with every piddling little detail. And this, I think, is a piddling little detail -- he doesn't care whether or not you're earning a few percent interest on his money, he cares about how fast you're turning it into fifty times his money.

</comment></comment><comment><USER44> what does convertible note/solid terms mean?

</comment><comment><USER45> stock symbol QLD

</comment><comment><USER46> Put it in a checking account and use it to run your business. The bar down the street probably has more money in its bank account.

</comment><comment><USER47> If you plan to need it shortly, then you already have your answer. If not then I'm really curious why you took it

</comment><comment><USER48> You should put your money into gold bullion as a hedge against inflation.

</comment><comment><USER49> Corvettes seem to be a popular investment vehicle for some startups

</comment><comment><USER50> Invest 93% in another small startup.

<comment><USER51> In my opinion that crosses the boundary of simply unwise to outright unethical. The angel investor decided to invest in company A, not company B, and it doesn't seem right for company A to turn around and re-invest the angel's money in company B. That would ignore the angel's interests entirely.

</comment></comment><comment><USER52> What about buying stocks that pays dividends with it? Microsoft pays quarterly dividends of $0.16/share. The Rate of Return is 2.23%. Intel's dividend of $0.16/share, has a ROR of 3.01%. AT&T's dividend of $0.42/share, has a ROR of 5.93%. Verizon's dividend of $0.49/share, has a ROR of 5.70%.

These are all companies that are going to be around for a while. And even if the stock goes down, you still get paid a dividend for it.

<comment><USER16> I consider this to be a horrendous idea when it comes to funds with a 'burn rate'. Not to mention that I would personally be completely outraged as a VC/Angel if I invested in a start-up and they turned around and speculated on the stock market with the funds they received.</comment></comment>


Packrat Parsing (2002) - <AUTHOR> https://pdos.csail.mit.edu/~baford/packrat/thesis/ <comment><USER2> Alan Kay's group used packrat parsing with a slight modification to handle left recursion in their STEPS project. It lives in as Ohm(1).

At some point I tried to use a similar idea to build an incremental parser generator for Emacs (2). Currently abandonware, but think it has potential!

(1) [https://ohmlang.github.io/](https://ohmlang.github.io/)

(2) [https://github.com/felipeochoa/mole](https://github.com/felipeochoa/mole)

<comment><USER3> Ohm is really a nice system — I'm using it to process text extracted from pdf documents.

Lots of regular expressions were used before and without control of the documents (which change over time) this kind of code was just unmanageably difficult to maintain.

Being able to use negative look ahead with lists of grammar symbols provides an incredibly large amount of power to resolve ambiguities and makes it relatively easy to arrive at an explainable grammar capable of handling "every sample we've seen so far drawn from an only partially observable language" ...

</comment></comment><comment><USER4> As someone who learned parsing in the '80s I find Packrat Parsing to be an interesting example of invalidated assumptions.

Working memory was on the megabyte scale in the mid '80s, plus or minus an order of magnitude. Any parsing algorithm which could require memory proportional to input size (like pack rat parsing with memorization) was nothing more than a thought experiment.

Slide forward to the 2000's and Packrat Parsing can be a practical system for some scenarios.

Now from the ~2020 perspective; packrat parsing and parsing combinator libraries are trivial to use, possibly consuming uncounted mountains of RAM, but we have 10000 times more RAM in our machines than the '80s and it just doesn't matter if you can prove whether the upper bound memory use of your parsing algorithm is a function of parse tree depth or input length.

<comment><USER5> From my perspective the main objection I have with respect to packrat parsing is that it's just not necessary for most common parsing problems. Parser combinators is a completely different issue - parser combinators work just fine on tiny systems.

But PEGs for most languages translate trivially into recursive descent parsers with limited lookahead. In most languages where there's a risk of significant backtracking there tends to be relatively simple ways of minimizing it by relatively simple restructuring of the grammer without any reason to resort to packrat parsing. I'm sure there are cases where it's tricky enough that a packrat parser simplifies it substantially, but I just haven't come across any where it's particularly compelling.

<comment><USER6> While you are correct that packrat parsers aren't often strictly necessary, they are nice to have in the sense that you don't need to worry about restructuring/optimizing your grammar. Just write it in the most straightforward way and use it. This is very helpful when prototyping and you are trying out different ideas. You can worry about optimizing it later when you finalize your approach rather than up-front on a parser that will very likely be significantly altered or thrown away. So the argument in favor of packrat parsers can also be a trade-off between execution efficiency and developer productivity rather than simply being necessary.

<comment><USER7> PEGs are _already_ so simple and easy to use that as a practical matter you don't gain that much from relying on packrat parsing. LPeg, the standard PEG library in Lua, doesn't implement packrat and I don't recall anybody ever complaining about that. In fact, LPeg provides exceptionally useful extensions, like match-time captures, that I think might be incompatible with packrat memoization. Those features make it possible to write grammars for things like ASN.1 BER (with a TLV syntax), which otherwise would be impossible (or at least impractical) for PEGs to parse.</comment></comment></comment></comment>


HowsItGoin - <AUTHOR> http://howsitgo.in

<comment><USER2> Hey guys. I'm one of the co-founders of HowsItGoin, you can find more details about it here (wearecontrast.com/2015/01/month-1-introducing-howsitgoin/) or feel free to add a comment and I'll respond as soon as I can.

<comment><USER3> I like the idea, I'm using it to force me to do some record keeping of what I'm doing everyday. Can it email everyday at a certain time to answer the questions?

<comment><AUTHOR> hey acmecorps, glad you to hear you're planning to use HowsItGoin. We don't have emails implemented currently, but they are at the top of our to-do list. You can keep up-to-date with our progress at [https://twitter.com/wecontrast](https://twitter.com/wecontrast) :D</comment></comment></comment>


Ultraprocessed Food Consumption and Risk of Type 2 Diabetes - <AUTHOR> https://jamanetwork.com/journals/jamainternalmedicine/fullarticle/2757497 <comment><USER2> In case anyone else is wondering what ultraprocessed food is, I found this in an NPR article [1]:

> And ultra-processed foods include more than just the obvious suspects, like > chips, candy, packaged desserts and ready-to-eat meals. The category also > includes foods that some consumers might find surprising, including Honey > Nut Cheerios and other breakfast cereals, packaged white bread, jarred > sauces, yogurt with added fruit, and frozen sausages and other reconstituted > meat products. Popkin says ultra-processed foods usually contain a long list > of ingredients, many of them made in labs. So, for example, instead of > seeing "apples" listed on a food label, you might get additives that re- > create the scent of that fruit. These are foods designed to be convenient > and low cost and require little preparation.

1\. [https://www.npr.org/sections/thesalt/2019/05/16/723693839/it...](https://www.npr.org/sections/thesalt/2019/05/16/723693839/its- not-just-salt-sugar-fat-study-finds-ultra-processed-foods-drive-weight-gain)

<comment><USER3> Where do synthetic meats and other goods fall in all this? The beyond meats, impossible 'burgers, as well as soylent and soylent-like drinks.

<comment><USER4> Those seem even more processed than many of the examples above.

<comment><USER5> given the nature of the product, is it possible to create a 'meat-alternative' product like the Beyond products _without_ processing?

Although 'processed' seems to be pretty ill-defined, the fact that the entire category of food could not exist without lab-style production efforts seems to me to indicate its' processed nature.

<comment><USER6> It's pretty tough to make something that tastes like meat and has the same texture even if you use all tricks available. So to me almost by definition these products have to be extremely processed.

</comment></comment></comment></comment></comment><comment><USER7> This might support the use of the "Perimeter Diet".

In US supermarkets, the outside aisles of the stores are typically stocked with produce, meat, dairy, and bread. The center aisles are stocked with commercially processed food ("comes in a box"). The perimeter diet plan says not to buy anything from the center aisles, and that your diet should be items found on the perimeter of the store.

<comment><USER8> This is pretty much exclusively what I do. I almost never go into the center isles. Everything I buy is fresh/real unprocessed foods.

<comment><USER9> The center of a mass market grocery store is terrifying. Safeway carries something like twenty different kinds of marshmallows, but only one kind of, for example, ground corn. They don't sell food.

</comment></comment></comment><comment><USER6> I hope that as society we will at some point accept that quality of food is really important and you shouldn't just eat whatever tastes good. This together with the growing acceptance of things like the microbiome make me hopeful that we slowly may be moving towards a more holistic view of health and not putting a lot of effort into treating symptoms while ignoring the big picture.

</comment><comment><USER10> This whole issue is strange to me.

There's an obvious link between 'ultraprocessed' food and just crap / barely- qualifies-as-food.

Barely anyone here is talking about like, blending a salad up and drinking it for example. Theoretically, yes, you could extract all of the sugar out of lettuce and make something unhealthy.

The typical stuff you think of is full of preservatives, is probably something quite sugary/wheaty to begin with (i.e. low nutritional content), etc.

Is anyone _really_ surprised that honey nut cheerios are crap food? It's blatantly obviously a treat. I can't seriously consider that anyone would think it's a component of a healthy diet - you might want to eat it because it tastes nice and is fun, like a bag of crisps.

It's the classic treat that a 5 year old might want.

</comment><comment><USER11> A simple rule of thumb is just that the further you get from a natural state, the worse it is. Fruit from a tree beats fruit in a smoothie. Grains in a whole state (i.e. oatmeal) are better than flours (i.e. oat flour). A whole chicken is better than nuggets. It's really not that hard of an idea to grasp, as long as you assume that everything that's written on food packaging is meant to deceive you.

Some things need to be processed to a point where they are edible, but not more than that. And before anyone goes there, yes, cooking is essential — that's not considered "processing".

</comment><comment><USER12> I haven't taken Omeprosol once since I started eating my homemade fermented kimchi daily. Totally anecdotal, but it works for me!

<comment><USER13> How do you prepare it?

<comment><USER12> Pretty basic, I buy 3 or 4 heads of chinese cabbage. Dice it up in to 1 inch squares roughly. Add grated carrots, ginger and onion. I then soak that all in salty water (about the same saltyness as the ocean) for about 4 hours. Then I rinse it all twice. Finally I add three or four table spoons of dried red peppers finely ground, three or four table spoons soy sauce, three or four table spoons fish sauce. Finally I put it in a big pot and let sit at room temperature in a dark room for 48 hours. After that into jars and into the fridge. I eat it twice a day usually breakfast and dinner, not even that much. After years and years of lansoprosol, omeprosol and xantac, and tums tums tums, not one hint of heart burn since.

Edit: and garlic, 2 or 3 whole heads. I usually blend the garlic, as pieces of garlic turn blue or green and look odd

</comment></comment></comment><comment><USER14> I have this theory - and it's completely untested on my side. There's no data, there's just a feeling. It's qualitative, based on my own anecdote only. People were bred to eat specific foods.

I gave up manufactured food. Then I gave up North American food - in exchange for eating the food my ancestors grew up with. My IBS disappeared in two weeks - I haven't had any of the debilitating pain I had, eating North American foods. Going back to hamburgers and crisps - my stomach felt like it was ready to jump out my sides. I vowed to stick to what was prevalent as a kid, not what I have access to now.

<comment><USER15> What do your meals throughout the week consist of? I'm curious to know.

I'd also like to know if you think ground meat itself is problematic, or if it's the preservatives and seasonings that are added to fast-food burger meat.

<comment><USER16> I had chronic IBS, GERD and other inflamatory-related issues resolve almost immediately upon transitioning to a ketogenic (ultra-low carb) diet. The transition to keto can be hard due to lifelong habits but once I got through the first month, it started getting easier and now I love what I eat and I'm the best shape of my life.

<comment><USER17> I'll chime in that I have experienced exactly the same effects on keto, going several years on the diet now.

</comment></comment></comment></comment><comment><USER13> > _Absolute T2D rates in the lowest and highest UPF consumers were 113 and 166 > per 100 000 person-years, respectively._

Perhaps my love of potato chips is clouding my judgement, but on a personal level, that doesn't seem like a huge increase in risk.</comment>


Dark Sky Version 2.0 (with sales figures) - <AUTHOR> http://journal.darkskyapp.com/2012/version-2.0/ <comment><USER2> I've loved Dark Sky from the beginning. We watched and studied their Kickstarter campaign as inspiration for our own, which was also successfully funded.

The apps are fantastic, well worth what they are priced. The copy & marketing on the website and in the App Store don't do it justice, as they don't communicate the benefit of the app to potential users. Using the app though has saved me from a number of issues, and has helped me to well time grilling dinner in between two rain showers, or timing when to dip in for dinner while walking around town.

Great app, nothing else comes close. I look forward to using 2.0.</comment>


Android Soong Build System - <AUTHOR> https://source.android.com/setup/build/index <comment><USER2> Can any experienced Android developers weigh in on if the claim that Soong is better than Make generally holds?

MAKE has been used across the industry for large codebases - why is it no longer good enough for a mobile app?</comment>


Tired of Pizza and Beer - <AUTHOR> http://noconformity.com/blog/2013/06/20/tired-of-pizza-and-beer/

<comment><USER2> I'm getting a "Failed to open page" error, but perhaps that's because nobody should ever get tired of Pizza and Beer.

<comment><AUTHOR> lmao. that's odd, it's opening up for me.</comment></comment>