My Git Workflow - <AUTHOR> http://gweezlebur.com/2009/01/19/my-git-workflow.html

<comment><USER2> It's really useful to see articles like this. With something like git it's not good enough to just know how it works and how to use the commands. The real power seems to come in learning the new working processes that let you take advantage of its power.

I say this as someone who's just beginning to see the amazing possibilities with quick branching. I've started working on all new features in their own branches and it's really making my life easier. I used to do a limited form of that in Darcs, but I just ended up with so many directories it got unworkable. With Git it's all neatly tucked away and I have Emacs and my shell set to always display the branch I'm working in so I never (ok, almost never) get confused.

<comment><USER3> Agreed. I also agree with the author that Git feels weird if you're used to a centralized VCS (e.g., Subversion). The fact that Git is respectful (for lack of a better word) of your local file system leads to behavior that actually makes perfect sense, but is nonetheless surprising coming from Subversion (as a concrete example, the first time I created some new files and then ran git reset --hard, I was surprised to see that my new files were still there (because I hadn't yet added them)).

It's like the old saying that anyone can learn Lisp in a day, but it'll take three days if you already know C. Anyone can learn Git in a day, but it'll take three if you already know SVN.

</comment></comment><comment><USER4> For everyone writing articles like these, this is an excellent example on how to get people into a technology.

Instead of giving them 15 commands to try to figure out, you hand them three. When they get these three, you give them another situation and hit them with more functionality.

Had I known that I could do most of my Git work with a couple commands, I wouldn't have spent two days reading every last thing about Git I could find.

</comment><comment><USER5> That was worth reading to find out that I could rename origin to github. For some reason I find the word origin really confusing.

There's a couple of other good tidbits in there if you're still a git neophyte like myself.

<comment><USER6> For example, this bit:

# git stash (all my changes are saved away, and I have a clean tree)

# Fix the bug

# git commit -a -m "bugfix"

# git stash pop (changes are back)

This is the type of stuff that make SVN people "get it".

<comment><USER7> I only do that if the "bugfix" is miniscule; I've forgotten stashes, and had severely painful efforts to merge them back in. Now I only stash for a very brief period of time.

Otherwise, I use a new topic branch instead of stashing. Branching takes so little effort.

<comment><AUTHOR> I've lost code with stash. Be wary.

</comment></comment></comment></comment><comment><USER8> I'd also recommend reading the "Git for computer scientists" linked in this post (<http://eagain.net/articles/git-for-computer-scientists/>).

</comment><comment><USER9> Nice summary. When switching from Subversion I exclusively did his first workflow, which is essentially treating git like svn ("it's like subversion but you have to commit _twice_ ").

Recently I've been transitioning to a workflow a little more like his second one, and I see the benefits, it's just hard to remember the commands and what sequence they need to be executed in.

</comment><comment><USER10> My workflow involves a master branch for the dot-com site and two others for some content-specific subdomains. Because of this, I find cherry-pick absolutely wonderful.

Some good info in the article, though I think these comments have some better stuff.

<comment><USER11> Yeah, I didn't do more than just mention cherry-pick, but that's really a great way to show how different git is from SVN. There's no way to do that, or anything close, with SVN.

</comment></comment><comment><USER12> I have to say I was hoping to see a little more magic in there. I've only been using Git for two weeks, feel like I still don't have my head completely around it, and the only thing covered I didn't know about was "stash".

<comment><USER11> Here's some magic, then. Say you've got a bunch of commits that you haven't pushed yet, and you don't like the way you did them. You worked on one thing for a while, fixed something else, worked on another thing, went back to the first thing: it's a mess.

"git rebase --interactive HEAD~10" will bring up a $EDITOR window with the last 10 commits listed. You can rearrange them, squash them into each other, delete some entirely. Save the file, and git will happily rewrite history for you.

See this blog post for a little more detail: [http://blog.madism.org/index.php/2007/09/09/138-git- awsome-n...](http://blog.madism.org/index.php/2007/09/09/138-git-awsome-ness- git-rebase-interactive)

<comment><USER13> What is the big deal about keeping a clean history?

It's always seemed so much effort than it's worth.

Besides, isn't it better to keep a history of what _actually_ happened? Something about being doomed to repeat it comes to mind...

<comment><USER14> Ideally what you want is a "useful" history, not an actual one. And by "useful" I mean one where the changes in each commit are related to a specific, self-contained update (feature addition, bug fix, etc.).

That way you can branch at any point in the commit history and be sure it'll run cleanly or cherry-pick a change without having to remember everything that it might depend on. And you get exactly what you want and nothing more.</comment></comment></comment></comment>


Xkcd: App - <AUTHOR> https://xkcd.com/1174/

<comment><AUTHOR> Improvement Proposal:

"Want to visit an incomplete version of our Website where

1) you can't zoom

2) we have better access to your private data

3) we can better enforce DRM

Download our app!"</comment>


'Testers Are Idiots'  - <AUTHOR> http://www.sdtimes.com/content/article.aspx?ArticleID=31789

<comment><USER2> Are all testers idiots? No, surely not. QA is important, and many testers are very intelligent.

That said -- and maybe this is my programmer-bias speaking -- but I can't help but have more respect for someone who creates something new, as opposed to someone who merely verifies that something someone else built satisfies its specification.

<comment><USER3> creating ways to break stuff is a creative, inventive process. and doing it well requires heavy automation including skillful programming.

</comment></comment><comment><USER4> Interesting article, even if some of it reads like wishful thinking. In most company hierarchies QA ranks pretty much near the bottom, somewhere between development and support.

In my (limited) experience, those who are good at testing also tend to hate doing it, while those who enjoy it tend to be mediocre (the third category being those who both hate testing and are bad at it). A good tester who enjoys testing seems to be a lot harder to find than a good programmer who enjoys programming, and chances are the pay is lower.

</comment><comment><USER5> Much as I like the idea, and feel it should be introduced, in 10 years I've never encountered a tester who _could_ code, let alone one who does.</comment>


Why Do Gas Station Prices Constantly Change? Blame the Algorithm - <AUTHOR> https://www.wsj.com/articles/why-do-gas-station-prices-constantly-change-blame-the-algorithm-1494262674 <comment><USER2> The premise that gas stations are facing internet competition is ridiculous.

Equally absurd is "blame the algorithm". While they may use some fancy machine learning, that pattern is pretty clear -- they gouge customers during peak periods, and cut the price during slack periods.

The AI component is probably there more to deflect accusations of cartel-like price fixing than any actual utility.

<comment><USER3> you say "gouge" I say "increase supply to meet demand".

during/after Hurricane Katrina a couple of guys spent tens of thousands of dollars ~$500 electric generators. Rented a truck and drove a long distance to NOLA where they started selling the generators for $3000. They had willing customers, but the police arrested them for "price gouging" and confiscated the generators. Instead of having the option of paying for something that people desperately needed, emotional politicians passed a law ENSURING that people don't bust their ass to bring goods to market. How sad. EVERYONE is worse off in that situation. EVERYONE could have been better off.

<comment><USER4> How do you identify a situation like this where people might have been helped by the "price gouging" vs something like a company running a festival where they don't allow water to be brought in and you can only buy it from approved vendors who increase the price massively? If there's going to be error one one side or the other, I'd prefer it to be on the side that doesn't incentivize company's to do things that hurt people.

<comment><USER5> There was nothing stopping other people from buying generators and going down. It's the possibility of competition that's important in my mind. I've come to the conclusion that nothing protects consumers as much as competition

<comment><USER4> ISP's have a possibility of competition but they don't. The possibility of something happening can not be the end all for legislation

<comment><USER6> See [https://en.wikipedia.org/wiki/Natural_monopoly](https://en.wikipedia.org/wiki/Natural_monopoly). ISPs are in an objectively different situation from gas stations and the supply of generators over a distance in a disaster situation.

<comment><USER7> The thing with gas stations is, the gas has to come from somewhere. For various reasons, oil companies are in a natural-monopoly position (or rather, a natural _cartel_ position, that uses various branding tactics to discourage the appearance of collusion—much like the deBeers cartel does for diamonds.)

With so much leverage over their direct customers, the oil cartel isn't interested in _allowing_ gas stations to eat into their profit margin. So they buy them. Thus, gas stations become another facet of the cartel.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Buddy ran a gas station in the cities for a while and within reason and the law (MN has some rules), he would mostly change his price based on the price of a station near him. That generally went with the price he should be charging based on what they were buying it for. I sometime think he just thought price wars were fun. I guess having an electronic price sign tends to embolden you when your competitor still has to flip it manually.

The reservation gas station prices theirs at $0.05 lower than the next town overs gas. They all pretty much buy it at the same price and the profit is on the inside of the store not the gas pump.

<comment><USER9> A friend of mine bought a gas station franchise for a major oil company (in a very large city, I might add), and he'd basically do the same. His price intelligence system is pretty low tech - it involves him hopping in a car and seeing what his local competitors are charging.

<comment><USER10> I used to work at a Wawa gas station where the manager would occasionally send someone out to check the station down the street and make sure we were still undercutting them by a few cents. I assumed that was pretty standard in the industry.

<comment><USER11> Which is funny to me, because Wawa has a few, _very effective_ means of ensuring customer loyalty.

Between state-minimum priced cigarettes (for smokers), fee-less ATMS, the awesome, cheap coffee bar, and pretty darn reasonable rates on their hot, prepared food items, I usually prioritize going to Wawa in every circumstance possible, even if gas prices aren't the absolute lowest.

I remember when I moved to the Maryland area, hearing everybody rave about what sounded like the dumbest named convenience store I'd ever heard of, and how convinced I was that I'd never fall into that cult of weirdness, but they proved to be too convenient in too many ways for me to ignore them, and now I'm a devoutly loyal Wawa customer.

<comment><USER12> In Florida. Absolutely love Wawa. They're wonderful.

</comment></comment></comment></comment></comment><comment><USER13> I'm trying to decide whether this quote is a deep insight into efficient pricing or consultant-level cognitive dissonance and self-justification: "This is not a matter of stealing more money from your customer. It's about making margin on people who don't care, and giving away margin to people who do care,"

Leaning towards the latter.

<comment><USER14> This sort of thing shows up in lots of different pricing mechanisms. There's no structural reason why plane or train tickets should be cheap far in advance and then go up in price a lot as the departure date nears; it's just that people who are willing to book early are going to be cost-conscious and might compare prices on multiple options while those late might care more about convenience than price (e.g., people traveling on their company's dime).

<comment><USER15> Doesn't buying plane tickets in advance let airlines plan capacity better?

<comment><USER16> They can do some capacity modulation through pricing, sure, but their historical DBs have a large enough 'n' (American Airlines SAABRE was the first big database application and drove database design) that they can predict pretty well. Which is why the bumped-due-to-overbooking is pretty low.

BTW I think it's appalling that overbooking is allowed in this age of nonrefundable tickets. You've paid for the seat; whether you sit in it is your business. In the old days of regulation most tickets were fully reusable, and overbooking harks back to that time.

<comment><USER17> For many airlines, you can re-schedule your non-refundable ticket for another day for a fraction of the cost of the original ticket. You still have to fly on that airline at some point to recoup any of the value of the ticket, but it can be done.

</comment></comment></comment></comment></comment><comment><USER18> Seems like an interesting article, unfortunately I can't access it, even using the Web link in a incognito tab.

<comment><USER19> here's a link: [http://archive.is/2017.05.08-172743/https://www.wsj.com/arti...](http://archive.is/2017.05.08-172743/https://www.wsj.com/articles/why- do-gas-station-prices-constantly-change-blame-the-algorithm-1494262674)

<comment><USER18> Thanks! That is a really interesting article.

</comment></comment></comment><comment><USER20> I wonder if this drives people to Costco? I've felt a major reason people pay to be a member is that if you buy all your gas there, you save in a year roughly the cost of your membership.

<comment><USER21> Data point: Costco outside my work has gas for $2.61. Across the street is a gas station selling for $2.98. In my experience I save about $4-5 per tank buying at Costco. I fill up about every two weeks, so I save about $100 per year on gas.

If you are new to Costco you will typically save nearly the full membership cost on your first trip, stocking up on basic house supplies.

<comment><USER22> This. And it's very convenient to run in and pick up some necessities after.

</comment></comment></comment><comment><USER23> It's pretty blatant when any global event impacting future oil supply results in immediately raised pump prices for gas.

<comment><USER24> I assume you want them to keep prices low until the more expensive gas actually works its way through the supply chain to them. Should they also keep prices high for that period after oil prices drop?

<comment><USER4> Isn't that what happens? Back when I owned a car, some event would be in the news that restricted oil supply and the next day the prices would have jumped up. On the inverse, when something like OPEC announcing they would increase production happened that increased the oil supply, prices would not drop for days or weeks. I'm sure that's a lot of anecdotal evidence without the full picture, but there iss no reason for them to drop the prices if the demand is still there. Its the same reason why software is more expensive in Australia when there is no increase in difficulty in distributing it there. The companies charge more because they can

<comment><USER24> I think there's some lag, but not as long as the supply chain takes. I'm not sure, it's been a couple of years since I've had to pay attention to gas prices myself.

</comment></comment></comment></comment><comment><USER25> I'd much rather blame whoever decided to rely on "the algorithm".

</comment><comment><USER26> As a proposed legislative solution to this. Limit the resolution of prices consumers face. E.G. Only allow the price to change at 2AM daily.</comment>


Internet Archive Responds to Senator's Concern over National Emergency Library - <AUTHOR> https://www.publishersweekly.com/pw/by-topic/digital/copyright/article/83027-internet-archive-responds-to-senator-s-concern-over-national-emergency-library.html <comment><USER2> For those of you who live in North Carolina, and it's at least a fair amount of you, it's absolutely critical that you get Tillis (the senator described in the article, who's upset with the Internet Archive over a perceived attempt "to unilaterally create an emergency copyright act") out of office the next time you get a chance. He's one of the worst congresscritters when it comes to IP law, he only accepted that climate change _was a thing_ in 2018 (and still doesn't accept that it's human-caused), is against rights for LGBT people, is against net neutrality, took slightly under $200,000 from the pharmaceutical industry last year, and I could go on for quite a while!

Regardless of your political leanings, he helps absolutely no one. It doesn't matter who you vote him out with; it would be _incredibly_ hard to do worse. If you care about the Internet Archive, getting rid of Tillis and people like him is the best thing you can do to help its long-term viability.</comment>


An Open Letter to HubSpot Employees: Focus on Value, Not Valuation - <AUTHOR> https://readthink.com/an-open-letter-to-hubspot-employees-focus-on-value-not-valuation-226fed123d2b#.vrv91cgjk <comment><USER2> From a financial/investing standpoint, he's in a way accepting the teachings of value investing - the business inherently has value in it, regardless of what the general market may irrationally place on the company; and that in the end, the company will be subject to mean reversion, and will eventually trend back upward when the markets stabilize.

However, the reality is that, from a value investing perspective, $HUBS is a company with negative EPS, high price-to-book, and operates on a $1B+ market cap with only $182MM in revenue...so it _is_ reverting to the mean by correcting itself from such a wildly high valuation.</comment>


Web Standards 2008: Three Circles of Hell - <AUTHOR> http://www.alistapart.com/articles/webstandards2008 <comment><USER2> _I recently witnessed a member company representative shut down an entire line of discussion simply by saying, "This compromises several of our patents. We will remove ourselves from the W3C if you proceed."_

Suddenly I understand why it takes seventeen years for the W3C to get anything done.</comment>


Windows 10 features we're no longer developing - <AUTHOR> https://docs.microsoft.com/en-us/windows/deployment/planning/windows-10-deprecated-features <comment><USER2> WinHlp32.exe "All Windows help information is available online. The Windows Help Viewer is no longer supported in Windows 10"

Wow, that's the end of an era. I suppose that also means all WIN32 API documentation is no longer available offline.

<comment><USER3> In fairness, I believe that's the old WinHelp format of Windows 3.1 vintage, rather than HTML help files with .chm extension.

</comment></comment><comment><USER4> System Image Backup (SIB) Solution

We recommend that users use full-disk backup solutions from other vendors.

This is the only major bummer for me. I'm one of the (likely few) people who use this, and I also use it across the network to create system images for Windows 10 UEFI machines.

<comment><USER5> I've been using Macrium Reflect for a long time now and it's worked pretty well.

</comment></comment><comment><USER6> Please notify me when you're done with tiles, and re-implement the Win 7 Aero UI in Win 10.

Microsoft's biggest misstep in mobile was trying to unify the desktop and mobile experience into a weird amalgamation OS that doesn't work or feel right for either. Win 10 is an improvement over 8 but still awful compared to the straightforward, non-confusing Win 7. Apple understands users expect different OSes for iPhones vs Macs.

<comment><USER7> Functionally, I fail to see how Windows 10 is worse than aero.

Aesthetically, Aero is a phenomenal display of bad taste, that we'd all better forget.

When I see this kind of comment, I wonder if the commenter has actually used Windows 10 for any non-trivial amount of time.

<comment><USER6> And when I see a comment like yours, which just states one person's opinion -- no facts, nothing new -- I wonder, "why did this person waste his time commenting?" Did you think people would read your comment and decide, if marcowhatever likes Windows 10, then I guess my opinion is wrong?

Search anything related to Metro vs Aero or Win 7 UI vs Win 10 and it's almost all complaints about the dull, monotone, flat look of Win 10 (a failed unification with the no-longer-existing Windows Phone), or journalists who need to toe the MSFT party line in order to continue to get access to future stories.

</comment></comment></comment><comment><USER8> I love the Snip tool. I hope the new snip&sketch is as fast and simple.

<comment><USER9> I was sceptical at first - but the windows key + shift + s shortcut really made it work for me! (I know I could have mapped Snipping Tool to a macro easily enough but... I didn't)

EDIT: Oh, also the fact that it automatically copies the snip'd area to your clipboard is nice.

</comment></comment><comment><USER10> "Wi-Fi WEP and TKIP"

Now those in less fortunate circumstances that have to connect to whatever public WiFi is available will simply be screwed if they dare get a modern Windows machine.

The products Microsoft donates to classrooms in impoverished countries will be nice paperweights.

<comment><USER5> _Since the 1903 release, a warning message has appeared when connecting to Wi- Fi networks secured with WEP or TKIP (which are not as secure as those using WPA2 or WPA3). In a future release, any connection to a Wi-Fi network using these old ciphers will be disallowed. Wi-Fi routers should be updated to use AES ciphers, available with WPA2 or WPA3._

How much do you want to bet this one gets reversed after user backlash?

</comment></comment><comment><USER11> At least they are clear about it.

</comment><comment><USER12> The ability to create ReFS volumes was removed in non-Pro, non-Enterprise Windows 10 1703.

I guess that the fact I didn't notice says something.

<comment><USER13> That ReFS doesn't have a home use case?

<comment><USER5> The lack of a decent filesystem on Windows supporting data parity is abominable.

ReFS can do it (if you turn on the feature for more than just metadata) but it's slow and kind of a flop.

</comment></comment></comment><comment><USER14> The inability to get TSF vs. TFS straight in that document is...pretty bad.

</comment><comment><USER5> _Offline symbol packages_

What's their beef with all things offline?

</comment><comment><USER15> RIP screensavers

</comment><comment><USER16> lol @ My People getting removed. It was added not so long ago and it was displayed so prominently (in the taskbar of the default install) and at the same time so seemingly stupid and useless that I was wondering if its inclusion was the result of a manager sucking off the right executive or something.</comment>


AngularStrap v2.0 - <AUTHOR> http://mgcrea.github.io/angular-strap

<comment><USER2> We use the semi-official angular ui bootstrap library ([http://angular- ui.github.io/bootstrap/](http://angular-ui.github.io/bootstrap/))

Out of curiosity what does this give you over that?

<comment><USER3> This requires you to use jQuery and the Bootstrap scripts, whereas UI Bootstrap does not require those at all, thus allowing you to go leaner. The code for UI Bootstrap is architected much better than Angularstrap in general.

I usually recommend against using Angularstrap and just using UI Bootstrap.

<comment><AUTHOR> That's not true: "With no external dependency except the Twitter Bootstrap CSS styles, AngularStrap is lighter and faster than ever as it does leverage the power of ngAnimate from AngularJS 1.2+!". Please do read the docs.

<comment><USER3> Huh, that must've changed recently then. It certainly was not true for a long time.

But aside from that, I usually don't recommend it in part because I have heard that a lot of effort was expended in trying to reach out to mcgrea to put forth a joint community effort in maintaining a singular project, but mcgrea wasn't really interested in doing so, wanting to maintain total control in many respects. The codebase certainly suffered from that decision for a long time (and for a long time it wasn't well maintained either - not sure about its current state).

<comment><AUTHOR> That's not true either, I (mgcrea) was more than happy to merge efforts with the UI team. We started a joint repository with the UI-team and I did commit a lot (time, work, PRs) there. Unfortunately the UI team did not have the time (or will) to debate and work on it at the time, several months passed, I ended up quite alone there and finally we decided to part our ways. UI team got back to work on their existing codebase, and the work I had made there (several PRs) became the initial seed for the AngularStrap v2 full rewrite.

Have a look at the (dead) issue tracker if you're interested by the insights : [https://github.com/angular-widgets/angular- bootstrap/issues?...](https://github.com/angular-widgets/angular- bootstrap/issues?direction=desc&sort=updated&state=open)

</comment></comment></comment></comment></comment><comment><USER4> This is cool! React (by Facebook) has something similar. [http://react- bootstrap.github.io/components.html](http://react- bootstrap.github.io/components.html)

</comment><comment><USER5> This looks very nice. The only thing that's a little confusing is that you provide a "Typeahead" component, but that was removed from Bootstrap 3 in favor of Twitter's standalone library which is also called Typeahead. I think it's great to provide the functionality (and clever to do it with Tooltip), but wonder if it should be called something else. (Autocomplete? Tipahead?)

Also, it would be nice if you used the inline annotation syntax (['foo', function (foo) {}]) to make the code minifiable.

<comment><AUTHOR> The distributed code is parsed by gulp-ngmin so you can minify it safely: [https://github.com/mgcrea/angular- strap/blob/master/dist/mod...](https://github.com/mgcrea/angular- strap/blob/master/dist/modules/tooltip.js)

</comment></comment><comment><USER6> Look great! We're currently not using Angular on our frontend, but this looks like a great way to squeeze more juice out of Bootstrap. I'll definitely check this out for future frontends :)

</comment><comment><USER7> Angularstrap left a sour taste in my mouth when their Bootstrap 3 support took so long.

In that respect using bootstrap3 + backbone is a better option.

</comment><comment><USER8> Not sure if it's intentional or not, but on the Timepickers example the "Time (as a number)" live demo cannot be updated. Doesn't work for me in FF or Chrome.

[http://mgcrea.github.io/angular- strap/##timepickers](http://mgcrea.github.io/angular-strap/##timepickers)

This whole thing looks really, really, nice. Kudos.

</comment><comment><USER9> Great to see a number of alternative solutions emerging! We've been using BS3 with a patched version of AngularUI for a few months now without any problems at [https://starthq.com](https://starthq.com). Using Angular with AngularUI means we no longer need to include jQuery as a dependency.

</comment><comment><USER10> As much as I do like and appreciate Bootstrap, I don't use it for all (or even most) of my work. I wish these directives, or at least the ones where this could make sense, weren't so dependent on it.

<comment><AUTHOR> You can use totally custom templates for every directive and it should basically work out of the box for most of them (with some proper CSS style of course).

<comment><USER10> Thanks, I'll check that out then. Looking for something for calendar fields specifically.

</comment></comment></comment><comment><USER11> ngAnimate is a nice touch on top of vanilla twitter bootstrap.

<comment><USER6> As a frontend dev who isn't using Angular I'm a little jealous I can't readily make use of this! It's the subtle details that add a lot and I believe that in 2014 (and beyond), users are so used to those animations and niceties found in native apps that they expect them at this point. If we can bring that same level of polish to our web apps then everybody wins!

</comment></comment><comment><USER12> On Chrome for Android the onscreen keyboard never came up for Typeahead. Otherwise this looks outstanding. Nice work.

</comment><comment><USER13> This is great! Does anyone know if something similar exists for Ember?

</comment><comment><USER14> Would be nice to have a mobile optimized version of date picker.

<comment><AUTHOR> You can use the "useNative" option, `data-use-native="1"` to active a fully native component if available (iOS/Android).

</comment></comment><comment><USER15> p.s. the documentation link on your related 'bootstrap-additions' project is not working. I'm looking for a demo :)

</comment><comment><USER15> the documentation does not mention which browsers are supported / tested. Is it IE8+ or IE9+?

</comment><comment><USER16> Angular's trap.

</comment><comment><USER17> Call me old fashioned if you like, but shouldn't 'About This Project' actually tell me what it is?

<comment><AUTHOR> Updated the docs to add a more descriptive tagline, thanks for the feedback.

<comment><USER17> Much better :)</comment></comment></comment>


Google employees organize to fight cyber bullying at work - <AUTHOR> https://www.reuters.com/article/us-alphabet-google-diversity-exclusive/exclusive-google-employees-organize-to-fight-cyber-bullying-at-work-idUSKBN1H61QR <comment><USER2> Whose terrible idea was it to create a place where employees could congregate and even have an option of engaging in political discussion?

You don't talk politics at work. I thought that was standard operating practice.</comment>


How brains are built: Principles of computational neuroscience - <AUTHOR> https://arxiv.org/abs/1704.03855 <comment><USER2> Here is my problem with the article: It has the title of a magna opus. The article has a title that suggests content that is expansive and authoritative, containing both rigorous theory and seminal empirical research. This article is not at all deserving of such a title, and I cannot think of a single neuroscientist I know that would put such a title on even their most ambitious work, much less this loosely thought out treatment.

It is, frankly, embarrassing. Even in 2011.

<comment><USER3> It was an introductory article written for private foundation that gives out research grants.

Title was fine. Why it was posted to HN is different question.

<comment><USER2> If the context of the title is to capture the goals of the private funding foundation and the article's contents are to describe some potential avenues of investigation or outstanding problems, then that does make me reconsider my expressed opinion in the grandparent. Thanks for sharing.

</comment></comment></comment><comment><USER4> Dave Touretzky's course _Computational Models of Neural Systems_ should be checked out by anyone with the interest in the topic.

Lectures, assignments and matlab code are all available online: [http://www.cs.cmu.edu/afs/cs/academic/class/15883-f15/](http://www.cs.cmu.edu/afs/cs/academic/class/15883-f15/)

The readings page alone is a treasure trove of background text in computational neuroscience theory starting from 1970s.

</comment><comment><USER5> In the 1900s, people used to think the mind (and body, in a way) worked like a steam engine. In part, the steam engine was used as the analogy because that was the nearest and most technologically advanced input/output closed system that was available. (And, importantly, that most people could grasp and talk about.)

Hence colloquialisms like I need to "let off steam" or "I am under so much pressure".

It turned out to be an analogy that was so far removed from reality, it was useless.

I wonder if we are making the same mistake with computers as we know them today?

"I really just need to reset and reboot, y'know."

<comment><USER6> From the Abstract: "...computational science 'is no more about computers than astronomy is about telescopes.'"

So when they say 'Computational' Neuroscience, they're not particularly referring to using computers, but analyzing neurological systems using computational analytical techniques.

<comment><USER7> A salient difference from astronomy is that computational neuroscience is typically concerned with describing neural systems in terms of information processing. Our principle technological example of an information processing system is the computer. So while there's a distinction between "computational" as (a) a tool used for analysis, (b) a methodology or model employed to describe a system, and (c) an statement about a property of the system under study, computational neuroscience refers to at least both ab and often abc. This isn't the case with astronomy, because we aren't typically using telescopes to study how stars bend and collect light like telescopes (although we of course sometimes do).

<comment><USER6> It's just an analogy.

</comment></comment></comment></comment><comment><USER8> The article says nothing about how brains are built, nor does it mention any principles of computational neuroscience.

The paper largely consists of smug statements such as:

> Despite huge efforts and large budgets, we have no artificial systems that > rival humans at recognizing faces, nor understanding natural languages, nor > learning from experience

Progress in these areas is very rapid, I hope the author won't be too disappointed in the outcome.

<comment><USER9> Currently artificial systems cannot rival humans at recognizing images, understanding natural languages and learning from experience yet, despite all the great progress that has been made. Great progress doesn't mean we're there yet.

<comment><USER8> I had to check if you were the author of the paper. You seem to think exactly the same way.

<comment><USER10> If you actually try current vision systems out on real raw video data as opposed to clean datasets of "good" photos pre-selected by humans, you'll see that they are terribly far from human performance.

Same goes for translation systems.

Most current systems (by their very design) lack dynamical representation capability necessary for modeling interactions in/of the world. I hypothesize this is important for AI that actually gets what it's dealing with.

</comment></comment></comment></comment><comment><USER11> I know it was published in 2011, but to extend the logic in this article:

To build a machine that can fly, we need to build a machine that can flap its wings.

To build a car that moves, we must build a machine that can lift its two feet in alternating motion.

To build a camera that sees, we need to build a lens that can flex itself to change focus.

<comment><USER12> If you are talking about building AI, maybe you have a point. But its pretty clear the domain of discourse here is computationally understanding the brain. In which case I think it is prudent to actually understand the brain.

<comment><USER11> What you really want to understand is the abstract model the brain uses to think, then you can go build that using other tools that may or may not look like a brain.

Sure, the biology gives us some clues, but it may not be the most useful way to view what is going on.

</comment></comment></comment><comment><USER13> We also have the mind, Computational Theory of the Mind (CTM) [https://plato.stanford.edu/entries/computational- mind/](https://plato.stanford.edu/entries/computational-mind/)

<comment><USER14> I like the mix between philosophy, biology and computation. Philosophy tries to describe what is thinking, biology tries to understand how it happens and in computation we try to replicate it.

<comment><USER15> psychlogy is what tries to describe _thought_ and emotions. Philosophy tries to describe _what to think about_.

<comment><USER14> I said it right, psychology is not involved. Thoughts and emotions are emerging properties. But you need to define the basics as what is intelligence, what is thinking. You only do that with philosophy. Philosophy is not only about what to think about.

One of the biggest challenges to create an intelligent systems is to define what is intelligence. If you can define it in a way you can measure it you can track the progress. Nowadays there is not a clear definition.

<comment><USER15> > One of the biggest challenges to create an intelligent systems is to define > what is intelligence

That would be paradoxical. The challenge can't be to define the challenge. Likewise, Philosophy presupposes a notion of _Philos_ and _Sophia_. Psychology is a related field that can help to refine this notion, isn't it?

</comment></comment></comment></comment></comment><comment><USER16> The paper is not about computational neuroscience, but about the brain in general. For those interested, there is a great book actually titled "Principles of computational neuroscience"[1]. Also, the free "Book of Genesis"[2] has an excellent short introduction to computational neuroscience.

1\. [https://www.amazon.com/Principles-Computational-Modelling- Ne...](https://www.amazon.com/Principles-Computational-Modelling-Neuroscience- Sterratt/dp/0521877954)

2\. [http://www.genesis-sim.org/iBoG/iBoGpdf/index.html](http://www.genesis- sim.org/iBoG/iBoGpdf/index.html)

</comment><comment><USER2> It would be nice if the article's title mentioned its publishing date. I wrote a comment criticizing the article for ignoring a number of important papers published since 2010, the latest published article that was cited, and then had to delete it.

<comment><USER17> If you have the references handy, those recent papers would still be interesting to folks (like myself) who aren't in the field/up-to-date but are interested in the topic!

</comment></comment><comment><USER18> Hey guys, I found the non-crappy papers:

[https://arxiv.org/abs/1604.00289](https://arxiv.org/abs/1604.00289) \-- _Building Machines that Learn and Think like People_

[http://rsif.royalsocietypublishing.org/content/13/122/201606...](http://rsif.royalsocietypublishing.org/content/13/122/20160616) \-- _Active Inference and Robot Control: a case-study_

</comment><comment><USER19> The origin of the quote in the abstract is sort of disputed. While many people attribute it to Dijkstra, the true origin is unclear.</comment>


Ruby 1.9.2 RC2 is released - <AUTHOR> http://www.ruby-lang.org/en/news/2010/07/11/ruby-1-9-2-rc2-is-released/ <comment><USER2> If you're on Ruby 1.9.1 and want to use Rails 3 Beta 4, you have to upgrade to 1.9.2 or the new Rails beta won't work.

</comment><comment><USER3> I have not looked at the Ruby side in a while. I know the 1.8 series put Ruby as one of the slowest of the dynamic language but vaguely remember that being worked on. Had 1.9.X brought a good speed improvement?

<comment><USER2> Ruby 1.8 uses MRI (Matz's Ruby Interpreter), which is indeed slow. Ruby 1.9 throws out the old MRI code entirely in favor of YARV (Yet Another Ruby VM), aka KRI (Koichi's Ruby Interpreter), which is considerably faster.

<comment><USER4> How well does JRuby stack up against them?

</comment></comment></comment><comment><USER5> I have been coding a new app with 1.9.2-head and the latest Rails 3 beta. RVM makes switching from 1.8.6 to 1.9.x easy. Haven't had any crashes and it even _feels_ faster.</comment>


Browse SF Symbols - <AUTHOR> https://sarunw.com/posts/browse-sf-symbols.html <comment><AUTHOR> If you live under a rock like me, there is an app for browse SF Symbols.

Took me a while to find out.</comment>


Startup founders: reach out to journalists and reporters - <AUTHOR>

As a startup founder bootstrapping my own site, I found a service called Cision.com that provide media contacts (journalists, freelance writers, etc.) This database is used by lots of PR firms and media people to find out who's who.  But the price is steep, about $2,500 for the package.  What you get is a whole list of detailed contacts infos (phone number included) of all journalists who's writing about your vertical.
So being an entrepreneur myself, my idea is to split the cost with someone else, ideally 4 or 5 other startups to lower the cost (but more is better).  If we get a group of 5 or more, our average cost will be lowered substantially.
So if you're looking for journalists to reach out to them, this is it (or you'll have to spend countless hours going through Twitter and LinkedIn).  I had a demo with them and a bunch of screenshots as well.  Ping me if you want to see.
(Disclaimer:  I'm a regular HN here.  This is a throw away account because I don't want to risk posting stuff that link to my original account.) <comment><USER2> I'm a journalist for one of the publications listed in Cision. (I'm San Francisco/Silicon Valley editor at Xconomy.) Cision is a fine company, but if I were an entrepreneur at a cash-strapped company I would never pay $2500 for a list of media contacts.

A much better (and cheaper) strategy is to read the publications that follow your industry, figure out which reporters at those publications write about your niche most often, and contact them directly with a quick summary of your company and its latest news. Most publication's websites list reporters' email addresses, or at the very least provide an address for story tips. Of course, maybe digging up this information counts as "spending countless hours," but I don't think a media strategy has to be so time-consuming. Whatever your company is working on, there are probably only five to 10 journalists who will know enough about your field to do an accurate, thoughtful story. Figure out who they are and target them directly.

By the way, my address is wroush at xconomy dot com.

<comment><AUTHOR> Thanks for the thoughtful comment. I'm not an expert of PR at all, and when it comes to PR and press, it sounds more like a dark-art than science. So it's good to know that you can obtain these infos through other means than purchasing an expensive db.

If these infos are publicly available, what can benefit more startups people is to have a free db which crawled all the public listings. I'll do some more research into this.</comment></comment>


Google 'flaw' puts users' details on display - <AUTHOR> http://www.news.com.au/technology/massive-google-security-flaw-puts-users-details-on-display-for-all-to-find/story-e6frfro0-1226577210852 <comment><USER2> Depends on your definition of flaw. This has been discussed before: [https://plus.google.com/106557483623231970995/posts/Bed6WUJp...](https://plus.google.com/106557483623231970995/posts/Bed6WUJpNi4)

Basically, it is due to how Play Store is set up. Developers are the merchant of record, not Google (unlike Apple's app store, where Apple is the merchant of record). The developer may not "want" this information, but for tax purposes they need it.

</comment><comment><USER3>
        These personal details could then be used to access the users' bank
        details. That's also more than enough information to be able to access
        your other devices which could also be mined for more data - insurance
        information, other credit cards -  which could then be used to access
        your banking credentials.

Do developers have access to users' bank details? How would anyone access 'other devices' with just a name, address and email? This seems a little far- fetched.

<comment><USER4> Worse case scenario that I can think of is that they use the same password for their email as they used for the in-app auth in the App they bought.

Next step would be for the app creator to login, see what they can use to create requests for other personal credentials. Facebook password reminder, they get in, then they have the user's DoB and family information (for those stupid companies still using "what's your mothers maiden name" password reminder questions).

You could probably do a fair chunk of damage, but that's all based off the fact that the user would have to be silly enough to still use the same password over multiple services. Yes I know... we've been telling them for far too long, but people still don't listen. They think that if their bank password and their email password are different then they are safe.

<comment><USER5> If the user is already setting a password in the app, couldn't the app just ask for the user's email address? It doesn't seem like having the email address for free really buys a malicious developer that much.

<comment><USER4> The argument there would be that the user "provided" the app owner with their email address, where at this point Google is just giving it to them. Don't get me wrong, I'm on the, I don't care side.

I was in a store one day when the clerk asked the customer for their postcode, the customer went nuts saying that he shouldn't have to tell them. Three minutes of arguing could have been shortened to "INSERT FAKE NUMBER" if he was really that against giving his real post code.

</comment></comment></comment></comment><comment><USER6> Google Play is the one sole reason I have a Google account (connected to my Android phone or in general.) I guess I need to start pirating all my apps now, but at least I can delete the account!

<comment><USER7> Better avoid making any online purchases whatsoever, or credit card purchases altogether. Every merchant gets this information.

<comment><USER8> The problem is that he is comfortable with Google receiving his information (name, address, email) but not third party developers selling through Google.

Developers on Google Play _should not be merchants_. Google should be more than a payment processor — especially if they are going to take 30% just like Apple does.

Apple handles this a hell of a lot better: as a developer you don't see anything about your customers (except how many there are per country) and you don't have to compute and collect sales tax yourself for every region you sell in, nor do you have to manually handle returns.

I hear the Amazon App Store does this a lot better than Google Play.

<comment><USER7> While I agree that Google's cut should be thinner, it works out way better as a buyer when you can ask a developer directly for a refund or about payment issues rather than deal with a huge company with automated customer service that doesn't work.

<comment><USER8> It's fairly straightforward to get a refund from Apple for an App Store app — we see about 2-3 refunds a week processed for our main app ($9.99).

The thing is, as developers, we don't have to deal with it. The customer is unhappy and gets their refund, Apple does it, not us. We simply see that a refund happened and move on.

It's a far better system for all involved: consistent refund policy for the customer, developer doesn't have to deal with it.

</comment></comment></comment></comment></comment><comment><USER9> My thoughts on this: <http://codebutler.com/2013/02/13/play-store-privacy/>

Although there is a legitimate reason for sharing this information (sales taxes), it is not clearly explained to users or developers and goes against reasonable expectations.

</comment><comment><USER10> As developer I certainly wouldn't feel confortable receiving this kind of informations. There is a difference between selling for instance a $100 product and selling the equivalent of a cheeseburger. In the latter case I wouldn't expect receiving so much detailed informations for such insignificant and common purchase.

<comment><USER2> But if you were to buy a cheeseburger with a credit card, the person selling the cheeseburger would get this exact same information. I don't know if the price should really be a factor here.

<comment><USER10> As msy replied there are for sure some informations the seller wouldn't have from a credit card. But more generally this is a good question, I don't know how much informations the merchant obtain from VISA when I purchase something online. I would expect none, just that the transaction is authorized or denied.

<comment><USER11> Banks and networks (Visa etc) don't share the customer information with the merchant. There was a class action law suit against merchants asking for Zipcode. [http://articles.latimes.com/2011/feb/16/business/la- fi-0216-...](http://articles.latimes.com/2011/feb/16/business/la-fi-0216-zip- lawsuits-20110216) Here Google is acting like a network and the developer is the merchant. There is absolutely no requirement (from a legal perspective) to pass on the customers' information to the merchant. Visa and the issuer bank don't share any personal details of the customer with the merchant, which is what Google and Paypal (and probably square) are promising the merchants, if they use their payment system.

<comment><USER10> Thank you for the infos it's helpful.

</comment></comment></comment></comment></comment><comment><USER12> Does this apply to free app downloads?

<comment><USER13> No.

</comment></comment><comment><USER14> The main problem here is it isn't communicated effectively to users.

</comment><comment><USER15> I hate sounding like a broken record, and this isn't really aimed at anyone in particular (just a few comments have irked me), but if you haven't seen this talk from like a decade ago, please watch it before you post on things concerned with privacy.

<http://www.youtube.com/playlist?list=PL8C71542205AA51E5>

"Privacy is dead, get over it - Steve Rambam"

</comment><comment><USER16> Like paypal?

</comment><comment><USER13> No it's not a "flaw":

[http://marketingland.com/why-im-glad-google-play-gives- devel...](http://marketingland.com/why-im-glad-google-play-gives-developers- customer-data-33431)

[http://marketingland.com/google-play-gives-email- addresses-p...](http://marketingland.com/google-play-gives-email-addresses- privacy-issues-33432)

It's ridicules how some outlets just run with this sort of crap without question.

<comment><USER17> Because these two blog posts are happy about the setup of the Play store, it is not a flaw anymore (with or without quotation marks)? It surprised the app developer in the OP and it surprised me. It may be _very, very_ old news, but I read the internets quite a bit and still didn't know this.</comment></comment>


Why Apple will succeed without Steve Jobs - by ex-Apple Head of Marketing. - <AUTHOR> http://thebln.com/2012/05/guest-blog-ken-segall-ex-head-of-marketing-at-apple-the-future-of-a-jobs-less-apple/

<comment><USER2> Am I missing something or is this article devoid of any substance or even content beyond stating the blatantly obvious (Apple is different now than what it was in 1985. Apple execs know they have to keep innovating... Duh!).</comment>


The Difference Between Introverts and Extroverts, in One Simple Chart - <AUTHOR> http://www.huffingtonpost.in/2016/10/10/the-difference-between-introverts-and-extroverts-in-one-simple/ <comment><USER2> I like quiet working spaces and spending time alone... whenever I see charts like this, though, I wonder if it isn't the case that _everybody_ would like the luxury of being an "introvert" and those of us (me included) who label ourselves that way are just excusing selfish behavior? Or are there really people who shudder at the thought of being alone, concentrating deeply on a single problem, and work in silence?

<comment><USER3> Given that we introverts are a minority, I'm not sure how you've managed not to notice those people who hate silence and solitude.

Perhaps you've spent too much time alone?

</comment></comment><comment><USER4> Yeah, I don't think this is quite right. I think the only real difference is whether you charge yourself up by spending time alone (with books or something) or spending time with other people. I'm talkative in meetings and enjoy talking with groups of people, but I'm depleted by it and need to recharge by being alone.

</comment><comment><USER5> What am I if I fit into half of the left statements, and half of the right ones?

<comment><USER6> Then we know this link is garbage and shouldn't be upvoted.</comment></comment>


Airbus, Boeing Set Sights On Synthetic Vision - <AUTHOR> http://aviationweek.com/commercial-aviation/airbus-boeing-set-sights-synthetic-vision

<comment><USER2> I worked for 5 years on synthetic vision. Honestly the avionics industry has done everything possible to avoid synthetic vision technology. It is humorous to continue to see news releases like this.

Synthetic vision really is the opposite of the "cockpit automation" mentality that has dominated civil avionics. That mentality comes from the perspective that pilot duties are complex, and therefore need to be automated away. The result is pilots who spend most of their time tending the autopilot.

The unfortunate effect of such automation-centric avionics designs is that pilots become more removed from reality because they are lost in automation and less aware of the airplane's situation. A long long list of tragic accidents support this finding. Synthetic vision embraces a different perspective.

Synthetic Vision comes from the viewpoint that the pilot will be the best prepared decision maker when the computer is used to reveal the aircraft's situation as clearly as possible to the pilot. Fog outside the window? Then show a picture of the outside anyway (from a database) to avoid terrain. Airspeed indicator out? Then use the GPS to create an estimate of airspeed, but put usable speed on the display so the pilot doesn't loose control. Computers can create meaningful information for pilots when plain instruments present easily confused data.

Synthetic vision is descendant from extensive military research into how to make pilots effective in complex and dangerous situations using Head Up Displays. Tremendous resources went into testing such displays. Aircraft systems like those on the F-35 continue to force this important finding forward. Flying is about what's outside the cockpit, not what's in it.

Computers can enhance a pilot's ability to be aware of the aircraft's situation, and that helps pilots make great decisions. Civil aviation avionics vendors and the authorities that regulate them are missing out on a big safety opportunity by dragging their feet here. And those feet are still dragging.

<comment><USER3> I wrote one too -- putting all that clutter under the primary flight instruments (airspeed/altitude/heading/etc) was always a compromise, and probably not terribly helpful. Looks super cool though. Sells boxes.

</comment></comment><comment><USER4> Slightly OT:

What is stopping the development of unmanned cargo aircraft?

If SpaceX can deliver cargo autonomously to the space station, I somehow fail to believe that flying an unmanned 747 from one airstrip to another is exceedingly complex.

To be clear, I mean that the aircraft is autonomous, not that it is flown by a remote pilot.

Once these systems are shown to be safer than human flown cargo planes, they technology will be widespread. After a decade of implementation, it can then spread to passenger transport as the ultimate auto-pilot. The pilot then just becomes the flight director, and takes over in case there are any failures.

Sadly, I'm sure the Burj high stack of regulatory documents prevent even experimentation in this field, let alone commercial implementation.</comment>


An Introduction to GPU Programming in Julia - <AUTHOR> https://nextjournal.com/sdanisch/julia-gpu-programming <comment><USER2> > GPUArrays never had to implement automatic differentiation explicitly to > support the backward pass of the neuronal network efficiently. This is > because Julia's automatic differentiation libraries work for arbitrary > functions and emit code that can run efficiently on the GPU. This helps a > lot to get Flux working on the GPU with minimal developer effort - and makes > Flux GPU support work efficiently even for user defined functions. That this > works out of the box without coordination between GPUArrays + Flux is a > pretty unique property of Julia

Every time I read about Julia, I'm amazed. What a game changing tool.

</comment><comment><USER3> GPGPU (general purpose gpu) programming is pretty cool. I wrote a utility to let you do it in javascript, in the browser, awhile back [https://github.com/amoffat/gpgpu.js](https://github.com/amoffat/gpgpu.js)

The thing to note about GPU programming is that the vast majority of overhead comes from data transfer. Sometimes, it is net faster to do the computation on the CPU, if your data set and data results are very large, even if the GPU performs each calculations faster on average due to parallelism. To illustrate, look at the benchmarks on gpgpu.js running a simple kernel:

      CPU: 6851.25ms
      GPU Total: 1449.29ms
      GPU Execution: 30.64ms
      GPU IO: 1418.65ms
      Theoretical Speedup: 223.59x
      Actual Speedup: 4.73x

The theoretical speedup excludes data transfer while actual speedup includes it. The longer you can keep your data set on the GPU to do more calculations (avoiding back and forth IO), the bigger your net speed gains are.

<comment><USER4> WebGL compute shaders are being discussed, it might be a possible improvement to your library when they finally get adopted.

<comment><USER5> Are there any news on WebGL compute shaders?

I remember OpenCL for Firefox being discussed and discarded in favor of compute shaders about 7 years ago, and then when WebGL 2.0 was finally released 5 years later, compute shaders were not part of it.

Additionaly, SIMD.js has been developed and then killed again and support for SIMD in WebAssembly has been delayed, so I don't believe that we'll be able to implement efficient numerical methods in the browser any time soon.

<comment><USER4> Here is the proposal.

[https://docs.google.com/document/d/1EwhDJO_lBH1mGMMwheQUXGhh...](https://docs.google.com/document/d/1EwhDJO_lBH1mGMMwheQUXGhhFk9yoC98Ant3TPqwmmA/view#)

</comment></comment></comment></comment><comment><USER6> I'm a bit surprised to see that GPU Mandelbrot is only at best x75 faster than (sequential?) CPU. Does Julia just generate _really fast_ (multicore/vectorized?) CPU code? Does it also count communication costs? Fractal computations like that are extremely GPU friendly because they involve no memory accesses at all, except for writing the final result. I would expect at least two orders of magnitude improvement over a straightforwardly written C implementation.

<comment><USER6> I had a suspicion that the problem was that _maxiters_ was set fairly low (16). For the Mandelbrot sets I'm used to, this would result in relatively little computation (over a hundred iterations is more common). To investigate this hunch, I wrote a Futhark program as a proxy for a hand-written GPU implementation (didn't quite have the patience for that this evening):

        import "lib/github.com/diku-dk/complex/complex"

        module c32 = mk_complex f32
        type c32 = c32.complex

        let juliaset (maxiter: i32) (z0: c32) =
          let c = c32.mk (-0.5) 0.75
          let (_, i) = loop (z, i) = (z0, 0) while i < maxiter && c32.mag z <= 4 do
                       (c32.(z * z + c), i+1)
          in i

        let main (n: i32) (maxiter: i32) =
          let N = 2**n
          let (w, h) = (N, N)
          let q = tabulate_2d w h (\i j -> let i = 1 - r32 i*(2/r32 w)
                                           let j = -1.5 + r32 j*(3/r32 h)
                                           in c32.mk i j)
          in map (map (juliaset maxiter)) q

I don't have the tools or skills to easily generate nice graphs, but I get about a x271 speedup when this code is compiled to OpenCL and run on a Vega 64 GPU, versus when it is compiled to C. The C code runs in 272ms, which is very close to the number reported for Julia here[0] (I assume that the page has a typo and that the N=2²⁴ column actually means N=2¹², because an N=2²⁴ image would take up dozens of TiB in GPU memory. Also, the benchmark code linked only goes up to N=2¹².)

Unfortunately, if I change _maxiters_ to 256, the speedup actually _drops_ , to x182. So much for that theory.

Edit: also tried on an NVIDIA GTX 780Ti, and the results are the same. My new theory is that the Julia code also counts the cost of moving the resulting array back to the host (which can easily be dominant for a kernel that runs for just a millisecond or two).

[0]: [https://github.com/JuliaGPU/GPUBenchmarks.jl/blob/master/res...](https://github.com/JuliaGPU/GPUBenchmarks.jl/blob/master/results/results.md#juliaset-1)

</comment></comment><comment><USER7> While having a Torch-esque GPU ndarray is great, the ability to easily write your own kernels without having to compile gnarly C++ code is what sets Julia apart from competitors IMO. Not sure if there's any other dynamic language offering anything like this.

<comment><USER8> ClojureCL and ClojureCUDA have been doing it for 4 years now.

[https://clojurecl.uncomplicate.org](https://clojurecl.uncomplicate.org)

[https://clojurecuda.uncomplicate.org](https://clojurecuda.uncomplicate.org)

<comment><USER9> Am I missing something? I was excited about other languages doing the same as Julia, but the first example for ClojureCUDA has

        (def kernel-source
              "extern \"C\"
                 __global__ void increment (int n, float *a) {
                       int i = blockIdx.x * blockDim.x + threadIdx.x;
                   if (i < n) {
                      a[i] = a[i] + 1.0f;
                    }
               };")

Is there an example where the kernel is written in Clojure?

<comment><USER8> You can of course create Clojure/lisp code that would generate kernel code, but I am strongly against it as the default option, since I find plain C much better suited to small kernels close to hardware (which are only a small proportion of the overall code) than either lisp or Julia.

Please note that there is no need for out-of process compilation step. You compile this by calling a Clojure function, interactively from the REPL.

<comment><USER9> Sure, but that's a completely separate thing from what Julia is doing here. The whole point of the GPU backend is that you get almost the full flexibility of the Julia language at your disposal, without having to fall back to C code. As a result, not only is your code more familiar to Julia programmers, but you also get to share large amounts of code between CPU/GPU/TPU. If all you're doing is super small kernels that may not matter much, but GPUs are so powerful these days that it's perfectly sensible to offload rather large programs that you may not want to write in C anymore.

<comment><USER10> It's not just easier to read for Julia programmers. Any pythonista can mostly read Julia without significant issue. They're both high level and syntactically similar enough. I know Python is a lot more OO, but when you're just writing a short script it looks a lot like Julia if Julia didn't need you to specify types.

</comment></comment></comment></comment></comment></comment><comment><USER4> Love it! So much more fun than being stuck with C derived languages for GPGPU programming.

<comment><USER11> You can do GPGPU programming with Fortran, which is definitely not C-derived, predating C by at least 20 years.

<comment><USER10> I find Fortran pretty pleasant for scientific work (what it was designed for) and take pleasure in knowing it hasn't changed a whole lot over the years F70, F90...etc.

</comment></comment></comment><comment><USER12> It seems kinda weird to tout how great it is that we have CuArrays and CLArrays when CLArrays haven't been updated for 1.0 and only claims experimental support for 0.6.

Really hoping we see some movement on CLArrays in the near future.

<comment><USER13> It is clearly mentioned in a separate paragraph which reads:

> For this article I'm going to choose CuArrays, since this article is written > for Julia 0.7 / 1.0, which still isn't supported by CLArrays.

<comment><USER12> My bad, I should really finish reading things before I comment.

</comment></comment></comment><comment><USER14> If anyone wants to try out a free GPU using Google Colab/Jupyter (K80, you might run into ram allocation issues if you're not one of the lucky users who get to use the full amount) here's a quick guide to get a Julia kernel up and running: [https://discourse.julialang.org/t/julia-on-google-colab- free...](https://discourse.julialang.org/t/julia-on-google-colab-free-gpu- accelerated-shareable-notebooks/15319)

<comment><AUTHOR> Or just directly edit the article ;) That will also give you a K80 and you can directly run the code inside the article

</comment></comment><comment><USER15> It doesn't really describe the fundamental difference between a GPU and a 4000-core CPU, which is that the GPU has a _shared program counter_. All the cores must execute the same instruction at each cycle.

<comment><USER16> Are you sure? I'm pretty sure I can branch on core-specific measures like (in CUDA) TheadIdx and BlockIdx

<comment> 0-_-0 Yes but can you do that from Julia without writing CUDA/OpenCL code?

I'm happy that Julia supports GPU programming for simple code, but I don't see how you can run algorithms with inter-thread communication.

<comment><AUTHOR> That's how you do it:

[https://github.com/JuliaGPU/GPUArrays.jl/blob/master/src/lin...](https://github.com/JuliaGPU/GPUArrays.jl/blob/master/src/linalg.jl#L29)

Or directly with cuda shfl intrinsics: [https://github.com/JuliaGPU/CUDAnative.jl/blob/b249dfd145501...](https://github.com/JuliaGPU/CUDAnative.jl/blob/b249dfd145501632695cc6e03cdf98e49f5c8708/examples/reduce/reduce.jl#L22)

<comment> 0-_-0 Oh cool! Thanks!</comment></comment></comment></comment></comment>


Is the Touch Bar a gimmick? Two years in, I can answer that - <AUTHOR> https://9to5mac.com/2018/10/19/touch-bar-a-gimmick/ <comment><USER2> There are many things in the tech world that have gotten fantastically better in my lifetime (I am 40). GPUs have been amazing, machine learning has made great leaps. virtual reality is now semi-awesome and improving.

But a few things have been getting worse. One of the things I most lament is the move to touch interfaces instead of tactile buttons. See phones, cars, remote controls (apple tv) and now keyboards on laptops. It is a worse interface most of the time. I absolutely abhor it. The trend shows no signs of ever reversing though.

<comment><USER3> > See phones

A touch keyboard on a phone is _definitely_ worse than a physical one, I'd agree.

But a phone with a bigger screen is also better than one with a small screen.

And there's definitely some sort of maximum size practical for a handset.

Given these constraints, right now I'll go for the big screen and crappy input method. Even though it annoys me a lot and typing on it is painful, I think of the choices available to get a physical keyboard on there (larger phone, smaller screen) I'd take what we have now.

<comment><USER4> The nice thing about a touch keyboard on your phone is you can swipe, which is way faster than tapping.

</comment></comment></comment><comment><USER5> Inspired by a blog post, which I think made rounds on HN as well, I customised my Touch Bar using a Mac app called BetterTouchTool.

Now I have shortcuts to my most used apps on the left, a Now Playing display connected to Spotify in the middle and audio controls (including a volume slider that you don't have to expand first to use) on the right.

This setup is always displayed, regardless of the app currently on the foreground. This means the controls are once again in a predictable place for my fingers and has made using the touch bar a much more pleasant experience.

</comment><comment><USER6> I love it. I programmed it to show my current TODO task, when I am on break as well as my battery and time. So I basically replaced my menu bar with it.

[https://github.com/nikitavoloboev/my-mac- os/tree/master/btt](https://github.com/nikitavoloboev/my-mac- os/tree/master/btt)

</comment><comment><USER7> I miss a real ESC key. I can't tell if I've pressed it or not, which is problematic when using vi and touch typing. Haptic feedback would be a nice add-on to make it a little more tolerable.

Also, Apple's default configuration with Siri in the upper right was a horrible design decision. It only took me a few hours of use to decide to reconfigure the Touch Bar's layout.

I found it interesting that even an Apple Genius Bar employee was recommending a third-party app to me: BetterTouchTool.

<comment><USER8> Just remap capslock to escape. It's more convenient for vi anyway.

</comment></comment><comment><USER9> To avoid the clickbait:

> "So is the Touch Bar a gimmick? I say yes."

<comment><USER10> Violating Betteridge's Law of Headlines! [https://en.wikipedia.org/wiki/Betteridge%27s_law_of_headline...](https://en.wikipedia.org/wiki/Betteridge%27s_law_of_headlines)

<comment><USER11> "Is the touch bar worth two cents?"

</comment></comment></comment><comment><USER12> I am not a fan of the Touch Bar. I'm one of those who thinks the 2015 MacBook Pro is the epitome of human achievement.But that being said, one thing that is cool about the Touch Bar is when you are viewing a video and it puts a "smeared" thumbnail onto the Touch Bar making it easy to visually seek. That's really useful sometimes.

<comment><USER13> I really like my 2015 MBP, but outside the dated hardware in comparison I still think the 2012 model was "the best". Yes, it was thicker and heavier - but I didn't have to worry about buying as much RAM as I thought I'd ever need at purchase time, or storage for that matter (because while OWC sold replacement SSD's for the rMBP they were the only vendor, why Apple didn't adopt M.2 when it was released is beyond me).

Hell, Dell managed to put SODIMM slots + standard M.2 in the XPS 15 and at it's thickest it's still thinner than the 2015 MBP. You can't even argue that Apple does things for the sake of size when the competition beats them on it while maintaining upgradability.

One day I hope Apple brings back a _proper_ MBP, because at this point I don't buy their products for the hardware but because it's the only sane choice for a *NIX-based workstation that doesn't require I constantly mess with things or give up loads of software to use.

</comment></comment><comment><USER14> I find the touchbar kind of clunky to use (like the author), but I believe it's partly because it's suffers from a sort of "gorilla arm" problem ergonomically.

It's a touchscreen, so you can't lay your fingers on the buttons before pressing something (unless they add pressure-sensitive controls), and you have to reach across the keyboard, so you can't brace your hand on the computer chassis while hitting buttons. Instead you have to awkwardly hover your hand over the touchstrip to use it correctly, which is really awkward

</comment><comment><USER15> My wife has one, and she only uses the touchID capabilities of the touchbar. Other than that, she doesn't like it.

<comment><USER16> Same here. Though it helps a little to customize it - in particular removing Siri from the bar, heh. No more accidentally calling Siri. Another improvement was realizing that you can change volume/brightness with one continuous move (touch -> hold -> slide).

In any case, I'd like to keep Touch ID, but drop the rest.

<comment><USER12> I would like touch ID if it worked more than about half of the time. I don't understand how it can just go dark and just not be responsive at all.

</comment></comment></comment><comment><USER17> I'm still not in love with it, but there are two things that make the touchbar much more tolerable.

BetterTouchTool and HapticKey.

The advantages of BTT are obvious but HapticKey has been a really pleasant surprise. It gives every interaction with the touchbar haptic feedback. I now use the touchbar much more frequently.

</comment><comment><USER18> I'm I the only one who is neutral or even slightly positive about the Touch Bar? I definitely can't understand why so many people hate it. Take the two points of the article: 1) he uses an external keyboard 80-90% of the time, so he doesn't care. Well, it's called Laptop for a reason. 2) errors: I've been using the bar for quite a while and wouldn't say the error rate is any higher than for any other key on my keyboard. I delete a lot of text because I hit the wrong key on the physical keyboard

I wonder if I'm the only one who doesn't understand where all the hate is coming from

<comment><USER19> It's physically impossible for it to be better and faster to use than the keyboard. People who spend a lot of time on computer interaction care about wasting too much of it and of course hate it. Those people who learn keyboard shortcuts for all the software they use.

</comment></comment><comment><USER20> Not every iteration of a beloved product series ends up a classic. This is a down period for the MBP. I hope the clout of some decision-maker within Apple has taken a hit.

<comment><USER21> It's a down period closing on three years, and Apple have yet to even indicate a change of course.

</comment></comment><comment><USER22> I would be surprised if they don't start phasing it out. This along with the keyboard issues are major reasons I won't just buy a new MBP today.

</comment><comment><USER23> I use a new basic 13" MBP because the Touch Bar is such garbage. God willing Apple releases a 15" model with no Touch Bar later this month.

<comment><USER24> I'm in the same place with my personal laptop, however I did use a work-issued 15" with touchbar for a couple months before changing jobs and I actually liked the touchbar shortcuts for Xcode because it exposed stuff that for some reason I've never been able to remember the keyboard shortcut. Everything else (especially changing volume) I remember being a pain in the ass

</comment></comment><comment><USER25> I like having touch id and the brightness / volume sliders and do miss those on my non-touchbar laptop, but thats all i use it for.

</comment><comment><USER26> Having used a touchbar MacBook Pro for the last year daily (both for developing and casual use) I also agree with the article. For the most part I ignore it as I usually have a tethered monitor and keyboard setup. However for those times when I do work directly off the keyboard I more often than not accidentally hit a button (the worst being accidentally triggering a build and being tied up for 10 seconds trying to frantically cancel).

I think it would transcend gimmick into useful feature if they added haptic feedback of some kind when it is used. I have plenty of memorized keyboard shortcuts so that I do not need to avert my eyes from the screen when typing, something that the touchbar requires to actually properly use. With some kind of physical feedback I would be more easily able to integrate it's use into my workflows, especially so if you could customize haptic feedback based on virtual buttons.

<comment><USER27> I was surprised they didn't use force touch from the iPhone as the way you interface with it.

It would feel so much better if you had to _click_ the buttons, and it would cut down accidental brushes against it to basically nothing.

In fact, they nailed the haptic feedback on the macbook pro's touchpad so well, i'm still shocked they aren't doing more with it. A touchscreen that has buttons that only "click" when you click right on them, or being able to drag your finger slowly over the pad and feel "taps" when you hit an edge of something. I'm sure there's something i'm missing on why they aren't using it more, but it seems like they have all the ingredients for an awesome experience but just aren't using them all together!

</comment></comment><comment><USER28> I fully agree. Even though I don't own a touchbar MBP. I even choose to go with the older model because the touchbar could not be incorporated into my current workflow, even if it was great, as there is no separate keyboard with integrated touch bar (and frankly it would be to expensive if it was).

</comment><comment><USER29> I wish I had an option to buy a 15 inch mbp without a touchbar.

<comment><USER12> Agree. I found out that the small MacBook Pro without the Touch Bar still has an escape key and still has a headphone jack! So that is at least something to be excited about.

</comment></comment><comment><USER30> The author used the touch bar for two years and didn't think of removing the Siri button he accidentally clicked so much, or of adding volume controls to the expanded touch strip.

This review is worthless.

<comment><USER31> That's what I want to do: configure something that I used to not have to configure before. The touchbar replaced a row of keys that was fine before and required no extra effort. Once you configure something and it's no longer the default then you have to reconfigure every one you use or you have an inconsistent experience. I'm okay with this for many things but for a keyboard is ridiculous.

</comment></comment><comment><USER32> the biggest issue i've had with the touch bar was touching it by mistake.

i solved it by having a static set of buttons and an app that vibrates the touchpad when i touch the bar.

the touch bar is the force touch of macbooks.

</comment><comment><USER33> It is a gimmick to satisfy novelty seekers. But it creates problems for old time users, it messes with muscle memory and having to look down is downright unproductive, it steals microseconds and takes you out of the context for a fraction of time. While kids love this, I know that it's less deficient than tactile buttons that are always there!

However, I think this could be great for new users, it is intuitive if you're new to computers: kids and old people who were never power users.

</comment><comment><USER34> I agree with the article. When I bought my MacBook Pro I was actually rather enthusiastic about the Touch Bar, and very cautious about the butterfly keyboard. Two and a half years later I love the Butterfly keyboard and dislike the Touch Bar. I don't _hate_ it, but I'd rather have the physical function keys back.

</comment><comment><USER35> My new work laptop has an idiot bar. It's constantly offering me unwanted autocomplete items and the like. I have sensitive peripheral vision and am easily distracted by "squirrels" that lie outside my field of focus, and that fucking bar is like a constant squirrel generator. Thanks, Apple.

<comment><USER36> You can set it to just show your function keys too.

<comment><USER35> If you have to _set_ your _keyboard_ to _not distract and annoy you_ , somebody somewhere fell off the good industrial design train.

</comment></comment></comment><comment><USER37> Short answer: yes, especially when the author has the laptop on the desk with a wireless keyboard/trackpad.

<comment><USER38> Yeah that's all I was thinking about - what about for people like me that's in front of the laptop 100% of the time?

</comment></comment><comment><USER39> I love it for brightness and volume control.

Besides that, it would be really cool if i could program it with microapps. Temperature would be cool and/or clock and upcoming events.

Otherwise i'm not using its app specific features. Just realised that there is a fav button when i have chrome open.

</comment><comment><USER40> I have a feeling that Apple has been testing the feasibility of adding multitouch to OSX with the Touch Bar gimmick.

Physical controls are so much better! I mean just look at the things musicians and DJs are doing everyday with a keyboard, sliders, dials and a little practice.

</comment><comment> village-idiot The touchbar is a gimmick, but that's far from the worst sin of that laptop. For me the credit goes to that keyboard being complete and utter garbage. Typing on it cramps my hands up really badly, and instantly makes me want to go back to my Ergodox.

</comment><comment><USER41> Yes it's a gimmick, I knew the second I saw it. I hate it. It is a nightmare when using VIM. Ugh... When my work said they were going to buy me a MacBook Pro I was stoked. When I found it came with that crap... _cringe_

</comment><comment><USER42> The TouchBar has its uses but I think gimmick status has been confirmed since it never made its way to external Apple keyboards. Like the author, my MBP is mostly docked so I can't actually use it. That being said, I managed to create useful shortcuts with BetterTouchTool. There is potential.

</comment><comment><USER43> You can, and very much should, remove the Siri button.

</comment><comment><USER44> Yes. Two years in and it is only available in one out of six models; even Apple has no faith in it.

</comment><comment><USER45> I think a real fundamental issue (and one that has led to major Apple blowups before too, albeit impacting fewer users) is that Apple made it a zero-sum game unnecessarily, and one not following a strict-superset pattern. They _forced_ an either-or adversarial situation, which of course will drive up emotions more since it by definition dramatically raises the stakes for how useful the new thing must be.

It's true that simplicity is itself a virtue, and cutting old stuff is often at least as important as adding new stuff. It has too often been the case in the tech world that there is always a push for adding new features but not for subtracting old ones at the same time. This has and will continue to cause anger and has been a bone people have picked with Apple since the start of the modern era with the iMac, yet has served them well.

However any virtue can be taken too far or become a bromide, applied as a superficial cultural practice without an understanding of the foundation that previously made it work. Take Apple's aggression on ports for example: a lot of people are (with some justification) upset about having all TB3 ports and thus needing a lot of adapters for older gear. But at the end of the day TB3 is a superset of what came before and then some, it can do everything the older ones did, and the USB-C form factor is genuinely good. How exactly that plays out long term and whether 10 years later everything uses it and it will have all been worth it can be debated, but nothing is _lost_. But the touch bar simply lacks the features of tactile feedback and muscle memory the function keys offered, so it's not a superset, it's a tradeoff. It offers something new, but it also takes something important away. So whatever is new can't just be "oh that's kind of nice sometimes" and get an easy on-ramp with users, it must immediately be so good it justifies losing what they had before. The Touch Bar doesn't meet that standard, and worse suffers from the fundamental issue of attention requirement. Granted it's not entirely useless, but I don't see how it could ever meet the same ROI particularly for a pro system given that it doesn't really seem to support productivity scaling.

Going back to the start the big tragedy is it's not as if there isn't plenty of vertical space in even a 13" (or 11" for that matter) system on the opposite-screen surface. There was no need to get make it zero-sum, they could have just offered the Touch Bar as a new feature above the function keys. If they had all the angst would have been avoided, it would have been something cool and occasionally useful, and since nobody would lose anything that's all it'd need to be to justify itself. Sure there'd be some grumbling about BOM but that's pretty minor in the scheme of things for these systems.

Incidentally I think this same effect has happened elsewhere for Apple. Consider the reception of the Mac Cube vs the Cylinder Mac, which was effectively the Cube 2. Both tried to do an Apple take on an SFF system, which in the PC world are quite popular, and tried to cram a lot in. Neither ultimately was very successful. But the Cube had some fond users and was generally regarded as "well that's pretty neat even if I don't want one", whereas the Cylinder was awful. I think that's because with the Cube Apple kept the Power Mac. Nobody was forced to use it, so only those who wanted it's unique tradeoffs got it and everyone could be happy. If Apple had killed the Power Mac and said "oh yeah the Cube is totally what all you want" the reaction would have been at least as much (or more) then what happened when they killed the Mac Pro. I appreciate what a horror the 90s were for product line proliferation, and I still hate going to a lot of OEM sites and trying to navigate their multi dimensional product matrixes and a hundred minor variations of the same basic thing. But Apple has cut so much that they've reached meat and bone in some cases and have created problems for themselves unnecessarily and without getting any payoff in return.

</comment><comment><USER46> Yes.

</comment><comment><USER47> Apple's in an awkward spot right now: macOS isn't being iterated on, iOS is where they're putting all their engineering effort, and they're marketing iOS devices s being better than computers.

There is no way they will retrofit proper touch into macOS. Instead, in a few years time, you'll run xCode on an iOS device like any other creation tool, with the whole lifecycle on iOS.</comment>


A Kernel of Failure - <AUTHOR> https://tedium.co/2019/02/28/ibm-workplace-os-taligent-history/ <comment><USER2> Pretty sure the blue cards were for what would become System 7, not System 4.

<comment><USER3> I agree. System 4 shipped in 1987.</comment></comment>


Ask HN: How do you measure performance of your client-side application? - <AUTHOR> Hey. I wan't to ask you guys what is your solution for gathering info about reflows/repainting, layout trashing and overall performance on the client side of application. Do you use any tool to gather and store analysis data, classical Chrome dev tools investigation or maybe some metrics implementation inside your code? <comment><USER2> Lighthouse [https://developers.google.com/web/tools/lighthouse/](https://developers.google.com/web/tools/lighthouse/)

and

Puppeteer [https://github.com/GoogleChrome/puppeteer](https://github.com/GoogleChrome/puppeteer)

<comment><USER3> Lighthouse results seem random, got three widely different results for the same website. I would expect the results to vary slightly (taking into account the time it takes to receive the requests, server load, congestion and whatnot), but I also has a feeling that the time to first paint and time to load are impacted by current load on the machine running the Chrome running the Lighthouse tests or something.

Am I alone in observing this?

<comment><USER4> I'd love to investigate what's going on with your results. Could you save the results from a few runs and share them in a github issue?

> I also has a feeling that the time to first paint and time to load are > impacted by current load on the machine

This is certainly true of any performance test. But it shouldn't be a significant problem unless you're multitasking during recording.

<comment><USER3> I'll see what I can do about reproducing the issue.

</comment></comment></comment></comment><comment><USER5> I watch over people's shoulders as they use the application in various devices and makes notes when they get frustrated.

<comment><USER6> How does watching people give you any actionable information "about reflows/repainting, layout trashing and overall performance on the client side?"

<comment><USER7> Uhhh... Don't worry about it if the users are happy?

I mean, unless you're allocating 1GB RAM for a text editor, I say don't worry about it if the users aren't noticing it. It's super easy to nitpick your own work to the point of wrecking what you've done right.

EDIT: Oh, in Chrome.

Well, then it depends on what you built and how many libraries you decided to use.

</comment></comment></comment><comment><USER8> My team's approach has been to automate real devices and report on any regressions in terms of JavaScript evaluation, layout, paint, garbage collection, etc. Shameless plug: the team is growing and we're hiring an experienced front-end dev. [https://nordstrom.taleo.net/careersection/2m/jobdetail.ftl?j...](https://nordstrom.taleo.net/careersection/2m/jobdetail.ftl?job=270593)

<comment><USER9> Oh no Taleo, the corporate ATS blackhole where resumes go to die. I rather not apply with companies that use Taleo for various past bad experiences. The first being the resume and all the details that I type in Taleo goes into HR oblivion. The problem of job applicant tracking & recruitment is not yet solved.

<comment><USER10> I've recently been through a number of these damn things and have found SmartRecruiters[0] to be pretty solid. Clean UI and easy application flow. The companies using it have been good about actually responding to applications as well, which is always nice.

[0] [https://www.smartrecruiters.com/](https://www.smartrecruiters.com/)

</comment></comment></comment><comment><USER11> I open chrome's task manager, which shows total memory usage & CPU usage for each tab in a sortable table. Also in dev tools, I activate the FPS meter overlay. Then I do things in the app to stress it which will depend on your app. If it maintains 60fps through all use cases, you don't need to go any further really. I also use the app for an extended period of time (or programatically simulate that) and ensure memory doesn't creep up continuously. And ensure CPU is 0% or close to it when idle.

If it drops below 60fps in a way thats an issue, open the performance/timeline tab in chrome dev tools & record while repeating that action a few times. In this tab you can also throttle CPU, or you could just do a bunch of CPU bound stuff on your main thread every 30ms to simulate a slower CPU

From there you'll know what the issue is, n+1 calls into a jquery plugin, memory leaks, garbage collections, it even shows paint issues pretty clearly.

From there, you can dig deeper but it depends on your app & frameworks used. For example if you're using react, you might go into react dev tools or redux dev tools. For angularJS apps you could use batarang to try to see what watch queries you have, etc.

For paint issues, use the checkbox in devtools to highlight paints, you can easily see at a glance if the whole UI is being repainted, if so it means your virtual DOM library is detecting changes when it should not. Or maybe you have a legacy jquery app that just builds up a huge string and does div.innerHtml = string, which should be rewritten to use virtual DOM libraries.

For reflows, I also use the performance tab, it shows up as "recalculate style" or something like that. Usually it means you're doing $(div).width() or something similar inside a loop & you can just cache the value to fix it. Again, it depends on your app. If you have drag & drop widgets & you have 9000 widgets on a page, you're going to have some jank if you're binding jQuery draggable 9000x. You can use optimizations like not binding until the user mouses over each widget. To get rid of the jank, one strategy is you just make jank happen in smaller pieces over time instead of on page load or component mounting.

</comment><comment><USER12> Chrome dev tools investigation is decent, and even lets you throttle network bandwidth to see the effect of slow connections. It doesn't let you throttle CPU, though, so an important part of identifying performance problems is to try your app out on a cheap or old phone.

<comment><USER13> CPU throttling is now available: [https://plus.google.com/+AddyOsmani/posts/NRsAqshb17n](https://plus.google.com/+AddyOsmani/posts/NRsAqshb17n)

It's in the controls near the top of the Performance tab

<comment><USER12> Oh that's funny. I just saw it in "Highlights from the Chrome 61 update" and came here to correct myself.

</comment></comment></comment><comment><USER14> I've been using Typometer (1) which measures time from input to output. I think it's important to measure from outside the program. It would be ideal with a high-speed camera setup that takes 1000 images/per second pointed at the monitor. And test from several devices, old onces in particular.

1) [https://pavelfatin.com/typometer/](https://pavelfatin.com/typometer/)

</comment><comment><USER15> MachMetrics - it's basically a private WebPageTest instance on better hardware, which runs your tests recurring, with nice graphs to show trends. [https://www.machmetrics.com](https://www.machmetrics.com)

</comment><comment><USER16> I wonder how much business value (versus technical value) there is in those metrics.

<comment><USER17> Quite a lot, actually.

I went to the NY Velocity conference back in 2014, and these are from my notes. Unfortunately, I don't have any sources to link back to, except I believe this was the session where my notes came from: [https://conferences.oreilly.com/velocity/velocityny2014/publ...](https://conferences.oreilly.com/velocity/velocityny2014/public/schedule/detail/36041)

Also an obligatory warning that correlation is not always causation.

\- Walmart.com: for every second improvement in page load time they experienced a ~2% conversion increase.

\- Shopzilla: sped up pages from 6s to 1.2s, increased page views by 25%, increased revenue by 12%.

\- Yahoo: increased traffic by ~9% for every 400ms of improvement

\- Mozilla: made pages 2.2s faster and resulted in 60m more downloads.

\- On average ~57% of users will abandon a site that hasn't loaded in ~3 seconds (again, I don't know the source).

\- When a page loads at ~8 seconds , conversion rates start to drop by 40-60% (and again, I don't know the source).

\- In a 2012 EEG study (sorry I don't know which one), they throttled a desktop connection from 5Mbs to 2Mbs, and found that about half the participants had difficulty concentrating and finishing the task asked of them.

\- From 2013-2014, the median page size has grown ~67% in just a year. About 50-60% of the size is from images (again, I don't know the source).

<comment><USER16> I get what you are saying. My doubt is because most businesses are not Walmart (etc).

What matters at the scale of a large retailer (so large as to dwarf Amazon) is not what matters at most places. It's not just that Walmart is dealing with fungible goods, it is also that:

\+ Walmart's online store is dealing with legacy pre-internet database architectures on the back end.

\+ Walmart's online store is competing with Walmart's brick and mortar stores when it comes to architecting IT infrastructures and allocating resources and the brick and mortar stores eclipse Walmart's etailing.

Because I think Yahoo is pretty good due to being consistently profitable, I will forgo the softball snark of "Why would a tech company want to be like Yahoo?" But there is really question of whether the best practices of the companies you list are appropriate for a business in a narrow market.

Going further, if it is an area of concern choose technologies and page architectures that don't run the risk. Angular and React are developed to meet the needs of companies at the scale of Google and Facebook not a shop where the collective knowledge does not include _experts_ at page repaint metrics.

</comment></comment></comment><comment><USER18> We run an internal private instance of WebPageTest

</comment><comment><USER19> Headless chrome opens the window to Visual Debugging. See

[https://screenster.io/what-is-end-to-end-testing-and-is- ther...](https://screenster.io/what-is-end-to-end-testing-and-is-there-a- smarter-way-to-automate-it/)

</comment><comment><USER20> With a stopwatch and notepad</comment>


Scientist4J – A Java Port of GitHub's Scientist - <AUTHOR> https://github.com/rawls238/Scientist4J <comment><USER2> Besides the mention of the original Ruby project you might want to put a link somewhere to the project (maybe in the README.md).

I think I have written something like scientist4j accidentally several times but just using JUnit + Guava Stopwatch + logger + java random. If its critical cpu path I use JMH. I never thought to package it up as a library. scientist4j is basically a benchmarking tool + unit test right? I think though I might be missing something?

</comment><comment><USER3> How can I provide parameters to the experiment function?

<comment><USER4> Pass it a lambda.

</comment></comment><comment><USER5> Very cool, thanks for porting this.</comment>


Google Tulip - <AUTHOR> https://www.youtube.com/watch?v=nsPQvZm_rgM <comment><USER2> Wtf?

<comment><USER3> March is over; April just started (in about half the world)</comment></comment>


Why I won't be getting a SIM card in my new country - <AUTHOR> https://www.sophiaellis.co/blog/2017/9/2/why-i-wont-be-buying-a-sim-card-in-my-new-country <comment><USER2> I'm not sure I agree with this. For sure, it's nice to be disconnected once in a while, but internet makes a lot of logistical things more convenient.

When I traveled in foreign countries, sometimes I went without data, but often I'd have to walk around for 40 minutes looking for a bank, or wait for someone for an hour not knowing where they are. It's not really a fun experience, nor did it make me 'experience the culture' better by not being connected.</comment>


Search articles on golang - <AUTHOR> https://qolleqt.com/collect/golang/search

<comment><AUTHOR> Message me @ firstname.lastname@example.com if I'm missing any sources/articles and I can add them to this.</comment>