Productivity Is About Attention Management - <AUTHOR> https://www.nytimes.com/2019/03/28/smarter-living/productivity-isnt-about-time-management-its-about-attention-management.html <comment><USER2> There's a general misconception between being productive and being effective.

One can fill their days by completing many mindless tasks and consider themselves as productive, but in the end hardly any of those tasks really matters.

On the other hand, another person may only complete one or two tasks in a very short time during their day but these were critical tasks that could generate much higher values. This subsequently makes the person more effective than their peers.

The output values must be weight in determining if one is really productive. Effectiveness triumphs mindless productivity.

This is quite similar to the cognitive and decision fatigue principle which indicates that each of us only has a limited pool of cognitive resources and so we must be very selective in choosing what activities we engage in.

To remain highly effective, not just being productive, particularly for a project manager, it's imperative to spend time only on tasks that require critical decisions to be made, and to delegate the rest. When you take on more tasks than you can handle, like some are misunderstanding this may help them appear as productive, it will undoubtedly affect the quality of each of your decisions and the project will suffer.

<comment><USER3> >it's imperative to spend time only on tasks that require critical decisions to be made, and to delegate the rest.

Nobody ever points out the privilege in this statement. Someone has to be the unfortunate grunt getting delegated to, instead of delegating. If a delegator depends on the grunt, can we really attribute super high productivity to the delegator but not to the grunt? That certainly seems to be implicit when CEOs receive 100x more than the average worker. Perhaps they would be equally competent as delegators given the same opportunities some x years back.

<comment><USER4> I feel like it's really self-serving, too.

"The important work is the work that I, specifically, am good at. Other work that I do not find compelling is unimportant, and should therefore be delegated to less important people."

The routine work done by "grunts" is critical to keep any organization running, whether it's a Fortune 500 company or a family of four. Lots of jobs (customer support, widget assembly, laundry, dishes) are unglamorous but vitally important.

</comment></comment></comment><comment><USER5> My favorite anti-productivity introspections:

\- Remember that you are going to die. Time flies, have you noticed? Is that status symbol that you are pursuing really that important? Is it ever going to make you happy?

\- There is more wisdom in one of your cells than in all self-help and management books combined. Maybe you can't focus for a good reason? What could that reason be?

\- Remember the last time you felt glad to be alive? Was it related to being productive?

No need to thank me.

<comment><USER6> I can feel intensely alive and happy after having produced something, be it a nice piece of code, a short story that people might want to read or a meal that my friends enjoy. There are other surefire ways I can trigger happiness in myself (sex, drugs, exercise, to name some) but the resulting "high" feels more artificial to me.

<comment><USER7> I also get a lot of joy from all of the things you describe.

The fact that the pleasure you get from sex or exercise feels artificial in comparison to writing a piece of code might be something worth thinking about. Is this really how you feel, or is it how you were programmed to feel?

<comment><USER6> I guess what I mean to say is that sex and exercise (not to mention drugs) are more like quick fixes. You can just do it and feel happy for a while. On the other hand, producing something involves more investment and when this investment pays off, the resulting "high" feels more earned or deserved. To my mind it also feels less buzzy or chemically induced (although I am well aware that triggering your reward centres by making something is a chemical process as well).

<comment><USER8> It sounds like you are talking about visceral happiness vs reflective happiness. Two distinct kinds of happiness according to some researchers (i.e. Martin Seligman).

</comment></comment></comment></comment></comment><comment><USER9> For most of technical works i do, concentration only happens AFTER i figure out what i need to do to solve the problem.

Else most of the time, the "researching phase" is the most daunting task.

<comment><USER10> I have the exact same problem. When I know what needs to get done, even if it's tedious, it's not so bad to put my nose to the grindstone and work through it. But when I'm not sure how to approach a task, suddenly every distraction in the world is more appealing.

You often see the suggestion to break up big tasks into smaller, baby step chunks to avoid this analysis paralysis. Doesn't help when I'm not even sure what to do yet.

<comment><USER11> I struggle with this too, and two things that help me are:

1) Start screen recording software and dictate your thoughts as you go through the research/brainstorming phase. Don't often go back and view the recorded sessions, it's the act of recording and speaking out loud that helps.

2) Comment driven development. Stub out functions just with comments, write deeper comment blocks inside a procedure where you have a rough idea of what needs to happen. I paste in table and API definitions as comments too, to avoid having to flip to a different screen which inevitably leads to distraction. Once the program is completely laid out in comment form, and compile/runs with just "STARTING" and "STOPPING" displaying, then I start implementing what's in the comments outside-in (from highest to lowest level). I run the program frequently while doing this, each successful compile/run is a small dopamine hit. As I'm going through, remove any comments that are duplicated by code - all that should remain are comments explaining "why".

<comment><USER12> Thanks for this comment -- I'll put the second strategy in effect (the first one perhaps I'll leave for later as I currently work in an open plan office).

I wonder if this "comment driven" strategy has potential for applying NLP+code generation. I'm sure this is a common enough thought but I'm not aware of the research, does anyone here have pointers?

What I mean is: use NLP to extract intent (where feasible), and then offer possible implementations of the intent.

<comment><USER13> Microsoft is investing quite heavily in generating code from requirements. So far, iirc, they're able to generate simple programs no bigger than 10 lines of code. A good start, though: [https://www.microsoft.com/en- us/research/blog/learning-sourc...](https://www.microsoft.com/en- us/research/blog/learning-source-code/)

</comment></comment></comment></comment></comment><comment><USER14> What the author means by "attention management" is, perhaps, the ability to concentrate for a long period of time.

Personally, for work that i love to do, concentration is rewarding.

For mundane, routine work, I usually go on auto pilot, getting work done, but, doing it while my attention is somewhere else.

For mundane work that _requires_ concentration, my output falls off the cliff. Its here that many tips and tricks ought to focus, but dont. And, frankly, its difficult too, to _hack_ this type of work. Its human nature to be bored out and perhaps nothing can change it.

<comment><USER15> I used to think like you until I met a coworker. He could not code to save his life, nobody in the team liked working with him. Until one day we had a boring data entry task. He could do it for hours at a time, and barely made any mistake. This experience taught me something.

<comment><USER16> What did it teach you? I'm having trouble seeing the relevance.

<comment><USER17> People have their competencies which may not often be evident.

I do still think that, in the hyper competitive corporate world today, such kinds of people will get shafted regularly until they realize themselves what their great skills are and build on them.

</comment></comment></comment></comment><comment><USER18> Interesting take on it, I certainly resonate with the "Michigan weather making work the only thing to do" anecdote.

I struggle with productivity, and feeling productive. and when I look back on times when I felt productive the attention thing does stand out.

It occurred to me when I thought of myself as a younger programmer that I used to love the time between midnight and 3AM, there was literally _nothing_ on TV to distract me, the house was quiet, the kids and wife were in bed and asleep. I could spend the time thinking through the problem and then mindfully developing an approach to solve it. These days, not so much.

There is always something distracting in a web browser. Too many times I find I go to check something and poof an hour has vanished as I've followed a bunch of paths that I wasn't intending to follow. As a result my current efforts focus on not leaving a bunch of tabs open on my browser and being mindful about getting done what I came to do for the task at hand and _going back to the task._ No extra checking of mail or twitter or HN or what ever ...

<comment><USER19> Hey, I have enjoyed your comments over the years on HN, so I am happy to have some good advice to share with you: use something like Instapaper or a transient bookmark list to note interesting/useful things but do your reading just a few times a week. I find that this keeps me from link-following behavior that afterwards seemed like a waste of time. Make the saved link reading time special by setting aside reading time so I feel like I am doing just what I am supposed to be doing.

<comment><USER20> iOS has a feature "save to reading list" that I use to save stories that seem interesting but that I don't need to read for my current task. However, I haven't taken to time to learn to access my reading list :)

</comment></comment></comment><comment><USER21> Busyness is not a virtue. The consequences of your actions being good... that has always been the classic definition of virtue.

Do good things. 1 small action can have massive consequences. Creating something good and useful to others, it does not matter if it took 20 minutes, for sufficiently good actions, if you did 1 a decade, nobody cares how busy you are or if you were "productive".

This is called being constructive. Rather than productive or rather than optimizing busyness (a fake appearance of doing work or "good") instead we just do things that are good. This takes cultures of trust and requires belief products actually benefit people create viability & wealth.

We can define a good action as one that has good consequnces.

Busyness makes nobody happy... it doesn't even make your boss happy. It's just... something you're meant to be, I guess. It's stupid and dumb.

Do good things. "make something other people want"... is a good description of viability, only problem is people also want crack and being a crack dealer is pretty stessful (I imagine) so if you don't want stress or to be to busy and still manage to do great stuff... let's narrow this down. Make something other people want... people want good stuff, don't they? :)

Do good. Don't do not good.

There, simplified everything.

<comment><USER22> > Busyness is not a virtue.

Funny, I've never heart anyone state it so succinctly. I ought to print that phrase out and paste it on the wall at my desk. (I work remote so it'd just be for me and not for management to judge)

</comment></comment><comment> 1e-9 My most effective means of achieving a high level of work productivity is pleasure reading. It doesn't have to be anything deep. It just needs to be something I want to immerse myself in. The mental process I use to completely tune out the real world while reading for fun is the same one I use to reach a high level of productivity for work. Reading keeps it sharp. If I go too long without pleasure reading, my ability to focus on work suffers. Conversely, some of my most significant breakthroughs have occurred within a day or two of a crazy reading binge.

<comment><USER23> I feel that I read in a wrong way. My productivity and ability to think often plummets after reading fiction.

Could it be connected with vizualization? Do you visualize your characters, setting, predict what's going to happen, etc? Usually my eyes just skim over the descriptions of characters and scenery.

<comment> 1e-9 Yes, I think visualization provides the key benefit. When I read something good, my imagination recreates the sights, sounds, smells, and experiences in great detail and tunes out the real world. I lose all awareness of the book's text and everything around me. It's like I "live in the story." This mental state can persist for hours, even in loud environments with high levels of activity around me. After I sleep following some deep reading, I notice a heightened ability to visualize a problem and run mental simulations of potential solutions. It's like I "live in the problem." Interestingly, when I have played video games with similarly high levels of focus, I have not realized work improvement afterwards. In fact, video games seem to degrade my work performance. I think that is because video games generate stress and do not stimulate nearly the same level of mental world-building that good fiction does.

</comment></comment></comment><comment><USER24> I have never been able to force true concentration. I arrogantly proclaim that I have strong willpower* - I have very little trouble forcing myself to do something I entirely don't want to do, whether it be study, workout, code, whatever.

However, forced concentration completely blocks off my ability to think fluidly, and I memorize very little from reading topics that aren't of interest to me (I am looking at you GCP docs), even if I don't allow my attention to wander at all for more than a second. (Rote memorization still works, but it's very impractical for many topics).

I have lately found that if I force myself to read something I hate for 3+ hours straight, my brain involuntarily starts wanting to know more. But I rarely have 3 hours to just get in the mood.

* Research has shown that people who think they have strong willpower test the worst on willpower, but I am a special objective snowflake.

<comment><USER17> Haha GCP docs do seem to be well written though, aren't they?

It seems like folks have their own way of learning how to concentrate effectively on things that may not immediately catch their attention. For me personally, it has been note-taking. Note taking seems to trigger a part of my brain that makes it think that the subject matter is worth paying attention too. Often my notes won't be points but some doodles/diagrams to visualize what things look like.

Others have pointed out that certain kinds of prescription drugs are useful too, which... tbh I'm a little wary of trying. If they turn out to be too effective my internal logic system might have me using them all the time.

<comment><USER24> The docs are very well written. I just know I won't use 95% of what I learn before I have forgotten it. I guess it's good to know what is and isn't available though.

I am way of trying Adderall and such as well, for exactly the same reason as you.

Things like trying to paraphrase in my own words help me way more than standard notes, but doing this is also very time consuming, and it's not necessary when I am into the subject.

I think your strat of "doodles/diagrams to visualize what things look like" likely works on the exact same principle which forces the brain to pay attention since it now has to work with the information.

</comment></comment></comment><comment><USER25> I've tried many different things and I finally have a solution that (I think) works for me:

It's Emacs' Org-mode in combination with Org-pomodoro

\- First, using org-capture I would create an org heading with a description of the problem. If there's a Jira ticket I would attach the ticket number (I have a trivial elisp function that converts a regular number into a complete jira-ticket link)

\- Then I would start a Pomodoro cycle. If I'm on a Mac - it would create an OSX menubar item with the title of the heading (using Hammerspoon). Org will "clock" me in for the task for the next 25 minutes

\- I just realized that I can probably even programmatically switch Slack to "do not disturb" mode while Pomodoro is active

\- Activated Pomodoro cycle is like a sacred ritual for me. I do not pick up my phone or check email or (if possible) even talk to anyone. After Pomodoro is done I would take a break, check email, get some water, etc. If I can get done 5-7 pomodoros during a day - I consider it a very productive day.

\- Org records everything. At the end of the day I know: exactly how long I worked on every single story, the number of pomodoros I did, notes that I took while working on each story. Whenever I changed the status of the story from "todo" to "in progress" and back to "to do" or when I flipped it to "done" or "canceled", reasons why the story was canceled, etc.

And this is all done with a minimal context switching.

<comment><USER26> Do you ever find that Pomodoro doesn't leave enough uninterrupted time on your task? When you're knee deep do you ever just skip your breaks?

<comment><USER27> I generally find pomodoro's 25-minute work intervals too short for software development, I prefer the 52/17 method.

<comment><USER25> Yeah, everyone is different. I tried experimenting with 20-30-40 minute intervals and decided 25 is the optimal for me. But it really has to be distraction free. I use brain.fm or instrumental music (no lyrics) or I just keep my headphones on so nobody bothers me. It doesn't sound very challenging, but after five pomodoros I truly can feel it, after eight - I am mentally exhausted. Ten pomodoros mean I either cheated or something else.

</comment></comment></comment></comment><comment><USER28> As someone who's often asked about my productivity (and who also often feels unproductive anyway), I think this quote from the article gets at the heart of the issue:

>A better option is attention management: Prioritize the people and projects that matter, and it won't matter how long anything takes.

Progress is persistence + time. Nonzero values of both will lead to results. If you spend 1% of your time on a project which requires a hundred hours of work, it'll be complete in a little over a year. I don't shy away from projects which I know will take years to complete, and as a result they eventually get completed :)

</comment><comment><USER29> This article was a fun read as it playfully poked holes in some conventional wisdom but I'm not sure I'm left with coherent advice. Deep work doesn't matter? Working in 15 minute bursts is ok? Save rewarding work for after routine? Or maybe match it to my circadian rhythms? Work on what I love? Have a maker schedule?

Maybe the best takeaway is that there isn't really a single coherent ruleset for productivity...

<comment><USER30> I think it is something along the lines of...

\- don't care about time management so much

\- care about motivation (think about what can be done with the result)

\- choose the right time to have the mental state you require to focus on the task at hand

</comment></comment><comment><USER31> > A fascinating or funny video makes the data entry task seem even more > excruciating, the same way a sweet dessert makes a sour vegetable taste > yuckier.

For me it's the opposite. I often play videos in the background when I'm performing monotonous tasks and it seems to help me from getting completely distracted and abandon the task altogether.

</comment><comment><USER32> As a person with diagnosed adult ADD, this is one thing I cannot do — manage attention. Medication and meditation help a little, but I probably will never reach the productive capabilities of a regular person. Sigh.

<comment><USER33> I'm in the same boat; diagnosed with ADHD-PI (UK, so we don't use the term 'ADD') as an adult. I've improved vastly thanks to medication and good routines but it remains a constant effort, and improvement is a continual process. The book _Taking Charge of Adult ADHD_ by Russell Barkley helped me significantly.

<comment><USER32> Just bought and read the book.

For me, it was fantastically depressing: basically it says: "OK, so you have ADHD. Sucks to be you. Go through this huge laundry list of these and those things to do, don't forget to take your medication, find a mentor — assuming anybody would want to deal with you, and who could blame them? — and if you are extremely lucky, and with heavy effort, maybe you can become half a normal man or woman who runs through all of this effortlessly, which you'll never be. What a burden to society!"

All of this is true perhaps, but now I just want to die.

<comment> toby- Whilst I didn't get that exact impression from the book, Barkley is known for being "realistic" about ADHD: he doesn't hide the fact that, depending on severity, ADHD can levy a heavy toll on a person, significantly impacting their quality of life. ADHD sucks, but we can make it suck significantly less through good habits, good routines, healthy eating, exercise and, where appropriate, medication and other forms of psychological support.

It's a cliché, but comparing yourself to others is a bad idea in this domain. I have yet to meet an ADHDer who makes these sorts of "upward comparisons" and derives anything useful from them; they typically just exacerbate feelings of inadequacy and hopelessness.

Personally, I know I might never be as effective or productive as a person without ADHD is capable of being, but I can be the best version of _myself_ — it's fruitless and unhealthy to ask more of yourself than this, right?

</comment></comment></comment></comment><comment><USER34> To me, the best life hack for productivity is "Sleep". If I sleep good, the day will be productive enough. If I don't, it might not.

</comment><comment><USER35> > I'm pretty sure there's an eighth habit of highly effective people. They > don't spend all their time reading about the seven habits of highly > effective people.

I think this is often overlooked. What works for other people might not work for you and the time spent looking for the right way is better spend on doing the tasks.

</comment><comment><USER36> Ironic to see this post on HN, the place where I go to procrastinate

</comment><comment><USER37> Although interesting, I think the example is a sign of over self improvement. When your only way to do more work is going to the toilet less often you are overbooked big time and there will be no way to get more productive, no matter what angle you look at it. Quite contrary, you will be less effective (!) on the long run. It is a vicious circle.

<comment><USER38> The author uses the example as a cautionary tale, not as something laudable.

</comment></comment><comment><USER39> I gave up on productivity long ago. It depends on the type of work that you do. If I am let's say on the assembly line and everything is already thought of and I have to follow well written guides, then I could try to be productive, avoid distractions and so on.

On my job I have to research complex problems, that you can't simply google them and find an answer. It takes time to design a possible solution, trial and error, a lot of thinking and observing and in the end you feel that you have hit a wall. In such cases I simply need a break and to think for something else for a while. It is also very hard to put an estimate and set a deadline for a such thing, so productivity is the least of my problems.

</comment><comment><USER40> I really like where the writer is going with this, and I have had similar thoughts on the matter. I believe that a good user experience streamlines the flow of attention and tries to reduce "attention turbulence" for a given task. And I'm referring to more than just smartphone apps and web pages, though they make for great examples.

I wish more people realized the value of human attention. I would even go as far as to say that the reason that the tech industry is so profitable is because of it's ability to provide shortcuts for the attention required to complete a given task.

</comment><comment><USER41> On the idea that we need motivation, I have been practicing the concept of mini habits to overcome the barriers that the brain puts up when using motivation.

[https://tysonmaly.com/books/how-to-make-habits-the-easy- way/](https://tysonmaly.com/books/how-to-make-habits-the-easy-way/)

I think keeping a few key concepts like Parkinson's law and Pareto's law as well as thinking about what is actually going to move the needle helps.

</comment><comment><USER42> ...and then there are tools used in organisations (like ours) which track how many hours you been on PC (ON PC time) vs Off PC time (So called "Productivity tracking"). More the ON PC time means you are "highly productive". This metric is also usually taken-up during appraisal discussions and questions are put on one's productivity.

</comment><comment><USER21> Busyness is not a virtue. The consequences of your actions being good... that has always been the definition of virtue.

</comment><comment><USER43> "There is an 8th habit of highly effective people. They don't waste time reading 7 habits of highly effective people."

He got it.

</comment><comment><USER19> I liked his book "Power Moves: Lessons from Davis". After listening to this book I followed Adam Grant for a couple weeks on Twitter. He does have interesting advice on deciding what to focus on.

I am going to add a calendar reminder for a year from now to follow him again on Twitter for a while.

</comment><comment><USER44> This article is basically about the Pareto principle (80/20 rule) [https://en.m.wikipedia.org/wiki/Pareto_principle](https://en.m.wikipedia.org/wiki/Pareto_principle)

</comment><comment><USER45> I've found a lot of benefit from taking Piracetam or Noopept in the mornings with a daily coffee. I feel hyper-focused in a way that I don't usually feel with just coffee alone.

</comment><comment><USER46> Context switching really takes a toll on focusing. It sucks when executives in a company keep having 'new ideas' and switching the priorities.

</comment><comment><USER47> You can learn about this by observing cats.</comment>


Google Europe is hiring UNIX sysadmins (Dublin, London, Zurich) - <AUTHOR> http://www.google.com/intl/en/jobs/landing/emeaunix/index.html <comment><AUTHOR> Being an EU national, I wish I was qualified to apply, but I'm sure an HNer will make it. Good luck to all the applicants!

</comment><comment><USER2> Who wants to work at Google anymore?</comment>


How to manage old, unmotivated, change resisting programmers? - <AUTHOR> <comment><USER2> To be clear, your "old" programmers should be among your most valuable employees as they should know what pitfalls to avoid, what the warning signs are and should know a great deal of design patterns or tricks to help improve your project.

Motivating older programmers is different from motivating younger programmers. They've seen layoffs, acquisitions, failing companies. They've also seen multiple project management philosophies come and go and generally aren't impressed with agile and scrum. Most older programmers I've worked with want some combination of the following: money, being able to do good quality work and good work-life balance. They're unlikely to pull all-nighters or work more than 40 hours because at this point they've seen how destructive and ineffective those are. To motivate them you can offer flexible hours, remote working privileges, vacation time. You can also check with them to see if they want to explore different roles (would they want to do some project management? UX design? devops/system administration? Also you are doing regular 1:1s, right?)

Now you may encounter some problems with these older programmers learning new technologies (I had a former COBOL programmer give up on web services even though he was using Microsoft COM apis on a regular basis). In these cases, there are two good solutions. 1) Spend extra time with the programmer, mapping the terminology they're learning with the terminology they're familiar with. 2) Have them work on different projects that are more closely aligned with their current skills.

</comment><comment><USER3> Let's start removing "old" from the list of things we want to filter out of our workforce. Age discrimination is real and it surfaces in the most insidious ways such that adding it to a list of negative traits just seems natural.

<comment><AUTHOR> we don't want to filter out, but manage.

<comment><USER4> Your question implicitly suggests that you wouldn't have problems managing _young_ , unmotivated, change resisting programmers.

If so, do you think there is an innate difference between old unmotivated, change resisting programmers and young unmotivated, change resisting ones, or could your attitude towards the two groups be different?

<comment><USER5> Young people generally don't resist change because change benefits them. People who have invested 5 years into an obsolete skillset are most resistant to change.

</comment></comment></comment></comment><comment><USER6> I did not have experience with the whole team or department consisting of such guys, my situation was just several individuals (and I could not just fire them) within overall good collective. My appoach was to be very straightforward in communications, no motivational bullshit and no teaching tone. Just straight to what I expect from them to deliver. And I tried to give them tasks that are less related to critical core functionality - more like admin tools, etc.

Do not expect any wonders from them, and you cannot just change them - try to reduce risks,harm, and demotivation they can bring and treat them as adults.

<comment><USER7> That is exactly what the manager at my last company did. Unless the workload was too great for the rest of the team to do alone, the more aged members of the team worked on internal tools (unless those were too high profile).

</comment></comment><comment><USER8> What sort of change?

Have you asked them what they don't like about the change? - Just letting them say their peace to the right people will alleviate some of their anxiety, especially if the concerns are repeated and addressed or at least responded to.

Does it clearly solve problems in the existing system? - Show them the pain categories in the old system that the new one will address, features that work better or are easier to maintain.

Are you giving them enough learning/experiential on the new system? - Let them try out new methods on the new system such as testing solutions that they feel might not work, so they can see all is good, or really less impossible they may have thought.

Once they feel effective on implementing the change then they will better cope with what needs to be done and work toward it.

</comment><comment><USER9> I'd type out an answer but I just saw Sandi Metz' amazing talk on influence in the context of software teams.

Highly recommended.

[https://m.youtube.com/watch?v=VzWLGMtXflg](https://m.youtube.com/watch?v=VzWLGMtXflg)

As for the rest, I'd take a step back and check if it is possible that the "old, unmotivated, change-resisting" could be possibly judgments (hint: they are) and what did they result from.

Example: I requested that we make changes X, Y and Z, and Peter refused on the premise that ... (to replace "change-resistant")

Also, Peter is 45. (To replace "Old")

Working with judgments is difficult because they close the possibility for dialogue. Working with observations opens possibilities for inquiry.

Also, even programmers can feel when they're being judged, so there's that.

</comment><comment><USER10> Lead by example e.g. don't ask them to do stuff you wont and make it about the team, if they like to be part of it, they have to pull their weight and have to have the backs of their coworkers...

If the team does poorly, most likely will be disbanded, so they'll have a vested interest to stay together and for the people who don't want to be part of it, you as a manager have to find them a better fit in another team in the company and replace them with a better fitted employees...

</comment><comment><USER11> First, check if old person really does want to grind hard on coding. If not, there could be issues that came up or accumulated over time. Burnout is most likely example - how many humans do well staring at code for decades? Not all programmers become more productive over time. Just an anecdote really but surely this is the case for many.

</comment><comment><USER12> Get someone older than you to manage them.

</comment><comment><USER13> Is this at Oracle? :-)

<comment><USER14> Sounds a lot like the other old school tech companies as well: IBM/Cisco/HP/Intel/etc...</comment></comment>


Introduction to Website Parasites (of the criminal hacker variety) - <AUTHOR> http://blog.unmaskparasites.com/2010/04/14/introduction-to-website-parasites/

<comment><USER2> This is a 101-style intro post, but <http://blog.unmaskparasites.com/> in general is good stuff because you get to see how real crackers are hacking WordPress and other web server software.

</comment><comment><USER3> I was expecting an article about Facebook Like buttons, and those little Digg buttons scattered all over the web, but this was pretty good too!

<comment><AUTHOR> Ha!

Indeed, and those too are pretty obnoxious but more tolerable; I expect a Firefox add-on any time now to zap them.

I too didn't really know what to make of the title when it showed up on a mailing list and have added context to the HN title. Thanks.</comment></comment>


The Untold Millions - <AUTHOR> http://www.37signals.com/svn/posts/1495-the-untold-millions

<comment><USER2> From the comments:

      DHH: The whole point and problem with this is that
      these private successes prefer to be private.
      So I'm certainly not going to out and name the people
      who confined in me personally about how well they are doing.

Well if some business really wants to remain private about their success, then why blame the media or anyone else for not talking about them. I would have well understood the complaint if media was not giving them enough attention even if they were looking for it and deserved it.

Little what i understand about publicity, if you have a reasonable story (of an online success) and are willing to push it, you have a fair chance of getting it covered a fair bit. Obviously, to reach Google & Facebook news levels, you have to become as big as them.

p.s. This could be an opportunity for some 'website' (not a startup) to cover successful online businesses and their stories. Or may be there already is a one ..

<comment><USER3> Media coverage might blow their cover. If business people perceive a market, then they will enter into competition and lower profit margins.

</comment></comment><comment><USER4> The cynic in me says "37 signals surprised that people can make a lot of money without raising as much of a ruckus about it as they do themselves", but that's a bit uncharitable, as it works well for them, and they produce lots of good stuff, including Rails, which I use myself. And in any case, his point is a good one (I keep thinking of patio11's _bingo cards_... sheesh:-). I just wish I could find my own niche:-/

<comment><USER5> Whatever the buzz factor & whatever the love/hate relationship people have with 37S' pointed and sometimes downright obnoxious blog, it's nothing compared to Facebook or Digg, while 37s has real products that generate actual money.

They are closer to being a "no ruckus" businesses than the others.

<comment><USER6> It depends what you're after. Some people would rather a guaranteed lower income, rather than the chance of the big time. 37s have gone for the former, Digg+Facebook have gone for the latter.

Both are valid strategies, but the latter has far more potential upside (With way more risk). That's probably why it gets more press.

Who wants to read about _another_ software company that sells products and makes a few million?

<comment><USER7> I'm not sure I buy the equivalence of no revenues = higher upside. There are plenty of companies that got big & famous by making products & selling them. These include software companies.

Sure there is something you might call a 'type' that can be built on your latter. But it's not the only type.

<comment><USER6> Digg and Facebook both have pretty good revenue. They just have stupidly high costs.

<comment><USER7> Well I suppose the _goodness_ of the revenues needs to be weighed against the stupidity of the costs.

</comment></comment></comment></comment></comment></comment><comment><USER8> I agree with the point that it would be interesting to hear about more companies that are enjoying more "modest" success . It seems like most of those folks are too busy running their businesses to leave much time for PR though.

I think a bigger problem is not hearing about massive successes that fall outside the tech elite's interest. For instance WebKinz the virtual world/stuffed animal hybrid probably generates 9 figures of revenue per year, given Club Penguin was doing ~$75MM when it got acquired. How many TechCrunch stories have they had? A quick search yields 0 dedicated results. Thats huge revenue for what amounts to a startup within a toy company and no coverage in the publication of record. However we hear about every stupid ad based socialgraphwidgetfacebookappgcasualgame startup that raises $500K.

Also, it seems a little silly to say "We want to stay small!" and then to say "Why doesn't the press want to write about us!" Rails is awesome, but the rest of their offering has been eclipsed by Google Docs. They have done a great job attracting press compared to the value their products create. Same goes for other small companies where there isn't a lot of "there" there.

<comment><USER5> IMO, the reason that successful businesses like Club Penguin don't get TechCrunch coverage is this:

TechCrunch isn't aimed at successful, profitable businesses.

TechCrunch is essentially a brothel; Arrington fancies himself a pimp. So it is populated by whores, and patronized mainly by people who want to pay for sex.

TechCrunch is about VC, it's about the dream of the big cashout, it's about perpetuating the startup mythos.

Those other businesses simply don't fit that agenda.

<comment><USER9> How does Club Penguin not fit the startup mythos? Started by a couple of guys to solve a problem they had and figured other people must have (not enough for small children to do online). Made the product themselves based on some Flash stuff one of them had been building. Huge viral growth, big acquisition. Sounds like a classic startup success to me.

<comment><USER5> The startup mythos as interpreted by Arrington (and, to a lesser extent, HN) does not involve non-whiz-bang stuff. Social bookmarking? Yes, that's great, it's got an API or something right? Flash video games for kids not old enough to ride the bus alone? Not cool enough. Not hackery.

<comment><USER9> You may be right about Arrington, but that's not how I see HN. I haven't noticed any prejudice here against things like Flash video games for kids. On the contrary, patio11 and his bingo cards (surely a lower bound for whatever definition of 'cool' you're talking about) are kind of local heroes.

<comment><USER5> OK, that's not how you see HN. I wasn't writing about HN originally. Every sentence fragment began with "TechCrunch." :)

On HN, you have a slew of TC-style masturbatory stories about funding and then you've got a handful of less exciting "hard luck" cases that touch people because they're like orphans who sing and dance.

Like that post about the plumber -- it's Puritan Work Ethic pr0n.

Most HN readers seem to think they're going to end up with the funding (the former), but at the same time they want to hear from those heartwarming orphans (the latter).

</comment></comment></comment></comment></comment></comment><comment><USER10> Untold when applied to large sums of money actually means uncounted, not untalked-about. It's a variant of untallied. But it would have been a clever pun if they'd done it intentionally.

<comment> daniel-cussen Oh, I see, as in the teller at a bank.

</comment></comment><comment> cool-RR This is the first sentence: "The media is biased against stories that want to be told."

While the point of the article seems to be this: "In the mean time, many of the real stories are never told. The quiet successes by small teams who stand little if anything to gain by sharing their numbers and telling about their success."

Did I miss something?

<comment><USER5> He's a non-native English speaker (writer) and I think this is just your basic editing mistake.

I think the first sentence is supposed to be "The media is biased in favor of stories that want to be told." As in, somebody intends that calling Kevin Rose a boy billionaire becomes a media coup. It's intentional.

The rest of the essay supports that point.

<comment><USER11> DHH uses so many sentence fragments that their frequent preaching about "hiring wordsmiths" really rings hollow. I realize he speaks English infinitely better than I speak Danish.

</comment></comment></comment><comment><USER12> Most often, people talk non-stop about their success when they want to __exit __the business. If you have a profitable niche you better remain quiet and get as much growth as you can before the party stalls.

In the investment industry the most bullish articles on a sector/asset class appear exactly near the top of the market. Often these articles are pushed by fund managers who have taken positions earlier and now need enthusiastic public to 'buy them out'.

</comment><comment><USER6> Reading about solid businesses that make a few million isn't that interesting.

High growth high risk high potential upside is exciting... Disruptive technologies tearing away the old industires. That's news worthy. That's why it gets the coverage.

<comment><USER13> When I first realized that various small businesses and websites I was familiar with were quietly making millions, it changed the direction of my ambitions and got me interested in starting a business. So, I found that pretty interesting.

</comment></comment><comment><USER14> I've said this before–I think a blog/podcast/print magazine spotlighting these "untold millions" would be (a) extremely beneficial to entrepreneurs and (b) possibly a viable publishing endeavor.

I know it's not their core competency, but why couldn't 37s write about them once a month? Or perhaps sponsor such an endeavor ...

</comment><comment><USER15> Ironic, coming from a company whose success is driven by their own fame.

</comment><comment><USER16> I couldn't care less whether the small fish get media coverage or not. What buoyed my spirits is that there are market players that make a comfortable living from web app development - which means there's a chance for the rest of us too ;)

</comment><comment><USER17> Did anyone else parse this story as "Why hasn't anyone offered us $500 billion yet?"

<comment><USER18> No.</comment></comment>


Northern Territory man builds hovercraft in carport - <AUTHOR> https://www.abc.net.au/news/2019-04-10/darwin-hovercraft-stuns-locals-gets-social-media-attention/10985994 <comment><USER2> Looks more like a ground effect boat

[https://en.m.wikipedia.org/wiki/Ground_effect_(aerodynamics)](https://en.m.wikipedia.org/wiki/Ground_effect_\(aerodynamics\))</comment>


Showcase Your Code with Grasshopper's Gallery - <AUTHOR> https://www.i-programmer.info/news/150-training-a-education/13914-showcase-your-code-with-grasshoppers-gallery.html <comment><USER2> Not to be confused with [https://www.grasshopper3d.com/](https://www.grasshopper3d.com/)</comment>


An update on "greyballing" - <AUTHOR> https://newsroom.uber.com/an-update-on-greyballing/ <comment><USER2> Funny how whenever I read that a company is 'launching an investigation' into something, I interpret it to mean one of two things "We're so incompetent we don't know what we're doing" or, more likely "We're feeding you bullshit while trying to make it seem as though we're actually doing something."

</comment><comment><USER3> FYI on the term "Greyballing."

Uber reportedly has a secret tool that identifies and evades law enforcement, in order to operate in cities that have imposed strict rules or even banned the taxi alternative. The tool, called Greyball, uses data collected by the Uber app to identify and deceive authorities, as first reported by the New York Times.

[https://www.nytimes.com/2017/03/03/technology/uber- greyball-...](https://www.nytimes.com/2017/03/03/technology/uber-greyball- program-evade-authorities.html?_r=0)

</comment><comment><USER4> This seems like a PR-based defensive move to me, rather that one rooted in principle.

This practice has been known for some time (the recent news is not new at all) and has been used to prevent drivers from being caught up in the regulation battles by taking fake fares. This move makes drivers' experience worse.

It seems inconsistent for Uber to maintain their position when it comes to undermining/circumventing taxi monopoly laws and also make this move.

Is there a broader context or principle that can explain this in a way consistent with Uber's values?</comment>


Building Software Systems at Google and Lessons Learned - <AUTHOR> http://www.stanford.edu/class/ee380/Abstracts/101110.html (Windows Media) video at http://ee380.stanford.edu/cgi-bin/videologger.php?target=101110-ee380-300.asx <comment><AUTHOR> (Windows Media) video at [http://ee380.stanford.edu/cgi- bin/videologger.php?target=101...](http://ee380.stanford.edu/cgi- bin/videologger.php?target=101110-ee380-300.asx)

<comment><AUTHOR> Brief summary at [http://glinden.blogspot.com/2010/11/update-on-googles- infras...](http://glinden.blogspot.com/2010/11/update-on-googles- infrastructure.html)

Longer summary at [http://doubleclix.wordpress.com/2010/11/11/google-a-study- in...](http://doubleclix.wordpress.com/2010/11/11/google-a-study-in- scalability-and-a-little-systems-horse-sense/)</comment></comment>


Google PowerPoint Clone Coming - <AUTHOR> http://www.techcrunch.com/2007/02/04/google-powerpoint-clone-coming/ <comment><USER2> Such a thing would be far more useful than the other online docs in my opinion. I can't remember if I've attended a power point presentation that didn't have technical problems of some sort.

<comment><USER3> Agreed. I distinctly remember -- and am sad to admit -- having to get around annoying font disparities by screen capturing parts of my slides and pasting them as images. Go figure.</comment></comment>


"Monster Hunter World" game spends 25% of CPU time switching between threads - <AUTHOR> https://steamcommunity.com/app/582010/discussions/3/1745594817439431537/?ctp=86#c1735462352461521093 <comment><AUTHOR> I'd appreciate any informed theories as to why this might be the case! The r/Games thread which pointed me to this is full of non-technical explanations of the concept of multi-threading and vague jabs at the developers for not 'optimizing' enough.

<comment><USER2> With 100 threads running like that, not only do you have the overhead of the OS scheduling 100 threads to run on ~8 or whatever cpu cores, but also I would assume these threads are all running different code, so there would be some overhead with context switching / cache. Presumably these threads communicate, so they're likely using some form of synchronization primitives.

Here's a pretty enjoyable video about how they handled this sort of engine design problem using something sensible: [https://www.gdcvault.com/play/1022186/Parallelizing-the- Naug...](https://www.gdcvault.com/play/1022186/Parallelizing-the-Naughty-Dog- Engine)

</comment></comment><comment><USER3> I wonder, what kind of tools can be used for profiling CPU performance while playing a game?

<comment><USER4> Intel VTune

<comment><USER3> That's a great tool! Thank you.

</comment></comment></comment><comment><USER5> Why we're on the topic of bloated inefficiency, can we talk about steam's website?

Why does a company that takes 30% of PC gaming revenues need to add _70_ content trackers to their forums?

<comment><USER6> With no bosses, there's nobody saying: "no, you have to use _this_ one."</comment></comment>


Ask HN: How to improve communication (listening, verbal and writing) - <AUTHOR> How to improve communication (listening, verbal and writing) when English is not your first language. I live where most of the population are not English speaking. Any actionable advice which I can practice daily which you or your near ones did and helped them.<p>Few thing I considered like joining Toastmasters but nearest club is too far to my place. <comment><USER2> Disclaimer: I'm not passing judgement.

Whenever I hear someone with a problem and a good solution, like Toastmaster here, but with an "excuse" it points me to question the will to actually solve the problem.

If it's too far you don't need to go every week or every day, but how about once a month? That would help a lot even if it's just once a month.

Another suggestion is to have Grammarly installed because it does catch a bunch of errors. However, be aware that you are sending everything you write to their servers.

The last advice is the most obvious one.

Write a lot and look for errors. Rinse and repeat. Practice makes it perfect.

<comment><USER3> Agree. It smells like an advertisement.

</comment></comment><comment><USER4> Learn it the way children all over the world learn their English: Watch cartoons, play games and talk shit on the internet. The key to learning a language and learning it well is to not be impatient, because mastery takes time.

</comment><comment><USER5> If you are looking for English advice for your job. I strongly recommend to follow courses in coursera platform or EdX.

</comment><comment><USER6> Some things you could do from anywhere with internet:

\- take Skype lessons

\- listen to English-language podcasts

\- read Strunk & White

</comment><comment><USER7> English is my first language so I have no experience trying to learn it as a second language. For what it is worth, it is a very difficult language and if this ask HN is indicative of your writing, you're doing quite well.

I'm trying to learn French now. The thing that has helped me the most is talking to people who are French-English bilingual and kind enough to tell me that my accent makes me sound a little soft in the head. You may not have access to people like that. I've also gained quite a bit from watching parts of the first 8 seasons of The Simpsons in French. I'm of an age where I know the first 8 seasons like the back of my hand, so I can listen to the language and hear how they construct sentences without getting bogged down trying to understand.

If I wanted to improve my writing, I would find a good editor to destroy my writing. Would it be beneficial if I edited this post for you and showed how I would write it?

If I didn't have access to a good editor, I would start reading as many English books as possible. My French isn't strong enough to start reading actual French books so I haven't gone down that path yet with my own learning. You might gain from that path.

Finally, do you work in tech? If so, comment here and get involved in some debates. If you do that though, remember that in English there are a lot of ways to craft one sentence. For example, let's take a look at your last sentence.

"Few thing I considered like joining Toastmasters but nearest club is too far to my place."

If I deconstruct that sentence, I get:

"Few" - Few means more than one.

"thing I considered like joining Toastmasters" - thing is singular

"but nearest club is too far to my place." - this part is fine, though you're missing a word.

When I add all of that together, I get a meaning like:

"I considered joining Toastmasters but the nearest club is too far from my home."

In this case, "too far to my place is grammatically correct, but I have an aversion towards forming sentences like that. However, you could also write this and few people will question it:

"I considered joining Toastmasters but the nearest club is too far to my home."

I don't think that sounds as good, but that's my own taste and my own voice.

Or, depending on who I'm writing to, I might balk at using 'considered'. If I wanted to be a little folkier and conversational, I'd say:

"I have thought about joining Toastmasters but the nearest club is too far from my home."

That is a small difference but we could also edit it completely differently. If I felt verbose, I might say:

"I have considered a few ways to improve my English. For example, I thought about joining Toastmasters but the nearest club is too far from my place."

I took your last sentence and expressed it in several ways and I could keep going for hours. I know which one I prefer, but there are many options. If you're looking for a good way to drill, I would practice there. Start writing a sentence in different ways. How does the feeling change? What feels more pleasant to read? What is more pleasant to speak out loud?

<comment><USER3> Why downvoted? s/he is simply proposing a solution while introducing the problem. Sorry, it is a clear sign of an advertisement.

<comment><USER7> Except that the vast majority of Toastmasters clubs would be of little benefit to someone who is learning English. A club would have to be managed in a very particular way to be of any benefit. Those particular clubs tend to advertise as such. It doesn't make business sense for Toastmasters International to go after this crowd. It makes even less business sense for TI to do it in such a sketchy way.</comment></comment></comment>


Emacsy: Embeddable emacs in library form (GSoC Project) - <AUTHOR> http://shanecelis.github.io/emacsy/2013/06/05/google-summer-of-code-2013-emacsy/

<comment><USER2> I really like this project because for me one of the most impressive things about emacs is the way that it can be extended and the self-documenting nature of those extensions. I'll be interested to see if the same principals will be useful in applications other than text editing.</comment>


Why Startups Are Choosing Amazon Web Services - <AUTHOR> http://blog.flux7.com/why-startups-are-choosing-amazon-web-services

<comment><USER2> Wouldn't this have been an interesting new perspective in 2008?</comment>


Phoenix LiveView Counter Tutorial for Complete Beginners - <AUTHOR> https://github.com/dwyl/phoenix-liveview-counter-tutorial <comment><AUTHOR> Phoenix LiveView has the potential to _replace_ most JavaScript heavy Single Page Apps with much simpler, faster and easier to maintain Elixir code. This tutorial is our attempt to remove the all barriers to learning LiveView. Try it today!</comment>


Confirmed: Apple files suit against Psystar - <AUTHOR> http://blogs.zdnet.com/hardware/?p=2240

<comment><USER2> Since this isn't the first time someone's cloned the mac (I think the first cloner was NuTech, or something like that), I was only surprised that Apple gave PsyStar so long before filing their suit.

</comment><comment><USER3> Seriously, who didn't see this coming?

Let me know what the outcome of this trial is.</comment>


A Guide to Pic Microcontroller Paging - <AUTHOR> https://jetholt.com/micro/a-guide-to-pic-paging/ <comment><USER2> Can somebody explain why anybody would want to put up with PIC in 2020 when ARMs are so cheap and energy efficient and development tools got to a point where you get working toolchain with no time or money expense (for example with stm32cubeide and st-link)?

<comment><USER3> That's the mentality that leads to toasters running Linux. For many applications there's absolutely no need for ARM MCUs and all their added complexity.

Plus for the hobbyist at home, PIC still comes in DIP formats which is handy for breadboarding or soldering without the added difficulty of SMT.

<comment><USER4> I couldn't agree more with the parent.

Further, PIC isn't the only "non-ARM" in this space. Your average RainBird type water timer likely uses an MSP430, for example.

The idea that ARM should be used in any/all situations is naive.

<comment><USER5> > The idea that ARM should be used in any/all situations is naive.

I mean, sure, this is true. MSP430s are great when you need the lowest power, and AVRs are tiny and cheap for lowest cost. But... I do this for a living, and there's a reason our go-to is the Cortex-M series. M3 or M4 if you need a lot of CPU power, or M0/M0+ if you need small. They're just so, so much easier to program that the trivial additional cost of the microcontroller washes away in the noise.

And it's not like this leads to Linux toasters; the M0 is not a microprocessor, it's a microcontroller. It's got a two-stage "pipeline" and absolutely no memory protection! There are tricks to get the larger M3s to run Linux, but it's hacky and not something you'd want to ship.

PICs are essentially obsolete, and none of us would _ever_ consider them for new development. They're annoyingly constrained hoary old beasts.

<comment><USER4> > PICs are essentially obsolete, and none of us would ever consider them for > new development. They're annoyingly constrained hoary old beasts.

No argument there.

</comment></comment></comment></comment></comment><comment><USER6>
        Technically, the second block of code is not 100% equivalent.
        Why? Well, it uses more instructions (so more memory and
        also takes longer to execute) but it also sets ALL bits of
        the Program Counter, not just the ones that a goto or call
        can.

        We could use the second block of code to goto to a correct
        page, but it would be annoying to use in practice because it
        would mangle the W register.

Does the code even work at all? I don't know anything about PIC microcontrollers, but I would have expected that writing to PCLACH would cause a jump immediately, meaning that the write to the low bits in PCL would never even happen.

<comment><USER7> PCLATH stands for Program Counter LATch High (byte).

In this case latch refers to the digital design technique where you have a register that holds bit(s) until some other event happens. The event in this case is a write to PCL. Once the event occurs, PCLATH is transferred to PCH synchronously/atomically with the write to PCL.</comment></comment>


Ask HN: How many interviews did you have for your job? - <AUTHOR> I was looking through jobs and came across a listing that outlined their hiring process which included six interviews, progressively moving up the chain of command. There was also a small project to test your programming skills.<p>Is this par for the course now when looking for a new job? <comment><USER2> Depends where. In my country, no. In yours, apparently.</comment>


Wadler's Law - <AUTHOR> http://www.haskell.org/haskellwiki/Wadlers_Law <comment><USER2> Wadler's law, generalized: <http://communitymgt.wikia.com/wiki/Bikeshedding>

</comment><comment><USER3> This law seems to depend on the mailing list and the age/status of the language. I wonder how it went during the "Successor ML" conversations a while back?

Today, though, it seems as if almost every language conversation we have about Standard ML is a small set of implementers talking about whether, say, rule 64 is inconsistent in its handling of _where type_s and redundant tycons.

</comment><comment><USER4> This is almost exactly evidenced by <http://news.ycombinator.com/item?id=3370428></comment>


Massive data stealing vulnerability found in many HTC Android phones - <AUTHOR> http://www.androidpolice.com/2011/10/01/massive-security-vulnerability-in-htc-android-devices-evo-3d-4g-thunderbolt-others-exposes-phone-numbers-gps-sms-emails-addresses-much-more/ <comment><USER2> How many of these phones are going to get a patch or updated firmware to fix this problem?

I'm going to guess either very few or none, as most people won't notice/care about this issue, and HTC isn't making any money off supplying updates.

Imagine if Microsoft forced Dell, HP, etc. to handle software security and updates on Windows for PC's they've already sold - it would either never happen or not happen correctly. Swap the players and that's where Android is today.

(yes, I know about alternate firmware - how many non-geeks are capable of using it and have devices that don't have technological blocks like signed bootloaders to prevent it?)

<comment><USER3> One of the affected models, the Thunderbolt, only now started getting updates to Gingerbread this week. That is, until Verizon halted it due to a major usability bug that should have been identified easily in carrier testing (voicemail notifications don't work).

Given that it took it took HTC this long to get an update to an Android version that's been available in source since December and they still managed to mess it up, I don't have high hopes for something like this getting fixed.

<comment><USER4> Surely the blame there is on Verizon. My aging, carrier-free HTC Nexus One gets regular updates.

<comment><USER2> There are only two ways I recommend Android - use a Google-branded phone that Google will provide complete OS support for, or go it alone with OS updates from a 3rd party.

For non-geeks the first option is the only viable one, IMHO.

You've obviously settled on the same conclusion.

<comment><USER5> Could you point me in the right direction for 3rd party?

<comment><USER6> I guess zdw is referring to Cyanogenmod. There might be others, I don't know.

</comment></comment></comment></comment></comment></comment><comment><USER7> "Vulnerability" is an euphemism, this is a deliberately crafted backdoor.

Perhaps it is a testing/debugging-facility that they forgot to remove from the production build?

That'd be about the only semi-plausible excuse for HTC to come out of this alive (when/if mainstream media decides to jump on this).

<comment><USER8> it depends, on the java side if we are using log.Config correctly and proguard right all logging is defanged and left out of any obfuscated application.

However, on the OS side it depends on what changes HTC made for carriers and how adequate their codeqa testing and security audits were

</comment></comment><comment><USER9> This is an awesome reason to root your phone the second you get it. I've done so to both of my Android phones. You know that cyanogenmod is safe from this kind of blatant wiretapping, and on top of that, you don't have to worry about hassling with it when you need to tether, or when you want to install an application that requires root permissions to function well. :)

<comment><USER10> Actually sometime back CM rejected patches that would allow you to prevent apps from collecting the device ID (which is obviously quite privacy invasive). I still run CM, but boy do I wish an open-source distribution would spring up that _actually_ respects the phone's owner.

<comment><USER11> If I remember correctly the patch was rejected due to technical reasons, i.e. rejecting the device ID collection would cause the app to FC (force close) or render it unusable in most cases. You could try something like LBE Privacy Guard (<https://market.android.com/details?id=com.lbe.security>) which does let you deny permissions to installed apps, try denying the device ID to apps and see how many of them continue to work. I have, and not many do.

<comment><USER10> The first submitted patch (of the saga) returned a randomly generated ID (which wouldn't cause crashes). It was rejected in order to "not upset app developers". I can see why Google would never accept such a patch into mainline, but such a status-quo kowtow by an 'independent' project astounds me.

I'll have to look into LBEPG and see if it actually fixes this. I had poked around a bit and it seemed painful to implement this kind of functionality in an app, but perhaps they've found a way (or are playing some really invasive games with system libraries).

</comment></comment></comment></comment><comment> mike-cardwell I can't believe that somebody who is intelligent enough to write this application would miss such an obvious flaw.

I literally can not conceive how it wouldn't have crossed their mind that any local app with network permissions would be able to connect to it.

Were they just being lazy? Or were they forced to do it this way by some ignorant manager? I would love to hear how this happened.

<comment><USER12> It's likely debugging utils that were missed when readying for release.

<comment><USER13> Mmm, I don't know. I'm going to vote for ignorant management.

</comment></comment></comment><comment><USER14> Android is not having a good time with security this week. The Samsung Galaxy S II on AT&T is very easy to unlock without the PIN or password. [http://www.bgr.com/2011/09/30/major-security-flaw-lets- anyon...](http://www.bgr.com/2011/09/30/major-security-flaw-lets-anyone- bypass-att-samsung-galaxy-s-ii-security-video/)

<comment><USER15> These issues are manufacturer dependent and not Android issues.

<comment><USER7> They are issues for Android the brand.

<comment><USER16> And for Google's practice of letting manufacturers do whatever bloody stupid thing they want. I'm stunned that this one ever got into production in its current state.

<comment><USER17> > They are issues for Linux the brand.

> And for Linus's practice of letting distributions do > whatever bloody > stupid thing they want. I'm stunned that > this one ever got into production > in its current state.

Fixed that for you.

</comment></comment></comment></comment></comment><comment><USER15> Which is why I am glad I got a firewall on my phone and whitelist selected applications to have internet access.

<comment><USER18> You should read the article. Apparently any app that you give permission to use the Internet can leak all your data. Are you absolutely positive that every single free app you download is safe?

<comment><USER15> I only let apps I trust access the internet.

</comment></comment></comment><comment><USER19> Does this issue allow me to close a 2 years contract with Orange before the end of the contract, without paying for the remaining months?

I'm pretty sure that even if HTC fixes this mess I would have to wait forever for Orange to push the update with its custom sw.

<comment><USER20> Hopefully it does, but be ready to fight for it ;-)

</comment></comment><comment><USER21> I think security risk could be used as a reason to favor web apps over native apps. An untrusted native app has the potential to do much more damage than an untrusted web app.

</comment><comment><USER22> One more reason that I'm awfully glad I'm running CyanogenMod on my Sensation.

</comment><comment><USER23> This is the very reason I smashed my iPhone and do not keep a mobile phone on me anymore. Call me paranoid but I'm enjoying life far more without it burning a proverbial hole in my pocket.

<comment><USER24> The reason you smashed your iPhone is because HTC software has an overly detailed and insecure logging suite?

I call you not overly paranoid, but maybe bizarrely superstitious?</comment></comment>


Show HN: Neural network color recognition - <AUTHOR>

<comment><USER2> The examples section is quite confusing.

It says "These are input and output images..." and then display 3 images labeled as "Original image". I'm assuming original image means that it is input. But what is the output?

<comment><AUTHOR> Sorry for the confusion, just changed the labelling to "input" and "output".

</comment></comment><comment><AUTHOR> Link disappeared for some reason: [https://github.com/mateogianolio/hopfield- color-filter](https://github.com/mateogianolio/hopfield-color-filter)

<comment><USER3> Posts without a url in the "url" field get penalized, so you'd be better off reposting your link that way and then adding your text as a first comment to the thread. Email us at firstname.lastname@example.com if you have any further trouble. Good luck!</comment></comment>


The rise of wgpu - <AUTHOR> https://gfx-rs.github.io/2019/03/06/wgpu.html <comment><USER2> Worth looking at the hello-triangle examples for the C- and Rust-APIs:

C99 Hello Triangle:

[https://github.com/gfx- rs/wgpu/blob/master/examples/hello_tr...](https://github.com/gfx- rs/wgpu/blob/master/examples/hello_triangle_c/main.c)

Rust Hello Triangle:

[https://github.com/gfx- rs/wgpu/blob/master/examples/hello_tr...](https://github.com/gfx- rs/wgpu/blob/master/examples/hello_triangle_rust/main.rs)

Both look very neat and tidy IMHO.

The C99 version could also use nested designated initialization right in the function call, this would make it look very similar to the Rust version, e.g.:

        WGPUBlendStateId blend_state_0 = wgpu_device_create_blend_state(
            device,
            &(WGPUBlendDescriptor) {
                .blend_enabled = false,
                .write_mask = WGPUColorWriteFlags_ALL,
                .color = {
                    .src_factor = WGPUBlendFactor_One,
                    .dst_factor = WGPUBlendFactor_Zero,
                    .operation = WGPUBlendOperation_Add,
                },
                .alpha = {
                    .src_factor = WGPUBlendFactor_One,
                    .dst_factor = WGPUBlendFactor_Zero,
                    .operation = WGPUBlendOperation_Add,
                }
            });

But of course that's a matter of taste :)

<comment><USER3> For me, the C version looks actually cleaner than the Rust one.

<comment><USER4> Is this because you're not as familiar with Rust as you are with C?

Rust has more syntactic elements than the C, in this code that's clear, but cleanliness can mean different things.

Rust has a module system, so no global namespace issues, but does require all of the :: separators.

Rust has cleaner ways of dealing with cross platform compile time switches, thus we don't see the CPP macros for different platform targets.

To me, those are cleaner, but I'm familiar with Rust and C, which is why I asked.

<comment><USER5> I think the Rust style that uses "constructorless" struct initialization really makes the code too verbose in this case. It's nice and explicit in a way but having to say e.g

        entrypoint: "main"

as the argument for a shader program seems like it could be turned into a default.

Convention over configuration isn't always the answer, but some times at least it can help reduce clutter.

In the future the api will perhaps have builders as an option.

<comment><USER2> I'm not sure if the builder pattern is better than designated initialization... AFAIK in Rust you can get something similar (fill up missing members with their default values) with ..Default::default(), like:

        &BlaDesc {
            bla: 1,
            blub: 2,
            ..Default::default()
        }

<comment><USER6> One annoyance of this is that you can't require fields to be explicitly provided anymore.

With the builder pattern, you can do so: require them in the builder constructor.

</comment></comment></comment></comment></comment></comment><comment><USER7> How practical would it be to produce a 2D UI using a framework built on these kinds of APIs? I'm wondering if there's a future down the road for multi- platform desktop apps with the convenience of Electron-like development and distribution, but where the native clients are able to be much thinner than a whole browser.

<comment><USER8> > I'm wondering if there's a future down the road for multi-platform desktop > apps with the convenience of Electron-like development and distribution, but > where the native clients are able to be much thinner than a whole browser.

I sure hope so! It's no secret that I've been hoping that someone will put together all the pieces we've been developing—WebRender, Pathfinder, gfx-rs, font-kit, skribo, etc.—and create a lightweight UI framework for Rust. None of us have the time to do so, but all the pieces are there…

<comment><USER9> I'm excited for Druid, personally.

<comment><USER10> I'm guessing that's [https://github.com/xi- editor/druid](https://github.com/xi-editor/druid)

stemming from [https://raphlinus.github.io/rust/2018/12/16/rust-2019.html](https://raphlinus.github.io/rust/2018/12/16/rust-2019.html)?

<comment><USER9> Yes, sorry!

</comment></comment></comment></comment></comment><comment><USER11> > The code runs on a variety of platforms [...] eventually the Web (when the > browsers gain support for the API, which is also in our scope of work).

Have the big three confirmed intent to support WebGPU?

Also, what is the state of WebGL backend support for gfx-rs? I'm watching [0] eagerly. That would be a great practical step towards gfx-rs in browsers today.

0 - [https://github.com/gfx-rs/gfx/pull/2554](https://github.com/gfx- rs/gfx/pull/2554)

<comment><USER12> > Have the big three confirmed intent to support WebGPU?

Mozilla is implementing it in Gecko, Google is implementing it in Blink, and Apple is implementing it in WebKit.

Now, implementing it doesn't guarantee they'll eventually ship it, but it would be surprising if they didn't.

</comment></comment><comment> _-___________-_ "We don't even rely on Rust syntax and features for safety, since it's handled at the lower level [...]"

This part makes me nervous. Isn't it basically saying "we wrote perfectly safe C and made a Rust wrapper for it"?

<comment><USER13> There isn't such thing as "safe C" :) Any pointer passed in can be garbage with unintended consequences. Surely, there are _some_ bits of Rust that are required for the safe operation over wgpu-native, such as taking an address of a borrowed struct. What this quote is trying to convey is that we don't rely on super strong types for safety, for example, like Vulkano [1] does. We can expose Rust API that borrows command buffers and resources where they are used and does the move semantics, and at the same time we can expose Rust API that implements Copy for all the objects, and it's still going to be fine, because the C layer doesn't rely on a lot of constraints from above.

[1] [http://vulkano.rs/](http://vulkano.rs/)

</comment></comment><comment><USER14> Even webgpu makes performance portability hard and keeps the user manually setting barriers etc. We could use a modern but yet higher level api.

Shameless plug: We have a graph based approach which automates all intermediate resource allocations and scheduling. I am hoping we can opensource it or something similar as it separates definitions of the algorithms nicely from how they are scheduled in the end (async compute on amd and so forth are all automatic). We also have backend implementations for all the major modern apis.

<comment><USER13> I believe the plug is misplaced here, since you misunderstood the article contents. WebGPU does _not_ have the user manually setting barriers or allocating memory.

<comment><USER14> The current version of the webgpu doesn't talk much about synchronization primitives [https://github.com/gpuweb/gpuweb](https://github.com/gpuweb/gpuweb) (same that can be reached from the original post), the little it reveals is DX12 style running fences that are used in multi-adapter system.

If they do not have explicit barriers within a device then it has to do state tracking, bringing the CPU overhead back into the level of OpenGL and making multithreaded command recording almost useless. The original WebGPU (now WebMetal) proposal did have explicit barriers.

WebGPU also has the usual way of allocating memory. You create buffers and images, as an example look [https://github.com/gpuweb/gpuweb/blob/master/design/BufferOp...](https://github.com/gpuweb/gpuweb/blob/master/design/BufferOperations.md)

We also have explicit resource creation available as when you create a texture you just want a texture. No fancy stuff there.

-I thought the original article was just gfx-rs supporting the WebGPU as a backend.- EDIT: I did misunderstand it. It's wgpu-rs that's a new api. The WebGPU in between had me confused.

EDIT2: I misunderstood it doubly. It is WebGPU implementation on top of gfx- rs. So points about WebGPU stand.

<comment><USER13> I do agree that the information on what WebGPU does and what not isn't clearly available. It's all in the IDL ([1]), where you may notice no API for explicit barriers. We are working on more readable documentation/specification.

> If they do not have explicit barriers within a device then it has to do > state tracking, bringing the CPU overhead back into the level of OpenGL and > making multithreaded command recording almost useless.

I don't believe this to be correct. We have the state tracking implemented in wgpu-rs, and it's designed from day one to support multi-threaded command recording. Implementation-wise, every command buffer knows which resources it expects in which states, and what states they end up with. When it's submitted, the WebGPU queue inserts necessary transitions into those input states, and it tracks the current state of all resources.

Yes, there is some CPU overhead there for sure, but it's not yet clear how significant it is. Keep in mind that WebGPU has to _validate_ the states, which is roughly the same complexity as _deriving_ those states in the first place, hence our decision to do so.

> WebGPU also has the usual way of allocating memory.

Not directly. Currently, users can create resources and not care about their lifetimes. This is contrary to Vulkan/D3D12 memory allocation with transient resources, which is what your frame graphy library helps with.

[1] [https://github.com/gpuweb/gpuweb/blob/c1afbe9e88a06aa61f82a1...](https://github.com/gpuweb/gpuweb/blob/c1afbe9e88a06aa61f82a12e890359075952bd40/design/sketch.webidl)

<comment><USER14> Thanks for pointing out the IDL. That tells a lot more about the API.

It's good to know that the state tracker is bit more refined than what is required for something like OpenGL.

>Yes, there is some CPU overhead there for sure, but it's not yet clear how significant it is. Keep in mind that WebGPU has to validate the states, which is roughly the same complexity as deriving those states in the first place, hence our decision to do so.

One of the benefits of prebuilding the frame as a graph ahead of time is that one can do vast majority of the validation ahead of time, thus making the heavy operation be explicit for the user. Also the validation happens only once, instead of every frame.

Just like when you bind pipeline you do not have to again validate that all of the shaders etc are valid. Just that it's valid for this renderpass etc. In OpenGL one has to validate the graphics pipeline state after every change to it, whereas in WebGPU it's enough to validate most of it on creation. Similar thing applies to building the state transitions ahead of time.

> Currently, users can create resources and not care about their lifetimes.

For some reason I assumed that if there is a createTexture there ought to be destroyTexture for it. But indeed there is not. I have a few questions pertaining to this.

How does it know I'm not going to need a texture anymore? If it has to keep the data valid for eternity it will at the very least have to store it to ram or disk because it never knows if I'm going to submit a command that references it again.

This sounds to me that some applications where lots of assets are streamed in will explode in memory usage. Or then the user has to do manual pooling, which can be even more difficult and bug prone.

<comment><USER15> The assumption is to rely on GC and if a resource is not reachable in JS (or in existing bindings), then it can't be submitted again, so it can safely be cleaned up. There is also an explicit GPUTexture.destroy() method if you want to free up the GPU memory immediately.

</comment></comment></comment></comment></comment></comment><comment><USER16> WebGPU. That's an awful name. Given WebGL is taken and already in version 2. But WebGPU sounds like a virtual GPU for GameStreaming. Even GLWeb would be nicer.

<comment><USER13> Gpu = graphics + compute, it's more than just "GL" (graphics library). The fact that WebGL reached version 2 is hardly relevant, since it's a different API, likely to be overshadowed in some 5 years.

<comment><USER16> AMD calls their CPU with integrated Graphics APU (Accelerated Processing Units), why not thinking that forth, oh OpenAL (Audio Library) is already in use, WebAL would confuse more. We are running out of acronyms.

Throwing in some random word creations: * Processing#, * UnifiedProcessing#, * ParallelProcessing#, * Accel#,

Prefixes *: Web/Open/Lib/Imperial/Federal/Continuum

#Suffixes: Library/Hole/Sink/Chain/[not Unit (it's for Hardware)]

</comment></comment></comment><comment><USER17> The important question is - are the graphics and platform vendors onboard? Does webgpu sit directly on top of graphics drivers or is this just a MoltenVK/Angle style abstraction layer that abstracts away OpenGL / Vulkan / Metal? Has someone done the hard work of getting Apple onboard for using this outside the browser (ie as a Metal replacement).

<comment><USER18> Apple (arguably) initiated the WebGPU API development effort. Surprisingly, Apple is pushing for a shader language based on Microsoft's HLSL. Some of the others are pushing for a lower-level, non-human-readable shader binary format instead (which is what Vulkan takes in).

[https://webkit.org/blog/8482/web-high-level-shading- language...](https://webkit.org/blog/8482/web-high-level-shading-language/)

<comment><USER13> > Apple (arguably) initiated the WebGPU API development effort.

That's not correct as far as I'm aware. All of us (Mozilla, Google, Apple) had prototypes in the works for the new API, and WebGPU just happened to be the _name_ of the Apple one, which we borrowed later.

</comment></comment></comment><comment><USER15> If this is WebGPU, where's the WHLSL and questionably bad faith arguments for days on incompatible binding models from Apple?

<comment><USER13> The group hasn't yet agreed on what shading language is directly digested by the WebGPU implementation. We may provide some helpers in the future to convert WHLSL to SPIRV for wgpu-rs to consume, just like today we provide GLSL to SPIRV helpers, and our examples use GLSL in Vulkan style.

As for the binding models, it's a hot topic. I believe the discussions are converging towards Vulkan-like binding model at the end of the day.

</comment></comment><comment><USER19> I would double down on WebGPU given it was based upon Apple Metal API. BTW, canvas was a web clone of Core Graphics, more or less.

<comment><USER13> It's not based on Metal API. There is quite a bit of confusion in here, let me clarify. Originally, Apple called their (WebGL Next?) prototype WebGPU, and it looked like Metal. Then the W3C group was formed with all the browser vendors, and they agreed to give that name to the group's work. That doesn't relate to the actual prototype code, which was implemented in Safari preview and is about to be removed from there.

Today, WebGPU takes some bits from Metal and Vulkan, it is not fair to say that it's "based on Apple Metal API".

</comment></comment><comment><USER20> _> With wgpu-rs we can finally deprecate the old gfx and have a solid recommendation for people getting started with graphics in Rust._

Does this mean that gfx-rs (the low level API) is deprecated and no longer maintained?

<comment><USER13> This deprecates the _old_ gfx (also called "pre-ll" for pre-low-level), which you can find at [1]. The new gfx (also called "gfx-hal" for hardware abstraction layer) is not deprecated, clearly, since wgpu-rs runs on it :)

[1] [https://crates.io/crates/gfx](https://crates.io/crates/gfx)</comment></comment>


Show HN: Irrational Beliefs Around the World - <AUTHOR> https://superstitious.network <comment><USER2> This is an interesting concept but for some reason I expected it to be a curated list and not a list of unvetted user submissions. Still interesting though, just different than my expectations.

<comment><USER3> Hey, thanks! Gotta make the list first :)

</comment></comment><comment><AUTHOR> Did you know that in some parts of Turkey it's not cool to clip your fingernails after sunset?</comment>


GNU Octave: A high-level interactive language for numerical computations [pdf] - <AUTHOR> https://octave.org/octave.pdf <comment><USER2> As somebody in an academic field where many scripts exist for MATLAB (mostly digital signal processing focused), there are few projects I want to succeed more than Octave.

It's very hard to recommend that students and colleagues grow invested in toolchains involving proprietary software that they may not reliably be able to afford/activate/use in the future, particularly when some students may end up working in developing nations.

Here's hoping that someday, Octave does to MATLAB what R has done to SPSS and SAS. MATLAB is a dinosaur deeply begging for an asteroid.

<comment><USER3> > It's very hard to recommend that students and colleagues grow invested in > toolchains involving proprietary software that they may not reliably be able > to afford/activate/use in the future, particularly when some students may > end up working in developing nations.

The future is here. As a research student in a developed nation, it's very annoying to deal with MATLAB projects. Our lab has a fairly strict no-new- code-written-in-MATLAB policy. Getting a personal licence is fairly straightforward as a student (for now), but running it on a cluster, or anything beyond my personal computer is very annoying.

<comment><USER4> What do you use instead though? Octave is very slow, Julia is even slower and Numpy has an annoyingly verbose syntax because it has to be valid Python.

Additionally I've not found a plotting solution that is as robust and fast as MATLAB.

MATLAB seems to me to be one of those commercial programs that has no good FOSS alternatives. Maybe it's just too niche, like CAD and EDA.

<comment><USER5> > Julia is even slower

Huh? This has definitely not been my experience -- most of the things I've ported over seem to run about twice as fast in Julia as in the original vectorized Matlab (and probably more like 10x faster than naive non-vectorized Matlab)..

<comment><USER4> It may execute faster when it finally gets around to it. But just loading the plotting library (Gadfly) takes over 10 seconds!

[https://github.com/JuliaLang/julia/issues/4373](https://github.com/JuliaLang/julia/issues/4373)

Starting all of Matlab never took that long.

<comment><USER6> I don't know what version of MATLAB you're using :P. They definitely have their logo screen open for a minute or two before the program shows up. That's quite a long load time. They just made it pretty.

</comment></comment></comment></comment></comment></comment><comment><USER7> I spent a few years writing software professionally, a large fraction of it in MATLAB (engineering tools development for gas turbine companies). With every project I lost more respect for matlab, which is very slow, and clunkier than the marketing material would suggest (for instance, IPC. Or accidentally passing a large data set to a vectorized O(n^2) operation). And they charge you $20k/year for a single license!

I still have some old personal code left in matlab, and I have been using octave a bit lately just to keep running it- I have to say I do appreciate octave. My biggest complaint is how slow plotting is, for instance, I have a method of characteristics supersonic nozzle design software based on the modified Sauer method and methodology of Zucrow and Hoffman, that runs in a couple seconds, but in octave it takes several minutes to plot no more than a couple hundred lines (no, just straight lines with two points). What gives?

<comment><USER8> One thing that caught my eye was your $20k/year license fee for MATLAB. How many toolboxes did you purchase?! I maintain a commercial license for a single user and it's nowhere near that. I purchased a perpetual license originally:

[https://www.mathworks.com/pricing- licensing.html](https://www.mathworks.com/pricing-licensing.html)

which is around $2k, but then pay a yearly maintenance fee to get upgrades, which is vastly less.

<comment><USER9> Toolboxes are in the $5k range (to me that is crazy), so if you get the database, optimization, and power systems toolbox with a license, you're not far from $20k.

This is one reason why if I had to pick commercial software I would choose Mathematica as they put everything in core as part of the standard license and don't require toolboxes for something the default software should have.

</comment></comment></comment><comment><USER10> I have used Matlab and GNU/Octave in parallel for some years half a decade ago. Octave can do most things that I needed but was slower to run for many things. With Octave you didn't run into licensing problems as those floating licenses had their limits and sometimes I needed to run quite a few instances in parallel.

Now I use Python exclusively. The language is so much better and more sane and almost any library is available. I will never go back.

Today, I would recommend Matlab only in rare circumstances. Currently I cannot think of one use case that I had in the last three years where I would prefer Matlab to Python. Using the Matlab language with a portable Octave installation can be useful for teaching matrix/vector topics to people who have little programming experience and don't know Python. You can get results very quickly. The syntax feels most natural for manipulating matrices and everything seems to be a matrix.

Other than that I think the Matlab language and ecosystem is kind of a dead end. But it will provide profits for a few more decades due to sheer inertia.

<comment><USER11> ^ This! Very similar experience here! Moved to Python from Matlab and never looked back.

</comment></comment><comment><USER12> What benefit does Octave have over the Python ecosystem? Esp as a clone of proprietary software?

The only thing I can see is as a way of running Matlab codes in clusters on cloud w/o having to also run the license servers.

<comment><USER8> I work as an applied mathematician writing numerical codes and I prefer to prototype in MATLAB/Octave for a number of reasons:

1\. I believe it to be far easier to debug an algorithm in MATLAB/Octave than Python. When I drop into the debugger, I can immediately check things like the eigenvalues of a matrix with a simple "eig(A)" or look at the sparsity visually with "spy(A)". Though this is possible in Python, I believe it to be far easier in MATLAB/Octave because the core mathematical functions are immediately available.

2\. MATLAB/Octave link into the good factorization codes directly and provide license coverage in different ways. For example, both codes link into things like SuiteSparse, which gives access to fast Choleski and QR factorizations. These routines have different licenses, but the good ones are dual licensed GPL/Commercial. Octave links into the code under GPL licensing. MATLAB provides a commercial license. This means that I can give a customer MATLAB/Octave code and they can choose whether or not they want license coverage using MATLAB or to release the code under GPL and we don't run afoul with the licenses. Candidly, not having to go off and obtain a second license for SuiteSparse is nice.

3\. In my opinion, the C-API in MATLAB/Octave is more sane than Python. It's not great, but the matrices are laid out in a rational method in MATLAB/Octave, so it's really, really easy to link into an old C/C++ or Fortran codes. Often, I've used this trick to debug the C/C++ code because I can more quickly visualize the matrices in MATLAB/Octave than I can using the native language.

As for the difference between MATLAB and Octave, I prefer Octave over MATLAB since:

1\. Octave is more sane when dealing with the C-API. MATLAB is not bad, but it can be finicky sometimes and I don't feel like I should have to manually set dbmex on.

2\. Octave uses the system version of GCC and does not package it's own. MATLAB does and for many years since MATLAB slow played their GCC version, this was a major annoyance when linking to codes that used C++11/14\. MATLAB has done a good job in the last few years of catching up, but I still prefer to use the system compiler.

3\. There are bugs in some of the Octave packages. MATLAB tends to have fewer such bugs. Most of the time, it doesn't matter till it does. Just file the bug with Octave. They can be slow, but there are a lot of people who volunteer their time and filing such bugs or helping to fix this is just the cost of this kind of software.

And, look, if you like Python, great. I also work with Python. However, again, for prototyping a technical algorithm, I prefer Octave.

<comment><USER13> That's a well thought out argument and I appreciate it.

I also use MATLAB/Octave quite a bit for numerical algorithm prototyping, and mostly hate it. The language has a shallow learning curve, true, but for complex software it gets ugly very fast. It's just not a well designed language, and if you have any CS background that becomes very limiting.

The thing that MATLAB brings to the table is the incredibly high quality numerics toolboxes. Octave gets a few of those but far from all of them, making it in my experience a poor runner up.

Whenever I have a choice I now go first to Julia. The language just makes me happy and the numeric infrastructure is almost complete enough.

Except for something like Simulink. When you need Simulink, there's nothing else out there that's a valid alternative.

<comment><USER8> For sure and I agree with many of the difficulties associated with MATLAB/Octave. When I want to put together a more complete piece of software that does things like: have a GUI, interact with a database, network conductivity, or parse files, I think that MATLAB/Octave is a poor choice.

A language like Julia tries to bridge that gap. My problem with Julia is that we don't get license coverage for things like SuiteSparse even with a JuliaPro license. MATLAB has done a _fantastic_ job of dealing with this and is well worth my license fee every year, so that my customers and I don't have to deal with it. Till this changes, it's a nonstarter for me.

As far as the differences in packages between MATLAB and Octave, I'll contend that it depends. For their lower level routines, they often use the _exact_ same codes. Both use ARPACK for iterate eigenvalue solving. Both use various forms of SparseSuite, UMFPACK, LAPACK, and the like for their algebra. For me, I tend to only use these lower level routines, so there's little or no difference in performance or efficacy between the two. For the toolbox arena, I know there are differences and I agree that can be frustrating. I suppose my point is that it really depends where on the spectrum of lower level to higher level mathematical abstractions that we need. For low level abstractions, I feel that Octave works great and it's been a critical tool for me.

<comment><USER13> In my situation (government scientist) I don't have commercial customers and, hence, not many licensing issues.

</comment></comment></comment></comment></comment><comment><USER14> It's worth noting that the popular Coursera course "Machine Learning" taught by Andrew Ng uses Octave as its tool. This is mentioned in the Octave book's preface; see [https://www.coursera.org/learn/machine- learning](https://www.coursera.org/learn/machine-learning) if you're interested in the course itself. It is _possible_ to use MATLAB instead, but there's often no real reason to do so. I think a lot of people have already decided to use Octave instead, because it solves their problems just fine.</comment>


So a product manager asks you to fix a bug… - <AUTHOR> https://medium.freecodecamp.com/youre-asked-to-make-a-fix-e156b802ad92#.utl728blb <comment><USER2> Pro tip: you are responsible for libraries you use in your code.

Unless another engineer literally committed against your codebase and broke something:

It's always your fault.

This reads like your typical javascript dev -- knows nothing and takes no responsibility

</comment><comment><USER3> Such a shit-hot engineer, and you're still using a _password_ to access GitHub?

/s - _because the internets seem to lack any sense of humour_</comment>


What I wish I had known before YC - <AUTHOR> https://medium.com/@alexandrwang/what-i-wish-i-had-known-before-yc-8e0edcf318b9#.vnwxaiku2 <comment><USER2> tl;dr A 20-year-old gives advice to 18-year-olds</comment>