Ask HN: Getting back into programming with a hacker's mindset? - <AUTHOR> I taught myself to code (everything from Visual Basic to Assembly Language) as a teenager in the 1990s, but have had a couple of decades off because life happened. I'd like to get back into it now, but things have changed a lot.
I learn better by experimenting with other people's code than by a textbook gradually taking me through improvements to "hello world". I have some ADHD-like aspects to my personality, so I need to see results quickly to be able to sustain my momentum.
I'm looking for recommendations of textbooks, online tutorials, or easy-to-get-to-grips-with open source projects that encourage a hacker/circuit-bender mindset. Arduino seems spot on, but I'm more interested in pure software, especially on a commercially viable platform like Android (although I've been a bit put off by the convoluted Android Studio IDE), so I guess Java would be the best language.
I would ideally like to avoid having to learn to navigate the ins-and-outs of an overly involved compiling process, a complicated IDE, or loads of SDKs. I want to be able to get straight to the coding.
There are a couple of things that really interest me, so bonus points if material relates to one of these in some way: agent-based modelling, simple iterative evolutionary processes, and simple AI (e.g. non-instructed collision detection).
Any pointers very gratefully accepted. <comment> super-serial Coding without purpose is like eating by using a feeding tube. What's the point?

I've done useless projects at school and at work but the point of those projects was to get credentials or money.

If you're doing this for fun, you should start with something you want to make. A game idea, an app idea, a robot that does something. Break the problem into the smallest parts and start with that.

I also hate complicated compiling processes, bloated tools, or anything to do with configuration. But that's just part of software development. You'll have the motivation to plow through that if you really want to build something.

<comment><AUTHOR> I take your point but actually, for me, at least in the initial stages, I'm just looking to recreate a feeling from my youth: tinkering with ideas and letting one discovery move me onto the next, figuring out how things work and seeing if I can improve on them. But I think you're right, up to a point, if there was an open source game or robot which was created using fairly low- level programming, so I could enjoy just tinkering with the code without having to learn lots of tools etc., it would be more inspirational than just trying to learn "for the sake of it" with a textbook, so thanks for your perspective.

<comment><USER2> Have you seen [https://projecteuler.net/](https://projecteuler.net/)?

<comment><AUTHOR> This is fantastic - exactly the kind of thing I'd be interested in. Thanks very much!

<comment><USER3> There's some similar things out there:

[http://codekata.com/](http://codekata.com/)

Google "(language) koans"

</comment></comment></comment></comment></comment><comment><USER4> I was in a very similar situation after I spent decades working as an executive totally forgetting my tech skills I had when I was young. Before I reached 20 I wrote an heavy ERP system and few years ago I was even afraid to touch the shell of a bare metal server (which is btw fun and very satisfying, once you got into it you literally feel the power).

Since I love tech and programming I wanted to get back, not to find a tech job or run a tech startup, no I just wanted something to distract myself after work. So I began dipping into random languages, libs & frameworks. Bought books, read tutorial and did crash courses. I chose popular and new tech, stuff that matters and things which frequently pop up on HN. From mobile development over functional languages to the hottest JS front-end libs. I played around but usually after a few days I lost quickly any interest, I didn't know why.

Eventually I found the best way get back again and it's easy: Look for a real problem _you_ have yourself and you want to solve. Just for yourself, just to use it yourself. Once you identified the problem you search for the right tool and everything else comes by itself and before you realize you mastered a heavy language/framework in a few days/weeks.

Without a concrete mission which _really must matter to you_ all efforts to get into any appealing tech such as Swift, ES6, react-redux, Android dev, Go will feel shallow and you'll end up wasting time going through tutorials/books/guides questioning your journey.

<comment><USER5> I agree regarding solving problems especially on the real world problem for yourself or your own immediate pain points. I got sucked into a small side project for one of my spouse's clients and although I learned a lot from it, my desire to take my time and really learn and apply deeper aspects of design affected delivery. Not a huge deal since the client is getting it for free and I will eventually find a maintainer, but when I want to swap techA with techB just for the sake of self-interest, I have to think twice since I would be doing so at someone else's expense. Perhaps I should be more cautious when my spouse pimps me out! :)

</comment></comment><comment><USER6> My suggestion would be to try out Unity 3D - it uses a language similar to Java (C#), allows you to explore the basic AI stuff you seem to be interested in, and with their tutorials you can see the results of your work fairly quickly and you build actual projects from the ground(ish) up. And above all its fun, even if you're not an artist, or you don't come out with a polished game. If you're using windows you get the benefit of an awesome IDE (Visual Studio), but if not you can still get by pretty well, and Jetbrains is set to release a good cross-platform IDE for C# in the near future.

<comment><AUTHOR> Thanks for your suggestion - I've had a little look and this does seem spot on in terms of being able to quickly build actual projects. Even though you're far removed from the workings of the computer itself, it looks like you're able to throw yourself into the code without too much preamble. Definitely feeling inspired by this - thanks very much!

<comment><USER7> Unreal Engine 4

As you have been away from coding for a while, it has a system called blueprint which allows for more visual scripting. As you become more familiar with the environment, you can then start using C++.

[http://unrealengine.com](http://unrealengine.com)

</comment></comment></comment><comment><USER8> You can check out "handmade hero"[1] or "handmade quake"[2] on the software, game, c/c++ side. Then, you can try a port to java / android.

[1] [https://handmadehero.org](https://handmadehero.org) [2] [http://philipbuuck.com/announcing-handmade- quake](http://philipbuuck.com/announcing-handmade-quake)

<comment><USER9> I second handmade hero. Lots of good stuff to be learned there.

</comment></comment><comment><USER10> I recently got a SDR (software defined radio) USB dongle, and playing with the data you can pull off the radio spectrum feels like my youth with my Color Computer and assembly language somehow. There's plenty of hobbyist code out there to use as a start, and the more you play with it, the more ideas you get for fun projects.

As far as language, Python is my current favorite. It just has the lowest friction by far.

<comment><USER11> Sounds fun; what kind of data are you pulling?

<comment><USER12> Well, I'm doing something similar right now and can really second the parent's experience. I'm getting data from some of our wireless systems in the house, such as our mechanical ventilation unit and our Max EQ-3 heating system.

I've been a high-level engineer for a long time and always worked in a certain top-down approach. It's nice to see the basic stuff again, such as FSK (frequency shift keying), different CRC codes and doing some low-level C++ coding.

</comment></comment></comment><comment><USER13> These days, it's so easy to just download a package for a language that there's no reason not to try out just about anything that interests you. Python, J, Scheme, Haskell, Ruby, JavaScript, Even Bash is an option.

It's a hobby, there's no reason to start with the overhead of an industrial grade IDE.

Heck you could just download Emacs and spend a long time writing code in Elisp.

Good luck.

</comment><comment><USER14> If you are looking for cool examples, download Norvig's IPython notebooks and play with them. As a bonus check out this very cool model of economic inequality.

[http://norvig.com/ipython/README.html](http://norvig.com/ipython/README.html) [http://nbviewer.jupyter.org/url/norvig.com/ipython/Economics...](http://nbviewer.jupyter.org/url/norvig.com/ipython/Economics.ipynb)

<comment><AUTHOR> Thanks very much - this is exactly the kind of stuff I'm interested in.

</comment></comment><comment><USER15> [http://codecombat.com](http://codecombat.com)

Seems perfect for you (in short notice you should be programming little agents to collect resources and other rudimentary AI). It's great for learning.

<comment><USER16> This is great. My youngest son (8) was talking to me in the car last night about learning to code. This would be ideal for him. Indeed, in just checking it out I somehow ended up doing 5 levels! :) Thanks for the link

<comment><USER15> You're welcome :)

What really excited me were the multiplayer competitions: they have a ladder where your algorithm will be matched against other players, giving you a rank. You can start really simple (and be at the bottom of the ladder, but there's always someone below you!), and see it rise as you gradually improve it. Unfortunately it seems you now need to subscribe unlock those, but while I wish they went for another revenue system if it interests your kid it's definitively money well spent.

<comment><USER16> Thanks again. Both of my children are now on it and I actually find it quite addictive too! We really had fun with it this weekend, so appreciate it.

</comment></comment></comment></comment><comment><USER17> I can relate to the experience of finding everything is totally different now to how it was before you took a break. I was a self-taught developer who then took a lengthy gap to do a PhD and postdoc. That ran into a dead end, and after much reflection, I decided I wanted to get back into coding. My blog has several posts about this thought process which may or may not be helpful. To cut a long story short, I did two online boot camps (one on Ruby on Rails, one on Swift iOS). The experience of coding with an experienced mentor that I could bounce questions off was really helpful, and I soon got that buzz for coding back. I'm now into my second coding job (as an image data scientist for a London fashion tech startup) and I'm loving it.

Please feel free to reach out if you think any of my experience could be relevant and you'd like to chat further.

<comment><AUTHOR> Your experience sounds similar to mine. I'm going to experiment a bit on my own first, but I might well take you up on your offer of a chat after a little while. Thanks!

</comment></comment><comment><USER18> The other commenters made some good points about which technology to choose to hack on. I want to add: find some like-minded people and hang out and hack with them.

Offline, face-to-face is best. But even online works better than nothing.

<comment><USER19> Seconded. Things have changed not just technologically, but socially. The "hacker" thing is just about dead. A horde of people who do startups to get rich and act like hotshots are consuming its stiffening corpse. It's a completely toxic scene that will destroy the motivation and self-esteem of anyone who came into this out of passion and taught themselves.

<comment><USER20> Man, I wish there were some hackers in Sydney who I could chat with about hacking away at LibreOffice :( IRC is great, and the people who hang out at Freenode's #libreoffice-dev are amazing, but what I would do for some actual RT face-to-face discussion...

My wife would also be thankful, because she is the most basic computer user and frankly she doesn't care about C++ classes, pointers, the standard template library, unit tests or anything to do with refactoring.

<comment><USER18> I can try and see whether any of my coworkers are interested. (I am working in Sydney.)

</comment></comment></comment></comment><comment><USER7> I'll probably get modded down or labelled a Microsoft shill, but since you have done VBA, I'd suggest having a look at MS Access. Here is my recommendation to someone else who was looking at what to learn: [https://news.ycombinator.com/item?id=9910744](https://news.ycombinator.com/item?id=9910744)

C# using Visual Studio is a great next step as the IDE is first class. Microsoft give it away now free.

</comment><comment><USER21> Hi,

welcome back into programming. A lot of things happened since the 1990s :)

If you want to hack on a minimal dataflow engine, written in JavaScript (but the spec is really simple, it could be implemented in any language), take a look at dflow:

[http://g14n.info/dflow/](http://g14n.info/dflow/)

by now it can run server side or in a browser, but since it is a really flexible spec it could reach also other contexts like electron apps or AWS lambdas.

</comment><comment><USER22> I say start with Processing. It's a simplified superset of Java. With strong visual feedback, you'll get up to speed in no time. Very simple IDE. All Java is valid Processing. Also, you can make Android apps with it. It's very closely related to Arduino development, too. www.processing.org. Daniel Shiffman's books are great. Nature of Code is free online.

<comment><AUTHOR> As far as I can tell, you've hit the bullseye here! This looks amazing. The Nature of Code looks exactly like the kind of thing I'm interested in. Thanks very much.

</comment></comment><comment><USER20> It depends on the language (at least, that's what I found). I'm in a similar situation. I am currently working away on LibreOffice code (I'm also between jobs at the moment...) - but I started with them because one day I was reading their source code on OpenGrok, I was looking for the main function and when I found it I thought, "That a bit messy".

Then, for some reason, I setup their build environment on a VM, setup my git client to push to their gerrit and started making some easy changes. I've focussed on the VCL, which is a core component of LibreOffice, and the more I have read the code on OpenGrok the more things pop out at me. So I tend to submit patches.

Right now I'm reading up on how LibreOffice deals with fonts. It's a bit messy, but the code actually _can_ be refactored, so that's what I'm doing! Actually, it's kind of fun. I rather like running doxygen to see what the collaboration diagrams look like after I've changed the class structure :-)

</comment><comment><USER23> I bought a Raspberry Pi B recently. You get a Linux system with many pre installed programming languages and an environment intended to get kids/students interested with tinkering with computers.

I even used mine for all of my writing and work for about 5 days. Playing with the Pi brought back some of the freshness of my old hacking/tinkering days.

<comment><AUTHOR> Thanks for the suggestion. I may well follow your example!

</comment></comment><comment><USER24> Highly recommend using Python for whatever it is you choose to do. It's very fluid from thought to code without the language getting in the way. When you have a reason to pick up other stuff like Android coding, then you can pursue those.

</comment><comment><USER25> If you're not hellbent on Java, I'd give Rails Tutorial a try by Michael Hartl. It gets one up and running fairly quickly, end-to-end, without the complications of learning an IDE.

</comment><comment><USER14> NetLogo is a really easy and fun way to play with ABMs. Once you produce data from your ABM simulation, load it into Jupyter (previously, IPython) or R Studio and explore the data.

<comment><AUTHOR> I'm actually a bit familiar with NetLogo, but thanks for reminding me! This is definitely the kind of stuff I'm interested in.

</comment></comment><comment><USER26> Javascript, Python, Elm, Clojurescript, Arduino, FPGAs

</comment><comment><USER27> Tryout ESP8266 it comes with hacker happiness.

</comment><comment><USER28> There are some good recommendations here. You might also be interested in TIS-100.

[http://www.zachtronics.com/tis-100/](http://www.zachtronics.com/tis-100/)

You solve coding puzzles but in a very limited retro environment.

<comment><AUTHOR> This looks awesome - thanks!

</comment></comment><comment><USER29> Look into exercism.io; it's a pretty cool way to solve problems while people provide feedback on your code. Better still, you can review other users' solutions and see how you could have done better.

</comment><comment><USER30> Cross out the word "hacker", because it's become so used and abused that it's now a filler word; it means something different to everyone. Some people define it as "person who can write a computer program", some people use it in the Stevn LEvy sense, some people use the ESR definition, some people just use it to mean anyone who is unconventional. It has become a phrase that means a different thing to everyone who hears it, without even realising it; much as when a politician says "our common values", and everyone interprets it differently without realising it.

So tell us what mindset you mean, without using the word "hacker".

<comment><AUTHOR> Fair point. What I mean by "hacker" may well be different from what other people mean. I just mean a mindset which some people may think reckless but that others may find exhilarating: tinkering with something, trying to figure out empirically how it works and how you can improve on it, while ignoring learning all the theory and sensible basics until/unless you find you need to understand it to get past a particular obstacle. Probably not a good way to build a career, but great fun to a certain kind of person (like me). It's what I used to do as a kid, and I had great success with it. I'm hoping it's possible to replicate in some aspect of modern computing, but I'm put off by the layers of systems and tools and SDKs that I get the impression are involved in most programming these days. So I'm looking for a context in which this kind of "hacker" (to me) mindset might still be alive and well.

<comment><USER31> I can understand what you're saying. If you've programmed with Visual Basic and assembly you're already familiar with most of the concepts. I would suggest looking at the website learnxinyminutes.com. It will give you an overview of current languages. As you haven't been programming for along time I would suggest picking up a language that is easy to setup. I would recommend perl, after a short introduction you can download and install every module you like from cpan.org with a single command and start solving puzzles.

Coming from Visual Basic and assembly I think you will struggle with object orientation and functional programming at first.

My advice get a Linux machine or vm, install cpanm. Have a look at perl at learnxinyminutes and start coding. You could write a script with WWW::Mechanize that scrapes news from HN. BTW I am currently fascinated by win32 assembly programming and reverse engineering. Your old-school knowledge is still valuable. Continue reading HN and coding fun projects. You'll catch up in no time.

</comment></comment></comment><comment><USER11> You want to get straight into coding, but instead what you're doing is posting on a forum for a discussion for recommendations for a tutorial? Are you also scheduling a meeting to discuss the procedure for gathering a committee to plan lunch? ;)

I mean, I don't think you're deliberately being misleading, but it feels a lot like you're saying one thing, yet doing another. Just out of curiosity really, why haven't you already Googled and started - what are you holding off and waiting for? It would take, what, 10 minutes to Google a Java tutorial and open [https://repl.it/languages/java](https://repl.it/languages/java) and get some text printed, right?

 _I learn better by experimenting with other people's code than by a textbook_ [..] _I'm looking for recommendations of textbooks_

mmhmm.

<comment><AUTHOR> It was all part of my dastardly plan to get inappropriate advice by misrepresenting the way I learn! But I have failed miserably, because all these people gave me really helpful advice... Seriously, though - yeah, I am definitely someone that sometimes overthinks things, but that's actually worked out pretty well for me in life, so I'm quite relaxed about it. So, yes, I do basically much prefer the idea of getting a tutorial that's perfect for someone with my mindset by trying to find other likeminded people online before I get stuck in rather than just going for the first tutorial I find on Google. Sounds like that's not how you would do things, which is fine. Different people work in different ways, I guess!</comment></comment>


Well-capitalized Seattle startup seeks Unix developers – Jeff Bezos (1994) - <AUTHOR> https://groups.google.com/forum/m/#!msg/mi.jobs/poXLCW8udK4/_GHzqB9sG9gJ <comment><USER2> Reminds me of Larry Page asking how to set the User Agent in Java back in 1996: [https://groups.google.com/forum/m/#!msg/comp.lang.java/aSPAJ...](https://groups.google.com/forum/m/#!msg/comp.lang.java/aSPAJO05LIU/ushhUIQQ- ogJ).

We all start somewhere.

<comment><USER3> Why didn't he just google the ans- oh.

</comment></comment><comment><USER4> It would be interesting if someone (maybe the TripleByte folks?) did an analysis of the words/phrasing used to recruit early employees, and compared that to the long term financial success of the company.

I frequently see job postings that poorly articulate the company's purpose, or focus heavily on experience with specific technologies that are easily learned, and arguably unimportant from a hiring perspective. I suspect that there is a negative correlation between those postings and financial performance, but I'm curious if the numbers support that assumption.

<comment><USER5> Although I don't see Bezos saying anything about what his company actually does... None of the modern "We're going to disrupt X industry" / "We're democratizing Y" / "We're changing the world for the better by giving people Z"

<comment><USER4> Although it does say "pioneer commerce on the Internet", which at the time may have have been taken as "we're selling physical goods online", as I doubt many digital goods we're getting bought or sold online at the time.

</comment></comment></comment><comment><USER6> It should be noted that this is an archived "USENET" post.

Usenet was a decentralized message board system, kinda similar to email. That means all of the discussions that took place here are for the most part, lost to the sands of time. There's no centralized servers in USENET, its all decentralized.

Google Groups became one of the more popular USENET services in the early 2000s. But the archives of USENET posts are likely incomplete. Maybe someone with more knowledge of this early internet would be able to comment on where Google got their archives from.

More info here: [https://en.wikipedia.org/wiki/Usenet](https://en.wikipedia.org/wiki/Usenet)

<comment><USER7> This post definitely made me feel old! Just wait until I tell you about Gopher!

<comment><USER8> We often joke about making new gopher sites in our office.

</comment></comment></comment><comment><USER9> So - any data available on how well some of these people made out?

<comment><USER10> conversation with Shel Kaphan, Amazon employee #1 [http://themacro.com/articles/2016/09/employee-1-amazon/](http://themacro.com/articles/2016/09/employee-1-amazon/)

Shel Kaphan compensation ISOs shares 709,568 given @ $.0014

based on FORM S-1 filed at the time of Amazon IPO [https://www.sec.gov/Archives/edgar/data/1018724/0000891020-9...](https://www.sec.gov/Archives/edgar/data/1018724/0000891020-97-000839.txt)

<comment><USER4> So that would have cost < $1000 to exercise at the time. Amazon appears to have had 3 stock splits (2x, 3x, and 2x) in the intervening years. Current share price is > $1100 dollars. Meaning 709,000 orig shares * 12x from splits * $1100/share > $9.3 billion in current value.

Is there something I'm missing here? Obviously this is assuming that none of the stock was sold (unlikely).

<comment><USER11> He's done very well for an employee #1 (vs a founder).

Reminds me of a "startup" I worked for in the dotcom boom. I was good friends with employee #1, he brought me on board as something like employee #30. When we IPO'd the founders made hundreds of millions (which they subsequently lost all of in the dotcom crash lol). But we were talking and his equity package was basically the same as mine - we both made between 6 months and a year's salary in the IPO - a nice chunk of change to be sure, but my friend had worked just as hard as any of the founders and made sacrifices in terms of the comfortable corporate job he could have had... This is a story repeated time and time again. It very, very rarely makes sense to be an early employee. Be a founder, or come on board later.

</comment></comment></comment></comment><comment><USER12> "you should be able to do so in about one-third the time that most competent people think possible"

I think (I could be wrong) that might attract the wrong type of applicants, such as people who are arrogant or think that building such systems are easy (and thus might not understand the complexities involved).

</comment><comment><USER13> Nice, they included a fax number

</comment><comment><USER14> Is there any point in joining a company like Amazon now?

<comment><USER15> Yeah, they have a program that allows you to exchange your labor for capital.

</comment></comment><comment><USER16> I mean, gosh. They're using some interesting tech but they're not gonna get anywhere using UNIX with Windows NT about to take off.

Also books. I mean I like books but who reads books in the 90s?

Really don't bother. This company is going nowhere.

</comment><comment><USER17> Looks like Jonathan Wolfson made the first HN comment ever.

[https://groups.google.com/forum/m/#!msg/mi.jobs/9N2b9qj2nOc/...](https://groups.google.com/forum/m/#!msg/mi.jobs/9N2b9qj2nOc/Bwwtp60GoY0J)

<comment><USER18> That comment is from 2003 :)

<comment><USER19> It's a joke. HN-type dismissals are older than HN.

<comment><USER20> Were Slashdot dismissals the origin? ("No wireless. Less space than a Nomad. Lame." from 2001.)

</comment></comment></comment></comment><comment><USER21> Behind Google sign-in 'pay-wall'...

<comment><USER22> I agree. It was bad enough when I needed to whitelist a handful of google domains to run the JS needed to display simple text. But this page just flat out won't even begin to load. After switching to a 'modern' browser I was able to get to the simple text which I've mirrored here, [https://pastebin.com/fFJsPc56](https://pastebin.com/fFJsPc56)</comment></comment>


What happens if all US ZIP codes are connected in ascending order? - <AUTHOR> http://eagereyes.org/Applications/ZIPScribbleMap.html

<comment><USER2> Hey guys, I appreciate the link! Also check out the Traveling Presidential Candidate Map on my site (that involves Hilbert curves as an approach to the Traveling Salesperson Problem)!

<comment><USER3> Live link:

<http://eagereyes.org/Applications/ZIPTPCMap.html>

</comment></comment><comment><USER4> Instead of drawing a straight line between points, try using a great circle. Also try other projections besides mercator.

</comment><comment><USER5> At the first sight this looks like a solution to knight's tour problem on the US map. :)

</comment><comment><USER6> this is a cool idea. (projects like these make for fun hacks for learning new languages or concepts.)</comment>


Putting the I back in IDE - <AUTHOR> https://blog.janestreet.com/putting-the-i-back-in-ide-towards-a-github-explorer/ <comment><USER3> That's really neat. I love the idea of doing as much as possible from text- based UIs, especially using Emacs.

I see this is built on top of Emacs, but it looks like it's entirely custom. It would be interesting to build something like this integrating with standard Emacs features. For example, merge requests could show up in an orgmode agenda list, and reviewing the merge request could be done through a layer on top of magit. You could also go a step further and offer an orgmode-like interface for working with tickets/issues.

Outside of the text-based UI world, GitLab has a neat feature called Review Apps [0] that lets you preview branches/merge requests for web projects, but this takes things a step further by letting you make changes and run locally.

[0] [https://about.gitlab.com/features/review- apps/](https://about.gitlab.com/features/review-apps/)

<comment><USER4> You may be interested in magithub (it's on MELPA).

<comment><USER5> Is there something similar for Bitbucket and JIRA? We're stuck with those and the web UI's are very slow.

<comment><USER6> I wrote my own CLI (in C, just for the hell of it) for JIRA. It's the server that's the problem. Responses take seconds to return over my 100Mb/S connection. Horrible.

<comment><USER5> What are the good alternatives for JIRA then? Would be nice to command all of that from Emacs...

<comment><USER4> I remember seeing one, though it may not have been under active development. Maybe search MELPA/Github.

If there's nothing suitable it could be a fun thing to hack on! :)

</comment></comment></comment></comment></comment></comment><comment><USER7> "Every branch of every repo gets its own sandboxed directory. Your revision history in each branch, including uncommitted stuff, is persisted, as are build artifacts. When you switch contexts, each project is just as you left it."

Isn't that just svn? Why force a git-shaped peg into an svn-shaped hole?

<comment><USER8> Or git worktree

<comment><USER9> Oh, I had never heard of that command before. Does it work well, i.e. does it improve your workflow?

<comment><USER10> I generally have a worktree to develop in, and one for code reviews. So I can leave some indexed and some uncommitted changes in the first one, open a second IDE against the second one and use "find usages", "go to implementation" and other code navigation features missing from GitHub.

You can also create a worktree for a quick experiment (eg how many conflicts when I merge X and Y) and just rm it when you're done.

Sure, all these things can be achieved with git stash and git reset... but they are both difficult to keep track of and will cause your IDE to run its expensive reindexing.

It's kind of like how you could use pushd/popd and open subshells to work in one shell, but people prefer to just open another terminal window.

</comment></comment></comment></comment><comment><USER11> If you walked into an office and saw them using 1984 equipment — fax machines, landlines and Rolodexes — you'd think the company is hopelessly behind times.

Jane Street is a cutting-edge technology corporation, but their internal tools use 80*25 text-mode UIs just like the ones you'd find on a 1984 IBM PC/AT.

It's not the company's fault: we developers are stuck in the tar pit of an unfortunate local maximum with all these tools built around text streams printed into a window that emulates a late '70s terminal.

<comment><USER4> Would you prefer a web app? Why?

<comment><USER11> No, HTML is limited in the same way as terminal emulation: it's not the right tool to describe UIs and interactions.

I'd like to see more progress made in real desktop interfaces.

<comment><USER12> > I'd like to see more progress made in real desktop interfaces.

Come to the macOS/Windows developer culture.

</comment></comment></comment></comment><comment><USER13> It sounds really cool but also very opinionated workflow. Not to say I don't agree with it but I can only imagine the amount of effort making this whole workflow was also what went into defining what that workflow was.

There are a lot of workflows and I personally don't think it's on an IDE to enforce that. Yeah sure it's "integrated" but it's to the extreme which I somewhat disagree with.

If their workflow and emacs scripts were open sourced, I could actually try it and watch my tongue but since it's all proprietary all I can really say is good for you, thanks for sharing but I probably wouldn't use it myself.

<comment><USER14> It's probably OK at a company, though. Teams that I've worked on tend to converge on pretty similar workflows with respect to pull requests.

</comment></comment><comment><USER15> I think they just described IntelliJ + Contexts and Tasks feature.

<comment><USER16> Or Visual studio.

</comment></comment><comment><USER16> Visual Studio does everything within the same window (source code management, code review, diffs). Yes, it's great. It does not need any 'new' paradigm, that's the standard operating modus.

It's a good thing this ideology of tools that simplify the process is spreading. But it's not novel.

This article sounds like the author never used Visual Studio.

<comment><USER17> You'd be surprised. Our domain has so much snobbery and elitism that it's entirely possible that a developer tried 1 (one) IDE, maybe decades ago, didn't configure it at all (or couldn't, at the time) and decided for all eternity that IDEs are bad.

It's quite funny sometimes when you show someone modern functionality in a modern IDE and they have to accept that the people making IDEs are, basically, not all morons (which is a sort of hidden assumption for many of these attitudes).

<comment><USER18> I recently switched over to Visual Studio Code and even though I previously had a bit experience with it, switching over was frustrating. It takes time to change your work flow, to set up the IDE as needed, to get plugins and what not fine-tuned.

Now I can't imagine working without Visual Studio Code because all those seemingly little features add up and what do you mean I can seamlessly use Git to manage my code or easily rename variables and functions without breaking stuff WHAT

<comment><USER19> I'm a fairly light user of VSCode, so I may be wrong here, but the integration goes even deeper in Visual Studio.

It lets you view a pull request's changes right there in a standard IDE window, so that you can get full code navigation features during code review, including stuff like peeking the docstring or implementation of any functions the code references. Or, if you notice something amiss while reviewing your changes before submitting a pull request, you can just make the change, re-run tests, and commit, without ever leaving the diff viewer. Or being able to just toggle gitblame annotations on and off right there in the editor.

It's nothing worth switching platforms or programming languages over, but, since switching away from .NET and seeing the gulf between the level of seamlessness you get out of Visual Studio and what's available in other IDEs, I can now see why they've come to have such a poor reputation. Visual Studio isn't exactly lightweight, but it manages to pack in enough cool tricks to justify itself.

(Until you install ReSharper. Then it becomes as memory-hungry and unstable as everyone else.)

</comment></comment></comment></comment><comment><USER20> So what does this do that IntelliJ and other IDEA-based IDEs can't do for me? They already have Github API integration plugins.

<comment><USER21> I think (as @cromwellian pointed out), IntelliJ has most of this covered with tasks, contexts, shelving, etc. Better, possibly, as it has quite a number of built-in tracker integrations.

Not sure about the code review aspect though. I haven't tried any of the code review plugins (gerrit etc). They could be good if they integrate with diff viewer, as it is IMO one of IntelliJ's best features.

<comment><USER22> I agree on the diff viewer.

Check out Upsource for code reviews. It's pretty much exactly what you would expect from a JetBrains-built code review tool.

<comment><USER21> I've glanced at Upsource out of curiosity only (I mainly work solo). It looked good of course. I was commenting about code review here with regard to the Jane Street article -- it does seem IntelliJ does nearly everything their custom tool does out of the box.

</comment></comment></comment></comment><comment><USER23> This is pretty cool. Although, on large codebases a la facebook or google size, I would think having a copy of the repo per branch might be intractable - also, somewhat unnecessary since one can just switch branches...

<comment><USER24> The trouble with 'just switching branches' is that it quickly gets very complicated, if not impossible, without either checking in incomplete code or stashing it.

<comment><USER23> Is stashing an issue?

</comment></comment></comment><comment><USER25> this is a HCI problem. I dont think text is better than IDE or web-based code review or branch management. I'm a vim user and i have to say making everything in one terminal looks cool but really not that intuitive..

</comment><comment><USER26> Magit combined with Magithub already offers much of what's described in the article and there's a lot on the roadmap. Jonas and Sean are doing mindblowing, amazing work in these projects. I've seen many different UI shells for Git - everything else feels childish compared to what's possible in Emacs. I learned Git mostly by trial, error and reading man pages, but only after a few months of using Magit I've become truly dangerous.

</comment><comment><USER27> check out Eclipse Che: [https://eclipse.org/che/](https://eclipse.org/che/)

</comment><comment><USER28> > Code review happens entirely within the editor. You're fed a series of > diffs: one keystroke to approve, one keystroke to start editing. Dive in, > make your changes, leave comments for the author, push, and move on.

But can the reviewer easily run the code they have just edited?

And does changing branches require a full rebuild?

<comment><USER29> They also build two build systems in ocaml [http://jbuilder.readthedocs.io/en/latest/](http://jbuilder.readthedocs.io/en/latest/) and jenga, which support incremental fast compilation, so the answer is most likely yes.

</comment></comment><comment><USER30> come on! just another couple of years and we can have eclipse again (I still miss the integration between the tasks, the revision system, the code and the autodeploy stuff I had in the '90 when I was a junior dev...)

</comment><comment><USER12> Programming like 1980!

At least has colors instead of having everything in green.

Really the extent people go to avoid using modern developer tools.

<comment><USER31> And so they should when modern is not as efficient as the alternative.

<comment><USER12> Efficiency is on the eyes of beholder.

For me, efficiency is a synonym of Xerox PARC's vision of computing, not improved teletypes.

</comment></comment></comment><comment><USER32> This is cool, I guess. Personally coding in a terminal like window for me would be awful - I like using my mouse to navigate among folders and save stuff etc in Atom/VSCode like environments. Plus, how often are people switching branches of code that the number of key strokes for git becomes a problem? Seems like an overengineered solution for a very niche audience - <USER2> it works for them great though.

<comment> Const-me I agree.

Another reasons why I prefer GUI are auto complete, tooltips and context menus. Also for some documents like xml, also when working with other people's code, I find it useful to collapse/expand blocks of text.

All these features pretty much require a GUI-based editor.

<comment><USER33> Those features are available in emacs, and work in both the GUI and the terminal.

For auto-complete, vanilla emacs has dynamic abbreviations; there are several packages for fancier auto-completion; company-mode, for example, works just fine in the terminal, as well of course as in the GUI (X11, macOS or Windows).

Likewise with tooltips, which in the terminal generally are generally displayed in a special region of the terminal instead.

Likewise with context menus, which can be shown just fine in a VT100 terminal.

Likewise with expanding & collapsing text ('folding'). Org-mode, to take just one example, is built on folding — and is easily one of modern emacs's killer features.

Seriously, give emacs a shot. Both Prelude & spacemacs are excellent configs for it.

<comment> Const-me > give emacs a shot. Both Prelude & spacemacs are excellent configs for it.

Are there any advantages over Visual Studio + Visual Assist, for C++ or C# languages?

Because I see many disadvantages.

About text editor features, your workarounds have flaws compared to good GUI. For tooltips, that special region of the terminal is physically separate from the cursor. For folding, a separate, visually distinct indicators of what's folded/unfolded help navigating the code faster.

Another text editor feature hard to do in text mode is spell checking for strings and comments. Color is already used for syntax highlighting, so wavy red underlines come handy.

But visual studio is more than an editor, it includes a build system, debuggers and profilers, package manager, and many more related features. Everything comes already integrated and just works out of the box.

<comment><USER33> > Are there any advantages over Visual Studio + Visual Assist, for C++ or C# > languages?

A fully-extensible, flexible environment which anyone (even a secretary!) can easily extend.

> About text editor features, your workarounds have flaws compared to good > GUI.

They're not workarounds; they _are_ the features. emacs has a GUI. I repeat: _emacs has a GUI_. Tooltips in a GUI display as you'd expect. Folding in a GUI displays as you'd expect.

> Another text editor feature hard to do in text mode is spell checking for > strings and comments. Color is already used for syntax highlighting, so wavy > red underlines come handy.

Terminals support underlines!

> But visual studio is more than an editor, it includes a build system, > debuggers and profilers, package manager, and many more related features.

Have you ever used emacs? It's more than an editor; it connects to build systems like make, maven, gradle, ant, what-have-you. It has its own elisp debugger, connects to gdb, SLIME provides an integrated Common Lisp debugger &c. It has a profiler. It has a package manager. It has a best-of-breed git interface, Magit. It has a best-of-breed personal organiser, Org-mode. It has multiple email clients (rmail, vm, gnus & notmuch come to mind, but there are probably more). It has multiple web browsers (emacs-w3m, eww, w3 & a new experimental WebKit-based browser). It has multiple image viewers. It has multiple terminals & its own shell.

Emacs is far, _far_ 'more than an editor.' It's probably the single editor which is the _furthest_ from being just an editor. Don't trust me: give it a shot! It really is a wonderful experience.

And yes, it has a GUI. Images, scrollbars, menubar, toolbar: the works. Runs on X11, macOS & Windows. And it _also_ runs perfectly well in a VT100 terminal. You can use the same emacs locally and remotely, over SSH. It's pretty awesome.

<comment> Const-me > which anyone (even a secretary!) can easily extend

Even if that's true, we're talking about development environments here, so secretaries are irrelevant. I've been programming C++ and C# for decades, for me, visual studio is quite flexible and extensible.

> Terminals support underlines

I specifically told about wavy red underlines for spell checking, and terminals don't support that. Simple underlines are too intrusive i.e. they often mask '_', and don't stand out visually from normal text.

> It's more than an editor; it connects to build systems like make, maven, > gradle, ant, what-have-you.

I know it's possible to integrate everything in Linux ecosystem. I just don't want to waste my time connecting, integrating, and then supporting the setup that just works out of the box on Windows, with freeware visual studio.</comment></comment></comment></comment></comment></comment>


Californians may have developed herd immunity to coronavirus last year - <AUTHOR> https://abc7news.com/coronavirus-covid-19-herd-immunity-california/6091220/ <comment><USER2> [https://web.archive.org/web/20200410202251/https://abc7news....](https://web.archive.org/web/20200410202251/https://abc7news.com/coronavirus- covid-19-herd-immunity-california/6091220/)

</comment><comment><USER3> That doesn't seem particularly plausible. Covid doesn't exactly appear subtle

</comment><comment><USER4> TLDR:

 _" Stanford researchers are looking into the possibility that coronavirus first hit California undetected last year, much earlier than anyone realized, and was only seen at that time as a particularly nasty and early flu season.

As a result, the theory says, many Californians have already unknowingly been exposed to the coronavirus and have developed immunity to it.

To investigate that idea, researchers are testing people for antibodies that indicate a previously undiagnosed infection that was defeated by the body's immune system.

The Stanford researchers tested 3,200 volunteers at three testing sites in the Bay Area. They are expected to publish the conclusions of their study in several weeks."_

<comment><USER5> Sounds like we should all hang tight and wait for the results to be published in a few weeks before jumping to conclusions</comment></comment>


Analytics as a service - <AUTHOR> http://keen.io/

<comment><USER2> From what I can gather, it's like any other analytics service, except:

1) You have to do all data analysis and visualization by yourself. 2) There are basic data analysis components built in (exposed through their API). 3) You can build (and embed in a website) your own analytics dashboard with custom visualizations from a JavaScript SDK.

Something like Mixpanel will do all the data analysis and visualization for you, and won't let you do any custom analysis or visualization (aside from exporting your data).

<comment><USER3> Exactly.

We're operating at a layer below other analytics products, and we're certainly not as useful out of the box. A good analogy might be:

MailChimp : SendGrid :: Google Analytics : Keen IO

Which is to say, Keen IO is a set of developer API's wrapping hosted infrastructure, whereas other analytics products are end-to-end solutions. We're an agnostic event data backend, and they are each a full product offering with its own focus.

Hopefully that helps explain why we don't think of ourselves as competitors to products like Mixpanel or GA or KISSmetrics -- in fact we plan to build one- click import and export connectors from/to those services and others. We think our position in the ecosystem will actually help them retain customers who would otherwise churn in favor of building in-house.

<comment><USER4> We actually do this: [https://mixpanel.com/docs/api-documentation/displaying- mixpa...](https://mixpanel.com/docs/api-documentation/displaying-mixpanel- data-to-your-users) \- though, not widely known.

In fact, Olark.com's analytics graphs are powered by us right now for their customers.

<comment><USER3> I think our target markets are different.

Our API is the only product we have, and thus it's the only way we can make money. We think that, over time, that will incentivize us to make the best API possible.

We really admire your product, especially the new Engage stuff, which helps app marketers close the loop between intelligence & personal action in a way that the market hasn't seen before (we'd even like to be customers, once our export-to-Mixpanel feature is done!).

As I mentioned before, we see ourselves as the SendGrid to your Mailchimp. Both play a valuable role and have different use cases.

</comment></comment></comment></comment><comment><USER5> I understand that they provide all the back-stuff to store your metrics data and an easy way to plug to the data to draw charts, analytics dashboard. I find it really cool tough I don't know if people/startuper prefer this flexible solution as Mixpanel one wich gives you already the front end functions. I don't know if they do but they should provide templates for creating a funnel, a retention graphs etc.

<comment><USER6> Thanks! Great ideas. We do have funnels via API but not visualizations for them yet. We're going to build them into our javascript SDK so you can easily build them into your apps.

</comment></comment><comment><USER7> I'm having a little trouble figuring out what you folks do differently. Can you maybe speak to that?

<comment><USER3> Please check out my response to Brian Chu here: <http://news.ycombinator.com/item?id=4870090>

</comment></comment><comment><USER6> wow! Keen IO here. Now I see where the traffic spike is coming from. Looks like idan decided to Show HN for us :)</comment>


Apps made for one OS shouldn't insist on aping the design elements of another - <AUTHOR> http://www.macworld.com/article/3075537/ios/google-is-making-the-same-mistake-now-that-microsoft-did-in-the-90s.html <comment><USER4> User interfaces should be designed for the _user_ , not for the operating system. I feel like more apps should embrace their uniqueness rather than aping whatever Apple/Google/whatever puts out as the "new standard" every time their design team decides to go in a new direction.

A lot of user interface design is managing user expectation (things people have gotten used to, like where a "create" button is or what a "share" icon looks like) versus optimizing for long-term usability of an app (something like Snapchat, with its seemingly-esoteric UI that is actually efficient once one is used to using it).

The only reason the author gives for taking this position is that "Participating on someone else's operating system means you're on their turf. The author even admits that "I'm not saying either design is superior." So app companies should forego optimizing for user experience to pay respect to the platform that they're on? This is a totally backwards position; apps should respect their users. If that means following all the OS guidelines for a sparingly used app, that's fine. But if that means creating a unique UI and app flow for long-term user happiness, then the app company owes no respect to the "local conventions" of the OS.

edit: clarity

<comment><USER5> > But if that means creating a unique UI and app flow for long-term user > happiness, then the app company owes no respect to the "local conventions" > of the OS.

This PoV has engendered more hatred in me towards software creators than probably any other. Not bad considering I spent 25 years creating software.

If I'm on Gnome/Android/Windows 10/OSX/Whatever, frankly I'd prefer _everything_ follows GUI guidelines, standards guides and looks, acts and feels like a native. Trouble is _everyone_ knows best.

iTunes "knew better" and made Windows look and feel like a Mac. Fine, except it made the program clunky and stand out for being different. Apple knew best with iMessage and decides it should _invisibly_ merge sms and their own messaging. Result? A dozen times a day it would hang for 10 minutes or so trying to connect to data-unreachable imessage servers. Just send a damn SMS, which is what I wanted in the first place. Google came up with Hangouts that at first release (i've not revisited it) managed to leave out every essential of a messaging app. It was sort-of pretty, but very broken.

Google and Microsoft always know best and don't even respect their _own_ standards, let alone anyone else's. Neither are any good at all at designing GUIs and frankly should just stop. Outsource to someone who can. Samsung should take note of this too.

I don't want 40 different unique UIs all optimising app flow for long term user happiness as that's anarchy with 50 (sic) different ways of doing things in those 40 apps. I'd prefer it felt a little dated to work on Android or whatever if it was then seamlessly perfect in gestures, GUI and function.

Everyone needs to just stop knowing best. 99.9 times out of 100 they don't.

<comment><USER6> > Everyone needs to just stop knowing best. 99.9 times out of 100 they don't.

And yet, your hatred is directed at the PoV that companies should respect an OS's conventions, yet who says that the OS knows best?

<comment><USER7> Well, if "best" is "follows conventions", then maybe the folks that set the conventions "know best"?

<comment><USER6> My point was the direct contradiction in statements there. Choosing the choices that a platform makes as the standard setter is arbitrary in a fashion, as why should those standards be the standard? There is no real reason why that makes it better.

<comment><USER8> Yes there is - it makes your app integrate better with the platform. Sure, the initial choices may have been completely arbitrary, but as an app developer you have to live by them now. Consistency is the reason. Users learn the platform and learn its standard UI paradigms. Should you choose not to follow them, your users will not be very pleased to say the least, often confused as to why your app doesn't operate like everything else on their device.

</comment></comment></comment></comment></comment></comment><comment><USER9> Material Design isn't just about Android Apps though. They make libraries for websites too, and have guidelines for all types of devices built into the spec. Google isn't using MD in their iOS apps to bring Android design to iOS they're using MD in their iOS apps because they believe MD should be a universal design paradigm for applications and web apps. You can argue that it shouldn't be, you can not like it as a design framework in general, but it's not about Android vs iOS it's about Google's vision of application design regardless of platform.

<comment><USER10> The article's point still stands though: sticking to a platform's design == jarring user experience.

Not to say that I agree that it's necessarily bad: his example of Word on Mac vs. Windows is actually interesting bc, given sufficient differences, users would have a hard time switching between the two if they own both platforms and the applications look completely different. I think it should be possible to retain certain UI paradigms (e.g. back buttons, toolbars) while staying uniform across all platforms in other respects.

<comment><USER11> I've always felt like people who were buying Office for Mac probably cared more about having a consistent experience than having a Mac-like one and they probably should have hewed more closely to the Windows look and feel. It's like emacs -- how many people choose to use Aquamacs or something instead of just the traditional one?

<comment><USER12> > _I 've always felt like people who were buying Office for Mac probably cared > more about having a consistent experience than having a Mac-like one_

Why would you assume that someone buying Office for Mac is more familiar with Office for Windows than the Mac they own that they want to run Office on?

That could be true for some customers. It's certainly not true for all customers. It's probably also not a given that even someone very familiar with Office for Windows would want Office for Mac to act like that, instead of like a Mac app.

<comment><USER13> > Why would you assume that someone buying Office for Mac is more familiar > with Office for Windows than the Mac they own that they want to run Office > on?

Because Windows had like 90% of the market share?

<comment><USER12> That's the 90% that didn't buy a Mac. Why does the 10% want a Windows-feeling app when they didn't buy a Windows device?

</comment></comment></comment></comment></comment></comment><comment><USER14> Google is acting more like Microsoft.

They are building huge moats around their business ( Android, Chrome etc ) so it becomes harder to use some Google products without using others.

Google discontinued 'Google Sync' ( [https://support.google.com/a/answer/2716936?hl=en](https://support.google.com/a/answer/2716936?hl=en) ).

It favors Google Finance and Youtube over its rivals in search results page.

They 'have not figured out' how to allow extensions in Chrome mobile.

They had no-poaching agreements with rival companies.

I am almost a Google fanboy, but I suspect they will be no different to Microsoft in a few years. Letting products stagnate, pushing the tech industry backwards but making a pretty profit for investors.

<comment><USER15> To be fair, Chrome for iOS won't ever have extensions because Apple requires all HTML rendering to be done with their web viewer (which can be embedded in other apps), meaning that Google simply can't control the rendering of the page (and thus implement the majority of chrome extensions). The app is basically just a wrapper for the same browser that Safari uses.

<comment><USER16> Chrome on Android is a different story though. Firefox on Android allows you to use add-ons for the web version of Firefox with no fuss. Why can't Chrome do the same?

<comment><USER17> Because the very first thing many people would install is Adblock Plus.

Google, however, desperately needs mobile advertising, because people are using desktop/laptop PCs less and less (and more and more people use adblockers on these), and mobile advertising is the only space not yet "disrupted" by ad blockers.

<comment><USER18> I'm not sure how valid that claim is, since Content Blockers are a thing on iOS and I'm sure there are similar solutions on Android.

<comment><USER19> I think it's more towards the school of thought of 'if it isn't easy, most people won't.

Installing an ad blocker isn't as easy as installing an add on someone links, you have to actively search for it (and require root on Android? Not 100% sure about that. For chrome this is, I have ff on my Android).

<comment><USER20> If you want to block ads in apps as well as the browser, you have two options. One is an adblocker that's implemented using the VPN API. This doesn't require root, but it does mean that all of your data usage will appear to come from the adblocker app, rather than your specific apps. The other is to use an app that adds blocklists to /etc/hosts. This does require root.

</comment></comment></comment></comment></comment></comment></comment><comment><USER21> The author should launch iTunes on Windows and realize that Apple is pulling the same kind of crap on Windows.

Large companies have large egos.

<comment><USER22> I actually think it's a pretty okay marketing strategy. If you truly believe your own interface is a selling point,then you need to show it off to people who aren't familiar with it.

If iTunes truly has a superior user experience (ha!) people will think, hey wouldn't it be nice if all my apps were like that.

<comment><USER23> "If iTunes truly has a superior user experience "

It has not

<comment><USER22> I thought the parenthesis made that quite clear.

Anyway, in the early days of iTunes on Windows, the design and looks was a big selling point.

</comment></comment></comment></comment><comment><USER24> It's worth pointing out one major difference between Word 93 and Google apps in 2016. Back in 1993, we were pretty much living in a 1-device-per-user world. People had one computer, and they used all their apps on that one computer. Hence, if consistency is the goal, the only thing to be consistent with is other apps on that computer.

However, in 2016, we're living in a multi-device world. A single person can easily own a smartphone, a tablet, a laptop as well as a desktop. Some of them may be iOS, others may be Windows, and others may be Android. And they are likely to use the same apps (eg, google Maps) on all of those different devices. Hence, I would argue that consistency across devices today, is more important than consistency across different apps. As someone who owns a mix of both Mac and Android products, I would like for Google docs to look and behave similarly no matter which device I'm on, even if it means that Google Maps ends up looking differently from Apple-Music.

<comment><USER25> Of the apps I use most of them I use on only one device. So it's better to stick to the platform guidelines.

</comment></comment><comment><USER26> While in general I'd agree with Jason, in this case I can't. There's a big difference between the case of Word on the Mac back in the 90s and Google apps on iOS.

I use Gmail, Google Maps and Google Docs, but I use them equally on iOS and on the web. What I want from these apps is a consistent UI on the web and in the iOS apps. I couldn't give two craps about what it looks like on Android. No disrespect to Android, but that's just not an issue for me.

Jason's position is reasonable. Making the UI on iOS more like iOS conventions would have advantages and for some people this would be a better option, but there's an extra issue here he's not acknowledging.

</comment><comment><USER27> I must be a very weird person I feel lately (this theme is recurrent on HN); I don't actually notice the difference. I use iOS & Android and if the app works well I don't notice if it doesn't behave 'like it is supposed to do' on the respective OS. It is _far_ more noticeable on desktops. However, if copy/cut/paste (Firefox on Linux notably which is unusable because I cannot copy to/from it), file dialog and drag & drop works with the rest of the applications and the application is solid otherwise as well I don't care about that either and probably won't notice it. I notice it with software that presents me a hard to use custom file open/save dialog only. And I tend to just not use that anymore.

But on mobile; if the app is good (I for one like Google docs) I don't believe many people actually notice this difference.

<comment><USER28> Have you tried to remove your Firefox profile on Linux? Just rename it so you can move it back later if needed. Then try to copy/paste. Then disable all addons and try again. It should work of course.

<comment><USER27> I tried a few things and then gave up; I will revisit. It is a known problem as there are a lot of posts all over the web from people with the same issue.

</comment></comment></comment><comment><USER29> The funny thing is: I understand his argument, but the Android like Google apps where what finally made the iPhone a little usable for me. I have it for nearly a year now and still every day wish myself back to the times I had a Nexus 4. It is just way more efficient. I don't what the goal of a normal iPhone user is. But my goal is to get things done as fast as possible. I need to work. But for that iPhones are really painful to use. And I don't know but if you have seen the Gmail App, can you ever go back to the Mail app from iOS? It's like a Porsche vs a rikshaw. Why would anybody want to use the latter one?

</comment><comment><USER30> I agree with the point being made: I would be really pissed if a desktop app had the window management buttons on a different corner, even the same corner but different icons would feel bad. However, mobile apps are more like websites rather than desktop apps. The 'shell' has to be consistent with UI design and behaviour whereas the 'content' can have a UI relevant to function and maybe a different brand. For example, if you open gmail on Chromium and Safari, you'd expect it to behave and look the same on both.

</comment><comment><USER31> "and the target of dislike and rage from many people who love Apple products."

He managed to lose me in the first paragraph. Not a record, but really close.

<comment><USER32> Do you usually find that you enjoy reading articles in _Mac_ World to the end?

<comment><USER31> I don't even know if that's a made up magazine or a real one. :)

</comment></comment></comment><comment><USER33> This seems like a trivially silly article. In essence it argues: "OSes are special sauce and apps are commodities - Google should recognize this and stop trying to differentiate their app designs."

That's certainly a valid opinion, but its reverse is just as defensible - <USER2> one considers services to be special sauce and OSes to be commodities, then it directly follows that app UIs should first be consistent across platforms. And considering that Google's entire business model is based on the latter view, why on earth would they take the author's view?

</comment><comment><USER34> Just some icons and menu colors? If that's their biggest problem then they're doing well.

<comment><USER35> What you are describing is the entire field of interaction design. It's not "just some icons and menu colors".

<comment><USER34> No I'm not. The two different UI styles are extremely similar. Look at how little changes on the screenshot of apple music, the _good_ example.

Complaining about the direction of the three dots that make up the menu button is the ultimate in bikeshedding.

</comment></comment></comment><comment><USER36> Honestly as a user I think Apple and Google can fry frogs with their design guidelines. I want app makers to make apps that are fun to use and enjoyable and more importantly useful. I could not care less if they are following company X's design guidelines or company Y's design guidelines.

There is nothing earth shattering or innovative or useful about Apple or Material design guidelines. It is just an attempt to establish their brand.

<comment><USER37> Remember when Facebook and Google had strict styling "guidelines" for their login buttons that were completely different and didn't fit aesthetically on anybody's login screen together?

That was big ego

</comment></comment><comment><USER38> The article has some good points. Material Design is a fine convention for Android and for Google's Web apps, and is well-supported for those if you use Google's libraries and frameworks. But I would not recommend that app developers should take MD to iOS. iOS has it's own conventions. Observe them. On top of all that, Web UI design lacks universal conventions. There isn't much to be gained by aping Google's style on the Web, unless you really like it. Every developer needs distinctive design elements in the areas that are not covered by platform conventions, and their Web UI is a good place to develop distinctive elements.

BUT that doesn't mean Google is making a mistake, except possibly on iOS. If Google's iOS apps are not close enough to iOS conventions, Google is, at least potentially, confusing their iOS users.

</comment><comment><USER39> If Google docs had a mac like ui on ios, the author would be writing about how inconsistent Google docs is. "They should unify their design"

<comment><USER40> And by "unify" the author would most likely mean "change all the other apps to have Mac-like UI".

</comment></comment><comment><USER41> Google is also resembling Microsoft in the sortof-broken-but-usable cross- product features.

For example, when I browse to google maps, and try to look at the reviews list of a point of interest on the map, it takes me to a google search - <USER3> out of the context I was in - and opens as modal dialog in that search area.

There are lots of examples of similar functionality. Individually, its harmless, but as a whole, it feels sluggish and clunky.

This kind of behavior seems to be common in large software companies that have separate divisions with communication issues between them.

It's sad to see Google go down that road.

</comment><comment><USER42> Reading the headline, I was half expecting the article to say that Google's just-announced Instant Apps initiative is the resurrection of ActiveX in IE, a comparison I'm just waiting for some journalist to make. (To this point, I've mostly read nothing but praise for the idea (instant apps). I see instant apps as another sad retreat from the promise of the open web.)

</comment><comment><USER43> While I prefer adherence to the OS' conventions, I can handle variations as long as they solve some problem. For example, one could argue in favor of something like a non-standard icon if that makes gestures easier to discover than they are by default on iOS.

Gratuitous redesigns are silly though, and by nature have to consume engineering effort that otherwise would've been spent elsewhere. And when engineering effort has clearly gone into a new veneer while there are still broken app _features_ , I become really angry. Too many apps on iOS alone have been "updated" with redesigns and mysteriously lost functionality in the process (or _effectively_ lost functionality, by hiding previously-known features somewhere new).

</comment><comment><USER44> tl;dr--- Google is the equivalent of 90s-era Microsoft because it is angrily disliked by some Apple fans, and it incorporates Material Design in its iOS apps.

<comment><USER45> But it's okay for Apple to inflict their design on Android because it's Apple.

<comment><USER46> But they __DON 'T __. That 's the amazing thing here.

Apple does on Windows, which everyone has known sucks since the early 2000s.

But when they released Apple Music on Android? It followed platform conventions. It actually made news in the Apple community because Apple DIDN'T make the Android app look like iOS. The Apple people I follow were actually surprised that Apple decided to be a good citizen instead of going with the usual "We know best".

</comment></comment></comment><comment><USER47> Particularly irritatingly: Google disables "shake to undo", which I've actually needed, instead making it "shake to give feedback", which is never something I've needed.

Presumably just to upset iOS users?

</comment><comment><USER48> They're just looking after they're business. By having the same applications layout/behaviour, it will help users to switch to Android easily in the future.

</comment><comment><USER49> What a sad and click bait-y article.

So, there's not a million other examples of apps that also don't follow the iOS style?

This article was written just to beat the Android vs iOS war drums.

<comment><USER50> I don't think it is click-bait, nor to incite wars. I think it expresses clearly something I noticed long ago: Google apps's--under iOS--UX/UI is completely different from the rest. They look odd, they do not behave as an iOS user would expect an iOS app to behave. Same as the Microsoft applications he mentions.

I love that Google has picked a unique UI/UX for Android, that's great. Yet, when providing apps for iOS, they should behave, and conform like the rest of iOS apps do.

</comment></comment><comment><USER51> The only google app I regularly use on my iPhone is their Photos app, and I like that it's cohesive across platforms. The subtle switch to being material design land on iOS gives me reassurance that my pictures will be safe in google's cloud. This feels worlds away from the design wars 20 years ago, when all you got was frustration and no real user benefit.

</comment><comment><USER52> That's why we all have different furniture.

</comment><comment><USER53> Apple has strict rules for allowing apps into the iOS AppStore, and they are enforced for every developer, including Google. While I disagree with the contents of the article, the rant should not be against Google only. If material design apps are accepted then it is not only Google's "fault".

</comment><comment><USER54> I'm going to go out on a limb and assume that most users of google apps also use google-as-a-website.

So what's google to do, provide consistency between the app and other apps or between the app and the corresponding web UI?

That isn't a simple question with a simple answer...

</comment><comment><USER55> I for one miss the 3.x-4.x Holo UI.

<comment><USER56> Holo was the best UI Google ever did. It felt like the future. Now I feel like Android is living in some wannabe iOS thing with paper-based skeu.

</comment></comment><comment> Tyler-Durden Material design is not android design. It is googles design concept. Being surprised that the company uses it for their applications, is like an American traveling to a far off country called Great Britain and be surprised they speak English there

</comment><comment><USER57> And Microsoft is 'unmaking' many of the mistakes it made in the past two decades

</comment><comment><USER58> I think the author misses the point. Using a native-looking interface will only encourage users to stay on their iTems, and Google (not so) secretly wants to convert those users to their own native platforms+.

</comment><comment><USER59> I've never really used iOS so can someone tell me if this is even a real problem?

The apps shown in the linked piece seem totally fine to me, so maybe there are better examples out there?

<comment><USER46> They seem fine to you because you don't use iOS.

I'm guessing you're an Android person. Have you run across apps that don't feel like Android apps? They feel like someone made a least-effort attempt to port an iOS app over to "the other platform" and the result is just sort of jarring and weird?

That's the issue. It's not necessarily that they look bad, your app can look like what you want. The issue is that they don't follow lots of little platform conventions that you get used to and so they feel foreign and slightly annoy you every time you try to use them.

</comment></comment><comment><USER60> UI "conventions" (i.e. fashions) wouldn't be such a big deal if people adhered more closely to first principles like discoverability, etc.

</comment><comment><USER61> The more you understand product design and usability, the more you value consistency with the platform.

The problem is, no one starts out with this knowledge or value system.

</comment><comment><USER62> an apple fanboy dislikes android, quelle surprise

</comment><comment><USER63> According to the author, they made that mistake in 1993.

In 1993, Microsoft's market cap was under $30 billion. Today it is over $400 billion.

</comment><comment><USER64> "Boo hoo" \- every Android user with an app drawer full of iOS rounded rect, flat, gradient-shaded icons.

<comment><USER46> So you recognize that it is a problem. I've heard that kind of complaint from Android users before and they're correct.

So shouldn't Google fix it on iOS?

Apple, of all people, did it right when they brought Apple Music over to Android. I'm still amazed at that. They don't have a good history (i.e. everything they released on Windows).

</comment></comment><comment><USER65> Another crappy Jason Snell's Original

</comment><comment><USER66> Making analogies between Microsoft in the 90s and X without mentioning the huge antitrust lawsuit[0] always seems dubious to me. The evolution of Microsoft as a business is not purely due to its product strategy.

[0] [https://en.wikipedia.org/wiki/United_States_v._Microsoft_Cor...](https://en.wikipedia.org/wiki/United_States_v._Microsoft_Corp).

<comment><USER67> Actually Google currently is facing some serious anti-trust cases as well.

<comment><USER27> Maybe Google is better at hiding it or just being 'less evil', but MS was pretty open with their 'destroy everything that comes in our path'. I think it is important to mention that when mentioning the antitrust case.

Edit: I was against the antitrust case at the time even though I did not like nor used MS /products/ and did not approve of their practices. I believed they got that power because they managed to get enough people drink the coolaid and that's a part of what a business does; kudos to them basically. Still don't like most software they make, but as a company it seems a lot better now. Why restrict that? I have another opinion (I would be _for_ the antitrust case now) now as I grow older.

<comment><USER68> MS wasn't aware they needed to hide it, Google's advantage..

<comment><USER27> There have been other antithrust cases which were about abuse of power (AT&T Co) so they should've been aware?

</comment></comment></comment></comment></comment><comment><USER69> Microsoft _now_ aren't that great with the following examples:

* Constant starting/shuttering of their mobile OS offerings.

* Disregarding user privacy in Windows 10 (and extending that to Windows 7/8 via updates)

* Forcing users of Windows 7/8 to update to 10. It's basically malware at this stage.

* Removing admin abilities in Enterprise offerings of Windows 10.

<comment><USER70> What admin abilities were removed in Windows 10 Enterprise?

<comment><USER71> For one, you can no longer completely disable certain (feature) updates. The most you can do is delay the feature by a year.

<comment><USER70> That doesn't seem to be what they claim in [1] for a managed environment. We are still using 2008 R2 and Windows 7, but it is getting to the point where we need to at least upgrade Windows Server. What a headache.

[1] [https://technet.microsoft.com/en- us/itpro/windows/manage/int...](https://technet.microsoft.com/en- us/itpro/windows/manage/introduction-to-windows-10-servicing)

<comment><USER71> You mean because of the existence of the LTSB branch? Yes, that may be an option for some. However, LTSB still doesn't give the administrator control over feature updates: it just removes feature updates completely.

<comment><USER70> No, I mean the continued existence of WSUS and Configuration Manager. Although I find it really unclear. It says under CBB servicing, "When devices are being managed through Windows Server Update Services, the same workflows are executed as with Windows Update except IT administrators must approve releases before installations begin."

Are you saying that there is no selective feature control anymore, you have to accept the entire feature pack or not? That different from the past, but it is really hard to compare since Windows didn't really operate on the CU model before. What is the analog to a feature pack?

<comment><USER71> But the bullet point immediately following that says:

 _Microsoft will not produce servicing updates for a feature upgrade after its corresponding CBB reaches the end of its servicing lifetime. This means that feature upgrade deployments cannot be extended indefinitely_

Microsoft will not keep releasing security updates for "old" feature versions: miss too many feature updates, and you also no longer get security updates. And with a declared feature cadence of roughly once per 4 months, it means when you defer a feature for more than 8 months, you will no longer receive security updates either.

As for feature packs, I do not know if Microsoft will continue to maintain optional features for the desktop. The impression I got is that they are moving towards a unified desktop image across all deployments.

<comment><USER70> Interesting, thanks for the discussion on the subject. I just can't see moving away from Windows 7 embedded / Windows 7 enterprise in the near future. I envision all sorts of nightmare scenarios where we have to redeploy all the embedded hosts because of some update on the development machines. It wont necessarily be Microsoft's fault directly, but some vendor other vendor driver or such will have to be updated due to the new 'feature' pack. Hah.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER72> Totally disagree. I love the iOS material design apps like Inbox and Google Photos

</comment><comment><USER73> TL&DR: Author doesn't like material design

</comment><comment><USER74> WebKit and Blink: Embrace, Extend, Extinguish.

</comment><comment><USER75> He says "Truth be told, just as I used Word 5.1 back in the day, I use many Google services today."

Just as? No, he paid good money for the Microsoft software.

<comment><USER76> Do you think MS Word should have been free? Or that google should have charged for it?

</comment></comment><comment><USER77> Three words for the author of this post: iTunes for Windows

<comment> drunken-serval It's mentioned explicitly as an example of what not to do.</comment></comment>


Senators Seek Ban on Texting While Driving - <AUTHOR> http://www.nytimes.com/2009/07/30/technology/30distracted.html?hpw

<comment><USER2> When you're a lawyer every problem looks like a new law. The UK tried this, first they banned talking on a 'cellular telephone' so as not to ban taxi or police radios. But this didn't cover texting, so another 3years of parlimentary debate they added texting - but this didn't cover email or IM. Meanwhile the original 'cellullar telephone' law didn't cover skype or other IP calls - or the laywers weren't sure that it would in court. So back to parliament to redefine 'cellular telephone' and 'call'.

Of course there is a perfectly good law about dangerous driving...</comment>


Ask HN: list of applicable CSS properties for each html tag? - <AUTHOR>

Seems like such a trivial question, but I'm stumped..
Can someone point me to a webpage where I can see a list of CSS properties applicable to each html tag? (e.g. the styles applicable to an <a> are: x, y, z....)
If this question demonstrates some underlying misunderstanding of CSS then please let me know. I've just started learning CSS, and so far it is my least favorite 'means of instructing a machine what to do' ever...
Tried googling it, didnt find anything.
thanks <comment><USER2> you "can" apply any css property to any element. some elements come with default behavior that might need to be overwritten.

i think your best bet is to play around with it.

<comment><AUTHOR> > you "can" apply any css property to any element

right, but if i understand correctly, only some of them are relevant / do anything - right?

>i think your best bet is to play around with it.

maybe, but I really dont like learning that way (which is why im not enjoying CSS at all so far..). i'd much rather just read the reference guide.

i'm use to using a language reference, so that for any object/component I can quickly lookup the properties / styles applicable to it. Does such a thing for CSS not exist?

<comment><USER2> > right, but if i understand correctly, only some of them are relevant / do > anything - right?

only because there is default behavior, which you _can_ typically override. you can apply any css to  to movie it around and style it like a
, but you can't do that to


COVID-19 Latest Statistics - <AUTHOR> https://www.worldometers.info/coronavirus/ <comment><USER2> (Shameless plug alert) I made a simpler version of a COVID-19 dashboard based on the Worldometer data. Currently updated every 30 min. I hope it can be useful to some of you. [https://coronavirus.gg/](https://coronavirus.gg/)

<comment><AUTHOR> Nice visualizations. Does Worldometer have an API? What did you use to make the graphs?

<comment><USER2> Thanks sir, I used react-chartjs ([https://github.com/reactjs/react- chartjs](https://github.com/reactjs/react-chartjs)). I am scraping/parsing the website every 30 min for now and then storing the result in a NoSQL db and exposing the result as an API for my frontend. Maybe letting others use my API would be helpful (well, you could use it without my consent without much trouble I guess hehe).

</comment></comment></comment><comment><USER3> It still baffles me why any nation deliberately brought infected people across the border into their country.</comment>


Hacker News written with Angular 2.0 - <AUTHOR> http://hswolff.github.io/hn-ng2/

<comment><USER2> Is everyone missing the point of this? It's a proof-of-concept app using an alpha[1] framework that, in a year or two, will likely be one of the dominant frameworks on the web. I for one find real examples like this much more useful than underwhelming "Todo"[2] examples. Yes, it's slow. Yes, it has lots of bugs but hell, at least the author is giving it a shot. I just hope they write a decent blog post about it with some of the lessons learned.

1- [https://github.com/angular/angular/blob/master/package.json#...](https://github.com/angular/angular/blob/master/package.json#L3)

2- [http://todomvc.com/](http://todomvc.com/)

</comment><comment><USER3> This is interesting, when I opened the link I thoguht to myself "this might be a nice and faster way to browse HN" ... but wow, this thing I slow. Not just slow, but the back button isn't working as well. Or maybe it is, but it loads the whole content again when you click back?

<comment><USER4> I think I've taken it as a given that any website that uses XHR to load parts of pages will necessarily be slow because of all the rest of the bloat (e.g. jQuery + 10 plugins + Angular) required to make the UI actually work while still keeping the code somewhat readable to the programmers. Basic HTML Gmail is also a ton faster than the normal version ...

You can however use CSS transitions effectively to make the user _think_ the page is faster. Just have some action flying around (it's offloaded to the GPU if you're doing it "right") while things are being processed and it won't "count" towards the user's perception of page load speed.

e.g. Your HTML-only page loads in 200ms, your XHR-/Angular/jQueryified version loads in 1000ms, but you want the user to use and like the latter. Make the page dance around for the first 900 ms, and the user will "feel" that your new version loads in 100 ms. You don't want to push this "effective loading speed" all the way to 0 or else the user will become aware of your trick. Keep it at a perceptual minimum and the user will be like "Woah!"

<comment><USER5> You cannot just paper over everything. If you're having to resort to tricks due to inherent flaws in your application stack, it may be worth reexamining your application stack.

Also, I wondered who creates that sort of annoyance. Now I know. Having half of mobile webpages have animations all over the place only makes me go "whoa" in the sense of "whoa, how do I disable this and go back to the (relatively sane) desktop site". It doesn't make it "feel" as though it loads in 100ms instead of 1000ms. 900ms instead of 100ms, perhaps, and that's stretching it. But loading in 1/10th the time? Nope.

<comment><USER4> Yeah; unfortunately the "flaws" aren't something that most people can control. HTML5+JS+CSS+[insert JS frameworks] is inherently inefficient because it's a lot of band-aids on top of band-aids. But we as front-end developers just have to live with those band-aids; we don't get to reengineer the user's browser. If jQuery and Angular were implemented in C

Compare the loading speeds of these two on your own Google account and you'll see.

[https://mail.google.com/mail/?ui=html](https://mail.google.com/mail/?ui=html)

[https://mail.google.com/](https://mail.google.com/)

Like seriously, even opening a _message_ is faster in the basic HTML version (on my system about ~300 ms vs. ~600 ms) despite it re-loading all the page chrome. I'm 99% positive that's because of all the bloat caused by the all the UI framework they used to make it happen in the regular version. The basic HTML version is so fast that it doesn't even _need_ a progress bar on load!

But of course, you as a developer want to develop the full-blown HTML5 experience because there are tons of features you can't do with basic HTML only. Also, basic HTML makes your site look dated (want a nice-looking button? You'll a bunch of jQuery bloat instead of just a <button> tag. Want a nice- looking text box that maintains a consistent height across browsers? That's a bunch of CSS bloat and putting a text box inside a fake <div> to ensure its height because different browsers have different interpretations of your CSS. Want a text box with tagging ability? That's going to be a massive, inefficient bloat of JavaScript because you essentially have to re-invent the text box from the ground up in JS)

In these cases, sometimes using effects to play tricks on the user to make it "feel" faster does help, because there's nothing we can really do about it ...

<comment><USER5> And that's why I use the "basic" interface on the (two) webmail providers I have email accounts with. Much faster, and actually handles things like open in new tab properly, among other things.

When the fancy chrome gets in the way of basic functionality, I take the functionality every time.

There is a solution. Or rather, a way of mitigating it. Namely, unlike so many developers, when you look at a "feature", consider the drawbacks, not just the positive side. When you're considering adding something to a button that pulls in umpteen billion JS frameworks, consider if the bloat is worth it. When you're starting to reinvent the text box just so you can have tags, consider if the inefficiency is worth it. When you're considering reimplementing scrollbars in JS, consider if the UI problems you'll have are worth it.

And, you know, if/when you run across something that's problematic to do well, consider feedback. Among other things, the number of features of CSS that ultimately boiled down to someone going "there isn't a good way to do <x> currently"...

I'd be interested to see the other effects of effects. I've seen things on perceived time - but that's not the whole story. Does it affect user retention? Clickthrough rates? User mood?

</comment></comment></comment></comment></comment><comment><USER6> Taking something simple and making it complex and limited, with Angular 2.0.

<comment><USER7> That's not the point of sample projects like these. It's to showcase what's possible with the technology and allow developers to see how something can be implemented.

The developer was having fun with the technology and showing others how it could be done. Let's encourage this type of behavior.

" _I created this to see what it 's like to create an AngularJS 2.0 application. I've previously experimented creating a Hacker News clone with AngularJS 1 so this was fun to play with._"

<comment><USER8> Hacker News loads in milliseconds, why does this take over 10 seconds to even start showing comments?

It's not so much a showcase as a reason to ever never use this in any product, it's obviously unsuitable for displaying even the most simple, static data without taking forever and making FireFox stutter. It's not an isolated situation with this either, other websites like this perform terribly even thought they are written in the hippest language with the most popular libraries on the market.

<comment><USER7> Hacker News loads in milliseconds because the content is generated on the server and insanely optimized. It's different architecture. Optimized server side page loads will always load faster than client size AJAX API calls + page 2x page rendering.

Of course Angular doesn't make sense for a site like HN but this is just a demonstration of what's possible with a site we're all familiar with.

A real world example of Angular is when you're working with HIPAA complaint applications which depend on 3rd party data storage sites, such as [http://TrueVault.com](http://TrueVault.com). None of the patient information is stored on the application server. Instead, it makes client side API requests to the TrueVault storage and updates the page with the data.

Yes, Angular doesn't make sense for a majority of the websites in existence but it does work well for certain applications.

</comment></comment></comment></comment><comment><USER9> Thanks so much for sharing this. I've been waiting a while to see something complete written in Angular 2.0 to see what it looks like.

Really enjoyed looking through the source on this.

<comment><AUTHOR> Glad you enjoyed! Thanks for the kind words!

<comment><USER10> Seconding that, this is far more useful than another TodoMVC implementation for getting a feel for how an Angular 2 app is put together, with multiple pages, data from an API and at least one component with more complex display logic.

<comment><AUTHOR> :) I've always enjoyed looking through your React HN site as well insin. It's very well done, kudos. Glad to see you continue to iterate on it.

</comment></comment></comment></comment><comment><USER11> To people who are complaining that this is slow, please understand that

1\. Doesn't have to do with Angular 2\. Doesn't even have to do with a single page implementation

I made a really shit take on a single page reddit client, and I'm sure you'll see that the browsing experience is actually quite nice (and much faster than using native reddit). This was written in Angular 1.3, and Angular 2.0 is MUCH faster.

[http://bredd.it.s3-website-us- west-1.amazonaws.com/](http://bredd.it.s3-website-us-west-1.amazonaws.com/)

My point is that implemented correctly, even a content site like reddit or hackernews could work quite well with a single-page implementation. Don't blame Angular for this demo, its server responses are just impossibly slow

<comment><USER12> If author see result is slow and reason is not ng2, then don't publish it. Otherwise everybody will think ng2 is slow and in next article with click- catching-title this example will be taken as proof of some "sensational" statement. Nobody will read explanations - people more trust own feelings than explanations.

</comment></comment><comment><USER13> This is a great example why you shouldn't use a client-heavy stack for a site like HN. You could, in theory, make something that's a bit better than original HN, but it requires way more work and/or quite possibly something else than Angular.

</comment><comment><USER14> The repeated animation for each content is very annoying. Would be better to have a single spinner for the whole page.

</comment><comment><USER15> Much slower, why?

<comment><USER16> Angular 2 is built for tomorrow. It uses a lot of apis either not available (and so must be shimmed which is slow) or not optimised in today's browsers.

<comment><USER17> > Angular 2 is built for tomorrow.

If tomorrow means we're going to give up serving any HTML on first render and pretend that performance doesn't matter, then yes, it's built for tomorrow.

As an aside: Meteor is in the same slowly sinking boat. React is not as you can easily render server side before pushing that initial page to the client.

<comment><USER18> I'm not an Angular user(Ember here), but in time all of the major frameworks will allow for serverside rendering. The React model works very well, and most projects are taking a lot of ideas from it. Ember will have fastboot in a couple of months to match the same idea, and it won't even require any custom code- it'll be little more than 'drop in, run server', and you're good for life.

I expect a lot of other frameworks take a similar approach not long from now.

<comment><USER17> It's really great to hear that, thank you. Nice to know the performance crowd's rants are eventually being heard.

<comment><USER18> Yup. And Ember's getting even ridiculously fast post-load, too, thanks to Glimmer. When it comes out, it should be the fastest full-fledged framework. I'm sure the others will catch up super soon though!

</comment></comment></comment></comment></comment></comment><comment><USER19> That's exactly the purpose one shouldn't use Angular for.

</comment><comment><USER20> Seems to be serving a broken page...

        <div class="bodyContainer">
          <hacker-news></hacker-news>
        </div>

<comment><AUTHOR> author here, Are you still seeing that? Can you open an issue with further details please?

<comment><USER20> It is a mistake to assume a browser supports javascript.

Angular/meteor/etc _do not generate sane output_ , as throwing up what is essentially an empty body tag (literally so, in some cases) is not only totally unusable outside the one use-case you have planned for, the page being generated is equivalent to a _server error_.

The correct solution, of course, is to render the page server side (and cache it, if you're sane), and progressively enhance any features such as XHR-style loading. Some comments later in this thread have mentioned that this might be an upcoming feature in the near future, which is great.

Without server-side rendering? That is still no excuse to serve up an empty page. Put some sort of fallback there, or a link to some alternative page. At a minimum, at least have a proper error message about how your site only only works in browsers that support javascript.

<comment><USER17> > It is a mistake to assume a browser supports javascript.

I really feel at this stage in the battle that that argument is hurting the call for server side rendering. Don't get me wrong, I have been a pusher for PE for many years but it quite clearly is falling on deaf ears these days.

The reason being is that it's very easy for someone to turn around and say "none of our users that we care about turn js off". However it is much harder to ignore the fact that initial page load times with server side rendering are minimal in comparison to the render-via-js frameworks of today.

I believe we need to follow the performance argument.

</comment></comment></comment></comment><comment><USER21> An 'isomorphic' approach would really help with that first page load time. Here's one I built with isomorphic React: [http://hackernewsmobile.com/](http://hackernewsmobile.com/)

(source: [https://github.com/jsdf/hacker-news- mobile](https://github.com/jsdf/hacker-news-mobile))

<comment><USER22> You throw the term 'isomorphic' around a bunch in the descriptions of this project. It would be nice if the README explained what that meant. I know what an isomorphism is, but have no idea what this means in this context.

<comment><USER23> They use the term isomorphic to mean that it is written in one language throughout the app. Typically, JS on the front and back end.

They really should be saying something like isoglossic (not a Greek scholar here) to imply that it's in the same language, instead of isomorphic, which implies a lot more than what they intend.

</comment></comment></comment><comment><USER24> Here is a Hacker News clone done with Vue: [http://yyx990803.github.io/vue- hackernews/#/news/1](http://yyx990803.github.io/vue-hackernews/#/news/1)

I find it easier to follow if you're looking around for alternatives.

</comment><comment><USER25> Doesn't work with JavaScript disabled. =P

</comment><comment><USER26> The perfect indictment of Web development these days.

</comment><comment><USER27> (gruff Solid Snake voice)

The web... has changed.

</comment><comment><USER28> And its better ... how?</comment>


UCDavis researcher, suspected spying, hiding in consulate now in custody - <AUTHOR> https://www.sfgate.com/news/article/Chinese-researcher-charged-with-fraud-taken-into-15432523.php <comment><USER2> I am very curious to know what lab she worked in, but there is no trace of her (apart from these stories) that I can find on the internet. She was in the lab for ~6 months, so it's unlikely that any of her research is published yet.

<comment><AUTHOR> Not all research results in a publication, especially if the postdoc's goal is espionage instead of academic credibility..

</comment></comment><comment><USER3> >Agents have said they believe Tang sought refuge at the consulate after they interviewed her at her home in Davis on June 20.

So did the consulate give her up, or did she turn herself in?

<comment><AUTHOR> Exactly- it's unclear why this is not reported..</comment></comment>