Pwn2Own Vancouver 2019: Tesla, VMWare, Microsoft, and more - <AUTHOR> https://www.thezdi.com/blog/2019/1/14/pwn2own-vancouver-2019-tesla-vmware-microsoft-and-more <comment><USER2> As a Tesla owner, I think this is great, because as an Engineer, I fully expect that Tesla was get owned (literally) here. I have no problem with that - I want people trying to break the security, and I want Tesla to pay them, and to improve it.

The reality is that a Tesla is mostly really good software, really good engine, and really good battery, surrounded by a reasonable (but not excellent) rest of the car. That's more then worth it to me, and the Tesla Stretch is real, because the car is incredibly compelling. I would argue that the value is just as much a outcome of the software, and it needs to be hardened.

<comment><USER3> Just a nitpick but engine would mean internal combustion.

<comment><USER4> ain't engine just something that converts energy to motion? We have jet/rocket engine which aren't internal combustion.

<comment><USER5> Jets and rockets are also internal combustion engines. An example of external combustion is a steam engine.

</comment></comment></comment></comment><comment><USER6> From what I've read about Tesla's software this could be a _bold move_.

Between the infotainment system, onboard Linux computer, autopilot, self- driving hardware, OTA updates, mobile apps, and the amount they phone home, Tesla are probably doing some of the most advanced computing in any consumer car (some deconstructions have suggested they are miles ahead here, pardon the pun).

This is great, but it all comes with additional surface area for attacks, and software engineers have spoken out about the fast paced shipping that happens at Tesla and the corners that are cut as a result.

<comment><USER7> <rant/ramble on>

OTA is great but my experience with my TM3 is clouded by one issue, I want blue tooth audio support to be enhanced so I do not have to use my phone to select tracks, playlists, artists, and such. Instead what was the big update of near the holiday season, fart humor, holiday fireplace like a screen saver, and the old Atari pole position game.

Seriously? Yeah I know they also updated auto pilot, put in a new animation for setting vents, and such, but I really don't need the easter eggs when there are so many programmable features this car should already have and audio support including the mentioned blue tooth support is all easily a decade behind what other cars have. hell our energy meter is a joke, it won't break out power used to move from that to maintain the pack, doesn't want to count when I am not moving, and blends in the HVAC. Auto hi beams that are spastic and auto wipers that are just, well odd.

Sorry for the ramble but the security stunt is one thing but non essential crap like easter eggs is just more things to break or be exploited. bring the cars customer facing electronics up to date before farting around more.

love my car, have serious doubts about their priorities.

<comment><USER8> Do you believe programmers are fungible? That the ones who wrote the easter eggs could easily be reassigned to work on a specific feature you want? Have you considered that maybe only a handful of employees have expertise in bluetooth, were working on the feature you want, while others were making the easter egg?

It's because of entitled comments like this that companies don't develop easter eggs. They know that someone who doesn't understand how software development works will ask this very question - "why easter eggs? Why not that one feature I want?"

<comment><USER9> That's not why companies don't develop Easter eggs. It's because: 1) Easter eggs are features. 2) Features cost time and money. 3) Features almost always also add bugs. 4) Easter eggs usually aren't in the test plan.

What you get is something that costs money and has the chance to decrease the quality of your software.

Now there are intangibles that make Easter eggs worth it. Mostly, you have to keep the developers happy. But don't act like they have zero cost.

Full disclosure, I shipped an easter egg in the Sun x86 service processor about 11 years ago.

<comment> semi-extrinsic I'd argue that the Tesla stuff here isn't really Easter eggs as traditionally understood; which are stuff put in by devs having fun; and then it's either not spotted or ignored by management. Easter eggs are usually somewhat hidden, and require some degree of intelligence to appreciate. The Tesla stuff is lame "fart apps" that were clearly put there under instructions by some PR guys or Musk himself. No developers were kept happy in this process.

<comment><USER10> The apps are part of a marketing plan, and I personally doubt that devs didn't have fun building them.

My kids gleefully get to "drive" my Tesla using the steering wheel to play Pole Position. They snicker when we goof around with the whoopie cushion.

It's hard not to be positively influenced by something that gives your children joy. I appreciate that there are these bits in the software which are whimsical that my family can play with.

</comment></comment></comment></comment></comment></comment><comment><USER11> This will be interesting. A Jeep Cherokee was hacked a couple years ago. The results are pretty bad. It cost Chrysler a lot of money in recalls to fix the issue.[1]

[1][https://www.wired.com/2016/08/jeep-hackers-return-high- speed...](https://www.wired.com/2016/08/jeep-hackers-return-high-speed- steering-acceleration-hacks/)

<comment><USER12> Seems like Tesla could fix security holes remotely. Chrysler could not.

<comment><USER13> The ability to remotely patch a car seems like a double edged sword. Hasn't Tesla already had at least one example of introducing a bug through OTA updates?

<comment><USER14> I consider that an issue with the software quality, not with the update mechanism. The bug would still have been introduced even if it required a trip to the dealer to plug in a programming cable.

<comment><USER15> At least, when it's updated by a dealer and a cable, you know when to expect changed behavior. With OTA, the vehicle's driving behavior could (and has) quite literally change overnight.

<comment><USER16> I'm pretty sure you still need manual confirmation in the car, and it shows you patch notes when you next get in, so you should have reason to expect changed behavior.

</comment></comment></comment></comment></comment></comment><comment><USER17> Regardless, how good/bad Tesla software will fair with the security contest, this is the best possible way to improve product security within a short amount of time, just like the cat-and-mouse game Apple play with the Jailbreaking community.

<comment><USER18> > just like the cat-and-mouse game Apple play with the Jailbreaking community.

That cat-and-mouse game discourages people from reporting vulnerabilities. Why you think that it improves security?

</comment></comment><comment><USER18> > Entries against "Key Fobs or Phone-as-Key" target must achieve code > execution, arbitrary vehicle unlock, or arbitrary vehicle start using > protocol-related weaknesses. Entries related to Key Fob relay or "rolljam" > attacks are not allowed

Does that mean that they think that such attacks are too easy? If they use rolling codes, will they classify any attack with jamming as "rolljam"? If they don't, why specify this?

<comment><USER19> Was just at RWC 2019. The Tesla Model S keyfob has been successfully hacked. Here are the slides for the same talk (CHES 2018):

[https://ches.iacr.org/2018/slides/ches2018-rump- talk14-slide...](https://ches.iacr.org/2018/slides/ches2018-rump- talk14-slides.pdf)

<comment><USER20> This is from mid 2017. "First notified Tesla on 31/08/2017 .. Tesla vehicles produced from June onwards use a new key fob". Not sure if the new fob is significantly better as the presentation is not clear there.

<comment><USER21> And the "fix" for people who bought the car before then was adding an option to disable the automatic unlock (so you have to press a button) and/or require entering a PIN to actually drive the car.

</comment></comment></comment></comment><comment><USER22> If my understanding of the pwn2own event is correct, it's not a CTF event and the exploits are typically developed in advance, and then demonstrated during the event? If there are 2 or more exploits which all work reliably, who is determined to be the "winner"?

<comment><USER23> I found the tesla rules: you need to exploit as many systems as possible as hard as possible: [https://static1.squarespace.com/static/5894c269e4fcb5e65a1ed...](https://static1.squarespace.com/static/5894c269e4fcb5e65a1ed623/t/5c36468c1ae6cfc9ce0a7a9f/1547060891346/01-Tesla_Table.png?format=750w)

via [https://www.zerodayinitiative.com/blog/2019/1/14/pwn2own- van...](https://www.zerodayinitiative.com/blog/2019/1/14/pwn2own- vancouver-2019-tesla-vmware-microsoft-and-more)

</comment></comment><comment><USER24> This is some seriously good marketing. Tesla is in a unique position to offer their car up as a prize and target. Other manufacturers could do this but because it is hard to update their firmware they don't do it.

</comment><comment><USER25> What prize do you get for pwning it sufficiently to make it drive off on its own? Sounds like that would be the ultimate hacking competition: you get the car if you make it drive to your own home.

<comment><USER26> 250k USD as stated in the article. You can get several Teslas for that money :D

<comment><USER27> You also win a Model 3.

<comment><USER25> But do you win the Model 3 you hacked, or do you first need to buy one to hack, and then you win another one?

On some level, winning the thing you hacked doesn't sound like the best kind of prize.

<comment><USER28> Well, you broke it. It's yours now.

</comment></comment></comment></comment></comment><comment><USER29> Undergrads at various universities regularly pwn vehicle systems and write reports about it for academic credit. The M3 has a lot more surface area than the typical car most people are hacking. My prediction is that the M3 is gonna get chewed up and spit out. This isn't a "will it get pwned" competition it's a "who will pwn it best/fastest" competition.

</comment><comment><USER30> Do you get physical access to the inside of the car first? Or does the hacking have to happen from the outside of the car?

</comment><comment><USER31> It looks like Tesla doesn't update many parts of its OS; [https://www.reddit.com/r/teslamotors/comments/ag6r2f/please_...](https://www.reddit.com/r/teslamotors/comments/ag6r2f/please_help_our_turkish_tesla_community_reach/)

</comment><comment><USER32> This is a great contest. The value of winning a Tesla will be more than the value of the Model3 up for grabs.

And it's relatively cheap for Tesla to pay out to get these vulnerabilities found and addressed.

</comment><comment><USER23> I give it 67 seconds

edit: there is nothing stopping someone from leasing a tesla, finding an exploit and shooting it within the first 10 seconds, no? In general, how does this work at pwn2own?

</comment><comment><USER33> Anyway they have bitquark for security. Who can find vulnerability in the Tesla products ?

</comment><comment><USER34> > And the first successful researcher can also drive off in their own brand > new Model 3 after the competition ends

If you've successfully hacked a car and shared your method would you then get in said car and drive it away? I'd like a patch or at least a factory reset first....

<comment><USER35> Whoever pwns the Telsa probably doesn't even live in Vancouver, so no, they're not going to drive off in the target vehicle. Telsa would have to arrange to provide one where they live, and yeah, I think it's safe to say that one would already be patched!

</comment></comment><comment><USER36> Nice marketing stunt, but how many security researchers already have a Model 3 or are going to buy one to do this?

Guessing just already-successful firms / personalities that want to win Tesla pen-testing contracts in the future?

Or has Tesla released binary blobs of their firmware systems online?

<comment><USER37> Given enough time, we may find out. Does Pwn2Own have any stipulations against 'gaming' their events?

<comment><USER35> Exploits are already developed prior to the event. It's not a CTF where one can reasonably be expected to find and develop an exploit during the contest. Players get limited time to tweak what they've got in case it doesn't work, but that's it.

<comment><USER37> Well, my understanding is that there's a submission then various teams are apprised and given x hours to complete, where x would obviously be greater than twenty-four, and not necessarily handled in one setting, such that there'd be a 'reveal' disclosing successful contestants. So it looks like I wasn't mistaken there.

But that still does not address the matter of rigging and whether Pwn2Own has clear rules against it. I don't know, which is why I asked.

<comment><USER35> Not really, it works like this:

Prior to the "contest" beginning everyone participating has to disclose what they have 0day for. In cases where more than 1 person brings 0day for a particular target then they will attack it in turn. The order they get to go in is random. When it's someone's turn they get like 5 minutes to exploit the target. If they can't do it then it's the next person's turn. Whoever exploits it first wins. So if you have 2 people each with a reliable exploit for the same vuln in the same target then who wins is really decided by the coin toss. But let's not forget what this really is: vulnerability sales. So if there's 2 different vulns in the same target then probably the sponsor is going to want to buy them both anyway.

What is it that you mean by rigging? The main point of the event is that sellers feel safe exposing their warez. The rules are clear, they're going to get paid if they have what they say that have. The sponsors get to buy the 0day and know it's real and they're not getting ripped off. And it's all in the open and everyone gets good press.</comment></comment></comment></comment></comment>


Ask HN: Is Riak a viable alternative to Cassandra? - <AUTHOR> I work with someone who is an ex-Datastax employee. He swears by Cassandra. We end up debating about it a lot, and I usually bring up Riak as a better alternative - in theory. Cassandra has so many peculiarities and gotchas, and almost requires a dedicated team to run at any non-trivial size, and good knowledge of its behaviour among the development team.
His point, which I can't refute, is that Cassandra is probably the most widely used and battle tested open source distributed database out there - there are massive clusters (10s of thousands of nodes) in production use by many of the most well known engineering firms.
Does Riak have similar success stories? Are there any mega clusters in use at big firms? How would you argue for using Riak? <comment><USER2> I've used C* (36 nodes/20Tb) and it was pleasure to manage it even in the early versions. At the time of picking the db (3 years ago) Riak was slower as they only had http available so C* won by a large margin.

One case I thought Riak can be a good choice for is for quick prototyping / interacting directly from web clients (as it has neat http API).

</comment><comment><USER3> Hm, when we evaluated Cassandra not long ago, a simple full disk error managed to get it into an unusable state, and even external experts couldn't recover it. I know it is used extensively by many companies, but this was not exactly encouraging.</comment>


Ask HN: If users tell you they want your product but - <AUTHOR> ...you haven't built it yet. What do you do? <comment><USER2> It depends. Do you have a fixed date to have the product ready? Is it custom?

<comment><AUTHOR> The problem we're solving is explained here www.dusthq.com, and the image on the site is what we think the MVP should look like, but we're not sure.

<comment><USER2> I don't know how are you going to implement your service. But by looking at your website it seems that you could do a lot by hand to test if it works, sort of "fake it til you build it"

I built a lot of things that didn't work and with time I learnt to first get customers and then build the product.

I usually buy time saying that we are customizing the product for the client's use case, which it's usually half true. Just be honest about dates.

</comment></comment></comment><comment><USER3> Sell them a preorder.</comment>


Torvalds Says Open Source Is the Way to Combat Software Complexity - <AUTHOR> http://www.eweek.com/enterprise-apps/torvalds-says-open-source-is-the-way-to-combat-software-complexity <comment><USER2> I am not aware that Linux has a reputation for being non-complex.

<comment><USER3> The actual quote from Linus is

> " _Its a complicated world and the only way to deal with complexity is the > open exchange of ideas._ "

I'm not sure that the title can be derived from that. Also, in many publications the "quotes" are not 100% textual quotes, so don't even believe in the them.</comment></comment>


What are your biggest career regrets? - <AUTHOR> <comment><USER2> Not starting a side project earlier. And listening to everybody saying that hard work will get you places.

Maybe I've just grown cynical. But your employer doesn't care about you or what you do. All he cares about is how much money he can make with your energy. Know what hard work gets you? A pat on the back and more hard work.

Gone are the days where you could build a career based on mutual respect and trust. Nowadays it's just a list of previous employments. Nobody cares how good you are or what problems you can solve. All they care about is overqualified warm bodies. Hire skilled developers and throw them on meaningless tasks controlled by business politics. At least this seems to be the general experience among my peers.

If you want to be successful, become a good politician. It's the only thing that will make your life better. Anything else is just a lie designed to squeeze more value out of you.

<comment><USER3> I'm sorry for your situation. I assume you're in the USA.

I care about our team and their wellbeing more than I do profit - although the two can go hand in hand if you reinvest in your people.

We send folks to conferences, as they learn and network, which is good for them and us. We generally give annual raises around the 15% mark. Above all we don't allow or accept the master-slave relationship anywhere in the company, and we're careful not to hire people who we feel will want to dominate other people.

I'm sure, in fact I know, many employers are assholes who treat their team like slaves - but it's not a universal law.

<comment><USER4> I'm a little intrigued by a 15% raise year of year ? How long can you sustain that rate ?

I'm supposed to be happy if I get 5% or really happy when I get 8% after extraordinary accomplishments. And if you performed extraordinary this year, that same level of performance doesn't get you 5% next year.

<comment><USER3> We reward merit - if you muddle along and half-ass, we worry about how to better motivate you, and typically grant a small (5%) raise inline with cpi inflation.

If someone is working their socks off, then we're not shy rewarding it.

In terms of sustainability - if we hire a fresh grad at £24k, by year four they're on 45 or so, assuming all is well. Most we pay anyone currently is about 60k, which is a very respectable income in a small city 100 miles from London.

Essentially, as long as someone produces more and more value for the business, we reward them more and more.

It also helps to have a decent war-chest, as this gives you confidence to pay people properly, knowing you've a year or more of salaries in the bank.

</comment></comment></comment></comment><comment><USER5> Staying in a job for too long. I started fresh out of school at 18 and stayed there for over 10 years. During that time I got very few pay rises and always felt like I was being treated as a kid still despite my experience. When I finally left my pay jumped by over £15k. In the 4 years since I left my pay has nearly quadrupled and I'm in a much better position at a much more awesome company.

<comment><USER6> The easiest way to earn more money is always to quit - either they'll throw money at you to stay, or you take a new job with a higher salary.

</comment></comment><comment><USER7> What's the point of regretting?

For example, I could regret I didn't leave my previous employer earlier because they just didn't pay me more money eventhough my skills and impact had gone way up since starting there. But not leaving that job taught me my own value.

And knowing my value has now materialized in the form of lots of appreciation shown by later employers as well as better money and more challenging jobs. In the previous job it did suck to realize I won't be rewarded for my hard work but, in comparison to what followed, that suckage was a bargain price _and I 'd never waste my time_ regretting it.

</comment><comment><USER8> Being shit at building lasting relationships with former colleagues and people I worked with. In the end that's what it all seems to come down to, a network of people.

</comment><comment><USER9> Regretting things in your life is awful. I learned a LOT from not finishing deadlines, messing up complete branches of code and working on projects I don't like at all! In the moment I could have a regretted it, but looking back on things, it was always a valuable life-lesson.

<comment><USER10> It's very true, you often learn most when things break or you have to work with old and bad code which makes you realize why certain design patterns exist

</comment></comment><comment><USER11> Going to college.

Made me waste 5 years of my productive life, to leave me in debt that made me waste 4 years working just to pay that debt, this year will be my first real year working to actually earn money.

</comment><comment><USER12> My biggest "regret" was deciding to stay in the ERP space. When I originally jumped in via an internship, I did so because I wanted to get a better understanding of the monolithic systems that ran most the world. I got pulled into an interesting project, became an expert of sorts, and before I knew it I found myself with what felt like golden handcuffs.

I'm hard pressed to say I actually regret it because I've gotten myself to a very comfortable point in life with plenty of options and I've met a bunch of great people along the way. I really only dislike my ERP choice because I've become an expert in technologies that aren't easily leveraged outside of the enterprise space and my interest there is waning.

</comment><comment><USER13> Mistake #1 - leaving a secure job at a pre-IPO company before I vested in order to join a company where I had greater authority.

Mistake #2 - using my authority to hire several friends from school who hadn't previously held responsible full-time positions.

Mistake #3 - trusting them to manage themselves.

My friends were all smart but none of them really cared about the business or each other. They just preferred getting paid to not getting paid and slowly left after the novelty wore off. One of them even wrote a draft of a crappy novel when we thought he was coding, which we found when cleaning out his desk.

We've all since moved on. Some of them are now quite successful. But I was burned pretty badly by that experience and am no longer friends with any of them.

</comment><comment><USER14> Not meeting more interesting people outside my discipline in college. My network is mostly limited to people in my field because I spent too much time with people similar to me because that was easy and comfortable.

<comment><USER15> This. Have you found a way to fix it?

<comment><USER16> If you are a software guy, especially a web guy? Making it known that you are willing to help all kinds of people with whatever they might want to do leads to all kinds of connections. I'm friends with music video directors, musicians, designers, artists, doctors, scientists, many of whom I met through doing a project for a friend of a friend.

</comment></comment></comment><comment><USER17> My first regret: having not the balls to do what I really wanted when I was a teenager.

I went to the university mostly to please my parents and to reassure them. I think that was my biggest mistake and I never really learned anything there.

My second regret: quitting. I'm getting bored very easily.

I'm thinking about 2 projects I started with friends where I left the ship eventually because I felt less motivated than them. Now they are both making tons of money and expansing there companies (while I'm still trying to figure out what to do with my life).

I also started a lot of projects which I will probably never release, but that's a pretty common thing.

The last one: working for someone else.

Studying led me on the logical path of getting a job. I first said to myself that it will be temporary and I listened to people who were telling me that I had to have a little experience before launching my own thing (and my advice is: don't listen to their bullshits and do what the fuck you really want to do). The truth is that when you get a job it consumes you and you can forget what your dreams are pretty quickly.

The counterbalancing point of this last regret is that I met extraordinary people while I was an employee, who are still very good friends nowadays. Actually the guy with whom I'm trying to build a startup right now is a former coworker of mine ;)

</comment><comment> Jean-Philipe Big mistake: Joining a start-up with non-technical[1] "idea people" founders as a young father during the last year of my studies. Put a lot of effort into it, got little recognition, burned out all resources (money, friends, family). Have been doing the work of an entire dev team, 12h days, weekend work, and still got like "Oh, you go home already? What about all the work? I've been sleeping in the office and doing super important stuff!" There were days I didn't see my kid for days. Before, my colleagues promised me a super relaxed time, "you can go home early and play with your kid!"

Now I'm freelancing with friends, making good money, flexible hours, feeling much better already! Finally paying off the debts I made during the startup time. Also working at a real company can be quite nice!

Startups are like cults, you only realise what it was after you left. Got myself dragged into this sick mindset of overworking. And as it turned out, we've been working 90% of the time for nothing! Not exaggerating here. Hope it will pay out at least, but not sure about that even... I had better worked half as much time as a freelancer and just bought the shares for money.

Fresh fathers and mothers out there, beware! Startups have to be really family friendly, then it could work. Considering we've only been doing 10% valuable work that eventually contributed to a good product, I believe it's possible to work, say, half as much, have a good work life balance and still get a better product shipped in the end.

[1] With "non-technical" I mean economics people, the "We have a super great idea and are looking for somebody to just do the little boring work of just executing it" bunch. I enjoyed working with non-technical people in general very much, but I've had bad experience with business people, those that only care about money, not about the product or employees.

</comment><comment><USER18> I took an easy job (UK financial software) when I was downsized from a job that I loved (Embedded systems). I told myself I'd quit within one year and either move to somewhere else in the commonwealth (NZ, SA, Canada) or do a year of university in Sweden on a course I found really interesting, with a view to getting back to Embedded work. I did neither, and I'm still there.

I'm moderately well paid, I have a plan to save money + quit, I moved to a new country and now have a lovely girlfriend, so I'm still in a happy situation - but I wish I could have had these things _and_ pursued my career a little better.

</comment><comment><USER19> Taking too long to perfect something when I could've iterated with imperfection

</comment><comment><USER16> Sticking with my first start-up for too long after it became obvious to me that it wasn't going to work out with the team I had. We were almost dead, then received a flurry of interest from accelerators, accepted an offer and spent another year going solidly nowhere.

I learned a lot from the experience, but there was a point at which I should have called it quits. Then again, I guess I learned that as well.

I don't regret having done it, and I accept the time lost as a necessary price, but looking back I think I could have saved myself a lot of time by calling it quits a year sooner.

</comment><comment><USER20> Assuming that the place I worked at would always have work for me. I'm older, so I didn't have the newer philosophy of job hopping for experience, and believed I could make a career at this one place. I was there over 20 years and had 2 positions. It was union so I was making good money just from the seniority. I was on my 3rd supervisor (previous ones retired) and we didn't get along so well. I got laid off and trying to find a new job I was like a baby getting born -- didn't know a thing about the outside world. It's been tough.

</comment><comment><USER21> Staying in college at a school that didn't let you change majors (Cal Poly). I picked up what I can in night school in the years following and have cobbled together the job a 25 year old should have now that I'm 32. Worst mistake of my life, not just career.

If you're in a major you don't like and can't switch, drop out. University is largely a scam that exists to impoverish students and adjuncts for the benefit of a bloated administration.

Junior college, however, is an amazing thing and I encourage it for anyone.

<comment><USER22> Cal Poly Pomona? Or Cal Poly SLO?

<comment><USER21> SLO. My degree in physics came after constant failures as I spent most of my time outside class struggling (and failing, horribly) to complete classes I couldn't manage, and trying to learn to program in what little extra time there was. I tried to switch to CS and ME to no avail. However, by the time I realized it wasn't for me (after all the first couple years were general ed requirements) I had sunk so much time in to it I thought it was better to stick it out.

It wasn't. It took me an entire extra year just to get one class I needed to graduate (mind you they have plenty of money for a fancy gym and new buildings, but not for professors to teach classes). I only got out when I was 25 and a sad, bitter, angry shell of a person.

There's a happy ending, though. I left San Luis Obispo, started going to night classes at Ohlone College in the bay and later Santa Monica College, and finally built up enough of a skill set to work in ad operations, then support, then support engineering. I had thought I was too stupid to do anything, but I did well in my classes after Poly and professionally.

Since then I've tried to adopt a motto to enact change before life has the opportunity to do it for me. You are never secure, so don't pretend you are. I thought I was in a decent position in SM when I left for Ireland on a working holiday (it had always been a dream of mine to live abroad). I was terrified to leave a good job for a country with a crappy economy. Lo and behold my whole department was shut down a month after I left, and after a bit of networking in Ireland I ended up with a position better than I had at home. How long this will last I don't know, but I know that it won't be forever (nothing is) and I am always looking out for what's next, and trying to improve my skills (lately I've been in to brewing automation and getting better with Arduino).

That was long-winded, but I guess I also felt like I should point out the positive learning that came from it.

I still should have dropped out, though.

</comment></comment></comment><comment><USER23> Taking a job for the money. It was my first job after university and I was poor, so it seemed like the extra £2k was worth it, but it wasn't.

<comment><USER18> This may turn out to be a theme of this thread - you, me[0] and another person [1] so far have roughly similar "I took a job for money" regrets.

[0] - [https://news.ycombinator.com/item?id=9061451](https://news.ycombinator.com/item?id=9061451) [1] - [https://news.ycombinator.com/item?id=9061437](https://news.ycombinator.com/item?id=9061437)

</comment></comment><comment><USER6> I don't regret anything, but perhaps I should have been more patient and level-headed regarding my career choices. My choices have been quick and swift, perhaps too quick and swift. It would have been interesting to have seen what would have happened if I had chosen otherwise - but I'll never know.

Life is all about finding your own way, and enjoying the experience.

</comment><comment><USER24> Underestimating own skill and especially judgement of a situation as a young employee. Fear of larger organisations, complex processes that leads to avoidance of these type of projects. I've gained confidence over the years, now its easy. But it has led to regrets about missed opportunities. Also, not starting earlier with a side-business.

</comment><comment><USER25> My biggest career regret is to look for a better career rather than "building" one on my own.

</comment><comment><USER26> Entering a wrong branch of work only because it paid good, now I am stuck with knowledge that is not really interesting and am doing double effort to learn new skills and start a new job career. Hopefully I will be able to use some of the experience I have acquired up to now.

</comment><comment><USER27> Becoming a software developer

<comment><USER28> Can you elaborate?

<comment><USER27> Don't want to be a downer, but after many years (15+) a software developer, I'm pretty sure I should have gone to business/economic school.

A few things that spring to mind:

a) badly paid compared to the value produced (still better paid than teachers)

b) ageism in the industry

c) the developer ego's (in general) for some reason are over the top, making it impossible for people to have normal discussing about various topics (you can see it here in HN) almost as bad as discussing politics

d) the next best biggest greatest thing being discovered every 2 months by 20 year olds that just discovered something from the 70's and you still have to pretend to be enthusiastic about it for networking/job interviews

e) sexism in the industry

f) in general, a sense of immaturity both on the development/architectural side, but also on a personal level in most places/conferences

g) networking has more to do with success than actual skills, at least in business school you learn that from the get go

Maybe I'm just getting old and want to scream at kids to get off my lawn.

<comment><USER29> and what career do you think "business/economics" would have led to, and what do you think it would have paid?

<comment><USER27> I can't edit my other reply so just going to do a new one.

One of the biggest eye openers I had as a developer and how I was being 'exploited' was when doing work for a consulting firm, the ceo of the company asked me to pick a open source app, change the logo and a few other things (2 days work), and the next day he presented the app as one of his 'business solutions' to some big shots (talking airports and big media companies) and was able with that to sell around 1.2 million euros in consulting services by demoing the open-source app and claiming a lot of the credit for that app. This is something as a developer I still cringe and would probably feel like I would need a bleach bath to clean myself but seems to be day-to-day from people that have MBA's or business/finance education.

</comment></comment></comment></comment></comment><comment><USER30> Getting a CompSci degree. Single biggest waste of time and money in my life.

<comment><USER31> I say the same as I never really turned up to University, however I knew I wanted to be a programmer afterwards and people wouldn't speak to me without that Degree...

</comment></comment><comment><USER32> Staying in aerospace/defense industry as long as I did (11 years). It is a dysfunctional soul-sucking environment that affected my health, both physical and mental.

I escaped a year ago and am so much happier now.

<comment><USER33> Not sure about defense, but what's wrong with the aerospace industry?

</comment></comment><comment><USER34> Putting things off in perpetuity. I should have finished my first big project at 19, 20, 21. I'm 26 now — still working on #1. The fear of not having enough time haunts me every day.

</comment><comment><USER35> Not starting a business when I was single. Now I'm not and soon there will be kids.

I don't want to resent my unborn kids because they make starting a business impossible/more difficult.

<comment><USER36> Turn it around and use your situation as a motivator. It's hard, but it's worth it. I'm sure you want the best for your family and unborn child, so what better way than to start your own business. The longer you put it off the more you'll regret it later in life.

<comment><USER37> I agree. There will always be something limiting your "free" time, and you will always be prone to looking back and finding an excuse for why you didn't do X. Doing things as simple as rising an hour and a half earlier each day to put in one hour of quality work will eventually stack up until you are well on your way to starting a business. The only truly limiting factors are energy and motivation, and those can be mitigated somewhat by caffeine and stubbornness.

</comment></comment></comment><comment><USER38> Not to learn from my mistakes, but regret them.

</comment><comment><USER39> Not trying to build a business while in University, when you have nothing to lose.

</comment><comment><USER40> stumbling across hacker news, my career hasn't been the same since

</comment><comment><USER41> Getting a BA in history.

</comment><comment><USER42> Nothing.

</comment><comment><USER43> Not applying to YC</comment>


Cape Town Is 90 Days Away From Running Out of Water - <AUTHOR> http://time.com/5103259/cape-town-water-crisis/?xid=homepage <comment><USER2> I regularly run around Molteno reservoir, pictured in the article. It's been a regular and depressing reminder of the water crisis to see its level titrate down day by day.

Most people here seem to be in denial about the kind of life that awaits. Either people don't think about it, or believe the official pessimism about the desalination schedule is a scare tactic to delay zero day and hence the cost of the eventual emergency desalinization measures the local government has waiting up its sleeve.

The alternative is unthinkable: a large percentage of the economy of this city is tourism, so imagine what happens when foreign guests cancel their hotel and airbnb bookings en masse.

A few days ago my apartment building installed three massive 5000 liter tanks of water storage. That's enough to last all the tenants about 10 days at 25l/day/person. If those tanks are filled from the mains it just accelerates zero day for everyone else; if from rain water, well, there's too little rain at the moment to fill them (and is roof water even potable?). Perhaps the idea is that it'll be trucked in. No-one knows what is going on.

I suppose we'll find a way to manage. In a way I'm glad I'm here to experience it, as it's almost certainly a premonition of things to come in other cities later this century.

<comment><USER3> _Most people here seem to be in denial about the kind of life that awaits._

As I read the article, I tried to imagine such a scenario. I guess most of the time "it all works out", and the hope is that it will this time, too. OTOH, only 54% of residents are hitting the 87 liters/day target, according to the article. First off, I'm surprised that the taps don't just go dry after 87 liters; perhaps the tech isn't there. Regardless, if barely half are hitting the target, I guess plenty just aren't taking it seriously, as you point out. Wishful thinking, denial, or unwarranted optimism, I don't know.

I hesitate to raise a hot-button topic, but I wonder how many parallels there are to climate change. Wishing, denying, or hoping? Again, I don't know the minds of others. But if someone can got to the local reservoir, look with their own eyes and see that, indeed, Cape Town is running out of water, and then almost half the residents _still_ don't cut back to the suggested level, I don't hold much hope for more global issues.

 _I suppose we'll find a way to manage._

See, I'm torn. I hope _you_ find a way to manage (rain, desalination, hopefully something comes online soon), but somehow the ones still watering their lawns have to go with parched throats and dirty clothes for a while to drive the point home.

<comment><USER4> _First off, I 'm surprised that the taps don't just go dry after 87 liters; perhaps the tech isn't there._

Census data is inaccurate, and you have no concrete figures on the number of people per residence. Even if we had the tech (the new water meters we have are a step in the right direction, except when they break which is often and also maintained by quite a number of different contractors) you'd be hamstrung needing to ascertain correct figures per location. And then throw in all the apartment blocks in Cape Town, which all have a singular water main and meter, it becomes even harder (because do you punish all people in the block because one person is having a bath three times a day).

 _I hope you find a way to manage (rain, desalination, hopefully something comes online soon)_

The local government has sadly mismanaged the situation terribly, for more than a decade. We're not going through a drought, we're experiencing a water shortage. The total population for the City of Cape Town (more than just Cape Town itself, it includes the surrounding areas) has been rapidly expanding over the last 15 years (more so in the last 5) due to semigration (people moving from other provinces, mainly Gauteng, due to the better quality of life in the Cape), and the underlying infrastructure has not been upgraded in step with the population growth. We have had warning since as early as 2007 (from official reports I'm aware of) that we needed to move forward with new water programs including desalination plants in order to accommodate for the growth.

We have a desalination company, GrahamTek [1], which had put forward tenders which could have brought in 450ML water a day within 18 months, but were largely ignored by the powers that be.

[1] [https://www.iol.co.za/weekend-argus/news/city-of-cape- towns-...](https://www.iol.co.za/weekend-argus/news/city-of-cape-towns-water- bungle-11575998)

<comment><USER5> Bulk water supply is the responsibility of national government. Local government is responsibile for the distribution of the allocated water.</comment></comment></comment></comment>


IPad in college for EE or CS degree? - <AUTHOR> http://www.ohscope.com/2010/05/ipad-for-school.html

<comment><USER3> As an EE or CS major, an iPad isn't going to cut it as your portable device. Like others have said, you're going to want something that can run IDEs or hardware interfaces in labs or at group project meetings.

YMMV, but don't obsess over being able to take notes on it in class. In my experience (Computer Engineering degree from Georgia Tech three years ago), professors will move so fast that you'll find a keyboard limiting. Engineering degrees especially are all about diagrams and graphs, and it's just not easy to get those into a computer quickly enough in class. This is less important in CS classes, but you'll shuffle through the same core Calc and Physics classes and run into the same problem.

Also, if you go the EE route, you're going to have to run Windows occasionally. Lots of the specialized lab software, board design tools, circuit simulators, etc just aren't available for OS X. Don't get me wrong - <USER2> love my MBP and finished out my degree on the first gen Core 2 Duo MBP running Parallels. But make sure you get something beefy enough to do that, and I'm not sure the 13" MBP is going to be future-resistant enough in that respect.

My advice - figure out how to afford a 15" i5 MBP, even if it means adding $500 or so to your loans.

<comment><USER4> Having recently graduated with a computer engineering degree, I absolutely agree with this. Buy a small, powerful laptop that can run both Linux and windows, and you should be happy. Personally, I would also recommend the Mac, but Linux and windows are the two you need to be able to run.

Of course, every major university has labs that will have the equipment and software you need, so you can probably get away with whatever you prefer. I was more a software guy than a hardware guy, so I ran Mac exclusively and just used the lab machines when I needed to use Windows software.

</comment></comment><comment><USER5> Worry about it the month before you actually go to school, but I would recommend a good laptop. I don't think the iPad will have decent electronics sim programs and the like by that time. That stuff is handy in labs.

<comment><USER6> Labs can definitely be an important factor - I know I had to use make use of my USB ports in several of my labs (something the iPad lacks). Also, many universities require laptops that meet a certain criteria - I would also look into that for your school before purchasing one.

</comment></comment><comment><USER7> Get a nice laptop. An iPad will not be enough for CS/EE degree. I would argue it's not enough for any degree, but that's off topic. Get an iPad later if you want to simply because it's a cool device that seems like a good ereader/entertainment system.

My rationale is this. In undergrad and then graduate school many times I would sit with my laptop with the professor going over various problems. Impossible to do with an iPad. Many classes required X that wouldn't work on an iPad. For example, embedded systems required usb connection to the external HW device and then software support. Linux was required for many classes since the code is available to learn from.

In the end my optimal solution was a 17" MBP with linux and windows VMs.

</comment><comment><USER8> Cross-posting my comment from the blog so the HN'ers can reply to it:

Mike's wrong on the "content creation" comment regarding the iPad. There are plenty of good apps for notetaking, drawing, even writing. I've switched from my MacBook Pro to the iPad for those tasks as it's _much_ lighter. The soft keyboard takes some getting used to, but it's the same size (in landscape) as the external Apple keyboards, and it's plenty easy to type on after getting used to not having physical feedback. (I've already typed a 3-page paper on it.)

For a CS degree, though, there are a few downsides. The iPad doesn't have any good coding software yet, and you'll be doing _a lot_ of that. Labs aren't a great solution, either. Do you really want to have to leave the comfort of your own room to do homework? My school (University of Missouri) has a Unix account for every student, and I've been able to SSH in to accounts there to do some coding, but it's nowhere near as good as having a GUI editor, especially if you aren't used to vi or a similar editor. You'll definitely want something with a traditional OS on it for coding purposes, at least for now. Who knows, in the future, someone may make a decent IDE for the iPad, and the point will be moot. For now, it's not a great option.

The "power combo" is an interesting idea, and it's pretty much what I'm doing now, but with a MacBook Pro in place of the Mac mini, as I've stopped taking my MBP to most classes, opting for the iPad instead. The only downside to this is that you're stuck without a laptop in the case that you have to meet with a group to work on an assignment outside of class. I don't know what college you're planning on going to, but the labs at my college fill up fast and most people usually end up meeting in a generic "commons" area and using laptops to work on projects. Like I said, though, you'll be fine with the iPad for anything except coding.

Depending on the way your school acts, an iPad may be just fine. I don't know the number of group projects you'll be doing and the order your classes will go in. In my freshman year, we had a ton of "fluff" classes early on, where I wasn't doing any coding. The iPad will be fine for those courses. Of your options, I'd definitely lean towards the "power combo", but if it's an option, I'd start the semester with _just_ the iPad. Give it a few weeks, see if it's working out for you. If you've got too much going on, and you find yourself hitting the labs more than you'd like, add the mini. The reason for going without is to allow yourself to make sure you're using the full potential of the iPad, and that you aren't relying too heavily on the other computer as a crutch. If you end up needing that crutch, I'd stick with your current, busted laptop before giving in and buying the mini. Ubuntu's going to be a great for the early classes (assuming that your school will start with Java, like most do), and you may be able to eke a few more years out of the hardware. Trust me, the early years are not going to require a huge amount of processing power or memory. 1.6GHz will be more than enough to compile 20 lines of Java. :P

Conclusion: Start with the iPad. Use your busted laptop if you need to. Only if those two options combined are a problem, go for the mini. If you can hold out through your freshman year with just the iPad and laptop, I'm sure someone will have released an iPad IDE by then, and you'll be golden. People have started releasing web "IDEs" already, so it's only a matter of time.

No matter what, have fun at college. It's a great time.

<comment><USER9> _Labs aren't a great solution, either. Do you really want to have to leave the comfort of your own room to do homework?_

When I was in school, the lab was a great place to do homework because you could bounce ideas off your peers.

Our labs might have been different thought; we had a Linux cluster where the CS students hung out. The fact that the computers ran Linux was enough to keep most non-CS majors away, so you could ask anyone in the cluster something about CS and be pretty sure they'd be able to help.

<comment><USER8> Ah. That'd be nice to have, but our CS labs (also running Linux) tend to be full of people who don't like to talk to each other, unless they're in a group together. Guess it depends on the people working there.

</comment></comment></comment><comment><USER10> Intensive document creation, like writing papers, is not well handled by an iPad at present. It syncs horribly, is not good for copying/pasting from other documents or websites (due to poor multitasking support), etc.

On syncing: [http://www.macobserver.com/tmo/article/file_sharing_with_an_...](http://www.macobserver.com/tmo/article/file_sharing_with_an_ipad_ugh/)

</comment><comment><USER11> Forget about taking notes in class with a laptop.

For some EE classes there is absolutely no way you are going to be able to take notes with all of the integrals, subscripts, superscripts, greek letters and strange symbols (but don't let that all scare you). The best way to get this all down is to write it down on paper, but I have seen some students do decently with a tablet computer (the kind that have a rotating/folding screen).

The other problem with a laptop (as another poster has mentioned, but I just wanted to emphasize) is that you will end up distracted. All it takes is for the lecture to slow down or someone to ask a silly question and the next thing you know is that the lecture is over and you're in the middle of some article about the next Apple product.

Base your decision on what you will be using your computer for outside of class: programming, maths simulation, circuit simulation, and lab reports. All of those can be done from within a Windows VM.

</comment><comment><USER12> I am in college. The people who bring laptops browse Facebook. The people who take notes use pencil and paper. An iPad is a cool gadget but I think it will only be a distraction in class, not to mention I don't see why the iPad will be particularly good for a EE/CS major. Better to get a crappy old tablet so you can play with the innards.

</comment><comment><USER13> How about no laptop? In my day (which was less than a decade ago) we got through undergrad just fine without having laptops. Pah!

Seriously though:

a) Take notes with pencil and paper

b) Give presentations sans powerpoint (your audience will probably be grateful), and

c) Work on your projects at home.

You can be "that weird computerless guy". I foresee problems only if there are group assignments.

<comment><USER14> How about a rock and a chisel? A computer is the tool of choice for a EE or CS major. If you're a EE, you will need a computer quite often for doing SPICE simulations, code development, matlab homework problems, schematic capture, pcb layout etc.

The computer for a EE or CS student is a third arm. Learn to use it as efficiently as possible. Computers are amazing tools!

<comment><USER15> I went through an EE program (took a bunch of CS courses too), and graduated in 2003. I didn't have a laptop through the entire thing.

A computer, sure. I had one in my dorm room. Laptops were nice, but not essential. I certainly hope that hasn't changed in the past seven years... it would be pretty sad if so.

(Then again, I also didn't have a cell phone during college, and now I have no idea how I got along without one.)

edit: To my recollection, when I was in college, the people who had laptops in class did email, wasted time on Slashdot, or played games. Seems like it was more of a distraction than it was useful.

</comment></comment></comment><comment><USER16> Get a notebook. If you have to do presentations you might want to demo code in which case an iPad isn't going to be much good.

<comment><USER17> or a netbook, which would be cheaper and very portable. and if doing the CS/EE route, you can run a cool OS like the rest of the crowd: Linux

</comment></comment><comment><USER18> Get a laptop and fun unix on it -- linux or mac os x.

</comment><comment><USER19> How about a PC laptop + Mac Mini?</comment>


Hackers Hijack a Big Rig Truck's Accelerator and Brakes - <AUTHOR> https://www.wired.com/2016/08/researchers-hack-big-rig-truck-hijack-accelerator-brakes/ <comment><USER2> So, vehicles can be sabotaged by plugging physical devices into them.. So what?

Once you have physical access to the internals of a vehicle, there's a myriad of ways to cause havoc, and this has been the case since ever.

"attackers will find vulnerabilities offering over-the-Internet access to vehicles' vulnerable digital innards". I have yet to see a viable attack which seriously compromises a commercial vehicle's safety without the attacker needing physical access first.

In the Jeep case, the researchers simply reprogrammed the onboard electronics to connect to their server and not the official one, as well as to send commands it was never intended to send (like turn-of-the-brakes and so), but unless this can be done remotely, it's just another case of sabotaging a car by getting under the hood, which again is nothing new.

In my opinion, I see lots of journalists calling for histeria, and little real reasons to worry about this.</comment>


What's the history behind Java and India's engineers? - <AUTHOR>

Don't let the title mislead you. I'm not looking to start a stereotypical discussion with horrible comments regards this topic. I actually want to know if there was a national academic plan in India to have many graduates around Java and other Sun/Oracle products. My motivation for this comes from my constant interviews with Indian individuals working or wanting to work around Silicon Valley. I'm also new to Silicon Valley. Please bare in mind, that this is total curiosity. <comment><USER2> Back in 2000s, when companies were hiring Indian talent left right and centre, Java was main language being taught in new graduates. Learning Java, Core Java, Enterprise Java (whatever these words mean) meant you could get a job in US by hook or crook. Many families prospered this way. Back then, mediocre graduates learned only Java and for every kid in immediate family, extended family and neighborhood, Java became equivalent to Software. Today, since there is no other language that dominates the media so much as Java did, it is still being taught by the numerous coaching institutes in back alleys of Hyderabad, Bangalore, etc.

This I believe is where your knowledge comes from.

</comment><comment><USER3> In academics in India, you start out with C to learn the language basics and then move to Java. It's like undergrads in the US start out with python. That's the reason why there are many tech graduates with Java knowledge.

As to why Java, well it is arguably the de-facto enterprise language. Many of the outsourcing tech firms need Java skills from a graduate. I'm assuming this is one of the important reasons why Java is taught to grads.

That and minimal hacker/startup culture (not implying it in a negative way) results into most grads not trying out 'in-fashion' languages like node/ruby etc.

<comment><USER4> Almost all of what you said, is 100% applicable to Pakistani Software Industry

</comment></comment><comment><USER5> From what I know people learn Java because there are many job opportunities in India. Amazon, Oracle are some examples.

</comment><comment><USER6> In India they teach you. C -> C++ -> Core JAVA -> Advanced JAVA.</comment>


Show HN: A Nintendo style arcade game for iOS - <AUTHOR> https://itunes.apple.com/us/app/zodiac-dodge/id877898276?ls=1&mt=8

<comment><USER2> I don't think the on-screen controller really works. I wanted to drag the gorilla with my finger to make it move, tap the gorilla to make it jump.

I'm comfortable with a soft keyboard — I can look at the keyboard while I type without worrying that something's going to eat my text while I'm not looking at it, and there's (imperfect) typo-correction too. But a soft game controller demands my attention at the same time that the game demands my attention, and doesn't compensate for the lack of tactile feedback.

<comment><AUTHOR> Right now we're testing out tilt screen controls, but that's a great idea also.

</comment></comment><comment><USER3> Art work looks good. I would recommend varying up the screenshots a little. I can't really tell how the gameplay works as each screenshot is essentially the same, just with different items. I would maybe also add a short video of the gameplay to your developer homepage. I went there to see if I could get some more info on the game but it just said 'Zodiac Bash Coming Soon'.

<comment><AUTHOR> Thanks for the heads up we haven't changed that yet.</comment></comment>


How to write efficient matrix multiplication - <AUTHOR> https://gist.github.com/nadavrot/5b35d44e8ba3dd718e595e40184d03f0 <comment><USER2> Writing the fastest matrix multiplication you can is pretty fun. It probably won't be as fast a BLAS or MKL, but if you get close to it, it's a rewarding experience.

> see what else can be done I recommend reading this paper by Kazushige Goto

After doing the easiest change of loop reordering for already significant perf improvements, the paper linked ("Anatomy on a high performance matrix multiplication") is really excellent.

It will walk you through all the optimizations like tiling for reducing L1, L2, L3, and TLB cache misses, and leverage vectorization.

Then for squeezing out even more perf I remember there's the things like loop prefetching, loop unrolling, which you would expect the compiler with the best optimizations flags even targeted for the native architecture to take care of automatically. But you realize that it's not necessarily true.

<comment><USER3> If your particular matrix problem has special properties that aren't covered by blas, you can wring out an apparently impossible improvement. I once found a matrix problem (periodic cubic splines) which turned out to have a solution in O(N) - the matrix columns were related such that it could be replaced by a vector.

<comment><USER4> I can attest this too, I was recently working with some massive and sparse binary matrix, with only 0.1% elements have values, it was magnitudes faster to index and sum the elements than to do a dot product. Not even a Tesla GPU was close to the performance of a custom matrix operation we wrote.

<comment><USER5> Did you beat one of the sparse matrix packages? Or were you comparing with a library for dense matrices?

<comment><USER4> We tested it against Tensorflow and scipy sparse matrices, we beat those as well, mostly because those general purpose sparse matrices do not optimize for binary matrix (eliminates the need for multiplication)

</comment></comment></comment></comment></comment><comment><USER6> Somewhere in the conversation Les Valiant's paper "General Context-free recognition in less than Cubic time" is worth mentioning. This has informative and clear discussion on the complexity of matrix-multiplication in programming areas such as grammar and parsing.

</comment><comment><USER7> Somewhat related: check out gl-matrix for some fast matrix math in JavaScript - [https://github.com/toji/gl-matrix](https://github.com/toji/gl-matrix)

<comment><USER8> This looks like it's only for 3x3 and 4x4 matrices, e.g. what you usually use in 3d graphics. Or is it possible to do arbitrary matrix multiplication with this lib?

<comment><USER9> It does not appear to be the case.

On the other hand, optimal speed and JavaScript are often different ball parks.

I threw together this thing for when I need some matrix stuff in a little script. Not fast, but flexible.

        var vop = op=>( (a,b)=>( a.map((v,i)=>op(v,b[i])) ) );
        var vdiff = vop((a,b)=>a-b);
        var vadd = vop((a,b)=>a+b);
        var vdot= (a,b)=>a.reduce( (ac,av,i)=>ac+=av*b[i],0);
        var vlength = a=>Math.sqrt(vdot(a,a));
        var vscale = (a,b)=>a.map(v=>v*b);
        var vdistance = (a,b)=>vlength(vdiff(a,b));
        var vnormalised = (a,b=1)=>vscale(a,b/vlength(a));
        var project = (point, matrix) => matrix.map( p=>vdot(p,[...point,1]));
        var transpose = matrix=> ( matrix.reduce(($, row) => row.map((_, i) => [...($[i] || []), row[i]]), []) );
        var multiply = (a,b,...rest)=>(!b)?a:multiply(a.map( (p=>transpose(b).map(q=>vdot(p,q)))),...rest);

I look forward to the day when the sufficiently-smart JIT implements the optimal Matrix Multiplication from that. :-)

<comment><USER8> Thanks! I find it weird that performance-focused javascript projects don't have live benchmarks up so you can judge for yourself. Personally I've found that a semi-clever matrix multiplier in c++ compiled with emscripten can give about 1.5 gflops (singlethreaded on a 2.5GHz i7 macbook pro), and existing js libs like sushi are a lot slower.

</comment></comment></comment></comment><comment><USER10> How would this change if you were dealing with more sparse matrices? Im used to using spark mllib distributed to do matrix multiplication on large sparse coordinate matrices and it works fine for me but i dont think i need the level of optimality this approach would demand.

<comment><USER11> Dense matrix algebra has the benefit that besides the matrix dimensions, the data itself has no impact on performance: the access pattern is entirely predictable and known as soon as you know the matrix sizes (side note: which is why just-in-time libraries such as libxsmm exist). For most cases, you can rely on MKL or Eigen to produce near-optimal performance for your dense linear algebra operations.

Sparse matrices do not have that luxury. Sparse matrix ops have access patterns that entirely depend on your data. You simply cannot make a library that covers every possible distribution of non-zeroes in an optimal way. At best you have a toolbox of a large number of representations and algorithms that you choose for each different use-case. Engineering simulations and solvers can have block or cluster patterns of non-zeroes, which can be exploited by doing dense operations for the dense blocks. Large real-world graphs often have an exponential non-zero distribution and are often extremely sparse, which might need an hash-based join algorithm for an axpy-kernel. Are you running a tight CG-solver loop? Then you might want to bundle multiple spmv-kernels to operate multiple vectors on the same matrix (for similar reasons as states in the original article). You are distributing with Spark? Unless your non-zero distribution is uniform, your matrix is really hard to partition evenly. If your matrix never changes, you may consider preprocessing using a partitioner (METIS, Mondriaan).

In short, it is highly unlikely that the library you are using is anywhere near optimal for your use case. Do explore alternatives based on your domain- insights, it is not uncommon to net double digit performance improvements.

<comment><USER12> _Dense matrix algebra has the benefit that besides the matrix dimensions, the data itself has no impact on performance_

I was very surprised when I first learned that's not strictly true, because of denormal numbers[1]. Here's a session in ipython --pylab (with MKL), demonstrating a 200x slow-down for matrix multiplication with tiny numbers. Crazy!

        In [1]: A = randn(1000, 1000)

        In [2]: %timeit A @ A
        25.9 ms ± 199 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

        In [3]: A *= 1e-160

        In [4]: %timeit A @ A
        5.52 s ± 21.2 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

You hit denormal numbers more quickly with single-precision floats. I have been bitten by this issue in the wild a couple of times now, and seen a couple of other people with it too. Sometimes denormals are created internally in algorithms, when you didn't think your input matrices were that small.

[1] [https://en.wikipedia.org/wiki/Denormal_number#Performance_is...](https://en.wikipedia.org/wiki/Denormal_number#Performance_issues)

<comment><USER13> It's just incredible that there's still no way to force denormals to be rounded silently to zero on x86. You have to go out of your way to check for them, or face horrific performance penalties for a feature you didn't even want or need.

<comment><USER14> Huh? Set bits 6 (DAZ) and 15 (FZ) in MXCSR. Done.

The only instructions you can't set to flush are the legacy x87 opcodes, which you shouldn't be using in a performance-sensitive context anyway.

<comment><USER13> Sadly, some of us are stuck maintaining code that still needs to run on pre- SSE2 hardware.

</comment></comment></comment></comment></comment></comment><comment><USER15> >The first thing that we need to do to accelerate our program is to improve the memory utilization of matrix B.

Why not put matrix B in column-major order?

<comment><USER16> Matrix multiplication involves moving across one matrix in column order and the other matrix in row order. So it turns out that both row or column ordering make no difference. I think that matrix multiplication is one of the best examples of a deceptivly simple problem. It shows how far ALL code is from peak performance. We can only strive to be within an order or two from peak performance.

<comment><USER17> This trick does work. If the matrices are in row-major order, you transpose B in memory and then compute A * (B^T)^T. This multiplication reads both matrices in row order.

However, while this does improve performance over the naive algorithm, it's still not as good as a tiling algorithm.

<comment><USER18> I've found where that causes problems is when on of the matrix dimensions is not a multiple of the cache line size. It's common on gpus to use more elements then there are in the dimension. Nvidia calls this the leading dimension, and it must be greater than or equal to the Matrix dimension. If this is the case, the transpose trick doesn't quite work anymore.

</comment></comment></comment></comment><comment><USER19> I was really expecting this to just be "import library".

That said, very well done article. Would be interesting to see this style expand to the more ambitious methods in [https://en.wikipedia.org/wiki/Matrix_multiplication_algorith...](https://en.wikipedia.org/wiki/Matrix_multiplication_algorithm#Sub- cubic_algorithms)

</comment><comment><USER20> This thread is old, but for the sake of archives:

BLIS actually tells you how to write a fast production large-matrix GEMM, and the papers linked from [https://github.com/flame/blis](https://github.com/flame/blis) would be a better reference than the Goto and van de Geijn.

For small matrices see the references from [https://github.com/hfp/libxsmm](https://github.com/hfp/libxsmm) but you're not likely to be re-implementing that unless you're serious about a version on non-x86_64.

See also [https://news.ycombinator.com/item?id=17061947](https://news.ycombinator.com/item?id=17061947)

<comment><USER20> I could also have referenced the original(?) take on this: [https://github.com/flame/how-to-optimize-gemm](https://github.com/flame/how- to-optimize-gemm)

</comment></comment><comment><USER21> A similar article on how to optimize SGEMM on GPUs using OpenCL - [https://cnugteren.github.io/tutorial/pages/page1.html](https://cnugteren.github.io/tutorial/pages/page1.html)

</comment><comment><USER22> I'm surprised to see no discussion of faster-than-naive algorithms like Strassen[1] or Coppersmith-Winograd[2], which very counterintuitively run faster than N^3.

Note: Only helpful for specific or very large matrices.

[1]: [https://en.wikipedia.org/wiki/Strassen_algorithm](https://en.wikipedia.org/wiki/Strassen_algorithm) [2]: [https://en.wikipedia.org/wiki/Coppersmith%E2%80%93Winograd_a...](https://en.wikipedia.org/wiki/Coppersmith%E2%80%93Winograd_algorithm)

<comment><USER23> The problem with those algorithms is that they define "work" as "how many multiplications do I have to do?" Addition and memory accesses are defined by the analysis to be free. And you end up doing 4-5 times as many floating point additions as the naive algorithm, and the memory accesses are decidedly non- cache friendly. And modern CPUs have two multipcation units but only one addition unit, so multiplications are actually faster than addition. Plus, there are ergonomic issues with requiring square powers-of-two matrices.

Matrices have to be truly spectacularly large to benefit from Strassens, and applications of the asymptotically faster algorithms don't really exist. The matrices have to be so large that they're computationally too expensive regardless of the asymptotic speedup. You're talking about dispatching work units to a cluster at that point.

Most importantly though, the discussion is... boring. It's just "yup, we do Strassens, then we quickly reach the point where we go back to the naive algorithm, and things are interesting again."

<comment><USER24> > Matrices have to be truly spectacularly large to benefit from Strassens

I don't have personal experience with other mmult methods, but Wikipedia says Strassen's algorithm is at least beneficial at matrix sizes that fit in cache. I _have_ had occasion to deal with matrices of large dimension (though usually sparse, and usually not square) and those numbers don't seem crazy at all. Are they that far off-base? (Wikipedia _does_ say that Coppersmith-Winograd tends to never be a useful improvement.)

In any case, perhaps a more friendly response might be to point out that Strassen's algorithm tends to "bail out" into regular old matrix multiplication for small `n` anyway, so this still helps provide a speedup.

</comment></comment></comment><comment><USER25> I wrote a JavaScript implementation with the naive method, but it also checks that matrix are compatibile and generalize the underlying ring operation (mul and add) so you could use it to multiply complex matrices, or bigint matrices, or every other ring you define.

[http://g14n.info/matrix-multiplication/](http://g14n.info/matrix- multiplication/)

</comment><comment><USER26> A really nice video with animations of various scheduling approaches for these types of linear algebra algorithms: [https://youtu.be/3uiEyEKji0M](https://youtu.be/3uiEyEKji0M)

</comment><comment><USER27> Related: [https://news.ycombinator.com/item?id=17058189](https://news.ycombinator.com/item?id=17058189)

</comment><comment><USER8> I'm a big fan of writing simple, portable code that is structured enough to let the compiler optimize it to perfection. If you do it right, a naive A' * B multiplier can be within 20% of BLAS performance, at least for non-huge matrices. Now, when you need that code on some embedded platform or for emscripten or whatever, it'll just work and be really tiny too.

<comment><USER28> In my experience, the people who leave comments like yours are the ones who don't often have to solve real performance problems. The compiler can't do it all (and, specifically, won't help you in the case the article discusses), and those who write code used in performance sensitive applications and/or libs used by literally millions of people have to know this stuff. Where do those people learn when they're starting out if everyone tells them to "stop thinking stupid, your compiler is smarter than you"?

I for one am glad they spend a lot of time thinking about it so that you don't have to and can instead spend your time opining on forums about premature optimization.

<comment><USER8> Speculative ad hominem aside, the point in this case was to learn to write code so that good compilers can output performant SIMD-heavy code. It's not trivial and can include a lot of trial and error and looking at assembly. But once you learn these tricks, code can be clean, portable _and_ performant, I would say that's a win.

<comment><USER28> > Speculative ad hominem aside

I can only judge you by what you say here. Obviously I don't know you, but what other choice do I have? In my experience, those who rely on their tools to do everything for them are useless when things go sideways.

> the point in this case was to learn to write code so that good compilers can > output performant SIMD-heavy code

No, the point is that comments like yours serve little purpose. No one is suggesting that you should roll your own lib for matrix math in every situation. However, if you _understand_ what happens behind the scenes you write better code and can more easily diagnose performance issues.

The problem with "don't worry about it" type responses is that sometimes you _do_ end up having to worry about it, and now you're not equipped to solve the problem. Hell, you may not even know that there is a problem to begin with because you have no idea what the runtime characteristics of your algorithm _should_ be.

Maybe you'll have to write some code like this someday. How would you know if your algorithm is performing well? Perhaps you think your 10 hour run is totally acceptible... until someone who read this article and has some experience comes by. They laugh at the absurd performance and spend a bit of time making it 60% faster _because they know how this stuff works_.

There's a lot of value in learning how things work, and "premature optimization" responses like you see all over SO are worthless.

</comment></comment></comment></comment><comment><USER29> tiling and vectorizing are well known.

</comment><comment><USER30> please look at [http://halide-lang.org/](http://halide-lang.org/) and especially [https://www.youtube.com/watch?v=3uiEyEKji0M](https://www.youtube.com/watch?v=3uiEyEKji0M)

they seem to open new ground in the area you are prusuing edit: if you know any other groups/ppl who practice a similar approach send them my way

anyhow, it seems like the hand written assembly vs compiled code goes in to a new skirmish

the age where the whole spectrum from generalcpu > asic becomes available to programmers all around

bottle necks of parallelism, locality and redundancy seems to be the guiding lights

hand written we'll be probably lead by the magnificent [http://www.greenarraychips.com/home/documents/pub/AP001-MD5....](http://www.greenarraychips.com/home/documents/pub/AP001-MD5.html) compiler generated by halide and the like

and once we got the ball rolling and more public knowledge is available probably the locked down techniques of the major supercomputers will start to emerge ( i just assume pps from the supercomputers area have been dealing with this stuff for the last couple of decades )

can i spit some more, dear hacker news? focus, you gotta focus, forget about the compiler generating good code, it's all about the ability for us humans to explore the domain

even in halide, they mention the point that you still need to sit down and code different approaches, but their tool makes it a breeze compared to exploring those different approaches using hand written assembly

</comment><comment><USER31> Sorry, but this is not at all how to write efficient matrix multiplication.

The correct answer is: don't. Use BLAS (yes, written in Fortran) + OpenMP (if needed), and let the smart people handle this. (Unless you are one of those smart people - in which case, you should improve BLAS, which the rest of us mortals will use).

The longer answer is: matrix multiplication is a highly non-trivial algorithmic problem[1], which is, in fact, still open.

The asymptotically fast algorithms (such as Strassen's[2]) outperform the naive algorithm (i.e. by definition, such is in the article) when matrices get large.

After skimming the article it is still unclear to me how the optimized naive algorithm fares against Strassen's, for example.

The final bit of advice this article is offers is reading the paper on... implementation of BLAS (that's what Goto describes there).

And so that's basically _the_ case where _avoiding_ Goto is considered harmful.

[1][https://en.wikipedia.org/wiki/Matrix_multiplication_algorith...](https://en.wikipedia.org/wiki/Matrix_multiplication_algorithm#Sub- cubic_algorithms)

[2][https://en.wikipedia.org/wiki/Strassen_algorithm](https://en.wikipedia.org/wiki/Strassen_algorithm)

[3][https://en.wikiquote.org/wiki/Donald_Knuth](https://en.wikiquote.org/wiki/Donald_Knuth)

<comment><USER32> Oh, interesting point! Yes let's just use OpenBLAS, no need for anyone but one or two people to understand these things. Sure.

Okay so let's have a look at OpenBLAS's Skylake kernel. Maybe we can learn some deep wisdom this author hasn't considered! Go and have a look for it, I'll wait here.

Ah, what's that? THERE IS STILL NO SKYLAKE KERNEL IN OPENBLAS? Interesting.

In fact if you do "sudo apt-get install libopenblas" on Ubuntu 16.04 (the one _every_ deep learning tutorial will be recommending), you'll find you get version 2.18 of OpenBLAS. You'll find that this version of the software is quite old now, and it has a bug that causes it to fail to detect your CPU correctly. You'll find that instead of using _any_ AVX instructions, it'll fall-back to the Prescott kernel. You'll also find this is really fucking slow.

In summary:

a) You have no idea what you're talking about;

b) Even if you were right on these points of detail, your point of view is still terrible

c) Please avoid being so beligerantly wrong in future

<comment><USER33> Let me add that there exists a similar echo chamber when it comes to questions regarding cryptography. Way too often questions about how to do this or that in cryptography are put down by a "you don't" or the generic "don't roll your own crypto", which is hostile against curiosity, learning, and knowledge and on top of that unfriendly towards the one asking. Often when I read it, I feel the hacker ethos is being insulted.

While I think there are reasonable arguments _for_ the security of (certain) self-made crypto, taking that security aspect completely aside, we need new people in every field, and cryptography is no exception from that. We should embrace newcomers, not tell me to not do what would teach them so much. Admittingly, one can easily mess up, but then tell how and what to take care of instead of just telling them not to try anything at all.

<comment><USER34> I feel like the admonition, "don't roll your own crypto" refers to production code. If you want to develop your own crypto for "curiosity, learning and knowledge" I don't think many people in the security community will really bother you about it. Just don't use it for securing anything in production unless it's been thoroughly audited and you have a reason not to use something that already exists.

It seems pretty obvious why you shouldn't design or implement novel cryptography in production without good reason and significant expertise. It also doesn't seem like the people saying this need to spell out that this doesn't preclude learning exercises or legitimate research which won't endanger any real world information. So what's the controversy?

<comment><USER35> If you want to indulge curiosity, learn, and obtain knowledge, concentrate on _breaking_ cryptography. Even relatively basic crypto attacks will teach you far more about how cryptography works than implementing well-known constructions for the nth time will.</comment></comment></comment></comment></comment>


Show HN: Bookmarks manager – Fastbmk.com - <AUTHOR> http://fastbmk.com/ <comment><AUTHOR> Hello all! I built Fastbmk.com as a fast, lightweight and reliable bookmarking service. You can create bookmarks with tags and notes. List bookmarks by tag. Search bookmarks. Import and export bookmarks.

Browser addon is available for Firefox and Chrome. Using addon, you can create bookmark and check if the current page is already bookmarked.

I intentionally used a minimal set of web technologies to create a tool for everyday use, which doesn't waste resources of client's computer.

Minimalistic design Low CPU/Memory usage Quick server responses

I already use the service on a daily basis and it works just fine. So I invite you to try it too :) Currently the service is more like a minimum viable product. A lot of features are planned to be implemented in the future.

So your opinion, questions, suggestions and ideas are greatly appreciated :)

<comment><USER2> Is this tool uses the default Chrome bookmarks or it has its own bookmarks database?

My problems with Chrome's default bookmarks manager: 1\. it doesn't allow creating folders 2\. it doesn't allow using icons instead of folder names

<comment><AUTHOR> So have you tried the service? :)

<comment><USER2> No, I want a better bookmark manager for Chrome bookmarks, not a new database.

<comment><AUTHOR> Can you describe what would you like to improved in Chrome bookmarks to make them ideal for you?

<comment><USER2> I want a better bookmark manager for Chrome's builtin bookmarks database.

1\. I need many folders on the bookmarks bar with configurable icons (with option to not use folder names at all). Maybe even 2 lines.

2\. I need a 1-click bookmark search. I.e. search bar on the bookmarks bar.

3\. Export search results or all folder bookmarks - via clipboard or share with a friend via email.

4\. Currently Chrome's default bookmark manager, doesn't allow creating new folders. You can do it only via drop-down menus.

<comment><AUTHOR> What if all of the functionality would be available as a Chrome Extension, but the data would be stored in a custom database, not the Chrome's native?</comment></comment></comment></comment></comment></comment></comment>


Bacteria from Earth can survive in space and could endure the trip to Mars - <AUTHOR> https://www.cnn.com/2020/08/26/world/earth-mars-bacteria-space-scn/index.html <comment><AUTHOR> >DNA Damage and Survival Time Course of Deinococcal Cell Pellets During 3 Years of Exposure to Outer Space

[https://www.frontiersin.org/articles/10.3389/fmicb.2020.0205...](https://www.frontiersin.org/articles/10.3389/fmicb.2020.02050/full)</comment>


Jason Calacanis Planning a Startup Camp - <AUTHOR> http://www.calacanis.com/2008/03/22/startup-camp-for-entrepreneurs/

<comment><USER2> I think this sounds like a great idea, especially given Jason's extensive experience working with young entrepreneurs and start-ups.

However, I am concerned with the "open door policy" and the "free to cheap" cost. With no real barrier to entry, the amount of participating people may become overwhelming, thus making it difficult and/or impossible to achieve the "intimacy" aspect.

In addition, both of these aspects would increase the possibility that the participants would not necessarily be the type of highly motivated, independent people (who would have found their way into the startup camp regardless of any barrier to entry, no matter how challenging) who are predisposed to succeed in a startup environment.

mS

<comment><AUTHOR> I was thinking the exact same thing when I first read it. There's got to be some kind of criteria in place to keep it effective and focused. Even if it's just a simple, written application stating who you are, why you want to be there, etc; at least then you can tell if you're dealing with an intelligent human being and if they're serious or not. That said, I'd be really interested in seeing a series of camps that helps those of us in the early, formative stages. It also seems like a great way to learn to develop ideas and meet potential cofounders.</comment></comment>


Ask HN: How do you track user behavior/engagement inside of your SaaS app? - <AUTHOR> I'm curious if anyone has a way to track the behaviors (time spent in app, pages they frequent, steps they're taking, etc) of applicants INSIDE of their SaaS app? I don't mean hotjar :) <comment><USER2> A few popular choices for this: Mixpanel, Amplitude, Heap Analytics, KISSmetrics.

Some factors that may push you to one more than the other:

* What are the 3-5 things you're currently most interested in concluding? Some products will make certain reports/conclusions much easier than others.

* Will your events be generated exclusively from the server (major benefits: not subject to content blocking, can be augmented with other data only the server has), or only from clients(s), or both?

* Do you have one important ID (typically a user ID), or 2 (typically a customer/company ID and a user ID), or many?

* Once you're able to measure the basics, what do you want to do with it? Some examples: cohort analysis; contextual in-app messaging with a product like Intercom; exporting the data to a BI tool like Tableau

</comment><comment><USER3> We use Amplitude right now and absolutely love it! We have a Rails App with a React front-end and we just made a helper to have Amplitude track all actions we deem "important" and spin up a job in our back-end job queue. We also use Google Analytics and Intercom for some higher level stuff.</comment>


An OpenAPI compliance Proxy that ensures your data matches your swagger.json - <AUTHOR> https://github.com/EXXETA/openapi-cop <comment><USER2> I've had problems recently with the "api-spec-converter" package and vulnerability scans. While there is an active discussion[0], I don't know how I feel when a lot of the package's dependencies haven't been updated in months or years.

Your project realPubkey, nonetheless, looks great. I do wonder if AWS/Azure/GCP already provide such a service?

[0] [https://github.com/APIs-guru/raml-to- swagger/issues/14](https://github.com/APIs-guru/raml-to-swagger/issues/14)</comment>


John Hopkins Researchers Find Cheap Acne Drug Prevents HIV Breakout - <AUTHOR> http://www.hopkinsmedicine.org/Press_releases/2010/03_18a_10.html

<comment><USER2> Unfortunate choice of words in the headline, perhaps a failed pun. Or maybe it was just me. Either way, it has nothing to do with lesions: the drug seems to deter or prevent the HIV -> AIDS transition.

</comment><comment><USER3> Maybe this combined with the stem cell transplanting can eliminate AIDS altogether. All you have to do is stop it from spreading then get your stem cells to to push out infected cells.

[http://digg.com/health/Man_appears_free_of_HIV_after_stem_ce...](http://digg.com/health/Man_appears_free_of_HIV_after_stem_cell_transplant_8)</comment>


How a hacker slumber party gets girls into code - <AUTHOR> http://opensource.com/education/14/5/pearl-hacks-women-code

<comment><USER2> The problem with that is this....

Sure, there is social interaction on projects, sure there are group efforts in any substantial programming project, but, at it's base, coding is a solitary and lonely endeavor not suitable for even all of those smart enough to do it.

There is a reason for the nerd stereotype. Programming is a discipline of years, not a social event of a few evenings. Trying to make it something it isn't probably isn't going to work.</comment>


Show HN: Customer Care on WhatsApp and Wechat via Zendesk - <AUTHOR> https://app.ongair.im/ <comment><USER2> Testing it out.

Messages are not instant, i sent a message to # activated with app over 3 mins ago and it has still not appeared in the app. Also sending a message to a contact has not been received

<comment><AUTHOR> Hi Ismail, it does take a while get activated, sometimes upto 30mins its not ideal it's something we are fixing.

Thank you for the feedback.

</comment></comment><comment><AUTHOR> Ongair is an easy to use dashboard that enables businesses to do great customer support on WhatsApp or WeChat straight from Zendesk seamlessly.

<comment><USER3> Any plans to support LINE?

<comment><AUTHOR> Yes, we plan to integrate most of the popular IM platforms, Viber, Kik and also SMS( still important in most markets)

<comment><USER3> Do you have some newsletter?

</comment></comment></comment></comment><comment><AUTHOR> Please DO NOT USE YOUR PERSONAL NUMBER to test, get a number you can experiment with or use your actual customer support line

</comment><comment><USER2> Also beware. I am having an issue transferring the # back to my phone. Do not use it on your actual WhatsAPP #

<comment><AUTHOR> True, i have tried to make it clear in the activation process DO NOT USE YOUR PERSONAL NUMBER! in red, people still ignore that.

Thank you for the feedback. Try sign up again with a test number.</comment></comment>


Salesforce debuts Do.com, a smart social productivity app for small teams - <AUTHOR> http://venturebeat.com/2011/11/08/salesforce-com-debuts-do-com-its-take-on-the-social-productivity-app/ <comment><USER2> Fantastic. From poking around in the console a bit, it looks like Do.com is a Backbone.js app, and is using Handlebars.js for templating.

<comment><USER3> Yep. CoffeeScript too :)

What you see is just the beginning. If anyone's interested, we're hiring developers and designers: <http://news.ycombinator.com/item?id=3060989>. We run as an independent business unit within Salesforce, similar to Heroku, and have our own office in downtown SF. Great perks from a large company but all the benefits of shipping as a small team.

<comment><USER4> Any chance of pinging out an invite code for HN users?

<comment><USER3> For sure. <https://do.com/users/sign_up?invite_code=PROTROSTYBY>

<comment><USER5> Thanks for the invite as well.

Been using Asana about a week now so here's some comparisons:

* I like that less is happening on hove compared to Asana—I find the over-reliance on hovers and background changes (cf. new Twitter) very distracting

* the notes idea is cool

* You have the same issue Asana has with "groups"—can't drag a group together

* I prefer Asana's ability to rely on the keyboard heavily

* You should add drag/drop for file uploads, at least using the right pane as the target. I work on a 10yo application so I know why we don't have it but with apps like this it's a no-brainer. It would also improve the upload flow which I dislike, though Google Docs integration is great.

</comment></comment></comment></comment></comment><comment><USER6> Quoting Paul Graham [<http://messymatters.com/pgnames.html>]:

"Nothing could be less cool, at this point, than calling a startup 'cool.com.' A company with a name like that could not have arisen organically. 'Cool.com' smells of a media conglomerate trying to create a web spinoff."

He has a point, yet getting the do.com domain proves they're taking this quite seriously. I guess the two signals cancel and I'm left neutral about the name. :)

Where that really matters, of course, is for startups like stripe.com and simple.com (formerly banksimple). They have justifiably huge value for their expensive domain names: being taken seriously is life-or-death for them.

Although I dislike all these expensive names -- especially "do" -- on other grounds: <http://messymatters.com/nominology>

Btw, I'm curious how do.com compares to trello.com...

<comment><USER7> "do.com" and "cool.com" are not comparable.

1) "do" is a verb 2) "do" describes exactly the value proposition 3) "do" describes the product, not your relationship to it

<comment><USER6> Good point, "do" is certainly more evocative a name than "cool" would be (unless the latter were in the refrigeration space).

I think it's a lousy name otherwise though. It's, ironically, not even really verbable. Technically it is a verb but not one that you can use to invoke do.com. Imagine swapping 'trello' for 'do' in this sentence:

"Our task list is getting out of hand -- we should trello this."

</comment></comment></comment><comment><USER8> What does this do that is "smart"? The article only mentions one concrete thing that this program does, which is figure out your e-mail address when you send it an e-mail:

 _For example, send a short e-mail to firstname.lastname@example.com and it will automatically detect your address and add an entry._

I do not think this counts as smart.

</comment><comment><USER9> Looks remarkably like asana.com, flow.com, orchestra.com... Seriously, how did this happen? The UI, emphasis and core functionality of all these are so similar (even for a narrow category) that this cannot be a coincidence.

<comment><USER10> I can't speak to how those companies have built their products, but I can say that the inspiration for our product was Manymoon, and a three-pane view was always in the cards. It's a fairly straightforward UI paradigm used across many apps. I'm a huge fan of apps like Reeder and Sparrow, and they take this UI approach as well. As for the focus of the app, stay tuned :)

</comment></comment><comment><USER11> Happy to see that Salesforce is releasing its own apps on Heroku. It shows they are serious about using the platform as it is, instead of turning it into something enterprisey.

</comment><comment><USER12> "Do.com has been in private beta testing thus far, but now the team wants to open its beta to more participants. It has extended an invitation for the first 200 VentureBeat readers that sign up using a select link to give it a spin. Go to the link <https://www.do.com/users/sign_up> and enter the code "DONKISCHESPOZ" to take part. Those who get in will also get 5 invites of their own so they can bring other people into the app."

<comment><USER13>
        "Invite code is not valid"

All the invites have already been given away.

<comment><USER14> Anyone who got in want to share one of their five invites?

<comment><USER15> I'd like one too. My Twitter username is @danielwithmusic.

<comment><USER16> I'd like one too... Please :) ?? My twitter username is @jgnatch

</comment></comment></comment></comment></comment><comment><USER17> I think these guys ripped us off, and all they did was go after the low- handing fruit: tasks only. We pushed to add geo-tagging, voice, business card scanning, and some a peer-to-peer CRM system.

Plus, we have a cooler name: <http://fieldforceapp.com>

I guess we shouldn't expect Salesforce to cannibalize themselves with a mobile CRM solution, but still they could have tried a little harder!

<comment><USER18> I doubt you got ripped off, given that most people have never heard of you.

<comment><USER17> I don't know, ask Gopal. But it will be interesting to see if SFDC does anything truly disruptive in this space. Hard to see how shareholders are getting much value from a task manager behind an expensive two-letter domain name!

Sure Marc's got deep pockets, but is there any organic growth here?</comment></comment></comment>


Interactive browser-based console for any Python Gist - <AUTHOR> https://www.pythonanywhere.com/gists/5502596/robot.py/ipython3/

<comment><USER2> Nice work, and I wish you success.

In the same space, I recently discovered <http://c9.io> , which I'm pretty happy with overall. Very rich feature-set, and it seems to be open source. (I say "seems" because I haven't checked to see if the OSS code is enough to replicate the site on my own hosting.) Although I've had some squirrelly save/load behaviour, which was concerning.

<comment><USER3> Thanks! We're keeping an eye on Cloud9, they look like a really interesting company in the same space as us...

</comment></comment><comment><USER4> It seems like a cool service, are you charging enough though?

I made a site in a similar vein a few years ago but it never really caught on. Maybe we should chat.

<comment><USER3> Thanks! Yes, we think we need a couple of higher-end plans. The current price points are perfect for learners and low-bandwidth/low-CPU side projects, but something higher-end would probably make it more useful and help our bottom line too :-) Would love to chat, drop me a line at email@example.com.

</comment></comment><comment><AUTHOR> it's fun watching curious people snooping around! !cat /etc/passwd would you eh?

</comment><comment><USER5> Awesome. Not to mention that even tab/auto-complete works.

</comment><comment><USER6> Clever, but what would you use it for?

<comment><USER7> Why, to play Rock, Paper, Scissors, of course!

<https://www.pythonanywhere.com/gists/459573/rps.py/ipython2/>

<comment><AUTHOR> awesome. Rock, every time.

<comment><AUTHOR> sure enough -- might have taken me 5 goes (computer isn't that stupid, it knows rock is the best too)... but eventually it cracked. one-nil!</comment></comment></comment></comment>