Show HN: Write the best headline for your content with this simple app - <AUTHOR>

This was inspired by Upworthy's advice [0] that for you to discover the best headline for your content, you must force yourself to write 25 of them and the best will jump out at you.
So yeah, you can do this in a text editor, or a spreadsheet, or whatever, but I had a spare evening and I wanted to cut my teeth on Facebook's React JS library. I picked a simple example and set to work. The end result is this little app. I like the idea of distraction-free writing, and a simple list-style app with no visual clutter seemed like a nice environment to write headlines.
I got a jump-start by looking at the React TodoMVC example [1], then creating a simple build process with grunt & browserify (which I've now extracted into a starter project for others to use [2]). I have to say I really like React and a lot of the design decisions it's made, although writing in the pseudo-JS syntax (JSX) took a little getting used to, but was made easier with a code highlighting plugin for Sublime.
Have a play, and let me know what you think!
http://colin-gourlay.com/25headlines/
[0]: http://www.slideshare.net/Upworthy/upworthy-10-ways-to-win-the-internets
[1]: http://todomvc.com/labs/architecture-examples/react/
[2]: https://github.com/colingourlay/grunt-init-browserify-react-stylus <comment><USER2> Nice work. I skimmed too quick and thought your app was going to provide me with 25 headlines when I paste a youtube link. Talk about a challenge.

You've got a really neat interface, I like it. I also read on Quora about upworthy's headline generation process, it's fascinating.

<comment><AUTHOR> That's definitely something I'm interested in doing.

The way I see it is, you'd provide all the actors (people, places, objects), actions, and it would generate a maybe 4 or 5 to get you started by mixing in different styles of headline, from spoiler-style right through to linkbait. You can then carry on, depending on the style of your website.

There's better people than me out there to attempt that kind of stuff, but I'd enjoy taking a stab at it myself.

</comment></comment><comment><AUTHOR> Clickable link: [http://colin-gourlay.com/25headlines/](http://colin- gourlay.com/25headlines/)

</comment><comment><USER3> Looks good to me! I went straight to the site without reading your post and was confused about what I was supposed to be doing, but I did come up with some some silly headlines.

<comment><AUTHOR> Yeah, it's in early stages, so I've not gone as far as writing hints/instructions into it to set expectations. It's based on the TodoMVC apps, so you can double-click an existing headline to edit it, but I'm still working out how to best enable that functionality on mobile.</comment></comment>


Wal-Mart Cuts Workers' Hours After Pay Raise Boosts Costs - <AUTHOR> http://www.bloomberg.com/news/articles/2015-08-31/wal-mart-cuts-some-workers-hours-after-pay-raise-boosts-costs

<comment><USER2> There should be a law that says if you do this you must give the workers more flexibility in work hours/shifts.

Like letting people pick days they will work. So that they have a better chance to supplement income with other jobs without bending over backwards working crazy times of the night so as not to conflict with their other job.</comment>


ZipCPU – A small, lightweight, RISC soft core in Verilog - <AUTHOR> https://github.com/ZipCPU/zipcpu <comment><USER2> Jan Gray is, I think, more-or-less the Godfather of this approach. I especially enjoyed his Circuit Cellar 3-part series where he describes and builds the xr16 -- a 16-bit machine whose instruction set is designed to well- match the LUT capabilities of an FPGA. I implemented it, and with the LCC C compiler, I was able to run plenty of code. Start here: [https://github.com/BigEd/XSOC-xr16/blob/master/doc/xsoc- talk...](https://github.com/BigEd/XSOC-xr16/blob/master/doc/xsoc-talk.pdf) which is the presentation; then check out the rest of the repo doc: [https://github.com/BigEd/XSOC- xr16/tree/master/doc](https://github.com/BigEd/XSOC-xr16/tree/master/doc) and although it's not maintained these days, his old site is also useful: [http://www.fpgacpu.org/xsoc/xr16.html](http://www.fpgacpu.org/xsoc/xr16.html) for more modern stuff, see [http://fpga.org/](http://fpga.org/)

<comment><USER3> Jan Gray is one of my heroes. I definitely look up to him, and I've enjoyed my interactions with him and the encouragement and advice he's offered me.

</comment></comment><comment><USER4> I always wonder why Niklaus Wirth's RISC5 architecture[1] (not to be confused with RISC-V) doesn't get more love. From my perspective (but I'm no expert on this) it seems exceptionally simple and elegant while still being able to run a desktop OS [2].

[1] [https://inf.ethz.ch/personal/wirth/FPGA- relatedWork/RISC.pdf](https://inf.ethz.ch/personal/wirth/FPGA- relatedWork/RISC.pdf)

[2] [https://i.redd.it/ukagn6imtiv01.png](https://i.redd.it/ukagn6imtiv01.png)

<comment><USER5> Probably doesn't help that googling for "risc5" brings back RISC-V results.

<comment><USER4> True, the name is unfortunate, but it predates RISC-V quite a bit.

Using: 'risc wirth' as a query yields more accurate results.

<comment><USER6> Or google "risc5" in quotes.

</comment></comment></comment></comment><comment><USER7> Found some info in the repo's issues about how much room ZipCPU takes on an FPGA:

[https://github.com/ZipCPU/zipcpu/issues/8](https://github.com/ZipCPU/zipcpu/issues/8)

PDFs:

[https://github.com/ZipCPU/zipcpu/blob/master/doc/orconf.pdf](https://github.com/ZipCPU/zipcpu/blob/master/doc/orconf.pdf)

[https://github.com/ZipCPU/zipcpu/blob/master/doc/orconf2017....](https://github.com/ZipCPU/zipcpu/blob/master/doc/orconf2017.pdf)

[https://github.com/ZipCPU/zipcpu/blob/master/doc/orconf2018....](https://github.com/ZipCPU/zipcpu/blob/master/doc/orconf2018.pdf)

Also a list of FPGA dev boards as of 2018:

[https://www.reddit.com/r/FPGA/comments/9yutk8/best_100300_fp...](https://www.reddit.com/r/FPGA/comments/9yutk8/best_100300_fpga_development_board_in_2018/)

So looks like ZipCPU takes between 2400 and 7372 LUTs, depending on how optimized the routing is. An Ultra96 with 154k LUTs could hold between about 20 and 64 ZipCPUs, although busses would be an issue.

I'd like to see more of these projects start from a stance of connecting to other CPUs on the same chip rather than out to main memory. Or rather, a spec should only be considered complete when it has designs for both an in-mesh core to be placed beside its neighbors in a grid, and a bus-facing core for connecting out to main memory.

I think the future is going to be a series of basic blocks like CPUs, RAMs, maybe even GPUs that can be placed arbitrarily and run as clusters for tackling big data problems using techniques like map reduce. Or better yet, maybe FPGAs that look like multiple FPGAs (each with their own RAM) running on the same chip.

<comment><USER3> I have yet to place more than two ZipCPU's on a board, mostly because I'm still working out the various bus details associated with making multiple CPUs the master of the same bus. For example, should they all have the same perspective of the address map? This I'm still working out.

<comment><USER7> Oh cool, good to hear from you! If you happen to read this, I would like to give you a vote on the direction I'm hoping for. My background is in video games, blitters, MATLAB, basically swizzling large amounts of data in various DSP-like ways. A cache miss can easily cost 100 cycles, so processors are sitting around waiting for data 99% of the time sometimes. IMHO pretty much all software today is RAM bus bound, not CPU bound. And this was true in the late 90s, so is even more true today by about 2-4 orders of magnitude (that's why single-threaded CPU performance hasn't changed much since the early 2000s).

In the beginning, caching was a nice idea to get around bus latency. But the last processor design I saw in 1999 when I graduated college had about 75% of the chip devoted to cache. I would have much preferred to have 3 more cores. But the industry kept doubling down on that, so today we're still stuck with CPUs with maybe 4, 8 or 16 cores, but only one bus to RAM.

So to me, hardware caching has been a waste of time when it comes to parallel computation. I think a better model is a software cache running at a privileged level above userland. In other words, a smart MMU per CPU, written in microcode or software that presents a uniform address space to the application. Each MMU could/should have a hash for each (say 4k) page's data, and then each CPU/MMU core would act like a router, either returning the contents of a page for a given hash, or asking its 4 or 8 neighbors if they contain the page (returning it if so, otherwise asking the next neighbors):

[https://en.wikipedia.org/wiki/Content- addressable_memory](https://en.wikipedia.org/wiki/Content-addressable_memory)

From the software side, this would look like a single deduplicated virtual memory where each unique page would appear once in the address space, usually out in the mesh somewhere (not resident) unless its core had cached the page locally while its code operated on it. At most, a page would only be an x+y hop from any of the neighboring cores, and a thread in each core should block until the page is resident (just like with any other cache or virtual memory).

The next step is to deal with mutation via a copy-on-write mechanism:

[https://en.wikipedia.org/wiki/Copy-on- write](https://en.wikipedia.org/wiki/Copy-on-write)

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

So if an app has the same string allocated 10 times, only one page would hold the original data. The other 9 would be mapped to that first page via virtual memory. Everything could/should be immutable, so when a string is modified, it allocates a new page for the data with its own unique hash. The original string would eventually be deallocated through a least recently used (LRU) strategy, or perhaps each MMU could have some notion of garbage collection that preserves a single unique page somewhere in the mesh until all cores no longer reference it. A quick and dirty way to deal with this later would be to recommend that the mesh be hooked up to a large flash memory (over 1 GB) where old pages could be written to be stored indefinitely until storage runs out (the same as with traditional virtual memory).

The most elegant way I know to implement this would be to run something like Clojure in each MMU:

[https://clojure.org/about/state](https://clojure.org/about/state)

[https://clojure.org/reference/refs](https://clojure.org/reference/refs)

A more "hands on" way to think of this with ugly syntax is Redux:

[https://www.freecodecamp.org/news/an-intro-to-redux-and- how-...](https://www.freecodecamp.org/news/an-intro-to-redux-and-how-state-is- updated-in-a-redux-application-839c8334d1b1/)

So basically the MMU would treat every read/write like a transaction and insulate the userland code from having to deal with routing and deduplication. Then each (say 32 bit) userland memory address would map to one of the CAM data hashes so that ordinary compiled code can run unmodified. All of the CAM and STM stuff should happen entirely in the MMU. If we're mapping 32 bit addresses to data hashed using a 160 bit (20 byte) SHA-1, then the MMU can treat that 20 byte hash like a pointer and utilize standard garbage collection algorithms. The easiest one I know is to refcount allocations, freeing the data when it's no longer referenced:

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

The hardest part will be handling circular references. Unfortunately this is an open problem, but maybe you can borrow established techniques from something like Java:

[https://www.google.com/search?q=garbage+collection+circular+...](https://www.google.com/search?q=garbage+collection+circular+reference)

A proper MMU implementation should be able to run as something like a kernel extension so that the whole chip can reach out to other chips in a cluster or the internet, using a convention similar to IPFS:

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

[https://hackernoon.com/a-beginners-guide-to- ipfs-20673fedd3f](https://hackernoon.com/a-beginners-guide-to- ipfs-20673fedd3f)

The goal I want to accomplish is to get away from the constraining SIMD that's been hyped by video cards, TensorFlow, etc and replace it with the general purpose MIMD of vector languages like MATLAB but in a parallelized way. From a user standpoint, we should be able to write code from vanilla C all the way up to rapid application development languages like Elixer or Go, where everything is synchronous-blocking, and pipe data to/from other processes via channels and the Actor model (the same as UNIX executables), so it looks like we're running in a single computer with say 256 cores and ~256 buses to small local RAMs so we can use high throughput techniques like MapReduce. Here are some breadcrumbs for what I'm getting at:

[https://news.ycombinator.com/item?id=17419917](https://news.ycombinator.com/item?id=17419917)

[https://news.ycombinator.com/item?id=18294939](https://news.ycombinator.com/item?id=18294939)

[http://aggregate.org/MOG/](http://aggregate.org/MOG/)

Anyway, sorry this got too long. It's a lot to digest, but I've been thinking about it for over 20 years. The takeway is that perhaps you can punt on the MMU for now, and research adding something like a Lisp machine (a simple stack machine) as a coprocessor to each ZipCPU core, ideally able to run a subset of Clojure directly. It doesn't have to be fast or efficient, because it will mostly only be called for cache misses, similarly to how virtual memory reads from slower storage. Except in this case, that slow storage is the mesh itself. The MMU just needs to be able to read/write content-addressable pages to each of its 4 or 8 neighbors in the mesh, maybe with dedicated data and hash lines, or else through a packet protocol similar to UDP or Rambus serialized to a smaller bus, raising interrupts when userland tries to read data that isn't resident. The rest can be implemented purely through software. To just "get it done" without an MMU, you could run your own microkernel on each CPU with a software MMU that maps the 32 bit address space to the CAM and handles the hash routing.

Or like, do whatever you want man :-) Hope this sparks some inspiration.

<comment><USER3> I'm not sure I followed all of that, but let me at least try to look up the links and see what I can learn. Maybe they'll help me follow the concepts you are suggesting.

Dan

<comment><USER7> I realized after sleeping on it that I should clarify the core idea. With computer architecture, it's easy to get hung up thinking about things like I/O, busses, caching, etc. But I think the future is distributed content- addressable computing, where the state is just "out there" in the internet somewhere, and the runtime handles all the data locality issues so it looks like one continuous memory to the application. If we have that, then it's trivial to add processors either in the local mesh or even out on the internet somewhere.

Thinking in terms of cores connected to their 4 neighbors with a routing protocol like "do you have the data for hash ABC, otherwise ask your neighbors" or "store this data with hash XYZ" reduces the problem space to a key-value store similar to redis, so you don't have to worry about hardware caching.

For now, the network protocol could probably just be something like multicast. Packets would go to all neighbors, and they would be unconnected, unreliable like UDP. The header would either be a REQUEST with an N bit hash, or a RESPONSE with the N bit hash and the data associated with it. There might also be a TTL field that goes up to roughly sqrt(# of cores) so that packets diffuse through the network once but don't bounce around endlessly. I think that cores would be broadcasting new [hash][data] packets for every RAM write, and other cores would save all of them and evict their oldest hashes (which allows the cores to pre-cache data that's likely to be used soon). Then upon requesting a RESPONSE for a certain hash, a core would block until it arrived from the cluster in roughly sqrt(# of cores) cycles.

From a code standpoint, a page in the 32 bit address space would have a real pointer but it would map through the virtual memory manager (VMM) to one of these [hash][data] pages. So two processes in the cluster wouldn't have the same address for the same piece of data. This can be looked at as a feature, not a bug, because it enforces process separation similar to Erlang. So when a page's data is updated, the page gets swapped out by the VMM and re-hashed to a new content-addressable page out in the cluster. So it might make sense to have a coprocessor per-cpu that hashes pages for every RAM write. Or maybe the hashing could happen in the RAM write interrupt and we'd settle for the speed hit, not sure. Also it (might) be good to choose a hash that implements something where you can re-compute a partial range inside the hash rather than having to recompute the whole thing if a single byte changes. Like maybe a custom hasher could be designed that uses a divide and conquer strategy to find which half changed, and then the half in the half that changed, down to some level and append them like with the MD5 appending flaw where they make a document that looks like another document but has different data in the middle that both hash to the same hash so the documents have very different behavior. What I mean is, maybe there is a hashing algorithm that allows you to recalculate a half, or a quarter, or an eighth, down to some granularity, so the hashing could be optimized from O(n) to O(n/64) or whatever. Also after writing this out, I realized that the VMM would store (for SHA-1) a 20 byte hash for every 4k block, so roughly 1/200 of each core's RAM would go to this storage scheme.

Would this VMM be easier to build than an MMU? I don't know, but I do know that software is cheaper than hardware so it's maybe possible.

</comment></comment></comment></comment></comment><comment><USER8> A thread from 10 months ago: [https://news.ycombinator.com/item?id=18138174](https://news.ycombinator.com/item?id=18138174)

Half a dozen blog post discussions as well: [https://hn.algolia.com/?query=ZipCPU%20points%3E10&sort=byDa...](https://hn.algolia.com/?query=ZipCPU%20points%3E10&sort=byDate&dateRange=all&type=story&storyText=false&prefix=false&page=0)

</comment><comment><USER9> Of course developers are free to do what they like, but I think it's a bit of a shame that it's not RISC-V. He's missing out on all the toolchain support in GCC and Clang, plus the ability to run various embedded operating systems including these days seL4. RISC-V has an embedded profile (RV32E) and a tiny implementation of that (PicoRV32) so I'm fairly sure it could be suitable for this.

<comment><USER5> He points out the reasons it is the way it is here: [http://zipcpu.com/about/zipcpu.html](http://zipcpu.com/about/zipcpu.html)

<comment><USER10> I don't see anything specific about riscv here, am I missing something?

<comment><USER5> Reasons like learning, very small #LUT devices, etc, that wouldn't be satisfied with 32 bit Linux capable RISCV.

For example _" I wanted to know how to build a CPU. This includes learning how to build not only a CPU, but also backends for the C-library, GCC and binutils (GDB soon to come)."_

</comment></comment></comment></comment><comment><USER11> This guy posts some amazing content on Twitter, his account is really fun to follow.

</comment><comment><USER12> Just out of curiosity: What exactly would you need this for?

Is it just about learning how to design a CPU? Is it about solving a specific task a soft core on an FPGA can do better? What kind of use cases are there where an FPGA with a RISC core is better suited than some kind of microprocessor?

<comment><USER13> Sometimes when designing for an FPGA/ASIC, the easiest way to implement some sort of complex control logic is to use a small CPU.

For example, the Nvidia Tegra X1 SoC contains a handful of Falcon CPUs (proprietary ISA and core), responsible for amongst others:

\- USB 3.0 command/event processing

\- Video Image Compositor 'inverse telecine' processing

\- HDMI security

Same goes for your nVidia PC GPUs - they have Falcons sprinkled across the entire thing.

<comment><USER14> Heck, one SoC I know of has an entire cortex M3 core to manage entering and exiting sleep modes.

</comment></comment></comment><comment><USER15> I didn't know yosys did formal verification now: [http://zipcpu.com/blog/2017/10/19/formal- intro.html](http://zipcpu.com/blog/2017/10/19/formal-intro.html)

Cool.

<comment><USER3> If that article interests you, you might find this one even more interesting:

[http://zipcpu.com/blog/2018/04/02/formal-cpu- bugs.html](http://zipcpu.com/blog/2018/04/02/formal-cpu-bugs.html)

Basically, I was shocked when I applied SymbiYosys to the ZipCPU at how many bugs I found. Bug lists like this are typically company secrets, since no one wants to reveal how many bugs their product has. In my case, part of my success has been my openness.

</comment></comment><comment><USER16> GPLv3 may cause issues when embedding it in your own SoC or whatever, especially given the very proprietary nature of toolchains. Not that I mind, just sayin'

<comment><USER17> > Because Gisselquist Technology, LLC, owns all of the code for the ZipCPU and > its peripherals, proprietary licenses may be purchased.

<comment><USER3> Realistically, those who've wanted to use the ZipCPU tend to just chat with me about it and we work out a handshake agreement or some such.

Were someone to want to use it in a commercial product, I'd be more interested in some form of compensation. For now it's filling the education role quite nicely -- which is somewhat of a surprise for me since I never saw that coming when I started working on it in the first place.

<comment><USER17> Awesome! Love that you are flexible in that regard.

I was merely pointing out to GP that it wasn't "only GPL licensed", there are other options you provide.</comment></comment></comment></comment>


NASA SpaceX Crew enters iPad pin in plain view of camera - <AUTHOR> https://imgur.com/a/b8J7xuM <comment><USER2> Now you need to hop on a rocket to go steal the iPad to make use of that password.

</comment><comment><USER3> It feels bizarre that a device playing a role in space travel has a password.

But I guess a lot of Space-X stuff surprises me that way. It's a very consumer focused spaceflight system.

<comment><USER4> How do you do Face ID with a helmet visor? How do you do Touch ID with gloves? You can't leave it unlocked because the device needs to be encrypted. A pass phrase would be more secure but when you're a 400km away from the nearest threat actor there's nothing wrong with a short PIN that is set randomly prior to the mission and cleared immediately on return.

Now, maybe if iOS supported using a USB or Bluetooth key to unlock the device.

<comment><USER5> > You can't leave it unlocked because the device needs to be encrypted. A pass > phrase would be more secure but when you're a 400km away from the nearest > threat actor there's nothing wrong with a short PIN

Why have it (PIN or password) at all?

<comment><USER6> It's an iOS requirement. They would have to get Apple to build them a custom version of iOS, or root it themselves. Neither of which is very maintainable. Probably easier to just use the PIN.

<comment><USER7> It's not an iOS requirement (but possibly it makes you make one to start out, I'm not sure).

</comment></comment></comment></comment></comment><comment><USER8> 0530 = May 30 = launch day

</comment><comment><USER9> That's why device PINs are good - pretty useless without the device.

</comment><comment><AUTHOR> Can be seen here: [https://www.youtube.com/watch?v=vpedeZopDSo](https://www.youtube.com/watch?v=vpedeZopDSo) (About 40 min in, can't link directly in a live stream). Not sure how much of a problem this is but if there is sensitive information on it, it should probably also not be used in view of a camera.

</comment><comment><USER10> The question is, is the iPad set to erase all content if the code is entered wrong 10 times?

<comment><USER11> Or, if it gets disabled for _25 million minutes_ could it be reset by sending it through a black hole?? /s

</comment></comment><comment><USER12> And that's a problem because?

</comment><comment><USER13> Somebody should build a service that blurs the entered pin on live stream so we can have posts like this a thing of the past.

</comment><comment><USER14> I got curious about it and it seems the PIN is 06530, which according to [https://www.tutorialspoint.com/letter-combinations-of-a- phon...](https://www.tutorialspoint.com/letter-combinations-of-a-phon..). can be these combinations, which to my dismay are not very meaningful: ['mjd', 'mje', 'mjf', 'mkd', 'mke', 'mkf', 'mld', 'mle', 'mlf', 'njd', 'nje', 'njf', 'nkd', 'nke', 'nkf', 'nld', 'nle', 'nlf', 'ojd', 'oje', 'ojf', 'okd', 'oke', 'okf', 'old', 'ole', 'olf']

EDIT: I thought iOS PINs should be six digit?

<comment><AUTHOR> It's 4 digits, he has to hit 5 twice as it doesn't register the first time through his glove.

<comment><USER14> That's not what I see in the replay of the shot but okay...

<comment><USER15> Another comment pointed out 0530 is May 30 - launch date of the mission.</comment></comment></comment></comment>


Ask HN: see link to hacker news commentary on source page - <AUTHOR>

Did some searching to no avail. Does anybody know if there is a Firefox plugin or GreaseMonkey script that, when you're on an external site that is linked to from HN, adds a link to the HN commentary for that page? For example I'm on http://supercoolbitcoinnews.example.com/omg-another-bitcoin-article and somebody has posted the url to HN, the plugin/script adds a clickable link somewhere obvious on the page so I know that there is a) already an article on HN and b) can easily go to HN and read the comments there. <comment><USER2> Hacker News Sidebar [https://chrome.google.com/webstore/detail/hhedbplnihmkekhgma...](https://chrome.google.com/webstore/detail/hhedbplnihmkekhgmaoikgfbkjjaocnl) (didn't test it)

Also check the ongoing contest <http://news.ycombinator.com/item?id=2672793>

<comment><AUTHOR> Thanks. Still no luck, don't use Chrome day to day, and the original GreaseMonkey script that it's based on doesn't seem to work for me. Might give it a crack myself some time.</comment></comment>


Myth debunking: WebViews suck, everything should be native - <AUTHOR> https://m.signalvnoise.com/debunking-android-myths-webviews-suck-so-make-everything-native-cea5f8a8db87?source=latest <comment><USER2> > Does every single screen need to have 60 fps animations, with activities > that launch from where my finger touches the screen? Does fidelity matter on > an admin screen?

But this is the exact "myth" you claimed to "debunk". This is why people claim WebViews suck.

If you want to trade user experience away to reduce development work, that's fine. Lots of people make that compromise. But your claiming this is a "myth", and then admitting it's true.

Users may not always articulate this fully, but users do notice when apps are "janky" \-- when animations aren't fluid, or when UI doesn't accurately respond directly to their input, or when screens "flash funny" because your switching between native activities and webviews.

You may not care about the experience that has been lost. And perhaps your particular customers don't mind that loss of care for the details. That's not inherently bad in any way. But it's not a "myth" either, you _have_ lost a part of the experience you could have offered.

<comment><USER3> _> janky, animations aren't fluid, UI doesn't accurately respond directly to their input, screens "flash funny"..._

Those were problems in 2013 and 2014. It's not the current state of things. Our users can't tell the difference from Native apps and we have conducted quite a bit of research... Nowadays those problems simply signal that "you're a mediocre dev" (probably in all platforms).

 _> If you want to trade user experience away to reduce development work, that's fine. _

This is the reason why some people help to perpetuate "the myth". UX, if you know how to build an app properly, is not affected anymore. Don't believe it? Check apps like this one...

[https://www.youtube.com/watch?v=hlykw4Z73sA](https://www.youtube.com/watch?v=hlykw4Z73sA)

[https://play.google.com/store/apps/details?id=com.bitpay.che...](https://play.google.com/store/apps/details?id=com.bitpay.checkout&hl=en)

Arguably the best UX for bitcoin payments. Not a single complain about flashiness, clunkiness, etc... And the impact in the battery is orders of magnitude smaller than native apps like facebook. It uses cordova like many great bitcoin apps...

PS: I'm not affiliated with Bitpay in any way, just very thankful and impressed with their cordova projects.

<comment><USER4> Using "WebView" doesn't just mean performance issues. It's a matter of choosing the very stack itself. You're starting out with browser as your base. There are many things that come with that decision.

Also that Bitcoin app is a bad example because it's a very simple app.

To be clear, I have programmed in both native ios, ionic and native android. I'm primarily a iOS developer so had no idea how Android worked when I first tried building an android app, so when I first tried my "cross platform" app on an android phone I was shocked to find out there are so many details that make it feel NOT native. iOS and Android have very different UI and you need to build for those experiences if you want to really optimize for user experience. It's not just a matter of performance. That's why I learned java to build natively.

Lastly, in this and age, why not just learn react native instead of boasting about how still using web browser is good enough? You really have no excuse here if your reasoning is that you want to use web technology to build native apps.

<comment><USER3> _> You're starting out with browser as your base. There are many things that come with that decision. [...] why not just learn react native instead of boasting about how still using web browser is good enough? _

Because for instance I can use native HTML APIs like WebRTC without 3rd party libraries and I can reuse many great JS libs, which I'm familiar with.

 _> Also that Bitcoin app is a bad example because it's a very simple app._

It's the perfect example because it reflects that it _all depends on the use case_ , and that are use cases that will better fit your company stack. In bitpay's case, they're heavily invested in JS/Node. So it just makes sense (like in many other cases/companies).

A good lead (tech, manager, etc) will always pick the proper tool for the task, taking into account many aspects of the project: business decisions, UX, costs, current work force, current stack, available libs, etc...

What I'm trying to say is that Hybrid has it's place. It's not all hybrid or all native. It depends.

</comment></comment></comment></comment><comment><USER5> _Speaking as a desktop user,_ I despise webview apps.

Until WebViews or web apps can offer the same buttery smooth scrolling and responsiveness as native apps, until they don't immediately look and feel out of place from the rest of my environment, until they not drain my CPU and battery, until they can offer standard menus and seamlessly interface with all the features of my operating system, like notifications, a unique icon in the Dock/Taskbar/app switcher, and OS X services and the like, native _is_ the way to go.

Most of the purported advantages of web views in these arguments read like the excuses of lazy developers (or small teams with limited time), unwilling to acquire expertise in each of the major OS platforms and [re]learn all their APIs and GUIs and their quirks. It's understandable, but it definitely results in a diluted experience for the user.

<comment><USER6> The battery thing is huge. I'm not a professional GUI developer but I've done quite a bit of GUI work as part of my real job, Motif, Tcl/Tk, PowerPlant, MFC, a range of different technologies over the years. Something that wouldn't have even moved the load average needle on a SPARC 20, 20 years ago, shouldn't be pegging a cpu core on a modern machine and making the fan spin like an aircraft taking off.

<comment><USER7> This cannot be said enough. I do not like talking about the past a lot as that is useless but yes: I did make a lot of complex apps natively on unix and windows machines many years ago and recently for fun or symbos: if you make similar apps on current system with web tech the cpu gets a massive hit for things that should not even be moving the needle. And on native tech it doesn't: but on tcl/tk it does not either which is not native.

I know this is the future, but with my job in which I do a lot of embedded software and mobile software next to web stuff, the web stuff really seems to be the cpu and memory killer which in turn drain the battery very fast.

Not sure if there is a solution if the biggest companies in the world cannot prevent their applications from doing that though.

</comment></comment></comment><comment><USER4> WebViews do suck on mobile and it's not a myth. People talk about how it's catching up but that's the problem: it will be a perpetual "catching up" game, forever. Devices are built with proprietary technologies and they will forever keep adding new features. HTML is a standard which can only progress through a long process of debate and agreement. They will probably end up implementing only those features that are at the intersection of Android and iOS feature sets.

The title of this post is a lie. What the OP is saying is "It sucks but what are we gonna do? Hire more native developers for all platforms?". I don't know how that's a "myth debunking" for "webviews suck".

</comment><comment><USER8> "Does every single screen need to have 60 fps animations, with activities that launch from the exact x/y coordinate where my finger touches the screen?"

This makes it sound like smoothly animating a few rectangles is hard. The only reason it is true is because the web stack is, for lack of a better word, complete crap. It was fine for rendering static text and a couple images with no graphics acceleration, I guess.

Today, AAA games can redraw complete frames of 3D worlds inside of 16.66ms (along with processing physics / gameplay / networking / input) and I'm supposed to accept slow and janky GUIs on my desktop?

I just can't. I tried Atom, and even though it's usable, it's not exactly snappy. The complete waste of my hardware's resources makes me too sad to enjoy any good feature it might have. The web is stuck with this, that's "fine" but could we keep the desktop out of it?

<comment><USER9> Why do you think its so bad? Javascript and HTML are plenty fast, and if need something faster you have access to a raw GL context and associated APIs.

<comment><USER8> They are not plenty fast. You know you don't have a fast platform when the best you can do is scroll + a couple animations at the same time.

And even then, HTML+JS apps often cannot do that without lag. Not saying that native apps are necessarily better (especially on Android), I die a little inside each time I unlock my phone and the unlock screen fails to keep up with my finger.

We had smooth scrolling in the late eighties on the Amiga 2000 (7 Mhz and 1MB of RAM) with CygnusEd: [https://www.youtube.com/watch?v=L41oIvre9K0](https://www.youtube.com/watch?v=L41oIvre9K0)

The fact that we barely manage to do that with HTML+JS on what amounts to supercomputers (relative to the time) should not make anyone proud.

</comment></comment></comment><comment><USER10> All of the listed reasons relate to the experience of software development, not the user experience. Of course it's harder to maintain native apps plus a web front end to a service. Users don't know or care how many developers were involved or how much money it cost or how much of a pain it was to keep everything consistent across multiple code bases. They just want the least terrible experience possible.

I don't think there was ever a myth that needed to be debunked that everything should be native, both approaches have their pros and cons. All that really matters is how aware you are of what those pros and cons are, and how you weight the ones that you are aware of given your context. Collectively that determines if you need a native app or not. Most likely neither approach will be ideal (i.e., pros == 1.0 and cons == 0.0), so the real question is what heuristics do you use when choosing your poison for your project and for your team.

Towards the end it seems like that's the point that was being made (i.e., "nothing's perfect but here's why this was the best approach for us in this particular case"). That's the opposite of what was promised up front though.

</comment><comment><USER11> Just a side note, somewhat related. I'm very interested to see where this argument (webview vs native) ends up. Say in 10 years. It seems to me that every time there's a "proprietary" vs "open" argument, for a short while the proprietary side wins the battles, but long term it seems the "open" side of the argument always wins the war.

<comment><USER3> All the UX Research we've done with our customers shows that _100%_ of them CAN'T differentiate Native mobile apps from _2015 /2016 Hybrid apps_.

I'd say 2015 represented the turning point and from now it will only get better with things like web workers (UI decoupling), WASM, and upcoming HTML5 APIs.

<comment><USER12> Yeah, I don't believe this. You're clearly not an unbiased observer here, which is fine, but I'm skeptical of your "research".

<comment><USER3> It's ok to be skeptical. I don't trust everything I read in forums. So I invite you to ask to your customers what works for them and what doesn't.

</comment></comment></comment></comment><comment><USER13> Most of these arguments boil down to things that benefit the developers, but not the user.

<comment><USER14> Except benefitting the developer can have an even larger benefit on the user.

</comment></comment><comment><USER15> Modern web browsers are VMs. They are for GUIs what the JVM is for server software. I don't blame developers for moving towards using VMs everywhere.

It's really a huge loss for the JVM that it couldn't do what browsers did. I guess the server-money kept rolling in and they local-optimized themselves themselves into bad security (for running untrusted code) and a hopeless end user experience. It really shows the strength of open standards with competing implementations.

</comment><comment><USER16> As a mobile developer, I do appreciate WebView. Using it in the right place for the right situation works great, and proves to be a much cheaper solution than any other things.

But I would disagree with using it as the main building block for an app. There are many gray area I'm not sure if WebView can handle well enough, e.g. offline mode, screen orientation change/state restoration, first time rendering without delay etc.

</comment><comment><USER17> Webview vs. native arguments aside, the work culture at Basecamp sounds like a great one.

<comment><USER18> It really does. The article also offers a nice perspective on how to balance native vs webview UX design.

</comment></comment><comment><USER19> All my mobile dev friends cry, native, native, native!

On the desktop, I use both Slack and Atom on the regular and haven't had any issues. (Or at least, not since since they did some optimization of Atom.)

I'm curious how React Native's "learn once, write twice" philosophy will play out in this ongoing native vs webview argument.

<comment><USER20> I regularly have issues with Slack's desktop app using a tremendous amount of CPU and memory given the functionality it's offering.

<comment><USER21> My coworker has a Mac Pro with 64GB of ram and regular posts screenshots of Slack and Spotify using 20GB + of ram. Granted he never closes those app ever, until they become a problem.

</comment></comment></comment><comment><USER22> There is a place for hybrid apps but it is a specialized place: If you have so much content that changes so fast and that needs so many variations in rendering that you end up building something browser-ish to render it, as in a large e-commerce site with dozens of product categories, each with specialized presentation requirements, use a WebView in the parts of the app that display that content.

But if you app has a less challenging kind of content to present, use a native app. If you don't, you are not being very nice to your user. In addition to not presenting the nicest UI, you're using up the user's battery and crowding other apps out of memory.

</comment><comment><USER23> Ever seen instagram fail? You'll see the app without CSS. One of the best known UXs and its mostly webview.

</comment><comment><USER24> > The reason people feel that way is because we've been conditioned to think > the "right way" to build apps is by making everything a native screen.

This is exactly the issue, isn't it? People weren't told to hate webviews, but _conditioned_. They've been conditioned by years of experience with webviews and webview-based apps being vaguely shitty. They might not even be able to tell you precisely why. It can manifest as a vague sense that something's not quite right, like working in an office with crappy lighting or the first hints of unexpected fatigue as an infection works its way into your system. You can't _debunk_ that kind of association; you have to create new experiences and new conditioning.

</comment><comment><USER25> Decent article, though I guess from the title I was expecting a deeper tech dive - maybe a tech comparison - as to when using webviews is sufficient vs going native. (I say this as my not being an android/mobile dev. so it could merely be my naivete.)

</comment><comment><USER26> WebWiews ain't a bad per se, it's very convenient to leverage html responsivness. It's the heterogeneus mess that is device support, only partly solved by crosswalk, where the problem starts

</comment><comment><USER5> After reading all the comments here I think developers and users should arrive at a compromise; we (the users) will accept WebView apps and put up with their clunkiness, but developers should pledge to make native versions as soon as they can if their thing becomes popular.

Acknowledge the WebView versions as a beta, because that's what it is; a less than optimal experience for the users.

Treat WebViews as a prototyping tool and please don't sugarcoat it as "indistinguishable" from native apps because they aren't.

</comment><comment><USER27> Controlling sound playback in a WebView can be quite frustrating at times.

I have struggled just to turn off the sound generated by an HTML5 game being displayed through a WebView. The sound would simply not stop on certain device/SDK combinations.

Of course, you can load a blank url into the WebView. But that's a big hammer. And you lose game state.

</comment><comment><USER28> I like to develop with Ionic. It abstracts so much pain from a developer, especially given that you need one developer to put together an app that works on Android, iOS, desktop and (hopefully soon) Windows Phone, versus at least four different developers.

</comment><comment><USER29> Ever since google decided that webviews shall not have adblocking I hate it when apps use them. They sort of do on ios but not on android. After adblocking got started web ads have gotten so much worse, and I have zero tolerance for it now. Ads everywhere. Distractions. Empty spaces. Blinking. So open a link in a webview and you run a pretty serious risk I uninstall your app then and there.

The twitter and facebook webviews to open links are just plain evil.

Same reason I use firefox on android over chrome.

</comment><comment><USER30> Maybe you guys should check out Jason www.jsonclient.org which I posted yesterday :)</comment>


The 'booth babes' of CES - <AUTHOR> http://venturebeat.com/2014/01/08/meet-the-booth-babes-of-ces-and-read-what-they-really-think-about-attendees/ <comment><USER2> First: _" They don't approach except to shyly ask for a photo."_

Then: _" The younger ones in previous years used to ask for my number a lot."_

The article is pretty much void of content, just a couple of booth babes giving personal (and contradictory) anecdotes.

<comment><USER3> This isn't contradictory at all. What they mean is that they would like to be engaged as people with their own thoughts, ideas, and opinions -- not hit or creeped on.

I know that the irony there is that they are marketed and dressed in a manner to appeal to the male sexual mind, but I'd like to think we've evolved beyond that (chuckles heard in the audience).

"Tell me more about what you're doing/this product." seems like a good start.

<comment><USER4> > they would like to be engaged as people

Actually, that's a creative embellishment you've contributed. The quotes from the models do not support your inference. They merely portray the actions of the men, not the preferences of the models.

The writer labels it a "pretty common complaint," but the sentence "And then you get the creepers who like to take photos without asking" could be equally taken to be backdoor bragging. Plenty of women describe encounters from strangers in order to brag about their attractiveness. (See the movie American Beauty, for example).

Plenty of women appreciate the attention of men. In fact, later on, one of the models says, "I love my techies."

Downvote me if you want - this is a throwaway - but if you ever want to understand women, you'll re-read my words until you understand them.

<comment><USER5> A hollow understanding; both men and women are given to vanity and bragging.

<comment><USER6> The men who can make money by standing around and attracting women to approach the booth are probably equally vain.

</comment></comment></comment></comment></comment><comment><USER7> We hired 2 models as greeters at a entertainment park owned by a PE firm I interned at in Dallas. The woman was so beautiful that I couldn't have a normal conversation with her for quite some time. The guy was as good looking, and it just felt natural to chat to him in a very relaxed way. So I trusted him and was intimidated by her. I was on site most days and realized what was happening, and tried to change my behavior. It was surprisingly difficult even when I knew what was going on.

So the question is - why not hire male models to pitch wares? And the challenge is to be aware of the effect of beauty and to change our behavior.

<comment><USER8> You're intimidated to talk to her, but she definitely catches your attention. Booth babes are eye candy. If people interact with them, better, but I'm sure the company won't mind if people want to hangout around the booth just because of the beautiful girls. There's people other than booth babes who can pitch and sell products.

</comment></comment><comment><USER9> _" "You kind of wonder where you're picture's going to end up," she says"_

I wonder the same. What are the 'legitimate' points of taking pictures of or with these women? So that you can offer photographic proof to your friends back home that you have indeed once been near a woman?

Then again, I don't understand the point of tourists taking pictures of national monuments, so maybe I'm just missing the core concept of pictures...

<comment><USER10> I got a counter question? What legitimate point of putting hot girls anywhere near technology conference? Those booth models are there specifically to draw attention to themselves and the product they represent. Sex sells.

<comment><USER9> Legitimate was the wrong word for me to use, I'm getting at the difference between "actual" and "excuse".

"Sex sells" is the "point", legitimate or not. For better or worse, "sex sells" seems to currently be accepted by society. Nobody really makes an excuse for it.

I'm wondering what _excuse_ for taking pictures with them is, since presumably _" so I can jack it later"_ is not a socially acceptable reason. That reason, while I suspect it is the _actual_ reason, is left unstated so that both parties can pretend there is another reason.

</comment></comment></comment><comment><USER11> I have never been to a conference with "booth babes" but this question I have also asked:

"If CES attendees feel intimidated by a booth spokesperson, why is that spokesperson chosen to do the job? Why not let the models dress down, adopt girl-next door makeup, and proactively demo the products instead of standing around in heels waiting for the next photo opp?"

<comment><USER12> Booth babes are not there for the attendees there there for the free publicity outside the event as their picture is posted on various websites etc.

<comment><USER13> I'll grant that for the sake of argument, but does that kind of publicity do any good for the event or the people presenting their products there?

<comment><USER14> The companies know sex sells. The photographers from the media know sex sells. The media publishing the photographer know sex sells.

Science knows that sex sells. [http://www.popsci.com/scitech/article/2008-04/sex-sells- what...](http://www.popsci.com/scitech/article/2008-04/sex-sells-what-price)

So yes, my guess is the booth babes help raise product awareness, product exposure, and desire for the product.

</comment></comment></comment></comment><comment><USER14> from the article:

> During my show-floor travels, I confirmed my hypothesis that the so-called > "booth babes" are worthy of so much more than objectification. But these > women surprised me with some of their insights, namely that sexualizing them > is bad for business.

> A nameless, hot object is something you want to look at. But to get to know > the person and the product she represents, you have to see her as a person.

I don't get it. Are we dating?

A company hires a woman to put on a bikini and in a conference hall where everyone else is dressed casually, this woman walks around dressed to go swimming.

And yet, the woman doing this complains how she is being victimized by the evil men who objectify her during their 120 seconds with her.

Somehow the company shouldn't hire her to walk around in her bikini and the male attendees shouldn't objectify her and that their awkward behavior around her signifies much more than that she is dressed in a bikini in a conference hall where everyone else is dressed casual or in a suit and tie.

News flash: she is objectifying herself.

<comment><USER15> _I don 't get it. Are we dating?_

No, the author is just suggesting that to most effectively pitch the person/product they represent, reps need to be approachable. After all, isn't "build rapport" step one of sales? Now, whether the models are there to pitch anything in the first place is a different question.

 _And yet, the woman doing this complains how she is being victimized by the evil men who objectify her during their 120 seconds with her._

Doesn't read like that to me. The only one pushing any kind of agenda in the article is the _author_ , who is not a booth babe.

<comment><USER16> The author is not embarrassed about pushing an agenda, either:

'Would she classify them as desperate nerds? She laughs a bit nervously. "I guess so."'

So we're getting the author's words coming back out of the models' mouths. This is of limited interest.

</comment></comment></comment><comment><USER17> In the past I had 4 very attractive female employees. I hired one...and then she brought her friends around and one-by-one I ended up hiring them. At trade shows(and expos) the customers assumed they were 'booth babes' and not our actual employees. It was frustrating to say the least.

</comment><comment><USER18> Source: My girlfriend does promo modelling from time to time.

Here are a few things that I found interesting:

* Bikini modelling (perhaps obviously) pays the most. Numbers are in the $50-75/hour range.

* For non-bikini modelling, liquor gigs pay the most. About $35/hour. Non-liquor gigs are roughly $20-25/hour.

* A lot of girls do this full-time.

</comment><comment><USER4> > One has to wonder: If CES attendees feel intimidated by a booth > spokesperson, why is that spokesperson chosen to do the job? Why not let the > models dress down, adopt girl-next door makeup, and actively demo the > products instead of standing around in heels waiting for the next photo opp?

publicity != information. /thread

> their insights, namely that sexualizing them is bad for business.

Hmmm. Any chance their insights are .... wrong? What's my evidence? I dunno, models make $50-75/hour while the CEO of the company who hires them makes millions a year?

Actually, I suspect the author is putting her words into the models' mouths. Did the models really say they thought sexualization was bad for business? They said the men were shy and didn't approach them, but linking that to bad business practice requires several more conceptual leaps.

Just another woman-judges-women story.

</comment><comment><USER19> Why is this a story every year at every conference on earth? Yes, they're women, and they're placed to attract less-than-intelligent customers, who happen to be the target audience of almost every advertising effort on earth.

Where's the story?

<comment><USER20> The story is "Articles about booth babes get a lot of clicks"</comment></comment>


Anonymous MSFT developer admits Linux is faster than Windows - <AUTHOR> http://www.zdnet.com/anonymous-msft-developer-admits-linux-is-faster-than-windows-7000015236/

<comment><USER2> Already discussed at length here:

<https://news.ycombinator.com/item?id=5689731>

</comment><comment><USER3> Who would have thought?

..

Gobsmacked is the word that comes to mind. You be the judge of sarcasm.</comment>


Show HN: Procrastinating? Take a 5min break without leaving your computer - <AUTHOR> https://break45.com <comment><USER2> I noticed a lot of my procrastination came from habit. Opening Reddit, or Hacker News was the path to a surge of dopamine. Where as getting down to work didn't have the same surge. So I tried to just block "bad sites". That helped, but I still found myself occasionally opening a new tab, than out of habbit going to one of the sites. What I needed to do was remove the root cause. So I wrote this script ([https://gist.github.com/steven-p- walsh/9b7c0ffd2fe4817d67459...](https://gist.github.com/steven-p- walsh/9b7c0ffd2fe4817d6745951766f5a0f0)) it's like a shock-collar for social media.

<comment><USER3> I've blocked Reddit and HN on my desktop, now I am watching more YouTube, drink 3 times as much coffee and tea and am hyperaware of what's going on outside of my window.

Seems that specific websites aren't the cause, the problem is much deep than that.

<comment><USER4> If the problem is "I can't bring myself to focus on this task", the mediums used to distract yourself are irrelevant.

<comment><USER5> Agreed, but if that is the root problem, is there a solution?

<comment><USER6> The solution is to push back on whoever assigned the task to you and what the value of it is, what the end result should look like, etc. If it's worthless effort and busy work, make them understand it. If it's just the boring drudge that makes the better things happen, at least you can be engaged in the end goal.

</comment></comment></comment></comment></comment><comment><USER7> Redirects to "Whoops, it failed." error message.

<comment><USER8> Whooops!

<comment><USER9> another - Whoops, it failed.

<comment><USER10> They should at least change it to, "Whoops, it failed. Now get back to work, clickboy!"

</comment></comment></comment></comment><comment><USER11> Optimal time for breaks vary. You should figure it out yourself. When it comes to productivity it's 52 minutes work time vs 17 minutes break[1]. There is also 'pomodoro technique'[2]. There is also kind of interesting work (which can be extended to topic of procrastination) done by Mihaly Csikszentmihalyi [3], namely - idea of 'Flow'.

From personal perspective I would say to also look at how do you eat, sleep, spend your free time and take any substances (alcohol, drugs, cigarettes...). Even if this is not an ongoing thing but occasional it has tremendous effect on ability to concentrate for long periods of time. Excessive carbon based (or worse, sugar based) diet can make you hyperactive (same as excessive fat based diet can make you dull btw). Again, that's a personal perspective.

As last resort, there are some supplements which could help you with concentration, not pharmaceuticals, there are a lot of natural nootropics[4] you can get anywhere.

Bottom line, if you waste time on Internet - just stop. There is no other way. Blocking websites can help, but in the end, you need to choose not to visit those. It's addiction as any other. And don't treat this post as advice, everybody needs to figure it out himself.

[1][https://lifehacker.com/52-minute-work-17-minute-break-is- the...](https://lifehacker.com/52-minute-work-17-minute-break-is-the-ideal- productivi-1616541102) [2][https://en.wikipedia.org/wiki/Pomodoro_Technique](https://en.wikipedia.org/wiki/Pomodoro_Technique) [3][https://en.wikipedia.org/wiki/Mihaly_Csikszentmihalyi](https://en.wikipedia.org/wiki/Mihaly_Csikszentmihalyi) [4][https://en.wikipedia.org/wiki/Nootropic#Herbs](https://en.wikipedia.org/wiki/Nootropic#Herbs)

</comment><comment><USER12> I love the idea! Gives us the false promise of Procrastination and gives us a failure to train our brains slowly against Procrastination. Brilliant!

Jokes aside. Excited to see what it will show when it is back up :)

</comment><comment><USER13> Even better, leave your phone and computer behind and go take a walk!

<comment><USER14> i've solved a couple of sticky problems by giving up, shutting the computer, and taking the dogs for a long walk hah.

</comment></comment><comment><USER15> When I hit the "Whoops, failed" screen, I pressed F5 to refresh the page and it started working. It tells you to turn off all devices and give yourself this 5 minutes to really put everything aside, then shows a series of nice nature scenes fullscreen.

First though, I did View Source and spent about 5 minutes trying to figure it out, thinking I should really learn some more JavaScript! Great break, now I'm ready to get back to things I need to do!

<comment><USER15> Maybe I just hit it at a lucky moment before, now it's failing again. Probably getting hugged to death.

</comment></comment><comment><USER9> did we(HN) break this :|

Failed to load resource: the server responded with a status of 500 (Internal Server Error)

Api.js:4 GET [https://b45-backend.herokuapp.com/images](https://b45-backend.herokuapp.com/images) 500 (Internal Server Error) value @ Api.js:4 value @ Break.js:39 value @ Break.js:35 $a @ react-dom.production.min.js:4978 Va @ react- dom.production.min.js:5123 (anonymous) @ react-dom.production.min.js:5975 t.unstable_runWithPriority @ scheduler.production.min.js:274 Nl @ react- dom.production.min.js:5974 Il @ react-dom.production.min.js:5958 Pl @ react- dom.production.min.js:5925 Ml @ react-dom.production.min.js:6020 _n @ react- dom.production.min.js:1737

</comment><comment><USER16> Unreadable on mobile - even if it's only meant for desktops you need people on mobile to easily read what it's about. I also just see the "whoops" message.

</comment><comment><USER17> Whoops, it failed. -- My procrastination succeeded though

</comment><comment><USER18> JS Console errors for me.

>>> Uncaught TypeError: Cannot read property 'src' of undefined at t.value (Break.js:92)

</comment><comment><USER19> I think this is a neat idea. I would love it if you made this into one of those scary image popping up and loud screaming audio pranks. Three and a half minutes in everyone would be pretty sold on just relaxing. The perfect targets.

</comment><comment><USER20> Unfortunately the pictures seem to be intentionally cropped to be low-quality with apparent JPEG artifacts. Originals look great. Granted my screen is 2560x1440, so it's more apparent, but still.

</comment><comment><USER21> Has anyone tried Focus Mate [https://www.focusmate.com/](https://www.focusmate.com/)

</comment><comment><USER22> Heh, this reminds me of the start of Portal 2 where you look at a scenic photo for exactly 10 seconds as recreation time.

</comment><comment><USER23> Seems interesting but the website won't load for me Firefox, Brave, Edge all fail.

</comment><comment><USER24> This is wonderful and works well with traditional Pomodoro.

Thank you for sharing.

</comment><comment><USER25> Whoops, it failed.

Sounds like an interesting idea though.

</comment><comment><USER26> Getting "whoops it failed" on all browsers. Might be a new level of "hit-the- monkey" annoying!

</comment><comment><USER27> Another whoops in here!

</comment><comment><USER28> whoops failed on Chrome / Win 10

nice idea though

</comment><comment><USER29> Whoops, it failed.

</comment><comment><USER30> the page only says

"Whoops, it failed."

</comment><comment><USER31> Whoops failed</comment>


A good software architect writes code every day? (Twitter poll) - <AUTHOR> https://twitter.com/yegor256/status/1051357678138736640 <comment><USER2> First define "architect" it can have wildly different meanings.</comment>


Chinese, Britain and Dutch Public transportation crack published in Oktober - <AUTHOR> http://thenextweb.org/2008/07/21/free-public-transport-in-hong-kong-britain-and-the-netherlands/ A professor has demonstrated how to copy the smart travel cards, and travel for free in London last June. Last Friday, the Judge decided that the research can be published this Oktober, leaving little time for the card makers to create a fix. <comment><USER2> Why wait ...

[http://www.wikileaks.org/wiki/Censored_Milfaire_Classic_Oyst...](http://www.wikileaks.org/wiki/Censored_Milfaire_Classic_Oyster_Card_break_paper_2008)

<http://www.wikileaks.org/leak/milfaire-classic-2008.pdf>

[http://188.8.131.52/search?q=cache:sIvjxH8Z0wIJ:wikileaks....](http://18.104.22.168/search?q=cache:sIvjxH8Z0wIJ:wikileaks.org/wiki/Censored_Milfaire_Classic_Oyster_Card_break_paper_2008+Censored+Milfaire+Classic+Oyster+Card+break+paper+2008+-+Wikileaks&hl=en&ct=clnk&cd=1&client=firefox-a)</comment>


Can MIPS Leapfrog RISC-V? - <AUTHOR> https://www.eetimes.com/document.asp?doc_id=1334317 <comment><USER2> I don't think it will. This is clearly a totally reactionary move of a company that has been absolutely trounced in the commercial market by ARM and saw the writing on the wall that once RISC-V established itself the few gaps they lived in would be eventually replaced.

This, 'throw it over the wall' style open sourcing has worked before, Docker being an example.

The problem is their current 'open' strategy is probably not open and dynamic enough to compete with RISC-V. And the consumers that don't care still don't have much reason to use it over ARM.

Maybe they can find a gap but I don't think they have a long term growth curve.

</comment><comment><USER3> Genuine question related to riscv: what is the value of a standard when a majority of it is part of optional extensions? Doesn't that make riscv a ton of distinct standards, marketed as one?

RV32I is nothing close to RV64IMAFDQCPBS. It seems like all the fragmentation standards are made to avoid packaged up as a "standard" to make sure everything under the sun can use risc-v.

(see also usb-c)

<comment><USER4> Many of the optional extensions are either trivial to implement (think multiplier/divider) with minimal logic or are almost considered standard by now (e.g. compressed, because code size is critical for embedded CPUs)

For now, the vast majority of RV CPUs will go into embedded CPUs, where an extension is a compile switch away.

In practice, I think all embedded CPUs will be RV32IMAC.

For bigger CPUs, it's pretty simply: almost all them will be RV64GC.

ISA fragmentation is nothing new: x86 and ARM don't seem to have a problem with them, and one could easily argue that those are way more fragmented than RV right now.

<comment><USER5> >RV32IMAC

Or RV32IMAC+some extension that makes sense for the application.

There's also a non-defined but planned RV32E for embedded.

>RV64GC

I suspect this will be the case at first, then a superset will take over.

e.g. bitfield operations extension and vector extension are unlikely not to be taken advantage of by e.g. Debian. Likely resulting in a few arch variants with increasingly more such extensions, such as further adding DSP and JIT extensions.

It should be a bit messy at first, and calm down later when there's a lot of frozen extensions that handle most popular tasks.

If anything, I fear calling the 'G' subset was premature. That we're already talking about RV64GC and not just RV64G does strongly point to that.

<comment><USER4> When you deal with complex telecom chips on 28nm and smaller on a daily basis, it's hard to imagine that a resource savings of just 512 FFs (the difference between RV32E and RV32I) is worth the trouble!

</comment></comment></comment></comment><comment><USER6> > Can MIPS Leapfrog RISC-V?

Not if the company will continue being run by the legal department. From industry insiders, I heard people having exchanges with them like "you are gonna fail, thus we are not gonna be working with you..."

[https://news.ycombinator.com/item?id=18701898](https://news.ycombinator.com/item?id=18701898)

</comment><comment><USER7> How much does open-source hardware really matter? It sounds really cool, and i hope it takes off. But is this really where the industry is going, or is this a flash in the pan that gets a lot of attention from people like us?

<comment><USER8> Quite a bit! Look at all the places Linux ended up. Servers, phones, embedded systems, etc. The freedom to modify and tinker encourages innovation. The cost encourages cheap experimentation.

<comment><USER9> The difference is that most of us don't own million-dollar fabrication labs. At best, we would be tinkering with FPGAs with custom cores, but FPGAs are an order-of-magnitude slower than traditional CPU ASICs.

So we the typical user can't make use of open source designs.

\</comment></comment></comment><comment>

An open source "conglomerate" of companies may work. But I haven't fully thought about the economics of it.

<comment><USER10> Linux is funded by billion dollar companies ([https://www.linuxfoundation.org/membership/members/](https://www.linuxfoundation.org/membership/members/)), and it is put into phones & cloud servers by billion dollar companies.

<comment><USER9> How many of those billion dollar companies own a fab?

Realistically, only Samsung, Intel, and TSMC can make next-generation chips. (Global Foundries just quit the 7nm race. They're going to be stuck at 12nm). Intel is fully proprietary tech, so that leaves Samsung and TSMC as the only companies that make chips for other companies.

At the end of the day, an open-source chip isn't really much benefit when there are only two manufacturers of chips.

<comment><USER11> Intel actually does do contract fab work - they just happen to be really bad at it so they don't get much business.

But there is a long tail of chip-making at older nodes to reduce cost, and for analogue integration. Risc-V is getting its start here. I hope we'll see a practical desktop version at some point, but that's not necessary for Risc-V to win.

</comment></comment></comment></comment><comment><USER12> Too little too late probably. But openness and competition is good!

</comment><comment><USER13> > MIPS' target customers will include Arm licensees looking for alternatives.

> MIPS' advantages over competitors are many. Its instruction sets already > have extensions such as SIMD (single instruction, multiple data) and DSP.

But…ARM has those things?

<comment><USER14> ARM has those things but MIPS, once this process is completed, will be open source. This makes a difference regarding license pay.

<comment><USER15> Also you can modify the instruction set, which you cannot do with Arm. Risc-V has a detailed model of which bits you can change,what is the common core and so on, which Mips will need too.

<comment><USER16> ARM has vendor extension space as well. Intel used that for DSP and "Wireless MMX" in their Xscale CPUs.

</comment></comment></comment></comment><comment><USER17> I'd really like to some new OS efforts to go along with new chips. Does it really have to be *nix on everything?

<comment><USER18> If it can't run a browser, adoption is going to be crippled, and porting a browser to a new OS is a much bigger project than writing your own OS.

<comment><USER19> Such defeatism is why we have to put up with clunky 50 year old abstractions and the over-complicated "ecosystem" of webshit we built on top of them.

<comment><USER18> (firstly, this is kind of off topic, since OS design is usually orthogonal to processor architecture, unless you've got something really funky going on)

Acknowledging the huge amount of work that needs to be done for an alternative to be adopted is not defeatism, it's realism. There have been plenty of minority, research, or experimental operating systems over the past few decades. Hardly any of them persisted, because it's a very Darwinian winner- take-all market.

<comment><USER20> > _Acknowledging the huge amount of work that needs to be done for an > alternative to be adopted is not defeatism, it 's realism._

IMO this is bit of a "the chicken or the egg came first?" problem.

The industry had a lot of needs in terms of computing when computers started becoming physically small. The very first few things -- OS, any tech paradigmae, chip designs, shell architecture and what-have-you -- that seemed to do the job good enough got 99.9% of investments and mindshare and thus even if everything we currently use is ugly and barely working, there's no economic interest to revisit the other competing standards from the dawn of computing and see if there are golden geese hidden in there somewhere.

So when a carpenter tells you "I need a natural wood and screws because that's what works best" you really should be reading that as: "nobody tried to invent better materials and joinery techniques or tooling so I'll stick to what I know".

"Good enough" is not a slogan to follow.

<comment><USER21> I really want to see an introspective, single-user, programming-centric, graphical operating system that isn't dumbed down to the lowest common denominator. A new ISA seems like a great opportunity to ditch the current models of computing for something more Genera-esque, since we now can produce commodity hardware that is powerful enough to achieve good performance at reasonable prices.

<comment><USER19> You and me both. I want something I can actually feel like I'm in control of because it not only respects me as a user but also is built on simple metaphors that map well to reality, allowing me to actually understand how it works without untangling a horrible spaghetti mess of legacy systems patched together with spit and rubberbands. Something meant to help me make my life better instead of making someone else a bunch of money making me miserable.

Sadly, I'm not aware of anybody working on such a project. Most people making "OS"s these days either just make yet-another-linux-distribution and confirm that old saying about the definition of insanity, or they're content to make some completely academic kernel that no one can use for anything but academic purposes. I wish I had the skills to start one myself.

<comment><USER21> How useful would a full-screen GUI application that runs on existing operating systems be? That way eliminates dealing with device drivers or building custom hardware.

The Lisp-all-the-way-down part doesn't seem as useful as it was originally. You could get 80% of the functionality with 10% of the work of a full OS.

<comment><USER22> > The Lisp-all-the-way-down part doesn't seem as useful as it was originally. > You could get 80% of the functionality with 10% of the work of a full OS.

You're missing the point. If the only goal was "functionality," a quick-and- dirty hack on top of existing systems would suffice.

However, the GP wants a system that's reasonably comprehensible all the way down, so he can have some confidence that it's not working against him in some way. The accidental complexity of decades of legacy software works strongly against that.

<comment><USER21> I completely agree with you, which is why my highest-level comment in this thread suggested using a new ISA, too. However, for practical reasons, it would be a ton of work to design and build hardware and a complete operating system. That's the holy grail, of course, but it's going to be hard to achieve without a large company backing it up.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER23> Here is some more info about the MIPS Open community MIPS is trying to establish:

[https://www.mips.com/mipsopen/](https://www.mips.com/mipsopen/)

Based on the FAQ, older MIPS architectures, for example Release 5 is not included, only Release 6. I don't see any info about what the exact license they plan to use.

</comment><comment><USER24> Give me a big fat MIPS pizza box for the 21st Century, and I'm in. Give me a pocketable mobile MIPS device, and I'm in as well.

As long as they both work together as platforms.

</comment><comment><USER5> >Swift added, "The 30+ year legacy of MIPS architecture should mean something. It's a value."

This reads so desperate. "should mean something" betrays they're not even sure themselves.

</comment><comment><USER25> The general rule to this type of question titles is that the answer is NO, right?

<comment><USER26> usually it goes like "technically yes but in practice no"</comment></comment>


Ask HN: How to recruit PhD students in software engineering? - <AUTHOR> I'll be starting as a professor in a few months where I'll be doing research on developer tools. I have seen that it is extremely difficult to recruit good PhD students in this topic area (even at elite schools), since most of them are heavily recruited by industry.
Any advice on attracting talented grad students in a topic area that has to compete with high paying companies? I do have funding for these students but it isn't anything like industry. <comment><USER2> How is it better for them to work for you and get a PhD rather than working in industry? I ask this as a computer science PhD student on the theory/algorithms side, where opportunities to learn how to do research fresh out of undergrad are pretty much exclusive to PhD programs. This doesn't seem to be the case for your area, but I imagine there is _some_ edge?

<comment><AUTHOR> This is a great point, and one that is difficult to answer.

The biggest reason I did a PhD is the freedom to explore the problems that I wanted. I didn't want to be told what to do or worry about short term contributions to a product/company. I imagined it a bit like doing my own startup where I have 4-6 years of funding.

<comment><USER2> Not a bad pitch, but I suppose the main difficulty is getting the pitch to potential students in the first place, which is much harder past the very top schools.

If the nature of your funding allows it keeping a close eye out for motivated undergrads and actually employing them could work to raise your profile to attract grad students. As I understand it identifying good undergrad researchers is quite hard, but it may be a good low-financial-commitment way to spin up a group of sorts?

</comment></comment></comment><comment><USER3> 79% of all CS grad students are international.

You may find a somewhat rich applicant pool of international talent that can get student visas but not work authorization. Fish in a barrel.

My college advisor was Turkish. Over 75% of the grad students in the department were Turkish. This was no coincidence. Start warming up those contacts at IIT and other well-regarded (outside the US) universities, and you may find yourself beating them off with a stick.

</comment><comment><USER4> Why is it in the best interests of those developers to persue an academic degree rather than real world experience, setting aside the rather hefty financial reasons for a moment? That seems to be the underpinning question here...

<comment><AUTHOR> Definitely. I think you are hitting on the same point that majos did. The best answer I have is the reason I did a PhD: freedom. It gave me many hours of unstructured time to explore problems I was interested in, which I would not have been able to do while working full time (I tried).

</comment></comment><comment><USER5> Is there a sub specialization you are looking at? - tools to write software / querying tools / visuzalization tools?

<comment><AUTHOR> I mostly work on the human aspects of code editors. My process is: observe actual developers to understand their problems -> design and build a tool to overcome a problem -> evaluate the tool with real users.

For example, we observed devs spending a lot managing tabs in Eclipse/VS and scrolling through files. I built a code editor that does away with tabs and instead has a novel interface for navigating code.

Brief summaries of my projects and all of my publications can be found on my website: [http://austinhenley.com/](http://austinhenley.com/). I'm interested in many different areas of SE and would be happy to let a motivated student explore their interests.</comment></comment>


Show HN: Codelines – Interactive Coding Walkthroughs in Your IDE - <AUTHOR> https://marketplace.visualstudio.com/items?itemName=Codelines.codelines <comment><AUTHOR> My friend and I have been working on a code editor plugin that let you create and read interactive coding tutorials/walkthroughs in your IDE.

We believe the way we share programming knowledge on the Internet is hugely ignored. But it's a real problem that developers face every day. How many times have you seen a snippet of code that could solve your problem but the API was now deprecated, or just simple things like code highlighting and being able to see a bigger code context.

Walkthroughs created with our plugin are actually full projects combined with text so it gives you a lot of benefits. That way you can execute the code and at the same time be able to read the "story" behind the code.

We support only VSCode for now. We are really interested in what people on HN think about this. Please, feel free to ask any questions.</comment>


Ask HN: Sources of remote work that gives you a chance? - <AUTHOR> Hi HN,<p>I've been reading this board for many years now and have a serious need for your help right now. I'm in Ecuador and there are no jobs hiring here now and my wife, son, and I are getting into worse shape financially. I have looked at sites like Fiverr and Upwork but they haven't panned out at all. Nobody there has any serious work (it all looks like little 50 dollar jobs that would still take many days if you account for the sales/fielding questions component, etc) and you need a lot of reputation and time/skill for sales to get what is available. I don't have 3 months to do slave rate work to try to get reputation built up. I have a good bit of industry experience and will work very hard for a remote contract, but feel like there just isn't a path to get that, sills or no skills. Does anyone have any sources of remote work that will give someone a real chance to prove themselves? I would be happy to build someone a website or backend service, or anything really. I learn new tech great and can pick up most any job if given a real chance. Here is my LinkedIn if anyone wishes to see my CV:  https://www.linkedin.com/in/erdos4d/  Thank you very much for your help, I appreciate any help you guys can give. <comment><USER2> I don't have any leads on hiring but you might find this new program interesting for founding companies and finding cofounders: chrysalis.cleocap.com</comment>


Haven't found your calling? Stop looking. - <AUTHOR> http://workinthewild.com/blog/2013/11/18/havent-found-your-calling-stop-looking <comment><USER2> Some people are obsessive seekers. Of riches. Of a calling. Of enlightenment. Of whatever: "If only I had ___, _then_ I'd be happy."

My take on Zen Buddhism is that it's engineered to fix that problem. You need X to be happy? Great, let's get you X. Get up at 4 AM and sit quietly. Cook food. Clean dishes. Try to solve nonsense puzzles. Eventually you'll suffer a mild mental breakdown and achieve a realization -- the enlightenment that there is no enlightenment outside you to be found.

And anyway, in the meantime at least you'll be focused on quiet activities, not bothering the rest of us. ;)

<comment><USER3> Huh, I'm confused by your 2nd paragraph.

Are you saying that zen buddhism will make you get X to be happy, get up at 4am, etc. and then suffer a mild breakdown?

Could you rephrase what you meant? I'm legitimately confused :(

<comment><USER2> I meant that you show up at a monastery and say, "Hello, I'm here to be enlightened!" They say, "Yeah, we get that a lot. Well, we can help you with that. Let's start by having you get up early tomorrow morning and cooking some rice."

Then they channel all your seeking-enlightenment energy into other activities, until you hopefully someday realize there ain't any such thing. But perhaps that realization is another sort of "enlightenment".

I speak from no significant direct experience. I'm just pointing at the moon with my finger. :)

<comment><USER4> I never thought of it that way. Your comment has enlightened me, funny enough. :-)

</comment></comment></comment></comment><comment><USER5> TL:DR

Just learn to enjoy what you have.

<comment><USER6> But also work to improve your situation in life if you're not happy with it, right?

Not directed at you, I've just been a bit confused by the tension between contentment and complacency. I think the resolution is some sort of pragmatic middle ground: fix what's wrong in your life, but at the same time, appreciate what's right.

<comment><USER7> It really depends on how serious you are about seeking inner peace.

The moment you say that something is "wrong" in your life is the moment you abandon the deepest (and, I think, most powerful) variety of tranquility.

You cannot categorize parts of life as "right" and "wrong" without discarding the general equanimity of true inner peace.

I think this is a common dilemma for Americans in particular, because the concept of success is so ingrained in our perspective of life that we cannot let go of it.

On the other hand, in the complete absence of right and wrong, words like complacency lose their meaning. Someone with true inner peace is not complacent _per se_ , nor are they even indifferent. Instead, on a deep and abiding level, they are accepting and nonjudgemental.

<comment><USER8> A simple, but insightful comment. When you consider the phrase "inner peace", you realize that it _must_ actually be the natural state.

After all, what could cause a person to lack internal happiness/peace except external influences and, perhaps most importantly, their own judgments about those influences? Even judgments about themselves must be based on external factors, otherwise what is one to consider deficient in his/her own existence?</comment></comment></comment></comment>


Robocalls tell seniors net neutrality raises phone bills by $30 - <AUTHOR> https://arstechnica.com/tech-policy/2018/08/att-backed-robocalls-tell-seniors-net-neutrality-raises-phone-bills-by-30/ <comment><USER2> >The robocalls cite no evidence supporting the claim that net neutrality rules will raise cell phone bills and slow down Internet service.

Because only people in favor of Net Neutrality are allowed to do that. Remember before the repeal, proponents of Net Neutrality claimed we would all have to pay more or receive slower service? I certainly do.

I'm not in favor of these robocalls any more than I'm in favor of Net Neutrality supporters lying to people. arstechnica are pure hypocrites. They did exactly this, now they complain about the other side doing the same.

[https://arstechnica.com/tech-policy/2017/07/ars-technica- sup...](https://arstechnica.com/tech-policy/2017/07/ars-technica-supports-net- neutrality/)

>Perhaps your ISP will throttle the high-bandwidth BitTorrent file-sharing protocol—or whatever replaces it. (Remember the Comcast BitTorrent debacle that resulted in Comcast paying $16 million?) Or maybe your ISP will just charge you extra to use it.</comment>


Please stop breaking the build - <AUTHOR> http://danluu.com/broken-builds/ <comment><USER3> This isn't mentioned until later in the article, but it seemed important.

> The worst thing about regular build failures is that they're easy to > prevent. Graydon Hoare literally calls keeping a clean build the "not rocket > science rule", and wrote an open source tool (bors) anyone can use to do > not-rocket-science.

[http://graydon2.dreamwidth.org/1597.html](http://graydon2.dreamwidth.org/1597.html)

<comment><USER4> A member of the Rust community, barosl, wrote Homu (bors 2.0) which Rust has been using in place of the first bors for a few months now. It's even better than the already-great first version! I'm seriously considering setting it up for my own projects, since I believe it has support for using Travis CI as a testing backend, in addition to buildbot (which Rust and Servo both use).

[https://github.com/barosl/homu](https://github.com/barosl/homu)

Example interaction: [https://github.com/rust- lang/rust/pull/23381#issuecomment-80...](https://github.com/rust- lang/rust/pull/23381#issuecomment-80858586)

Docs: [http://buildbot.rust-lang.org/homu/](http://buildbot.rust- lang.org/homu/)

</comment></comment><comment><USER5> I'd very much like to have some more information about how the article author gathered this data - are these all master branches of said projects, numbered releases?

How does the data account for variation in development procedures (e.g. some projects use master as their bleeding edge branch)?

<comment><USER6> Also consider that if its checked on a commit by commit basis that doesn't collapse merges in somehow, then you actually check every commit that was made during incremental work on a different branch. If you're doing TDD or any test first methodology, that's going to often mean you intentionally commit broken tests to fix them.

Also if its a commit by commit basis, the percentage of time comparison is completely invalid.

<comment><USER7> The author is talking about broken builds, not broken tests.

<comment><USER8> In this context they're synonymous. A broken build is defined by the tests failing.

</comment></comment></comment></comment><comment><USER9>
        Web programmers are hyper-aware of how
        10ms of extra latency on a web page load
        has a noticeable effect on conversion rate

I wish this was true, but I'm really skeptical that the average "web programmer" even uses the phrase "conversion rate" on a monthly basis.

<comment><USER10> I know neither yours nor my comment strictly related to the topic - which is about not breaking builds, but the effect of latency on a web page only has a tiny contribution to conversion rates or other user satisfaction metrics as compared other factors - like stability and features. Hence, I think it's not _important_ for most web programmers to be hyper-aware of the latency - <USER2> long as it's reasonable.

</comment></comment><comment><USER11> Is 99.9% or 3h/month really the "professional" norm?

I remember a larger project where we struggled for a longer time to anywhere beyond 20%. Eventually we got a lot better but nowhere near 99%.

I also wonder whether it is worth it? Are all developers really blocked when the build fails? Some yes but if I could I would design the production chain that most would not be.

Isn't there a trade-off in how much to invest into build tooling and automation vs. in functionality? Does building a MVP include building a perfect software production pipeline?

<comment><USER12> > I also wonder whether it is worth it? Are all developers really blocked when > the build fails?

In our setup building the deployment artifacts is contingent on tests passing so if the build isn't passing, no one can deploy.

<comment><USER13> But you could build and test the candidate master branch before it actually becomes the master branch...

</comment></comment></comment><comment><USER14> Welcome to distributed programming. Just because it works for one developer doesn't mean it works for the others, at least not until all the conflicts are resolved. One could have build systems which didn't permit a change to commit in the master branch until everything compiled and all tests passed, but Github isn't set up that way.

The build may also break because of a change in an external dependency.

<comment><USER15> > The build may also break because of a change in an external dependency.

It shouldn't unless you've been lax in how you specify your dependencies, or the library maintainers have been sloppy in what they claim for backwards- compatibility.

Obviously in the real world, both of those things happen.

<comment><USER16> Package repositories go down too (Maven, RubyGems, NPM, etc...).

Unless by 'lax' you mean 'didn't check in your dependencies'...I don't think I'd call that lax, though.

<comment><USER15> At my work, we run a local mirror/proxy for dependencies. It's polite because we're not hitting those external services as frequently, and it has the advantage that we aren't reliant on them to produce builds.

</comment></comment></comment></comment><comment><USER17> Am I missing something, or isn't this problem easily fixed by enforcing testing before push? As long as the appropriate tests are available, seems like this could be solved

<comment><USER18> It's not necessarily that simple, but it _is_ simple. You need to do two things:

1) Integrate the master branch (or whatever your guaranteed-good branch is) with the code you're about to push. This prevents integration conflicts from causing the build to fail.

2) Test it on a reference machine. This prevents environment assumptions from causing the build to fail. (Such as installing new software or setting an environment variable, but forgetting to make it part of the build.)

These are both easy to do. My preference is to push to a testing branch on the integration machine, merge in the master branch, run the tests, then merge the testing branch back into the master branch. (There's a bit more to it than that, to cover edge cases, but that's the gist.)

Sadly, most teams and CI tools aren't set up to do this--although, as the article says, it's not rocket science. In fact, I'm surprised it's not obvious that you should do it this way.

<comment><USER19> Doesn't help if eg you have multiple reference platforms - many open source projects support a range of platforms (eg OSX, Linux, Windows) - much harder than in house software that has a standard platform. You really have to stage commits then.

</comment></comment></comment><comment><USER20> The only way I have been able to get away from Ben's law is to have an automatic system that does builds before code can get in. This can be server side, user side, pre-commit hooks, pull-request bots or anything that catches build breakage before they can get into the main branch. But without something automatic in place the project is destined to fall to Ben's Law.

Ben's Law - When every developer is committing to the same branch the odds that a commit will break the build increases as more developers contribute to the project.

[http://benjamin-meyer.blogspot.com/2014/01/bena-law.html](http://benjamin- meyer.blogspot.com/2014/01/bena-law.html)

</comment><comment><USER21> It's not completely clear to me how the build start times were used to calculate uptime. Especially since a popular usecase for Travis/github integration is to trigger a build-upon-PR. If that triggered build fails, the PR is marked as such and normally the content wouldn't get merged. This is designed to prevent the exact problem described, but are these Travis PR- triggered builds filtered out of the uptime input dataset?

</comment><comment><USER22> I'd love to see the numbers on Haskell. I believe (and would hope) that it would fare well.

</comment><comment><USER23> Why builds break on our team? Because we have no idea how to add precommit hook to perforce intellij client so it tries to build and test the whole thing locally before pushing changes to repo.

<comment><USER24> and your team isn't disciplined enough to do it manually ("nothing is stopping us" is an explanation why things happen sometimes, but it is a bad excuse)

<comment><USER25> As I heard it, one of the late-nineties projects at Microsoft had a big problem with build breakages. They finally instituted a policy of tracking down every build breakage, and conducting a little humiliation ritual of awarding the offender a "big sucker" award at the weekly project meeting. This award had to be displayed on the developer's office door for a week or something.

You could dodge the award even if you did break the build by showing that you had run the full unit test suite before you submitted your code.

<comment><USER23> Yeah. We considered that but that's horrible social solution for purely technical problem. It's like beating your child so he won't put fingers in the wall socket instead of childproofing it.

<comment><USER24> One shouldn't make a big deal about it, but something like "whoever breaks the build on an important branch (and doesn't immediately remember and reverts it) brings cookies/makes a coffee run/... for everybody in the same office" can work if it happens to often. You are right, occasional mistakes happen, so it has to be something simple.</comment></comment></comment></comment></comment>


Startup Quote: Howard Schultz, chairman, Starbucks - <AUTHOR> http://startupquote.com/post/1558883048

<comment><AUTHOR> Hiring people is an art, not a science, and resumes can't tell you whether someone will fit into a company's culture.

\- Howard Schultz

<http://startupquote.com/post/1558883048></comment>


Paper processor. What is fetch , decode , and execute? - <AUTHOR> https://sites.google.com/site/kotukotuzimiti/

<comment><USER2> Sweet little demo tool. Maybe it needs a conditional jump as its fourth instruction?</comment>