The Immutability of Math and How Almost Everything Else Will Pass - <AUTHOR> http://blog.hackerrank.com/the-immutability-of-math-and-how-almost-everything-else-will-pass/ <comment><USER2> As someone who has done a fair bit of both math and programming, I will agree that having some math knowledge has definitely helped at various times when programming, but I don't think these specific instances (e.g. the 10 examples given in the article) constitute the primary reason it's a good idea to learn math. For the purposes of handling those specific situations, I think you would do fine to just learn the math as you encounter the need for it (and 95+% of the time you don't need anything beyond high school).

To me, the primary value of math for programming is that it is a pure form of exercising many of the skills that help you write good code. For example:

\- fluency in logical reasoning

\- turning vague intuitions into precise statements (translating business requirements into code)

\- formalizing proofs (covering all cases, establishing invariants)

\- developing abstractions to succinctly describe relationships

\- solving a problem systematically

You can also learn these skills by programming, of course, but probably not as quickly, because you will be distracted with other tasks such as debugging, setting up your dev environment, waiting for your program to run, etc. So in my opinion, what's important is not so much the immutability of the math itself, but rather the process of doing the math. I would be interested to know if others have had similar experiences.

<comment><USER3> I agree with what you say, but it seems obvious to me.

On the other hand, what gets overlooked, IMO, is the "other stuff". Humanities, law, business, biology, take your pick!

When faced with a problem, a programmer is always looking at at least two issues:

1\. to implement, 2\. to understand the problem domain.

I see math being exceptionally helpful in 1), but at most somewhat helpful in 2) -- because at the end of the day, programs that we write tend not to be _about_ math, or logic. Category theory does not help you understand the contract your company signed with some other company 12 years ago, and the amendments they made 7 years ago. It _does_ help you implement these things concisely and correctly. What'd would help you understand would be for a programmer to know something about contracts.

Most programmers that I know have a certain talent for and knowledge about math. Most programmers that I know, also don't know a lot about the world outside of computers. That includes me, fwiw.

I _think_ that their careers would profit from considering learning some non- mathematical domains more than from learning more math.

I'm not arguing against math, but I'm arguing for a good balance. To know at least the basics of some other domains, before you set out to learn a _lot_ about one.

<comment><USER4> I disagree, I would say most programmers know too little math and even too little computer science. As a field we are way behind most other fields in how well we know our own field. Yet most programmers are somewhat familiar with many other fields because they spend a lot of time reading about stuff on the internet.

I think the reality is the opposite of what you suggest, programmers are in no way an example of a profession where most practitioners have a deep and extensive knowledge. For most programmers, the learning method is finding out how to DO things (as in, find an example on the internet, try it, it works, I'm done) without actually understanding anything.

You must be very lucky in where you work if you think programmers know a lot of math and even know what "category theory" is.

<comment><USER3> I don't think that reading about stuff online leads to knowledge, just like repeating writing the same boring CRUD app over and over again won't make you a much better programmer.

> As a field we are way behind most other fields in how well we know our own > field.

I'd be surprised if that was so. I think we have a tendency to idealise other fields' achievements :) Additionally, I think you're using a scientist as a role model for a programmer. I don't think that's a good role model. Most programmers are technicians, not scientists. They produce products, not knowledge.

> You must be very lucky in where you work

Hm. It is the case that I'm lucky! I work at a University, in a PL group. So the people _around_ me daily have better math foundations than most. I'll admit that there is bias in what I say.

<comment><USER4> I am not using a scientist role model. I am using a role model like Linus Torvalds, John Carmack or Eric Lippert. Would you disagree that these are good programmer role models? They have DEEP knowledge, not just "hey man have you seen the latest javascript framework".

And I don't see why you think the average programmer knows less about the law than someone in another non-legal profession. In my experience this is simply not the case, and yes, reading about it on the internet is better than not reading about it at all. It's not like dentists spend their time reading actual law books. Honestly, I have no idea where you get this from, it sounds absolutely wrong, but I guess we'll have to agree to disagree on this.

<comment><USER3> These are role models that I personally very much agree with. At the same time, the industry has need for relatively few people like them. Of course, if every programmer would magically turn into them, that'd be great. But no one turns into them over night. And I think it's obvious that it makes no sense honing yourself into a perfect logical machine of deadly precision, if tomorrow you're still writing the same boring crap. Most programmers have boring jobs. Not because they're bad, but because most software being written is solving boring problems.

I don't think that the average programmer knows less about the law (or any other field) than someone in another non-legal profession, I think that they know about the same amount. But they should know MORE about the other professions, because most programming jobs have to do with commerce, law, design, what have you. Software products almost always have to do with a domain that is not software. A dentist has little use for law in his working life, but a programmer is more likely to profit from a basic understanding.

One thing that is special about the programming profession is that it is very diverse in levels of skill. And that's not only ok, I think that's a good thing.

I think this diversity is connected to a few things, one of them:

Our work product is very cheap to copy, and in the resulting economy, a small difference in utility will lead to huge differences in market share. Given a large market, this makes it reasonable to hone your skills further, where in other professions you'd be facing diminishing returns much earlier. This applies more to software that is widely used -- it has a larger market. Given a small market, this applies much less. In other, oversimplified, words: if you're writing software that is used (directly, or indirectly) by thousands, it pays off to train yourself for an extra year, even if it increases the utility of your product by only a small percentage. On the other hand, if you're a freelancer building web pages for a local business (a market size of 1), you're not going to profit much from the increase in utility.

Becoming Carmack makes sense in a large market. In a small market, it doesn't make sense to try to dominate it, but to acquire new markets.

<comment><USER4> I think the average programmer makes many more mistakes due to not knowing computer science and math / lacking a deep understanding of programming than due to any other deficiency like not knowing laws. It is at least true for the programmers I've worked with and have not been satisfied with.

So in the real world, this is what causes me problems - actual problems with a large application that cause friction with clients - people being bad at programming and not knowing even the most basic computer science and math, mostly manifesting itself in the application becoming littered with inefficient code over time (the second most common problem being lack of or superficial technical knowledge, such as using a framework or even language without understanding how it works under the hood, this usually manifests itself in the same way).

Note that the "I don't need to know math/cs" people will often not realize they needed something because they will just solve the problem incorrectly, inefficiently, or decide it is not possible to solve efficiently and compromise on requirements. What's worse, even if they are shown the error of their ways multiple times, they almost never truly change their mind, regardless of evidence. It is a mindset people seem to commit to early in their career, or even to a more general version of the same mindset in childhood, and never change it. That's why there's so many of them.

Sure, there might be situations where it is not useful to be a better programmer than you are. But I would say that is not the norm. I don't work on some algorithmically-super-complex application, it is just a typical large application used by professionals for their work; it doesn't involve any truly difficult problems but has a huge number of relatively small and easy problems all over the place. I'd say it's somewhere in the middle of the software development spectrum.

<comment><USER5> The language of computation is now a common tongue and of course there will be people who master it poorly or who you perhaps would call inferior.

I think this speaks more for the "inferiors" (programmers) not against it. You can make syntax in math represent anything but practically mean nothing, having programmers in fields where they could make big mistakes, points to its power.

Quite recently, mathematical knowledge was reserved for the "elite" in part because of the dense amount of esoteric grammar that exist in math, and i would say still is. Alot of things can be expressed in multiple ways like geometry, algebra. The "real" math you speak of is instilled convention.

Sometimes the most efficient way is not always the best way and correctness only exists in the framework itself.

If you are going to compare math and programming then you first have to acknowledge that math is also just a language, to express certain concepts in which itself is quite littered with dead and inefficient code.

The fact that the grammatical and syntax constraints of higher math are mostly applied ad-hoc in proofs,rings,fields means you can keep refining some fraction of it ad infinitum thereby giving the illusion of correctness but in its essence is a rich mans PHP.

<comment><USER4> Mathematics is a tool that you as a programmer are supposed to be able to use (among other tools) to solve problems.

There is nothing wrong with mathematics and it is certainly not reserved for "the elite" whatever that is supposed to mean.

Convention is irrelevant except to ensure other people familiar with the convention can easily know what you're talking about. For programmers it is especially irrelevant as we usually only care about finding solutions to problems.

Correctness does not "only exist in the framework itself". If I ask you "if there are 6 people in the room, is it possible that among them there is no group of 3 which know each other and no group of 3 which don't know each other" the only correct answer is "no". The fact that this concept has a name in mathematics does not make the answer "no" any less correct.

Dismissing the importance of mathematics because you somehow find it "elitist" is anti-intellectualism at its worst.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> "But is downplaying the importance of math a sustainable message for future generations of engineers?"

No, but most programming is definitely not engineering. Math savvy people will definitely be needed - more in some areas than in others, but it is silly to have something most people don't have use for in their daily work as a requirement.

The point being is that there is a need for people with engineering skills, but there is also a need for people with craftman skills. Perhaps what we are seeing is the early stages of different education paths to the different roles?

As for the different points:

"Number theory. If you're ever asked how one algorithm or data structure performs over another"

Err, no. That would be courses in analysis, calculus or numerical calculation courses, or courses in discrete analysis if you can find one. Number theory is what you use to understand stuff like encryption.

(Also, the popups was very annoying on the page)

<comment><USER7> > The point being is that there is a need for people with engineering skills, > but there is also a need for people with craftman skills.

I disagree. We don't need people with craftman skills, or better to say, we shouldn't need. Because once you can define what is craft, then computer can be programmed to do it.

At work, I still code in (mainframe) assembler sometimes. It's a craft, but it has been largely replaced by compilers. Where it cannot be replaced by compiler (which is definitely not the case of my job), it becomes engineering.

<comment><USER8> > We don't need people with craftman skills

> I still code in (mainframe) assembler sometimes. It's a craft

You seem to be contradicting yourself. Unless you are saying that you use assembler even though you don't need to.

<comment><USER7> > Unless you are saying that you use assembler even though you don't need to.

Yes, that's what I am saying. The use of assembler is historical legacy, so that's similar to how my mother does embroidery for restoration work (and also for fun!) even though she could just use CNC loom or something fancy like that.

</comment></comment></comment></comment><comment><USER9> > In the next 10 years, software engineers aren't still going to be limited to > programming web and mobile apps. They'll be working on writing mainstream > computer vision and virtual reality apps, working with interesting > cryptographic algorithms for security and building amazing self-learning > products using machine learning. You can't go very far in any of these > fields without a solid mathematical foundation.

This is what scared and convinced me to relearn Mathematics. I hated it when I took it up before but I realized that the coolest jobs requires it.

However, after a few months of self-learning, I discovered that the hard part is not learning the concepts. It is structuring your learning in such a way that you can retain what you learned after a few weeks.

It has been a challenged for me to do. Learning new higher level concepts exposed my gaps in learning the fundamentals.

</comment><comment><USER10> I have all the wrong math. I got discrete math in CS - number theory, formal logic, and combinatorics. Now you need more real-number math - probability, statistics, and matrix algebra.

<comment> semi-extrinsic My best advice is to take the fun math, whatever that may be. If a class is fun, you learn it properly, so you will be much more able to adapt the concepts and strategies to other problem domains.

So apart from the mandatory calculus, statistics and linear algebra, as an engineer I took functional analysis, operator algebras, group theory, and intro to hilbert spaces.

</comment></comment><comment><USER7> There is other big connection between math and programming, which article completely ignores - functional programming (from the mathematical side it corresponds to various lambda calculi).

Interestingly, lambda calculus is a different language (syntactically) for mathematics than classical logic, so the connection is not obvious.

I think programming will eventually become more mathematical, due to this connection.

<comment><USER11> No idea why this is downvoted. If you are a functional programmer you can lean on maths all day, and get wonderful correctness guarantees for your programs. The maths is typically very simple algebra, but it's there.

</comment></comment><comment><USER12> I did pretty well in math, both in high-school and in university, (Comp Sci degree, with Math a compulsory first-year subject), and when I try looking at a paper describing an algorithm in some Comp Sci related field it's literally _all greek to me_.

I end up spending large amounts of time figuring out the meaning of all the various symbols in the paper and how I can map that to an actual computer program.

Thankfully I have enough Math in the back of my mind to work through it, but good luck getting in to the really interesting things (e.g. machine learning, 3d graphics, whatever) without having a good mathematical background. Without it, you'll lose first hand access to almost any paper written on the topic.

<comment><USER13> Is the problem there the actual math, or the obscure, arcane notation that's used to describe it?

Combine that with the frequently terrible and all-too-often incomplete source code that's provided as a reference implementation...

<comment> semi-extrinsic It's not arcane notation, it's content-aware compression at work. When a mathematician sees a small greek delta with subscripts ij, they immediately know it's the Kronecker delta. If every paper would explain every convention and notation in the field, all papers would be huge and much less readable for those working in the field.

<comment><USER14> In other words, slang.

<comment><USER15> No, the very opposite of slang.

Slang is created and perpetuated mostly for fun or historically for hiding from others (e.g. gay slang, black slang, thief slang), changes quickly, and doesn't compress much information, mostly encodes a word with a different word.

The only common thing with slang is that its a dialect constrained to a specific group of the population (mathematicians).

</comment></comment></comment></comment></comment><comment><USER16> I took a number of math classes, but I've forgotten the overwhelming majority of it. It's hard to remember anything if you never use it for a full decade (my French is gone too). That's not to say I haven't used math, but I just look it up or learn it as needed.

The truth is that I found my math education was a strange liability. I removed my math minor from my resume, as it prompted math based interviews. Having a Google interviewer go: "I see you have a math minor, so I'm going to ask you some math questions!", followed by the guy getting frustrated for 30 minutes, isn't a great experience.

</comment><comment><USER17> > Number theory. If you're ever asked how one algorithm or data structure > performs over another, you'll need a solid grasp of number theory to make > that analysis.

Um, what? I mean, apart from some fancy/hypothetical cache aligning nonsense, I have no idea how this makes sense. Maybe someone can explain?

</comment><comment><USER18> In response to the dead comment

"Is CS a subfield of math or is math a subfield of CS?"

This is quite an interesting question because I watched a Robert Harper lecture where he argues the latter.

In a nutshell proofs can be mathematical objects and in particular they can be seen as programs.

<comment><USER14> When you use information to deduce information about information, you're doing both I guess. Abstract math was elusive to me in college because it was folding over itself, there was no concrete object layer as before. Anything could be reflected about. Sets of applications from sets of applications to sets of sets. After looking at lots of CS ideas I kinda recognize this too. You encode relationships between anything and deduce new relationships.

</comment></comment><comment><USER19> Yes I agree, math is extremely important for people who would like to become a Computer Scientist or Computer Engineer. The vast majority of people learning programming in school are not going to do that. Making these people learn these topics and possibly turning off potential students is counter productive. Many people could gain a lot by just having basic programming skills, and those people are scared off by any mention of the word math.

</comment><comment><USER20> This is more than slightly tangential, but that article led me by two steps to the Wikipedia article on OCaml based prop trading shop Jane Street Capital, which contained this very odd paragraph:

"A number of people involved with the effective altruism movement have recommended Jane Street Capital as a place to work at for people considering earning to give, and some of the full-time employees as well as interns have been from the effective altruist community.[7][8][9][10][11] In September 2012, Tim Reynolds, one of Jane Street's co-founders, stepped down from the job to redirect his energies towards the philanthropic pursuit of teaching poor students to master photorealistic painting.[12]"

</comment><comment><USER21> Agree. The term 'computer' itself comes from the word 'compute' as computer is built primarily to help human compute numbers. Many interesting real life problems can be modeled as mathematics problem - Halim & Halim, 2011

</comment><comment><USER22> Tsk, tsk,

The author isn't going to make friends of mathematicians by declaring MATH as a subfield of CS in a diagram that looks like an org chart (because it's from a Forbes article? :-))

I was once righteously scolded after saying that logic was "merely" the physics of information. I learned a lesson.

We all can do better with more cross-pollination of different fields of study and less categorization.

</comment><comment> guard-of-terra "you'd be hard pressed to find probability or number theory"

When I was interviewing we were always asking basic probability and combinatorics questions. They should probably only talk for themself.

</comment><comment><USER23> Is CS a subfield of math or is math a subfield of CS?

The graph in this article seems to indicate the latter, but i'm pretty sure that's not right. and how is AI a subfield

</comment><comment><USER24> Math is good and can be useful. I went back to school after 15 years to study math (currently studying for a Complex Analysis final.) If people are interested, I would encourage them to study math, whether or not they think they are "good at math." However, I disagree with most of this article.

Take this breathless assertion for example:

> "[S]oftware development is quickly shapeshifting. If you discount > mathematics, and in turn focus on learning transitory programming tools, > you'll be left without the skills necessary to adapt to emerging computer > science concepts that have already started infiltrating engineering teams > today. Without expanding mathematical knowledge, these software engineers > are going to risk being left out of the most exciting, creative engineering > jobs of the rapidly approaching future."

i.e. If you don't know math, in the future you'll miss out!

Not really. Adaption is a key skill of developers. Developers will adapt to whatever the future of software development brings. (And if not, there's plenty of maintenance to do!) Mathematical ideas only "infiltrate" software engineering to the degree that software engineering can accept them. It's a continuous process. Sooner or later, software engineering either absorbs a mathematical idea (e.g. relational algebra) or the idea passes out of fashion.

On the other hand, it has always been true that mathematics is part of many of "the most exciting, creative engineering jobs," for example: programming the Apollo guidance computer, implementing systems to predict the weather, designing the Page Rank algorithm, programming self-driving cars, simulating music synthesizers, or designing physics simulations for games.

So yeah, math is one of the places where the fun stuff is at, but you're not going to lose your job without it.

On the other hand, knowing CS fundamentals will probably help you adapt better than knowing CSS and some JavaScript.

> "We're far beyond the point of needing engineers to code simple solutions."

I don't think so. The bulk of software development work is in integrating 3rd party components, refining user interfaces and marshaling data between communication and storage formats/APIs. From a coding point of view, this is relatively simple stuff -- but doing it at scale, at speed, with quality and finesse still takes great skill, care, and time. We're not "far beyond" this.

> "[A]re we all really still going to be coding web and mobile apps 10 years > from now?"

Maybe not web and mobile, but there will be an equivalent.

One thing is certain, we're not all going to be coding machine-learning predictive data analytics engines from scratch. That is specialized work. If it's important enough to become mainstream, it will become componentised and commodified. Yes, there will always be companies developing the industry- leading "AAA games engine" or equivalent, but this is by no means the only way to participate in the market.

A final point: Software that is built on specialised knowledge (e.g. mathematical models, but it could also be physical, biological, psychological or other domain-specific models) often needs to be wrapped in a lot of non- specialised infrastructure in order to make it function as a product. There will always be roles for domain-specialists with software development chops, and these will be well-paid, fun jobs worthy of aspiration, but there will also be plenty of work for people who specialise in software (e.g. infrastructure, UI, networking, operating systems).

[edited to fix typo]

</comment><comment><USER25> True - you can't go too far in programming without math.

<comment><USER26> I very much disagree. I suppose it depends on how exactly you define "far"... but I've been a professional programmer for 15 years now, and have very little math skills (maybe some algebra? mostly forgotten by now, and calculus always escaped me).

As a web developer, most of my skill have to do with designing user interfaces and API's, learning various libraries/languages/frameworks, defining problems, estimating, communicating with other humans, etc.</comment></comment>


Show HN: Walkbase, room-level context for your apps. - <AUTHOR>

Hi guys!
Our team of HN lurkers been hard at work for what feels like an eternity now and today we're proud to present our first public product: The Walkbase library for Android. You can get it at www.walkbase.com
With Walkbase, app developers can push location-specific room-level context (e.g. in-game content, coupons, mobile ads) to various smartphone apps. The idea is to give you a logical context (e.g Starbucks, SOMA) rather than an approximate GPS position for your users and we hope devs will be able to build a bunch of cool stuff on top of this.
We hope you like it and find it useful. Feedback is of course very welcome! <comment><USER2> Hey guys I've tried signing up as a developer but haven't gotten a registration email yet and therefore can't start using the library, is there some sort of waitlist??

I'm currently developing an app that could really use Walkbase's library / functionality, I'm really excited to start building with Walkbase as soon as possible!!

<comment><USER3> Hi, Sorry for the inconvenience. Seems that some of the registration emails end-up in the spam-folder for some users.

Please check your spam folder for the mail. If it's not there, you can contact us directly at firstname.lastname@example.com and well set you up an account directly asap.

,,Tuomas Wuoti CEO, Walkbase

<comment><USER2> No problem, the confirmation email was in spam folder, found it and my account is active! Thx, really great API, can't wait to start developing with it!!

<comment><USER3> Great to hear. We're happy to have you as part of the growing Walkbase developer community. If anything comes up, we're here to help!

</comment></comment></comment></comment><comment><USER4> Just reading "indoor positioning platform" is enough to make me salivate. Most interesting startup I've heard about in ages.

</comment><comment><USER2> This is AWESOME!!!! Exactly the location functionality I was looking for to support a new app I'm building

<comment><USER3> Great to hear! Hit us up on firstname.lastname@example.com if you have any questions on this.

</comment></comment><comment><USER5> Clickable: <http://www.walkbase.com>

</comment><comment><USER6> this is pretty cool if it works. It would be a great companion to a service like Apple's Find My Friend service they just launched.</comment>


Ask HN: Why do companies buy startups? - <AUTHOR>

There is always a lot of talk on HN about how and why to get bought.  I am also interested in the other side of the equation, why do big companies go around buying startups so often?<p>Is this how they handle innovation once all the baggage of being a big company gets in the way? <comment><USER2> There are many reasons companies by start-ups, and start-ups need to be aware of what they are offering or could offer to be a good acquisition target.

1) purchasing the team - I'd put friendfeed and summize in this category. Facebook could have built a friendfeed quite easily, and twitter could have built a tool to search their own databases. Both companies decided to acquire an outside company who had already done a great job and got traction in the space. If you look at the structure of Facebook these days, it seems that friendfeed founders are having a huge impact on the company. Also summize was absorbed into twitter, and I'm very surprised to see that FriendFeed still exists independently.

2) Technology/Patents - Apple purchasing PA Semi and HP purchasing Palm are both likely to be considered purchasing of technology which may or may not include patents (though I assume patented technologies increase the valuation of the acquired companies). HP wasn't in the business of developing an operating system from scratch, and Palm had already done that AND had a large number of valuable patents. Likewise, Apple wasn't going to start-designing chips from scratch, so they looked for a company that already had what they needed or had some of the technologies and purchased them. This isn't to say that these companies don't also benefit from the people who are current employees of the acquired company, but as we've seen with some of the departures from Palm since being acquired by HP, there is no guarantee the most valuable employees will stick around.

Cheap innovation - as you say 'being a big company gets in the way'. Yes, start-ups can be a cheaper alternative to home-grown innovation. But the start-up needs to offer something competitive and depending on the market, may need to have market penetration. I'd say this is kinda the Yahoo! model of a few years ago when they were snapping up many start-ups and maintaining many separate brands (flickr, etc.).

Looking at the above methods, I'd suggest that there is likely a bit of each in each good acquisition. Take Mint as an example. Intuit purchased Mint.com for $170 million, and instantly got a great and innovative product (#3), that likely has very good technology (#2 I'm not sure of their patents or technology, so I could be wrong), and put the Mint founder Aaron Patzer as the VP and GM of Personal Finance at Intuit.

I'm sure there are other reasons, but those are the top 3 that I think of.

<comment><AUTHOR> _...start-ups need to be aware of what they are offering or could offer..._

That's exactly why I was thinking about it, thanks for your thoughts.

<comment><USER2> You might be interested in <http://www.early-exits.com/>. I haven't read it, but meat Basil and I've heard him refer to it a few times. It seems to be targeted at what you're thinking about.

</comment></comment></comment><comment><USER3> Big companies are immobile. It's very very hard for them to make decisions, especially ones that would require a dramatic shift in strategy.

They are stagnant, and believe that they cannot give up their existing business. So instead of shifting focus and 'pivoting,' they purchase a startup.

There's a great explanation of this in this recently popular post: [http://steveblank.com/2010/06/07/when-big-companies-are- dead...](http://steveblank.com/2010/06/07/when-big-companies-are-dead-but- don%E2%80%99t-know-it/)

</comment><comment><USER4> Big companies buy startups for several reasons; 1\. to get a headstart over the competitors. it take quite a lot of talents, cost, etc to kick start a new innovation and technology. by acquiring a startup, it shorten the process a lot. 2\. to create a monopoly. if the startup is a niche biz or something revolutionary, by acquiring the startup, they just create a monopoly, what's left is just to milk it.. $$$. Being a big company, what do you think they really care more? innovation or p/l?

</comment><comment><USER5> If a business is profitable, a publicly listed company can "arbitrage" the deal. As some rough numbers, a private sale nets 2-4 times profit as value. A public company is valued at 10-12, sometimes as high as 20 times.

If they buy a company making $500,000 at 4 times (for $2 million) the publicly listed companies value goes up, at a 10 times multiple, by $5 million.

Spend 2, and increase own value by 5, for a net of 3 million. Seems like a nobrainer really.

</comment><comment><USER6> It is a lot like buying a house that's already been remodeled. Someone else has already gone through the stress and taken all the risk (e.g. going over budget, not finishing, etc). Rather than doing R&D in house and pouring money and effort into projects that may never see the light of day, you can buy companies that are already seeing some success.

</comment><comment><USER7> It's also core competency. If the startup does something way better than what the big company is trying to gain market share to, why not buy it than trying to figure it out from scratch. It can be more cost-effective that way.

</comment><comment><USER8> I assume part of it is eliminating competition. Suddenly, their marketshare is your marketshare!

</comment><comment><USER9> 1\. Talent/People

2\. Technology/Innovation

3\. Competition

</comment><comment><USER10> Along with the other answers, there is often the case that the startup is, you know, _actually profitable_. My company buys them and grows the company in order to make more money. Their principals sell in order to achieve liquidity. Win Win.</comment>


Aether – create community moderated, distributed, and anonymous forums - <AUTHOR> http://getaether.net?hn

<comment><AUTHOR> Lastest discussion was from 2 years ago: [https://news.ycombinator.com/item?id=6603230](https://news.ycombinator.com/item?id=6603230)</comment>


World's Most Admired Companies - <AUTHOR> http://money.cnn.com/magazines/fortune/mostadmired/2011/full_list/

<comment><USER2> Accenture make the top 50? A lot of "business people" must be blind, stupid, lying or all three.

<comment><AUTHOR> Yeah, I'd love to see a list of companies rated by "computer people".

<comment><USER2> I was quoting the article, and it's disconcertingly vague summary of the sample group.

</comment></comment></comment><comment><USER3> Interesting to Nestle there:

[http://en.wikipedia.org/wiki/Nestl%C3%A9_boycott#The_baby_mi...](http://en.wikipedia.org/wiki/Nestl%C3%A9_boycott#The_baby_milk_issue)

(thanks for posting)

<comment><USER4> I've never heard of that. I doubt I'm alone. It only takes one person to declare a boycott, it takes rather more for the boycott to be effective.

<comment><USER3> Yeah, I remember my mum telling me years ago about Nestle and their various practises in Africa - outrageous. One of the least ethical companies I've ever heard of. But lots of big companies have questionable ethical practices (Shell, Apple, GlaxoSmithKline)...

</comment></comment></comment><comment><USER3> ...and where's BP? :-)</comment>


Tell HN: San Francisco Meetup on July 8th - <AUTHOR>

6pm - whenever at Eddie Rickenbackers, a spacious, well-lit and not too loud or pricey bar at 133 2nd Street, just 2 blocks from Market Street. Nearest Muni/BART station: Montgomery.
Since it's a bar, it's 21 and over only, sorry to younger HN members.
Eddie Rickenbackers is a historic SF bar known for its collection of 40 vintage motorcycles, which hang from the ceiling, but fortunately by very strong cables. They have decent food too, if you want something to go with your beer. And free Wi-fi.They're expecting us, so there'll be an extra person behind the bar. Don't forget to tip!
Bring your ideas, business cards, war stories, and network or just chat with other HN members.
The last meetup in SFO was a great success - all credit to Inkzee's Alex Barrera for organizing it. The only problem was so many enthusiastic people crammed into a small space. This time there'll be plenty of room and you won't have to yell in anyone's ear, unless you really want to of course.
I'll post a reminder next week. Hope to see you there! <comment><USER2> Early risers are welcome at the Bootstrapper Breakfasts <http://www.bootstrapperbreakfast.com/>

       July  3 7:30AM  Palo Alto (First Friday of the month)
       July 10 7:30AM Milpitas (Second Friday)
       July 17 7:30AM San Francisco (Third Friday)
       July 21 7:30AM Santa Clara (Third Tuesday)
       July 24 9:00AM Mountain View (Fourth Friday)
       August 5 7:30AM (First Wednesday)

There is also a Hackers & Founders Meetup Tuesday 6pm July 14 in Mountain View see <http://www.meetup.com/Hackers-and-Founders/> and <http://news.ycombinator.com/user?id=iamelgringo>

</comment><comment><USER3> I'm looking for some front-end web app development help for my revenue- generating startup. We are preparing to grow rapidly this fall and could use a hand for as short as a few weeks, or as long as permenantly.

We need some straightforward AJAX stuff for a relatively simple CRUD application - no super-fancy design, no strict requirements besides that it works great and looks at least OK. Platform is open source, MySQL, some Python, etc, but you can use what you like (as long as it isn't Microsoft : )

Interested in chatting more? Email me at cooper dot marcus at gmail dot com and let's meet up at the Meetup!

</comment><comment><USER4> Sounds good, i'll show up. <http://www.yelp.com/biz/eddie-rickenbackers-san- francisco>

</comment><comment><USER5> Wish I was still in the Bay Area, the last one (and only one I've attended) was pretty incredible. Highly recommended.

</comment><comment><USER6> Good deal - I'll be there!

</comment><comment><USER7> This is still on right?

<comment><USER8> I haven't seen a followup post, but I hope so too... I'm planning on going but I'm not sure how I'd recognize anyone.</comment></comment>


Rubberduck – COM add-in that enables IDE features in the Visual Basic Editor - <AUTHOR> http://rubberduckvba.com/ <comment><USER2> I use VB6 all the time. Need to quickly get some custom serial port thingy written? VB6. Want to make a quick window that hosts 4 embedded VLC COM instances to watch RTSP camera streams? VB6. My craziest use case out in the field was: Wall mounting a spare mouse and soldering two wires to the left button inside, running a wire back to the office with the computer playing pandora and then writing a quick app to turn down the wave out and un mute Mic In so the restaurant owner make announcements over the loudspeakers. The code was already out there for the mixer, I just had to add a line for monitoring the parallel port and adjust the sliders in someone elses code.

<comment><USER3> I have used vb6 professionally for 20+ years. It is still a really powerful tool for getting things done.

</comment></comment><comment><USER4> I got this approved at a previous employer when I was writing some VBA/Jira automation. It's.. OK. I found it slowed down my environment quite a bit and was unstable. I stopped using it eventually.

<comment><USER5> I've had the same experience with RubberDuck. MZ-tools ([https://www.mztools.com/](https://www.mztools.com/)) on the other hand is a VBA tool I couldn't work without. Doesn't slow the IDE down and stable as a rock.

<comment><USER4> Thanks, I'll give that a try. I think RubberDuck shows a lot of potential, it just needs the speed and stability improved now.

</comment></comment></comment><comment><USER6> > _" Bring the VBE into this century!"_

This actually gave me goosebumps...

Are there many modern _use-cases_ for Visual Basic? All I can think of is horrible scripting code for Excel, Word and AutoCAD

<comment><USER7> You wouldn't believe how much business value flows through Excel spreadsheets.

</comment></comment><comment><USER8> Name already in use for those USB hack-tools.

<comment><USER9> Name already in use for Ernie's bath toy.

</comment></comment><comment><USER10> I had to actually google "Visual Basic Editor" to find out why it was a thing people are still using in this century, and found out that it's the editor for VBA macros in MS-Office applications. So "Visual Basic Editor" is a bit of a misnomer...

<comment><USER11> It's a bit reductive to call it "the editor for VBA macros", it's like calling Visual Studio a "template editor" because you get a set of template files when you create a new project.

The purpose of VBE is to build applications, it's an IDE. Add-ins like Rubberduck are actually very useful in extending the capabilities of VBE and there are still millions of people using VBA every day to solve business problems.

<comment><USER12> Most people associate Visual Basic with, well, Visual Basic (as in VB6 or VB.net), not with VBA. Even the top voted comment refers to VB6. "VBA editor" instead of "VB editor" would solve the confusion I guess.

</comment></comment></comment><comment><USER13> Add Javascript to VBA and allow users to use WebStorm or VS and we'd have something great. I gave Rubberduck a go a few years ago and was rather underwhelmed when compared to a real IDE (which is understandable, as Rubberducks creators don't have $$$ behind them)</comment>


Ask YC:How do you create a website? - <AUTHOR>

Does the person having an idea create the new website around his own needs(such website never existed so i'll create one so i'll get around my time on the internet more efficiently) or is the build more concerned with the future visitors the site expects?
Also,how does one start on building the website:does he create the main purpose fulfilling html elements first and then the other elements? or the systematic planned future approach?
For eg.If you were creating digg.com what would you create first
the submit new url button and view the most popular and then add the other elements as time passes. or
you would first the plan the whole page layout(as in final design)and then build the whole thing like categories at the top,sign in button,user pages (the way the elements appear from top to bottom on a page? <comment><USER2> You're mixing up a couple of questions here. One is "should I build just a minimum set of features and then add features slowly, or should I first draw up a design that includes every single feature I think we might eventually want?" The other is "should I build a site that works well for only one user -- probably myself -- or should I design with the assumption that there will be a lot of future users?"

These are important and controversial questions with answers that depend on the circumstances. The general approach advocated around here tends to be "start small; don't build things you aren't sure you're going to need; launch your site as fast as you can with the minimum number of features and don't build more until you're sure that users are interested and that they want more." But that approach is tuned for certain problems -- specifically, it's tuned for bootstrapped startups that are exploring new classes of application that might or might not have a market. One might argue (I would) that the _majority_ of problems are well suited to that strategy, but no doubt there are some problems where other strategies are more appropriate. (e.g. you're designing a site for the Olympic Games, which will have relatively few users for months, then have thousands of hits per second for two killer weeks, then have a much smaller number of users going forward. You're not going to get to iterate the design over and over after the Olympic opening ceremonies; you have to plan ahead and build all the features you want, in a scalable fashion, in advance.)

Your question is related to the problem of categorizing software development processes. You might want to check out these two links for a start:

<http://en.wikipedia.org/wiki/Waterfall_model>

<http://en.wikipedia.org/wiki/Scrum_>(development)

Or, if you have an idea for a website, you might be better off skipping all this management-class stuff, learning some HTML and/or PHP or Ruby, and putting a site up! Design it just for yourself! Don't put in more than one button at a time!

</comment><comment><USER3> You can't plan for hypothetical future visitors with unknown needs and wants.

Design and build your idea based on your research and if/when you survive the first 6 months, then start to add features requested by your community (and thank whatever almighty you believe in that you do in fact have a _community_ )

Now, if some VC dumps a bunch of money on you, then by all means throw in everything but the kitchen sink and burn, burn, burn that cash until you exit ;)

</comment><comment><USER4> I will tell you what I have learnt in one year of running <http://www.muziboo.com>

1\. Start small but do those small things right. Think of how new people will come to your site. If you are a content site, the chances are SEO, so think of it from day one.

2\. Listen to your users and build what they want. Sometimes bloggers and press don't exactly know the needs of your users (unless you are building feedburner)

Keep tracking everything and see what works and what does not and then base your future work on it. Try to spread faster than word of mouth :)

<comment><USER5> Thats a nice site you have built. How are u working out the RIAA issues?

</comment></comment><comment><USER6> First, ask yourself "What do I want from this web site?" Let your answer to this question drive your design. Before you even get into the html, brainstorm. Let your imagination go. Write your thoughts down, sketch it out. Then consider how to build it.

The first step for me is a wireframe. That's just a drawing of how the main blocks will be laid out. Read Michael Parkatti's post: <http://www.socialbias.com/the-case-for-building-wireframes/>. Michael makes a strong argument for wireframing and reading it helped me understand my own struggle with design.

Next, build the wireframe. You drew it, now build it. Write the html and css to mimic your picture.

The next stage is filling in those boxes. You can start with the hard stuff but I prefer to crank out the easy stuff first. My goal is not to make the site beautiful (yet), just pretty enough to help me see some context.

As for the hard stuff, it depends on what you're trying to build. Digg took lots of talented people a lot of time. Make sure if you have your sights set high that there isn't a known "clone" that you can borrow as a template. Otherwise get used to learning scripting languages and frameworks. Good luck!

</comment><comment><USER7> When starting a new website or any business, I think the most important part is being passionate about the product or service you are trying to sell or the problem you are trying to solve. Usually, being passionate about something, means it is closely related to your own needs.

Approaches to building the actual website vary greatly. Some people prefer writing detailed specs first, while others prefer a prototyping approach -- to start working with a tangible product sooner and get feedback early. I prefer the prototyping approach for new websites.

When you start the actual development, focus on the core elements first (e.g. Digg couldn't function without it's core news algorithms and digg tracking, but did not need other peripheral features to move forward). I also like to work out my database design and user interface (screen mockups) early in the process. 37Signals recommends rough sketches and HTML mockups at the outset in their "Getting Real" book. After a few projects, you will likely have your own optimal approach that works well for you.

</comment><comment><USER8> MINIMUM VALID TEST

You start with the idea, find the assumptions in the idea (of why it's useful), you create a product that tests those assumptions, then adjust accordingly.

Plan, yes, but don't put way too many stupid features that don't matter. Your users as a whole are smarter than you and the market will tell you what to focus on. Create the minimum valid test.

</comment><comment><USER9> In a text editor.

People don't want websites, though. They want services, products, information. The creation of those is a debated topic.

</comment><comment><USER10> You expect someone to explain web application engineering in this comment section?

<comment><USER2> Sure. Behold the miracle of hypertext:

<http://philip.greenspun.com/panda/>

Rather dated now, but the basics are still the basics. For somewhat newer material (but geared toward comp sci students):

<http://philip.greenspun.com/seia/>?

There. The rest is detail. ;)

<comment><USER11> I find this little passage (from chapter 1 of your "panda" link) is a good bit of wisdom that is just as true today as when he wrote it:

"People come to Web sites looking to get a job done or a question answered. The first thing the guys at www.fedex.com did was publish a Web interface to their package tracking database. That was back in 1994. When they decided to add corporate information they put it on an entirely separate site: www.fdxcorp.com. (Today the sites are merged.) "

</comment></comment></comment><comment><USER12> First go to <http://www.designmeltdown.com> and get the best of the best.

Then copy, change, polish and release.

Presto.

Profit!</comment>


Ask HN: start with python 2.6 or 3? - <AUTHOR>

if you were learning python right now as your first language and you wanted it to play well with others (django, scipy, matplotlib, GAE etc) - do you start with something stable with loads of documentation and then migrate to python 3 (heck it's 3.1 already) or do you skip the mental overhead of unlearning some things that'll get baked in by using 2.6? <comment><USER3> The official guideline (<http://python.org/download/>) is fine:

 _Note that both Python 2.6 and 3.1 are considered stable production releases, but if you don't know which version to use, start with Python 2.6 since more existing third party software is compatible with Python 2 than Python 3 right now._

If you're just learning to program now, you'll have an easier time if you stick to the officially sanctioned features of Python, rather picking up bad habits from deprecated back roads. There aren't many of them in Python 2 compared to some other languages, but if you want to be safe, Python 3 was meant to eliminate as many of those as possible. You'll get a similar benefit if you follow the official Python 2.6 tutorial first, before reading introductory Python books that were written before Python 2.6 was released.

To be super specific, these are the things that you should try to stay up to date on:

1\. Unicode support in strings

2\. "New-style" versus "old-style" classes

3\. The "with" statement, and context managers

4\. Generator functions and expressions, versus list comprehensions and plain ol' for loops

If you watch out for these, and read the "What's New in Python X.Y" documents for each version between the one you started on and the newest release, the transition shouldn't be too hard.

The projects you're depending on may also offer some hints about when they'll do the 3.X transition. SciPy depends on Numpy, which depends heavily on the Python 2.X C extension API and will take a long time to convert. Django is basically pure Python and can probably convert sooner. GAE is Google's infrastructure and will probably be 2.X for years.

<comment><AUTHOR> thanks for that and to all the other HNers that took the time to reply - <USER2> think i'll go with 2.6 but book a recurring task to make sure i'm at least aware of the changes in moving to 3.1

</comment></comment><comment><USER4> > do you skip the mental overhead of unlearning some things that'll get baked > in by using 2.6

You're thinking that this is a significant thing. It isn't, at least not if you become a somewhat competent programmer.

Programming has very little to do with programming language details.

In fact, there's a reasonable argument that the more languages you know, the better programmer you're likely to be. Unfortunately, the difference between 2.6 and 3.1 probably isn't enough to help you in this regard. It is, however, enough to help you see some issues wrt language design.

</comment><comment><USER5> If all the libraries you need are already available for Python 3, then use Python 3. Otherwise, fall back to the 2.x series. Be practical. Evaluate your own needs before you listen to somebody else. The 2.x branch is here to stay for quite a long time (I'm guessing 2 to 5 years).

<BEGIN RAMBLING> If the users don't drive the library authors/maintainers to make their code compatible with Python 3, then we'll have to wait a very _very_ long time for the 2.x branch to go away. I'm not saying Python 2.x is bad in any way. It just takes too much effort to maintain separate codebases for separate versions of the language. Also, I'm sure the language developers could do something much more useful with their time if they focussed on one version of the CPython implementation. <END RAMBLING>

<comment><USER6> This is true. I would have said 2.6, because library support for 3.0 is quite wanting. But you're absolutely right: without demand it will never get there.

</comment></comment><comment><USER7> You can use a lot Python 3 features in 2.6 and later. This document, <http://docs.python.org/3.0/whatsnew/3.0.html> describes the difference between the two. So while I agree with the other posters that it it would be better to start with 2.6 I also think you could minimize your upgrade pain by knowing the differences and doing as many things as you can in the Python 3 style.

</comment><comment><USER8> Practically speaking, if you want to leverage a lot of those libraries/frameworks you mentioned, 2.x is the way to go. However, the major syntactical and core differences that break backwards compatibility in Python 3000 (<http://docs.python.org/3.0/whatsnew/3.0.html>, <http://docs.python.org/3.1/whatsnew/3.1.html>) should be in the back of the your mind.

After working in a bit of py3k, I've found that "small things" such as using print() as a function rather than a statement comes more naturally than in Python 2.x, mostly because the latter doesn't complain about it.

Other things like xrange()'s departure in py3k as range() becomes a true iterator -- that's something you'll have to be cognizant of.

My advice is if you want to get a large project done, with support from popular and existing frameworks, go with the 2.x branch. If you're whipping up some disposable scripts, practice with py3k. And even if you're not, fire up py3k anyway.

One of the great Google Summer of Code projects this year is the inverse to the 2to3 tool -- 3to2 -- with the forward-thinking intention of making it easier to maintain one branch of code in py3k. It isn't a magic bullet by any means, but should definitely encourage the transition from Python 2.x to 3000.

</comment><comment><USER9> I'd go with 2.x, simply because theres more code written in it, and more code one can read and learn from. Especially if its a first language, its good to learn from real code. In the beginning it was hard for me to read source code, but eventually i started "getting it". 2.x will eventually evolve in to 3.x with 2.7 and 2.8 so its safe to go with it for now. Plus the mental overhead is not that big, 3 is not that much different from 2.x, its still python.

</comment><comment><USER10> Since it will take a while for the 3rd party libraries to be ported to 3.x, start with 2.6. The versions are not different enough for it to be a big problem either way you learn them - but there are more books out for 2.x - like the Python in a Nutshell book, which I find to be the best reference (though not the best book for beginner programmers). Then, you can refer to the "What's New in Version x" entries in the documentation on the Python site to learn the later versions.

</comment><comment><USER11> That depends on what you need. In general, I would recommend 3.0. It is more modern and has some nice enhancements and is the way to go in the long run.

With that said, some libraries still haven't made it to Python 2.6 let alone 3.0. For instance, I make use of NumPy which was compatible with 2.54 but not 2.6 the last time I checked.

</comment><comment><USER12> You start with 2.6. When you start working with python, you are not just going to use the libraries which comes with language. you need to use plenty of projects or modules developed by other users.

Start with 2.6 but consider 3.0 changes in mind like exception base, print statement. Start practice 3.0 convention using 2.6.

I think, atleast two to three years of development for people to port all their projects to python 3.0.

Sure, you will miss many things, but you are on the way.

</comment><comment><USER13> If only wxPython were to be available for Python v3.1 then I would choose that. Because it isn't yet, I prefer v2.6 and use "from future import ...."

If you don't choose to use any libraries that require v2.6 or older right now, then I'd encourage the choice of v3.1. I'm hoping all libraries will run with v3.1 given enough time.

</comment><comment><USER14> I would start with 2.6. The changes are not all that drastic between the two, and there's almost no software available for python 3.

</comment><comment><USER15> There is no point to lament, take whatever you want, it's not a problem to switch either way.

</comment><comment><USER16> Go with 3.

Being a trailblazer can reap rewards in the long run.

<comment><USER17> No, if you're a newbie, make things easy on yourself and use 2.6. Once you've got some experience under your belt you'll be able to _easily_ pick up 3.0.</comment></comment>


See what your SF rent gets you in an emerging city - <AUTHOR> https://twitter.com/buildatmos/status/1262441258695286784 <comment><AUTHOR> We built a page to compare what you could build in an emerging city vs paying rent in SF/NYC/LA!

[https://buildatmos.com/timetobuild](https://buildatmos.com/timetobuild)

<comment><USER2> Love the idea

Prices esp for LA, Austin, Boulder and other cities seems tremendously off unless considering the cheapest areas of each city rather than the average sq foot price.</comment></comment>


Ask HN: Why tech industry is so obsessed with pizza? - <AUTHOR> I can understand why it is a popular choice with events – it is just 1 dish with different nutrients, everybody is familiar with it, you can eat it with your hands. But seriously, everything is about pizza! Why is it so? Marketing? Culture? <comment><USER2> A few reasons I think:

\- inexpensive \- delicious \- stacks well (can serve at scale) \- not messy, even without plates

Nearly everyone likes pizza, and there are lots of varieties for various tastes.

At my work, we've tried various foods, but we always come back to pizza because it's so universally liked and so convenient.

</comment><comment><USER3> Not mentioned already is that pizza is ubiquitous within the US. Pretty much anywhere you go, you can order pizza from one of Dominoes/Pizza Hut/Papa John's/Little Ceasar's/local pizza shop. If you're supporting events across the company, pizza is the easy choice, especially since it's easy to order in bulk and easy to clean up afterwards. And as already mentioned, it can be made gluten-free or vegan to satisfy most food restrictions.

</comment><comment><USER4> It's not just the tech industry...it's the whole world.

</comment><comment><USER5> What food would you expect to see instead? I also see lots of sandwiches and (in Silicon Valley) salad. Though I wish there were more healthy options, I also have to admit that some of the time when there are healthy options (veggie sticks), I choose to eat the less healthy stuff that's available.

<comment><AUTHOR> I don't know. As I said, in case of events it is understandable (small events can't afford catering and it is probably overkill).

But I am more curious about culture as well. Pizza is very ubiquitous, and from my experience people prefer it even when they can easily choose something else to eat. Of course, many people just like pizza, but it is sort of a no- brainer to order pizza if team stays late, although it is simple to order something else.

edit: bad grammar :\

<comment><USER6> Didn't start with the tech industry. If you were a kid in the 80s or 90s, the vast majority of parties were pizza parties. This was also the entire business model of Chuck E Cheeses, which ran a ubiquitous series of commercials in the 80s. Its popularity in late-night hackathons and meetups is likely a holdover from college (where pizza at events is also ubiquitous), which itself is a holdover from childhood.

The history of pizza in the U.S. is itself fascinating. It was largely limited to Italian immigrants until WW2, when soldiers returning from the Italian campaign developed a taste for it. It exploded in popularity afterwards, particularly from the 1960s onwards. This is perhaps related to it being easy to eat without utensils, which made it convenient in the car/drive-in culture of that time period.

I was also surprised to learn that the vast majority of pizza varieties in the U.S. are actually American inventions, and that pizza in Italy basically consists of two varieties: marinara and margherita. All this stuff about pesto pizzas, BBQ chicken pizzas, meat lover's pizza, broccoli pizza, Hawaiian pizza, etc. are North American (including Canadian) inventions.

<comment><AUTHOR> Ha, very interesting, thanks for the insight. I am not from the US, so I guess that's why it was always fascinating for me. But it makes total sense, given that american culture (I live in the States nowadays) appreciates speed and comfort. Pizza is fast, easy to eat, everybody is easily onboard with the idea.

</comment></comment></comment></comment><comment><USER7> It's the quintessential cheap delivery food that the world love, and it got there through decades of unorganized marketing.

I wouldn't be surprised if it'll be replaced in a few generations or so by something else (popplers?).

</comment><comment><USER8> When we release a new version, we always have a big pizza delivery. I'm struggling to think what food you could replace that with, that could satisfy the broad mix of people in our place.

It's a good question though!

</comment><comment><USER9> In my city some tech events make the point of publicising the fact that they don't have pizza and instead have a proper buffet. Apparently the buffet is cheaper for them too!

</comment><comment><USER10> Why is the shark basically unchanged for 450 million years? Perfect adaptation to the environment.

</comment><comment><USER11> In my opinion, Ramen (asian noodles) deserve some room in the junk food podium. There is even an essay from Paul Graham quoting them (Ramen profitable) ;-).

</comment><comment><USER12> It's the least expensive per serving food you can get delivered.

<comment><USER13> Döner Kebap is a cheap alternative

<comment><USER14> The quality varies wildly, and a lot of people have preferences with their kebabs - chilli sauce, garlic sauce, mayo, chillis, etc.

It's pretty hard to mess up a pizza, especially if one of the main foods you deliver is pizza.

Plus, if you're a veggie/vegan, or you have gluten intolerances, pizza is still an option - as long as they get it right. I once had a nightmare scenario where a pizza place gave a vegan pizza to one of my co-workers with coeliac disease. When this person fell ill, the chef said "I thought they were just fussy".

</comment></comment></comment><comment><USER15> It's the second most perfect food, next to The Sandwich.

</comment><comment><USER16> Any example which tech ? In my country seems not that popular

</comment><comment><USER17> You share a pizza, which makes it more communal.

</comment><comment><USER18> pizza has the highest margin of all fast food varieties. I think this is also the reason it was available for delivery long before modern food delivery services.</comment>


Amazon ends its unlimited cloud storage plan - <AUTHOR> https://techcrunch.com/2017/06/08/amazon-ends-its-unlimited-cloud-storage-plan/ <comment><AUTHOR> I really like their service as an additnal backup at times with rclone. Not sure if i will continue the service.

What do other people use for cloud storage with several hundred GB Without high monthly fees?

<comment><USER2> 2tb is $10/month on iCloud, and it's _not_ designed to a) mine your data b) loss-lead and kill the competition.</comment></comment>


China Employes 30,000 "Internet Policemen" to Monitor Traffic - <AUTHOR> http://www.iht.com/articles/2008/10/02/technology/02skype.php

<comment><AUTHOR> I'm not sure if this is a startup opportunity or a political post. If nothing else, from a technical standpoint, China's monitoring of its citizens must be either a) hugely resource-intensive or b) having a lot of holes.

Maybe a little of each.</comment>


New iOS malware steals Apple ID, buys apps - <AUTHOR> http://researchcenter.paloaltonetworks.com/2014/09/appbuyer-new-ios-malware-steals-apple-id-password-buy-apps/

<comment><USER2> New "jailbroken iOS" malware. There's a big difference.

</comment><comment><USER3> Wouldn't it be very easy to catch these guys by looking who uploaded the apps that are being purchased..</comment>


100 CS Students Writing 100 Blog Posts - <AUTHOR> http://informatics-sapm.blogspot.co.uk/

<comment><USER2> As a student in the class I feel I should point out what this is all about.

As one of our assignments we were tasked with taking a required or recommended reading from one of our lectures and writing a blog post on it. This blog has all of our submissions. Feel free to comment on any articles.</comment>


Ask HN: Does versioning an encrypted file in a git repo make it less secure? - <AUTHOR>

Hi HN. This has been bugging me a very long time, hopefully the brilliant minds of HN can enlighten me.
I use KeePassX as a password manager, and I store the kdb file in Sparkleshare folder as a way for backing up and syncing with multiple devices.
The kdb file in itself is encrypted, but if someone stole the git repo, they technically have many versions of the same file with minor variations. Would that in any way reduce the security of the file?
Would really love to hear with people think. <comment><USER2> I found the following info on the KeePass homepage[0]:

>For both algorithms [AES/Twofish], a 128-bit initialization vector (IV) is generated randomly each time you save the database.

>This allows multiple databases to be encrypted using the same key without observable patterns being revealed.

I'm no crypto expert, but I think this also covers multiple versions of your kdb file.

[0]: <http://keepass.info/help/base/security.html#secencrypt>

</comment><comment><USER3> I do not think HN is the best place to ask this.

Try <http://security.stackexchange.com/>

Submit the answer back for HN to discuss if you want.

<comment> iso8859-1 submitted: <http://security.stackexchange.com/q/35831/13510>

</comment></comment><comment><USER4> I am not a cryptographer, but looking at a KDB file in git (with xxd in- between), it would _seem_ you're safe (esp. considering pfg's sibling comment). This pattern of differences repeats for all of the 4 commits I tried: <http://i.imgur.com/rxesWJl.png> \-- so basically there's only two constant 16-byte sequences, there rest of the file being entirely unique.

<comment><USER5> If you wonder why you're being downvoted: it's probably because there is consensus that either a system has been checked by security professionals (be it mathematicians or implementors) OR should not be considered secure. Note that it is not an exclusive or! Your reasoning only proves that a specific type of attack is unlikely to succeed, but does not say anything for any other attack.

<comment><USER2> I basically agree. However, if you trust KeePasses implementation of AES-CBC and you consider the fact that the IV will be randomly generated for every file version, you're betting on AES-CBC not leaking any information about the plain-text (which hopefully some expert already checked).

I don't know whether the AES implementation in KeePass has been checked by someone considered an expert yet.

</comment></comment></comment><comment><USER6> I haven't reviewed KeePassX but they've published a bit about their encryption. They say they're using AES-CBC with random IVs, generated each time the database is updated. You should be fine keeping it versioned.

Three scenarios in which it would be potentially unsafe to keep a versioned password database, from worst to least-worst:

* Had they used AES-CTR with a fixed key and nonce --- a surprisingly common design, unfortunately --- then every save they did would create a chunk of ciphertext encrypted under the same keystream as some previously versioned chunk. This is fatal to the security of AES-CTR; it is a failure mode that keeps me from recommending AES-CTR. (Similar problems exist for the other stream modes).

* Had they used AES-ECB --- ie, the default mode of most AES libraries --- every repeated chunk of 16 bytes would be evident in the ciphertext of the database, and, worse, the versioned copies would likely create variants of that data at different offsets. Combined with known plaintext (maybe there's some in the KeePassX headers?), this could set up an attack, albeit a very elaborate one that would require lots of changes to the database.

* Had they used AES-CBC with a fixed IV, instead of generating it randomly every time the database was updated, they'd have the ECB problem on first blocks of each message. Messing up the CBC IV is a very big problem in online systems where attackers can take many thousands of bites at the apple and adapt their inputs in response to what the target does, but it's less of a problem in offline systems like KeePassX and would have been a mostly theoretical problem.

The bigger problem with KeePass is that it doesn't see to do a good job of deriving keys from passphrases (as documented, it uses salted SHA-256). Maybe that's changed since their security page was authored, but that problem would keep me from putting a KeePass database on any machine I didn't control.

<comment><USER2> Is the key derivation bad because of SHA-256, or because it is too fast/easy to brute-force? According to the security page, they do 6000 (AES) encryption rounds on the key after hashing it (6000 by default, you can increase the work factor). So I guess this is comparable to what bcrypt/scrypt does?

(There's something on the security page saying that KeePassX (as opposed to KeePass) only partially supports this, though.)

</comment></comment><comment><USER7> It depends what encryption algorithm you used. In short- Maybe.

</comment><comment><USER8> Depends on algorithm. Do not store binary data in GIT, make separate archive with binary files if you need them.

<comment><USER9> To follow up on what mifchip said, binary data can possibly be quite large, and git-annex was designed to manage files in git and create syncing mechanisms without the disk space and overhead of managing the file contents inside said git repo. I would recommend that over using straight git, as it also has options for encryption which might simplify the workflow or make things more transparent. Again, ask around for better info regarding how versioning the file can be used by an adversary (it does depend on the encryption algorithm and implementation, YMMV), but this might be a more suitable solution for you.

<http://git-annex.branchable.com/>

<http://git-annex.branchable.com/encryption/></comment></comment>


Developing Lisp without Emacs - what do you need - <AUTHOR> http://groups.google.com/group/comp.lang.lisp/msg/6e91e20f2f371b52 <comment><USER2> a sane reason

(though I haven't tried anything else) I doubt it, there's anything superior to the Emacs+SLIME combo

</comment><comment><USER3> vi</comment>


Requesting some advice from hackers - <AUTHOR>

I work for a big multi national software company as a tech lead.I have about 7 years of IT Experience.I tried a couple of years ago to move to project management , mainly motivated by the power/prestige factor plus in a big company the technical work especially in services is so boring.But I found that option too boring - eternally dealing with incompetent programmers who could never stick to a deadline.Then I decided technical line was maybe better and took an onsite assignment in US as a tech lead for a web app.It is the same old technical work which is boring now but to add to it now I see a lot of my peers going ahead of me in the rat race who pursued project management.This has kind of taken the enthusiasm out of my work Ideally I like to have everything - the power/presitge, love challenging technical work too.:-) What would be the advice from people on HN?I am guessing some of you may have also gone through this phase <comment><USER2> HN: "start your own company".</comment>


IO Monad Realized in 1965 (2012) - <AUTHOR> http://okmij.org/ftp/Computation/IO-monad-history.html <comment> vezzy-fnord Everything old really is new again.

This reminds me of a paper by Gary Kildall published in 1970 called "APL\B5500: The Language And Its Implementation" [1], which I think will fascinate many by just how modern it reads. Just about all of the terminology and concepts were refined by then and remain identical to the present day, when the conventional understanding of the software industry -- where everything allegedly becomes obsoleted every 6 months, would dictate that it must be hopelessly anachronistic by now.

We're not as innovative as we think we are.

[1] [https://www.cs.washington.edu/tr/1970/09/UW- CSE-70-09-04.PDF](https://www.cs.washington.edu/tr/1970/09/UW- CSE-70-09-04.PDF)

<comment><USER2> It's rather odd that the idea that the software business changes rapidly is still the conventional wisdom. After all most of the really big ideas were created by people of my generation and the one before (I'll be sixty shortly and I wrote my first programs in Leasco time sharing Basic in 1969 at the age of fourteen). I still see and hear people talking about object orientation as something new yet it wasn't new even in the late 1980s when Turbo Pascal got objects, after all Simula was released in the mid 1960s and had pretty much all the basics of objects and classes.

</comment></comment><comment><USER3> This reminds me of the tutorial named "You could have invented monads" [1]. So apparently, somebody did :)

[1] [http://blog.sigfpe.com/2006/08/you-could-have-invented- monad...](http://blog.sigfpe.com/2006/08/you-could-have-invented-monads- and.html)</comment>


10M – 10M Concurrent Websockets - <AUTHOR> http://goroutines.com/10m <comment><USER2> This is really cool, though the server in question is absolutely gargantuan compared to what most will be regularly running.

Go's coroutines is definitely cool... Definitely a good idea for scaling message channels. Looking at dispatchd vs rabbit, though fewer features, is really interesting... quite a bit more throughput.

Wish I had more time, and a reason to dig in.</comment>


Quibi reportedly lost 90 percent of early users after their free trials expired - blinding-streak https://www.theverge.com/2020/7/8/21318060/quibi-subscriber-count-free-trial-paying-users-conversion-rate <comment><AUTHOR> Tough break for them - I mean their ideal use case (5-10 min bites while waiting in line, killing time somewhere, etc.) was totally shot plus people are becoming much more price conscious, plus there are lots of other solid offerings already out there and I'll speak for myself in saying that with all these services it's feeling more like cable again.</comment>


Peeple:  Yelp for people - <AUTHOR> https://www.washingtonpost.com/news/the-intersect/wp/2015/09/30/everyone-you-know-will-be-able-to-rate-you-on-the-terrifying-yelp-for-people-whether-you-want-them-to-or-not/ <comment><USER2> > * If you haven't registered for the site, and thus can't contest those > negative ratings, your profile only shows positive reviews.*

So if I have no interest in reviewing anyone, and thus don't register on the site, no negative reviews can be left about me?

Actually, come to think of it, since my phone number is necessary to post a review - and the way to get my phone number is to get me to sign up through Facebook, and thus share it - doesn't it mean that no reviews about me can be left at all?

</comment><comment><USER3> > Imagine every interaction you've ever had suddenly open to the scrutiny of > the Internet public.

I think in some cases this has happened to people, and I'm not sure that it ended up being good for them or anyone involved. For now it doesn't seem like they'll post bad reviews of people if you don't sign up; however, I can see how an app like this might be subject to brigading / trolling if you happen to have a disagreement with someone / some community online.

Beyond that, I can see this being used as a shitty hiring metric (hell, some companies hire partly based on your Facebook profile), and quite frankly I don't want to have to seek employment in that sort of environment.

</comment><comment><USER4> In the news right now: [http://forums.theregister.co.uk/forum/1/2015/10/01/slander_a...](http://forums.theregister.co.uk/forum/1/2015/10/01/slander_app_founder_slandered/)

"creator of app for collecting unsolicited feedback can't handle unsolicited feedback" etc.

Some nice spoonfuls if irony, right there.

</comment><comment><USER5> Usually when I look at restaurant ratings, I see lots of perfect scores and lots of terrible scores, but very little in between.

This could be very entertaining.</comment>


Artificial Intelligence Will Kill Our Grandchildren (Singularity) - <AUTHOR> http://berglas.org/Articles/AIKillGrandchildren/AIKillGrandchildren.html <comment><USER2> "Creationists are right to reject evolution."

That came out of left field. The rest of the essay is based on rejecting what we know about evolution and species cooperation.

"In recent times our sex drive has been has been moderated by contraception, which has aged mothers (and could have led to extinction)."

Okay then. File under non-interesting and ill-informed, and (to use an old Usenet term) _plonk_.

P.S. dates from 2008 and/or 2012.</comment>


Criminals Are Tapping into the Phone Network Backbone to Empty Bank Accounts - <AUTHOR> https://www.vice.com/en_us/article/mbzvxv/criminals-hackers-ss7-uk-banks-metro-bank <comment><AUTHOR> Since many commenters on HN don't seem to be aware that 2FA over text messages is inherently insecure. This article outlines how a sophisticated attacker doesn't even need to perform the SIM swapping trick as done here [https://news.ycombinator.com/item?id=19971953](https://news.ycombinator.com/item?id=19971953).

The first report of this technique - that I'm aware of - was at the 2014 31C3 in Berlin. The Motherboard article however is from 2019.

Slides: [https://berlin.ccc.de/~tobias/31c3-ss7-locate-track- manipula...](https://berlin.ccc.de/~tobias/31c3-ss7-locate-track- manipulate.pdf)

Talk: [https://media.ccc.de/v/31c3_-_6249_-_en_- _saal_1_-_201412271...](https://media.ccc.de/v/31c3_-_6249_-_en_- _saal_1_-_201412271715_-_ss7_locate_track_manipulate_-_tobias_engel)</comment>


Apple's Design Delirium - <AUTHOR> https://techcrunch.com/2017/12/21/apples-design-delirium/ <comment><USER2> I think it's important to bear in mind that we don't know what they're doing. The Mac hasn't received as much attention lately as iOS, and its arguably much nicer to develop for iOS than the Mac. Combine that with the fact that the Mac store sort of sucks and is probably built on top of NS WebObjects or something, and we start to get an idea of why Apple is beginning to pay more attention to macOS.

My hope is that they're improving the built in SDks to get closer to api parity with iOS. Also, hopefully they're changing the application life cycle to be the same as iOS. Were these two things in place then an app in iOS (in bitcode) could be run on x86 theoretically. Although I too hope that's not the reason why they're doing it.

Basically, we don't know what Apple is doing, macos isn't as nice to develop for as iOS, and hopefully Apple is thinking it's time to give more attention to that in the future, so they can attract future developers and draw them to the Mac. Swift is an incredible language to learn programming on.</comment>


Why hasn't any VPN StartUp used the PR Hype of Firesheep to promote itself? - <AUTHOR> There should be several already existing VPN StartUps that enable me to tunnel to their gateways, when i am using public WiFi.
Shouldn't the Startpage of HN be filled with Promotion and Comparision Blogposts?
DIY: Do you know any you would recommend? <comment><USER2> Because it moves the problem away from the local Wifi network to the VPN's exit point.

If you use a VPN service, don't be surprised if the local equivalent of the NSA has a sniffer on the termination point. Lots of them do this with Tor, because lots of them use Tor.

Your best hope as far as VPNs are concerned is to run your own, or an SSH- based SOCKS proxy. The best thing to do is for sites to use SSL for anything sensitive.

<comment><AUTHOR> Security until an exitpoint provided by an security company is still better than Public Wifi.

And (imho) if this is your corebusiness you should be better good in making sure there are no sniffers at your exit points.

Regarding "own server" - to me this is similar to "own email server". The amount of people who don't have servers that are more secure than professionally hosted ones is big enough as a market.

<comment><USER2> Thanks for your comment. I understand where you're coming from, but that's an assumption. There's no actual assurance that someone's core business means that they may be more secure. As for the issue regarding sniffers, in the UK if the VPN termination is in the UK and they're providing a service, then under the Regulation of Investigatory Powers bill they may be considered an ISP, and would therefore be required to keep traffic logs. In other countries YMMV.

Likewise, if the endpoint is being used for malicious activity targeted against the critical national infrastructure of country foo, the provider is not necessarily going to have the option to become aware of the interception of their exit traffic.

With your own server it may or may not be more secure, and may or may not be intercepted at the endpoint, but providing you can reasonably configure it the only person that would attract state-level interception (over and above other local connections) would be you.

<comment><AUTHOR> Understand your point of view. Still. We trust companies doing Email, Storage, etc etc

I am not "scared" of people who are able to do "state-level interception".

People on the Airport or in Coffee Places with Firesheep annoy me.

</comment></comment></comment></comment><comment><USER3> I've considered doing a VPN startup before; however, it seems that the market is pretty small and margins are low. Your customer base is basically: number of people who are concerned about privacy AND frequently use insecure WiFi AND don't already have an existing VPN to use.

<comment><USER4> from what I have seen (I provide VPS, not VPN, but some of my customers buy the VPS just so they can set up a VPN) what you are really providing is US internet.

Bandwidth, cpu, etc... is all but free. your big costs would be handling the abuse desk.

Now, depending on how efficiently you handle the abuse desk, your margins could be pretty good.

On the other hand, your fee per user would have to be pretty low. The people who live in countries with restrictive firewalls tend to be /really/ cheap. but, if you can keep your abuse costs down, the cost of servicing a particular user is almost zero.

<comment><USER3> I would have actually paid a small fee for that sort of service from a non-US based provider recently, to avoid MLB blackout restrictions on their online playoff coverage. (Except a free proxy in China was easy enough to find.)

</comment></comment></comment><comment><USER5> Because the problem is trivially solvable if the companies in question bump all traffic to SSL, which they hopefully will do en masse now.

<comment><AUTHOR> Sorry to troll but to me this sounds like "If all companies who didn't care about security enough in first place start caring about security"

I would like to take control that's the reason i am so bullish on this.

</comment></comment><comment><USER4> because that doesn't solve the problem.

there are all sorts of choke points between your vpn provider's output and your destination server where unencrypted packets can be read, and many of them are not guarded well. BGP even is not particularly secure. You should treat an unencrypted packet as less secure than a post card.

</comment><comment><USER6> Because it has only been 1 day?

<comment><AUTHOR> But the problem exists since years doesnt it?</comment></comment>