Reasons to be excited about Java in 2013 - <AUTHOR> http://jaxenter.com/5-reasons-to-be-excited-about-java-in-2013-45938.html <comment><USER2> Reasons to be excited about Java in 2013: scala, clojure, jruby, groovy, ...

<comment><USER3> ... which no serious developer will use. Not in 2013, not later.

<comment><USER4> I can't speak to the other languages, but Scala is definitely being used pretty heavily in a number of pretty major back-end systems for stock trading, cloud computing, banking and successful startups like Twitter, Foursquare, Tumblr, Quora etc.

<comment><USER5> I think by "serious" the GP must have meant literally serious developers, such as those working in huge corporate body shops who are prevented from not being serious by strict regiment. Certainly management in such environs would consider authorization to use any more expressive language than Java as tantamount to handing out dynamite on Halloween.

<comment><USER3> I can understand that esp. young developers get bored and want to try something new and fancy. OTOH, JRuby and Groovy are, at best, niche languages without traction. The drawbacks of Scala have been discussed widely, also here on hn. Clojure? How many Hickey fans actually write real-world programs?

<comment><USER4> Many of the folks using Scala are experienced Java developers, your posts seem to be based on personal speculation rather than actual facts.

</comment></comment></comment></comment></comment></comment><comment><USER6> Question (maybe stupid, not a Java guy nowadays...): will bytecode coming from code using Java 8 features be runable on older VMs? Or, to put it otherwise, are new features like lambdas just syntactic sugar / compiler sugar, or have they significantly changed the bytecode and VM to make them work?

<comment> guard-of-terra They add new instructions with each release so the bytecode is not backwards compatible. But it does not matter much because most of jvm code is deployed on the server, and the rest is delivered with bundled jvm.

However, you can have compiler generate lower version bytecode for you. If you have a Java 8 compiler but want Java 1.4 bytecode - no problem, just ask compiler to target 1.4. It will warn you if you use any >1.4 features. Maybe it will even let you use lambdas (maybe not, I'm not sure).

Java is very backwards compatible. That's why it progresses so slowly perhaps.

<comment><USER7> Bytecode is not made incompatible with every release, actually - for example the generics added in 1.5 use type erasure, and so are a compile-time-only feature, leaving the bytecode still compatible with 1.4 JVMs.

<comment> guard-of-terra You're confusing JVM versions with Java versions. A JVM class compiled for JVM 6 target will not run under JVM 1.4. It will fail to load because of version mismatch.

However, you can use Java 6 compiler to compile Java 6 code to JVM 1.4 bytecode. That's what you are talking about.

<comment><USER7> Yes, I am. I got confused over what you meant by " It will warn you if you use any >1.4 features" - I thought you meant language >1.4, not bytecode spec >1.4. Thanks for setting me straight :)

<comment> guard-of-terra I actually meant "language features that require bytecode spec >1.4". Varargs and enums perhaps?

</comment></comment></comment></comment></comment></comment><comment><USER8> JVM is definetly going to be exciting just not because of Java but all other JVM languages.

<comment><USER9> Yep, in a way the jvm is doing the one thing that native platforms haven't. That is provide a universal (in java land at least) interface in java bytecode to languages running within the jvm.

Think about the ffi annoyances with c->c++->other-lang, its so simple in jruby to use clojure libraries, or rhino for some other stuff, or vice-versa, or whatever.

And I'm not a java fanboy, but that fundamental aspect of the jvm as a platform is crazy cool.

<comment><USER10> The same is true of Mono/.NET as well; in fact the CLR was designed for this and has features the JVM lacks, such as parametric types, invokedynamic, tail calls, etc.

If you're into functional programming the CLR is the runtime to beat.

<comment><USER11> _CLR is the runtime to beat_

Except it doesn't run on any useful platforms. Java makes the effort to be consistent and good on a wide variety of quality systems.

<comment><USER12> I think MS missed a beat here, if they had pushed for the .Net CLR to be a first class and equal citizen on OS X , iOS and Linux they would probably be in a much more relevant position in the future.

<comment><USER13> Its an open spec that can be implemented on any other platform that cares. Mono is available on many platforms btw

<comment><USER14> It's rubbish though.

Not the mono runtime; the fact that there are two runtimes.

The official MS one, and the Mono one, and although they're kind of compatible, in that your C# can be compiled to run on either of them (mostly, sometimes, if you haven't done anything fancy, if you're not using MVC, if you're not using a UI layer that isn't portable, if the version of mono you're using from A is the same as from B ( >_> unity...) ), this is _FAR_ away from the java JVM, where you can ship an application that just runs on all the platforms.

Don't get me wrong, you can do that with C# too... if you use Mono only, and flip off the official M$oft .Net runtime.

...but the mono runtime is behind the curve, always playing catchup to the 'official' runtime, supporting a subset of the features, and everywhere runs different versions of the mono runtime. It's a mess.

You've got to admit, the JVM is 100% superior in this regard.

<comment><USER15> I suppose you've never had a problem with two JVMs that ran a package but didn't behave quite the same way, to disastrous effect? Or dealt with software that only worked with one very specific version of the JRE that was exclusive from the equally specific JRE required by another bit of software?

To compare Mono to the MSFT CLR and call it rubbish by way of contrast to Java-land strikes me as hilarious. I'll choose .NET every time given that choice...

<comment><USER16> > _I suppose you've never had a problem with two JVMs that ran a package but > didn't behave quite the same way, to disastrous effect?_

No, never.

You mean two different JVMs, from different vendors? Who uses those anymore?

<comment><USER12> Well there's weirdness between Oracle and OpenJDK, thought to be fair I haven't had a problem with OpenJDF for a while. I don't imagine it's that unusual to find a server running Oracle JVM though.

<comment><USER4> In all seriousness most Java devs. regard the OpenJDK package as "that weird jvm that comes with the OS that nobody actually uses". First thing we do is download the latest JDK from Sunoracle.

<comment><USER17> What? That's not true. "Most Java devs" (that I know) prefer Linux and primarily utilize OpenJDK for development. (Deployment is a mess left to other people).

Really? No one uses Linux? _And you're talking about Java and JVMs?_ That just looks silly.

<comment><USER4> I only develop on Linux, think you got confused by the way I phrased it. I meant that hardly anyone uses the OpenJDK package, not that hardly anyone uses Linux.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER18> Can someone who knows more explain how java will do gpgpu? Is it going to make the jvm runnable on a gpu, or are they going to do something like compiling jvm byte-code to C/++/assembler code that will handle all the memory management it takes to run code on the gpu?

<comment><USER19> They could always do some fancy operating overloading to produce expression trees that are then converted into GPU codelike I did in this C# library I made a while ago (basically, call it a staged embedded DSL):

<http://bling.codeplex.com/>

The idea works well for functional code (what pixel and vertex shaders basically are) but it doesn't really map well to more imperative GPGPU code.

</comment></comment><comment><USER20> If "JVM languages go from strength to strength" is a reason to get excited about Java in 2013, should I be already excited in 2012?

<comment><USER21> Yes, but you will need a time machine

</comment></comment><comment><USER22> exciting if you're still a Java developer, right?

Java getting lambdas is cool, I'd be excited if I still was a Java Developer... but it's like at least 3 years I'm using lambda functions everywhere else, almost all the other reasons sound like old news too... "Java now is 'cloud'!", really?

</comment><comment><USER23> What about the memory wall ? being limited to few gigs because of the GC stop- of-the-world is not very exciting.

</comment><comment><USER24> how much is all of this tied to Oracle? is openjre and other non-oracle jvms ready for prime time?

</comment><comment><USER25> About the JVM not the language ...</comment>


Ask HN: Will rewriting Cassandra in Go solve GC issues? - <AUTHOR> I am GC/DBMS noob.
We keep coming across articles which explain Cassandra's GC issues.
Go also has GC. (Not sure if it's better than Java's or not)
There are also some DBMS implemented in Go but I've personally not heard of them running into GC issues. <comment><USER3> Why not use ScyllaDB which is rewritten version of Cassandra in C++.

Or you can use Azul Zing JVM which provides sub millisecond GC latency of heap size upto 8 tera bytes. It's commercial and little expensive if you target private cloud but its cheap on AWS marketplace.

Here are some of success stories of customers who invested in Azul Zing for their big data architecture or otherwise. [https://www.azul.com/resources/success- stories/](https://www.azul.com/resources/success-stories/)

</comment><comment><USER4> Performance wise, Go is generally in the same "league" as Java. If Cassandra was rewritten in Go, it would not have the same issues, but it would have some new different issues.

</comment><comment><USER5> Look into ScyllaDB. It is written in C, and supposed to be a drop-in replacement for Cassandra.

</comment><comment><USER6> Cassandra is not that bad, maybe I didn't operate it at large enough scale - <USER2> only had ~50 nodes - but u was doing 15,000 writes a second average, and 45,000 peak.

I never really noticed the GC issues and only had to tune a single GC parameter once.

The bigger issues I had was the need for all the extra disk space when a major compaction happens.

<comment><USER7> > The bigger issues I had was the need for all the extra disk space when a > major compaction happens.

is leveldb compaction strategy supposed to mitigate this issue?

</comment></comment><comment><USER8> Rich Gora The only assumption I am making here is that these timeouts are due to Garbage Collector Stop the World pauses and not other issues such as CPU or I/O saturation. In my case I was able to produce a handful of multi-second stop the world GCs during my load test throughout a day. Hence Cassandra .

<comment><USER7> Which GC exactly you used in your experiments? JVM has plenty of them with different properties regarding latency/throughput balance.</comment></comment>


How I do Proofs - <AUTHOR> http://bentilly.blogspot.com/2011/01/how-i-do-proofs.html <comment><USER2> Nice writeup, certainly helps in organizing your thoughts.

It reminded me of the Feynman method a bit though :)

1\. Write down the problem.

2\. Think real hard.

3\. Write down the solution.

More seriously, the classic book by Gy. Polya "How to solve it" is also very useful:

[http://www.amazon.com/How-Solve-Aspect-Mathematical- Method/d...](http://www.amazon.com/How-Solve-Aspect-Mathematical- Method/dp/0691023565) (non-affiliate)

[http://www.amazon.com/How-Solve-Aspect-Mathematical- Method/d...](http://www.amazon.com/How-Solve-Aspect-Mathematical- Method/dp/0691023565?tag=laszkozm-20) (affiliate)

</comment><comment><USER3> As a neophyte, the only thing I find missing is proof by cases, exhaustive proof (sometimes there are just a few cases that can be trivially proven separately, yet a comprehensive proof is elusive), and (while it's a bit tangential) a couple tips on how to read others' proofs (e.g., what do things like "clearly" and "without loss of generality" precisely mean in this context, and what to do when you encounter them).

<comment><USER4> I didn't include proof by exhaustion because it wasn't going to come up in the course. But in principle it is the same as any other technique, but the trick is figuring out which cases to break it into. There is an art to that which varies by topic, and I don't feel up to trying to explain it in general. :-)

On how to read proofs, my hope was that I wouldn't be presenting any proofs that are hard to read. And given their level of skill, I didn't want them trying such shortcuts either. That said, the trick is to recognize weasel words where the author's laziness makes the reader do work, and then do that work.

When someone says "clearly" what they mean is "the proof is routine, and I don't want to clutter my line of reasoning digressing into a proof of it." If you don't find it clear, then you have to produce that proof (or at least an outline of it). Filling in these details is often one of the hardest parts of reading someone else's proofs.

"Without loss of generality" means, "I'm about to set up a bunch of stuff that looks like it could be a special case, but it really isn't." As a reader it is then your job to figure out why it isn't a special case. Once you are convinced that it really isn't a special case, then you can accept the specific setup that just got made.

And "similarly" means "the proof for this piece is pretty much the same as what you just saw, and I don't feel inclined to write it all out again." In that case you need to convince yourself that this is true.

</comment></comment><comment><USER4> It should be noted that this is in some way a follow-up to <http://news.ycombinator.com/item?id=850485>, which is a follow-up to <http://news.ycombinator.com/item?id=818367>.

</comment><comment><USER5> I usually start with, "Do I believe the proposition is true? If so, why?"

This is sort of like the "Do I understand it" part of the flowchart in the OP.

But in my experience, if you think in detail and can justify why you believe the proposition is true, that helps break down the proof into steps.

</comment><comment><AUTHOR> The actual process is shown here: [https://docs.google.com/document/pub?id=1_uwl3WDZk_BxNOUL7W0...](https://docs.google.com/document/pub?id=1_uwl3WDZk_BxNOUL7W0FiPMMxdmi7w4OoP4prUcIs2s)

</comment><comment><USER6> (As a thought experiment) I find it very interesting that the same flow/dissection can be applied to outside math, as set of tools to solve any problem - even to make those indecisive moments interesting. I just went through the flow to make a 'decision'.

</comment><comment><USER7> Tangential, but I don't understand this reaction after he tells them in class they're going to go through a proof together:

'You should have seen the shock on their faces! Some started complaining. So I said, "No, seriously. You will all prove this. Just wait and see. It will work."'

Are people really that timid when all they're being asked to do is try?

<comment><USER4> These students in all likelihood had never, ever, been asked to produce a mathematical proof. They were being told that they were about to write one as a group, after having a general description of how to do it, without seeing any worked out examples first. It is quite possibly the first time that they had ever been expected to do anything for a first time in a math class without seeing a worked example first.

Furthermore they were staring at a theorem that was complicated and abstract enough that none of them had any idea why it was true. They had just been given a method of attack, but had no particular reason to have any confidence in it.

I expected and wanted this surprise. I wanted them to take this handout seriously. I thought that the experience of seeing how easy an apparently impossible problem really was would make them pay attention.

</comment></comment><comment><USER8> This is (1) probably not useful to anyone with even rudimentary problem- solving skills and (2) more "How to do anything" than "How to prove theorems". But it's _for_ people with scarcely any problem-solving skills. It's kinda sad that a university mathematics course is full of people with scarcely any problem-solving skills, but that's hardly btilly's fault.

I wouldn't expect there to be a lot of HN participants who need it, though.

<comment><USER4> I agree that it is just divide and conquer, presented in detail, with some specifics thrown in on techniques that are useful in mathematical proofs.

However I think that this is useful, even for students with decent problem solving skills.

The biggest issue that I was trying to solve is clearing up misconceptions about what a proof actually is. A beginning student knows that proofs have to be utterly convincing. They know that even many basic and obvious things require proof. So they are uncertain what techniques are OK to use. Worse yet, all of their liberal arts education pushes them towards believing that the way to make something convincing is to add verbiage, examples, supporting references, and so on. All of which is the exact opposite of what you actually want to do in a mathematical proof.

A second issue that I was trying to address is the art of reading problems and figuring out what it actually says. This is why I included specific advice on how some common phrases actually cover two separate claims.

A third issue is that students arrive at a first course where they have to do proofs having seen (and usually ignored) lots of examples of worked proofs, but never having done one. Even if you use divide and conquer elsewhere, there can be a barrier to realizing that this is the technique you need to use here.

And that assumes that the students are competent at divide and conquer. But there are many paths through academia where you can arrive at the first course where you have to do mathematical proofs without having explicitly learning to divide and conquer. You can complain about that situation, or do something about it. I chose to do something about it.

</comment></comment><comment><USER9> ... and that's how I do em: <http://www.eekaproof.com>

</comment><comment><USER10> So the only way to solve a problem is by applying known techniques, apparently.

<comment><USER11> Yes. And one of the techniques is _Try to Find a New Technique_

<comment><USER10> Are you sure? Look at the flowchart again.

<comment><USER8> Huh? It's right there: second column, fourth box down. You could quibble that it isn't "one of the techniques", but the effect of that is to invalidate your original complaint that all the chart tells you to do is to apply known techniques.

<comment><USER10> Look at the arrows.

<comment><USER8> OK, I looked at the arrows. (1) What's your point? (2) Is there any actual reason why you haven't said already what it is, rather than all this "Look at the flowchart" / "Look at the arrows" nonsense?

There is an arrow from "Do known techniques apply?", labelled "No". It leads to "Try to find a new technique". There's an arrow back from there to "Do known techniques apply?". Obviously, if you succeeded in finding a new technique applicable to the problem, the set of "known techniques" has expanded and you then follow the "Yes" arrow from "Do known techniques apply?".

Is it your opinion that there is something wrong with this? If so, what?

(If you respond with another passive-aggressive "Look at X" reply, I shall ignore it unless looking at X immediately convinces me that you've been right all along and I've been missing something.)

<comment><USER10> (1) When I see the phrase "known techniques" in the context of math it generally refers to techniques known in the field. Novel techniques are not "known" in this sense. The different, literal, trivial interpretation of "known" makes the word superfluous. That was the motivation for my first comment. In both cases (your point of view being the second) my comment is true; by this flowchart a technique must be known to be applied. The only way I could see someone disagreeing is if they're confused about what "known" means.

(2) It seemed obvious, and moreover too trivial a point to merit more than just pointing it out. I apologize if I've caused any offense.

* To clarify, I don't consider "find a new technique" to be a technique, which is why I said to look at the arrows.

<comment><USER4> Please don't dismiss the "literal, trivial interpretation". If you read the explanations that came with the flowchart, they try to make it very clear that "known" means "known to you".

Also consider the context. This was a handout to students in a first linear algebra class, that was meant to help them learn to do basic proofs on their homework problems. Nobody expected them to be engaged in original research. Any useful technique they needed to "discover" was very likely to be well- known to lots of people, including me.

Finally it is not clear to me why you think that the word "known" is superfluous. There is a world of difference between the stage where you are running through the techniques you know, trying to find one that fits, and the stage where you're engaged in expanding your list of available techniques. I was trying to get at that difference.

<comment><USER10> I didn't read the descriptions before, they do make it clear.

I was just saying that you can't apply a technique you don't know.</comment></comment></comment></comment></comment></comment></comment></comment></comment>


Spawned Shelter – the best articles, videos and books for learning Erlang - <AUTHOR> http://spawnedshelter.com/ <comment><USER2> Saw this hit the mailing list this morning. Not sure why this thread happened when it's reposting the one the announcement listed at [https://news.ycombinator.com/item?id=10240572](https://news.ycombinator.com/item?id=10240572) .

Regardless, this is a surprisingly diverse set of Erlang related articles that I was pleased to see brought together. A few I hadn't read before.

</comment><comment><USER3> This looks like an awesome resource.

Erlang has been on my list of things to look at when I have the time, I remember reading about it in DDJ about 20 years ago :).</comment>


The Three Machines - <AUTHOR> http://www.feld.com/archives/2017/01/the-three-machines.html <comment><USER2> I like the separation of The Company, but highly disagree with keeping The Customer separated from The Product.

I would like to see more of what can be done as we focus more on combining these, not segregating them.

As a developer the very rare chances I have had to go on a sales visit were eye opening in an astounding way. Sure, maybe don't have developers cold calling, but making product developers a part of the sales process can only help with the feedback loop.

<comment><USER3> Some segregation is inevitable. It's a result of complexity. At a certain point, the company becomes too big and complex for everyone to be doing everything, and you need to specialize, not just distribute the work.

The Product/Customer divide makes sense to me, because _what you do about them_ is different. Sure, customer steers product and vice versa, but the "Customer" machine is about sales funnels, marketing language, customer service, etc. The "Product" machine is about specs, coding, release schedules, etc. Implementing a new feature and selling a new feature are different tasks, requiring different skillsets.

</comment></comment><comment><USER4> This is pretty deep, and pretty smart, since it deals with the things a firm is about: its customers, what it gives those customers, and itself.

One could do worse than to consider those three areas in any decision.

<comment><USER5> How is this deep or smart? It reads like the common armchair "this is how to run a company" without so much as an anecdote. In fact, the foundation is his unnerving preoccupation with the number 3, not with any eye for business.

> there's a lot of sloppy thinking on my part so far

That's from the blog post. Mistaking amateur ramblings for analysis is bit worse than seeing someone's mediocrity as genious. What are the standards for analysis now, 2 beers and a couple paragraphs about how the world should be?

<comment><USER3> Brad Feld is a very successful VC. Those aren't amateur ramblings, those are _professional_ ramblings!

More to the point, he's a longstanding and well-respected business advisor, and has an excellent track record. I may or may not agree with him on any given subject, but I'll sure as heck stop and listen, because he knows more about this stuff than I do, by far.

</comment></comment></comment><comment><USER6> As I'm making my first hires this month, I've been thinking very heavily about future org structure - and oddly enough I've called it the "machine" too.

My machine has custom components that perform different functions but connect together (which parallels your machines pretty well). Each of those machines can be subdivided to an extent.

I think it's an interesting approach in that I could practically design draw a schematic to describe how it all comes together. Every company would probably need a custom-built machine - there's no general one-size-fits-all approach in this way of thinking about it.

We'll see how it goes

<comment><USER7> > I'm making my __first __hires this month

Early-stage business advice is cheap and sometime barely worth the bytes it's stored in, but...

Speaking as someone who has done a few startups. Until you get to 50+ employees you probably don't want to spend a lot of time thinking about the org structure. Keep it relatively flat (CXOs -> VPs -> Everyone Else)

It is less cognitive load on you and empowers individuals to help form the company culture and workflow.

Edit: I don't really agree with the premise of this article. I think it is critically important at early stages that everyone (engineering, marketing, sales, customer service, etc) are exposed to every part of the business. If a customer sends customer service a great review, engineering should see it. If a customer has an issue, engineering should be involved in making the customer happy. And the other way around, customer service should have a say in how the product is built... heck, the administrative assistant that answers the phone should even have an avenue for their feedback to be heard. Of course someone needs to ultimately make the decision but everyone should have a voice and feel vested in the company success.

<comment><USER8> My read was the article was about focus, not building information silos. When everyone reports to the CEO, the org suffers.

<comment><USER7> Depends on the size of the company... if the company is three people that seems perfectly reasonable.

</comment></comment></comment></comment><comment><USER9> I kinda like the idea of separating the "Company Machine" from "Customer Machine" and "Product Machine", but Customer and Product are deeply intertwined.

<comment><USER10> They're two sides of one coin, right? Here's what we want vs. here's what we can build. Opposing forces that should always be in contact.

Either that or it's late and I'm getting philosophical.

<comment><USER9> Another reason I don't like the customer/product split is because it pits the Customer team against the Product team. Who is the most valuable? Gee, clearly the Customer people because they bring in the money... Product is then treated as a cost center

<comment><USER11> Or you could argue this reminds people they are on equal footing with the other.

<comment><USER9> I have never found an organization where that is the case.

</comment></comment></comment></comment></comment><comment><USER12> I like this clarity. But I think to make it work you need the best people at the boundaries of the divisions. Between customer support and product development must sit someone, or a team, with experience of both. Between the internal company function and the engineers must be a former engineer who is now a manager or at least a person who both understands the business and also understands that programmers need quiet offices and decent equipment.

</comment><comment><USER13> As the founder of an early stage startup, everything that is not related to product development seems that I am not actually working. I know that I should devote myself to hone my Customer and Company machines, but I hate the feeling of wasting time.

I am trying to transform Customer and Company as products, so I trick my mind to evolve them appropriately.

<comment><USER8> Thinking through Company can usually wait, but ignoring Customer is risky.

<comment><USER13> Indeed, but sales are difficult for a technical founder, and as a solo founder, I need to adapt or bring someone on board, which is risky as well.

</comment></comment></comment><comment><USER8> Very true. The hard part seems to be finding the hierarchy. Can the head of Sales ever not be the head of Customer? (Can the head of customer success have the VP of Sales report to them?) Having product management subservient to engineering or vice versa seems tricky too.

</comment><comment><USER14> So if you're working on technology that enables the company to build products better/faster, is that part of the product machine or the company machine? At what point do those technology projects become internal enough to be considered Company instead of Product?

<comment><USER15> If I am understanding his point, the Company machine is basically finance/accounting, legal, HR, and office management. It is a common pattern at mid-stage startups to have some or all of these people report to a CFO. If your product is to make software to build products, the product development is still under the Product Machine, even if the company itself is using the product.

</comment></comment><comment><USER16> At a company like mine where the technology isn't the primary product this would become "the four machines"? With one more machine handling the "main" product. Like journalism/carpenting/engineering etc.

</comment><comment><USER17> In certain industries, it's said a company is made up of three types of staff - finders, minders, and grinders.

It's a pretty simple exercise to map this to the three machines.

<comment><USER18> Can you explain what each of those types are and how they map to the three machines discussed in this post? It's pretty non-obvious to me.

<comment><USER17>
      finders (sales - those that bring in the $$$) = customer machine
      minders (admin, finance, hr, etc) = company machine
      grinders (the grunts who actually do the work - for a tech company this is the engineering dept) = product machine

</comment></comment></comment><comment><USER19> This is hilarious because about a year ago I was scribbling on a plane about our idealized organization and I came up with this:

[http://imgur.com/a/feJoK](http://imgur.com/a/feJoK)

CEO - Focused on managing team (Traditional definition BTW)

Product Manager - Focused on UX

Customer Manager - Focused on Onboarding and Client Management

Customer Acquirer - Focused on Acquiring Customers

Financial Manager - Focused on Managing Capital Flows

You could (or possibly should) combine The Customer roles into one and the financial one with CEO and you'd have the same setup that Feld describes.

</comment><comment><USER20> As an aside, the actual article is not as long as the 100 pages it may seem from the scroll bar. There are a lot of comments on the page.

</comment><comment><USER21> I've always gone with:

1) Create Value

2) Monetize Value

But I see how a third team makes sense.

3) Manage Value?

<comment><USER22> Value is a non-word.

<comment><USER21> I disagree. Value is the financial impact something has, as opposed to cost, which is what it takes to produce, or price, which is what it sells for.

Most of business is creating something that costs little to produce and can be sold as close to value as possible.

</comment></comment></comment><comment><USER23> Product Development, Sales and Marketing, and General/Administrative

</comment><comment><USER3> I really like this concept. I hope to see more on the subject!

</comment><comment><USER24> Love this idea. I needed the company machine years ago.</comment>


Show HN: fffocus.com, a minimalist pomodoro timer for your browser homepage - <AUTHOR>

Hi everybody, check out this minimalist pomodoro timer I whipped up this weekend:
http://fffocus.com
- click the title and identify your next action
- click the circle to start the timer. The default time is 25 minutes
- click again to pause the timer, or double click to reset it
- if you navigate away from the page and come back, it should keep track of the elapsed time
Now you can set fffocus.com as your browser homepage, and have a constant reminder to stay on task. It's all driven driven by a static html page and a bunch of object-oriented Javascript, using Knockout.js, HTML5 local store, and some other goodies.
Code is up on Github: http://github.com/dylanized/fffocus
Love to hear any feedback, especially bug reports (this is untested in IE!). Happy fffocusing!! <comment><AUTHOR> Clickable: <http://fffocus.com></comment>


Most Americans are one paycheck away from the street - <AUTHOR> http://www.marketwatch.com/story/most-americans-are-one-paycheck-away-from-the-street-2016-01-06 <comment><USER2> Pretty abhorrent situation we are in.

I think it's going to be pretty hard for these (majority of) people to do much with their lives other than struggle as hard as they can to hang on to what little they have. I doubt they have so much time to spare for "being alive" or creativity, or starting new businesses. I expect that most of these people are being worked to death by the stress of the situation, also.

If the stats are this bad, it means we're in a nation of wage slaves who couldn't possibly consider leaving behind whatever income source they have, even temporarily. This is what our society has been engineered for. Meanwhile, billionaires are richer than ever and don't seem to agree with changing things.

There will be violence if things get worse for large populations of people.

Sounds like we've got to do something about this economic inequality, eh?

<comment><USER3> Yep. We have two classes-- The rich and powerful and everyone else. The rich and powerful control the Federal Government in the US. All the commoners get to do is elect their nominated representatives as it takes a lot of money to run a successful campaign at the federal level.

The majority of elected representatives will not dare alienate their biggest sources of campaign funding as it will mean they won't get re-elected during the next election cycle. I suppose that there are some congressmen and senators which have the financial resources to avoid this, but they tend also to side with the rich and powerful.

Short of a second constitutional convention, or an article V convention, I don't see this changing any time soon, and both of these types of conventions have pretty good reasons to be avoided as they could end up consolidating the power of the rich and powerful even more.</comment></comment>


Facebook Announces Its Third Pillar, "Graph Search" - <AUTHOR> http://techcrunch.com/2013/01/15/facebook-announces-its-third-pillar-graph-search/

<comment><USER3> Ok, I'm biased because I'm a search guy but for some reason I get more creeped out by people inventing new ways to track down other people than I do about people inventing new ways to connect someone to a product sale.

We've heard from people trying hard _not_ to be found because it doesn't "add value" to them if that person some high school they had such issues with lost track of them.

I certainly agree though that the information Facebook has could really inform a search product. We (Blekko) did an experiment using Facebook likes from your friends to inform results rank. The results were pretty cool when you searched for a seafood restaurant in SF and the result said "250 of your friends like this place." That can give you a sense that people you know (and possibly invest a bit more value in their opinion :-) thought this restaurant was good, as opposed to people on Yelp who you do not generally know.

</comment><comment><USER4> A lot of hate for graph search going on but I am pretty excited.

> photos I like taken in New York in 2010 - great way to find something again > without filtering through activity log or remembering (all the) details

> friends in Austin, Texas - because _people move_ and I travel

> friends who like ultimate frisbee - I meet a lot of people and play a lot of > frisbee, it would be stellar to have an auto-populated list of friends (not > just the regulars) who would be down to play

> friends who like Book of Mormon - who should I be asking for a > recommendation?

> people who going to event X and event Y - now we can carpool

> people in group X and group Y and group Z - <USER2>

> Stephanie who went to Mike's event and is friends with James - use case from > below (that I encounter about once a month) of trying to find someone with a > sparsity of details.

I can't think of any way to (nearly as easily) get this information without graph search, and frankly I think it's awesome.

<comment><USER5> I doubt I'd use it for any of those reasons, but I guess it doesn't hurt to have the search there. Just like outfitting your blog with a search function, this improves the usability of the site a bit, but I'd hardly think it would be a very big profit maker for Facebook. On the other hand, if it helped you reach out to people you don't know for various reasons, maybe to find a language studying partner, people to play sports with etc, that would be more useful. It would also be perfect for businesses when they want to find and target messages to a certain audience. The only problem is, I doubt very many people would like to share their information with anyone outside of their friends, I sure don't.

</comment></comment><comment><USER6> Techcrunch is being blocked by Chrome as malware!

<comment><USER7> Safe Browsing Diagnostic page for techcrunch.com/2013/01

What is the current listing status for techcrunch.com/2013/01?

        This site is not currently listed as suspicious.

What happened when Google visited this site?

        Of the 694 pages we tested on the site over the past 90 days, 49 page(s) resulted in malicious software being downloaded and installed without user consent. The last time Google visited this site was on 2013-01-15, and the last time suspicious content was found on this site was on 2013-01-15.

        Malicious software is hosted on 1 domain(s), including adsbyisocket.com/.

        1 domain(s) appear to be functioning as intermediaries for distributing malware to visitors of this site, including wp.com/.

        This site was hosted on 3 network(s) including AS13768 (PEER1), AS22576 (LAYER3), AS1668 (AOL).

Has this site acted as an intermediary resulting in further distribution of malware?

        Over the past 90 days, techcrunch.com/2013/01 appeared to function as an intermediary for the infection of 2 site(s) including ow.ly/, t.co/.

Has this site hosted malware?

        No, this site has not hosted malicious software over the past 90 days.

Next steps:

        Return to the previous page.
        If you are the owner of this web site, you can request a review of your site using Google Webmaster Tools. More information about the review process is available in Google's Webmaster Help Center.

</comment></comment><comment><USER8> "Which of my friends are interested in arbitrarily liking pages to get freebies?"

With corporations now fishing for 'likes', I'm not sure 'likes' will tell us as much about interests as FB thinks they will.

</comment><comment><USER9> Seems like a lot of hype for a way to see what movies your friends like.

<comment><USER10> One of the use cases in the presentation that stood out to me was finding people you met at a party. Let's say your friend Chris introduced you to some girl named Stephanie, and all you really knew about her was that she went to Harvard... simply asking the graph search "Friends of Chris named Stephanie who went to Harvard" should give you a manageable list to sort through to friend them, rather than all 1 billion Facebook users.

<comment><USER11> So you're saying stalking people on Facebook just became easier?

<comment><USER12> No, I wanted to do this on the weekend, instead I looked through three people's friends list and didn't end up finding them. It took a while, with this it wouldn't take a while.

<comment><USER13> "It took a while, with this it wouldn't take a while." I think that inherently qualifies as easier.

</comment></comment></comment></comment></comment><comment><USER14> I think I'm glad I deleted almost all my photos from Facebook last week. All I left were a couple of dozen mobile photos, and I deleted all the albums from when I was using FB for photo sharing a few years ago.

<comment><USER15> Did you do the same with your Instagram photos?

[http://blog.instagram.com/post/38143346554/privacy-and- terms...](http://blog.instagram.com/post/38143346554/privacy-and-terms-of- service-changes-on-instagram)

<comment><USER14> I've never even had an Instagram account so I am safe there.

</comment></comment></comment><comment><USER16> "Who are my friends that live in San Francisco?"

I think I should not worry about the friends if I can't remember them.

</comment><comment><USER17> this could be the beginning of the end for facebook</comment>


Automatic Login in a Django Application Using External Authentication - <AUTHOR> https://medium.com/sipios/automatic-login-django-ldap-authentication-tutorial-91cbb9d5bf71 <comment><USER2> Note to those who might be implementing multiple forms of authentication in a Django app: t some point, either through a popular boilerplate or by finding it online, you may be tempted to use [https://github.com/pennersr/django- allauth](https://github.com/pennersr/django-allauth) to unify multiple authentication mechanisms. Be very, very careful before using this library. Not only do seemingly simple things require digging into the codebase and finding something to override or monkey-patch, but there are many ways in which denormalized data (such as a user's primary email address as a column therein, which is duplicative with a primary-marked row in a one-to-many table of user email addresses) can become desynchronized. It may still be the right choice for your business, but it comes with massive technical debt. Caveat emptor. If the self-rolled techniques in the OP are sufficient for your use case, consider just using what comes with Django and what you roll yourself.

<comment><AUTHOR> Interesting, Thanks for your advice!</comment></comment>


Concurrency Combination - <AUTHOR>

I decided to learn concurrency and wanted to find out in how many ways machine instructions from two different threads/processes could overlap in a theoretical setting where they are executed linearly. The code for both processes is a 10 iteration loop with 3 instructions performed in each iteration. I figured out the problem consisted of leaving X instructions fixed and then fit the other X instructions from the other process between the spaces taking into account that they must be ordered (eg.instruction 4 of process B must always come before instruction 20).
I wrote a program to count this number, looking at the results I found out that the solution is n Combination k, where k is the number of instructions executed throughout the whole life of one process, so for 10 iterations it would be 30, and n is nº instructions * 2 (2 processes), 60. In other words, the problem is the same as having n number of objects with n/2 fixed and having to fit n/2 among the spaces without the latter n/2 losing their order.
I have no idea why n C k works, I understand that the definition of a combination is, in how many ways can you take k elements from a group of n elements such that all the groups are different but the order in which you take the elements doesn't matter. In this case we have n elements and we are actually taking them all, because all the instructions are executed, so I don't see how it can be a combination where we are taking only k instructions from this set of size n, leaving the other k without being executed.
Could someone please explain to me how it works?
Thanks in advance. <comment><USER2> Line up 60 boxes in order, each representing a time slot for one instruction. Selecting any 30 of them would represent one way the 60 instructions could be interleaved, if those 30 selections represent the first loop. A different selection of 30 boxes for the first loop would represent a different arrangement for the 60 instructions, and all arrangements may be obtained this way. So 60 choose 30 would be all possible arrangements.

<comment><AUTHOR> Understood. Thank you.</comment></comment>