Get on the CSS Grid - <AUTHOR> http://updates.html5rocks.com/2014/03/Get-on-the-CSS-Grid <comment><USER2> This proposal has been around for a while (April 2011 version: [http://www.w3.org/TR/2011/WD-css3-grid- layout-20110407/](http://www.w3.org/TR/2011/WD-css3-grid-layout-20110407/) ) and if I recall correctly it has been on and off the Firefox roadmap. [https://wiki.mozilla.org/Platform/Roadmap#Layout](https://wiki.mozilla.org/Platform/Roadmap#Layout)

"CSS Grid Layout is coming to Firefox in 2012": [http://www.2ality.com/2012/03/css-grid-layout- firefox.html](http://www.2ality.com/2012/03/css-grid-layout-firefox.html)

So where is Firefox support for this? Was there a good reason to delay, or was it just other priorities? Did flexbox take much longer than expected?

<comment><USER3> Supporting standards is pretty unimportant when you have an interface to ruin, ads to sneak in, an unasked os to support, etc... /s

To be on topic, there isn't much activity in the bug topic: [https://bugzilla.mozilla.org/show_bug.cgi?id=616605](https://bugzilla.mozilla.org/show_bug.cgi?id=616605). Two blockers landed in Fx30, but that is well within the statistical margins of randomness.

<comment><USER4> Wow, just scanned your comment history. You really have boner about slagging on Firefox. What is your story? Every browser has good points and bad points, but for some reason you myopically focus on the shortcomings, real or perceived, of firefox.

I understand fanboy mentality of being invested in something and over promoting it, but I don't understand where you are coming from. Care to elaborate?

<comment><USER3> Even if my comments (those few I posted already, what shouldn't be enough of a basis for such conclusions) seem to indicate that I dislike Firefox, that is not the case. I have little against Firefox itself, so much I use it as my main browser, and the Beta as secondary. Though, I have to admit I went over with the above comment, as more than half was off-topic (and most likely the source of down voting).

What I do not like is some of the decisions Mozilla leaders made lately. For example, I am clearly against the Directory Tiles or Australis in it's current form, but I support the rapid release cycle _, as it clearly threw back Fx into the race and is now one of the top two browsers.

_ what was also hasty without the 'addons are compatible by default' and Mozilla Maintenance Service

</comment></comment></comment></comment><comment><USER5> Bloomberg has been funding Igalia to land CSS Grid implementation work in both WebKit and Blink. Igalia wrote a recent blog post about the latest work:

[http://blogs.igalia.com/mrego/2014/03/13/welcome-css-grid- la...](http://blogs.igalia.com/mrego/2014/03/13/welcome-css-grid-layout/)

</comment><comment><USER6> If future browsers include default grid display systems, then [YUI's PureCSS Grid Library](0) is a modern-backwards compatability layer.

It seems even to have a "leave no browser behind" philosophy, because you can generate usable output for even IE 6 & 7.

[YUI Open Roundtable - Pure CSS with Tilo Mitra and Eric Ferraiuolo](1) is widely informative with amazing demos of each of the latest tools involved.

The docs are split across [http://stage.purecss.io/grids/](http://stage.purecss.io/grids/) and [http://yuilibrary.com/yui/docs/cssgrids/](http://yuilibrary.com/yui/docs/cssgrids/) ; overall, they're sweet and concise.

0: [http://purecss.io/grids/](http://purecss.io/grids/)

1: [https://www.youtube.com/watch?v=t4w3e-JRXy0](https://www.youtube.com/watch?v=t4w3e-JRXy0)

</comment><comment><USER7> This seems very similar to Java's gridbag layout manager ([http://docs.oracle.com/javase/tutorial/uiswing/layout/gridba...](http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html)) in terms of functionality.

I always liked the flexibility of using that layout manager (although I always managed it via visual editors) so if this does reach mainstream compatibility it could be good!

As comments on the article point out, it seems to overlap with FlexBox quite a bit though.

<comment><USER2> I think it's actually based on the grids in WPF ( [http://en.wikipedia.org/wiki/Windows_Presentation_Foundation](http://en.wikipedia.org/wiki/Windows_Presentation_Foundation) ). This is no bad thing; those grids are superb for UI layout. Look at the editors list; this comes out of MS. Again, it's good that they feed this out into web standards.

<comment><USER8> Very much reminded me of WPF, where grids are awesome. This being CSS, the syntax is a bit wonky, but it is certainly very good news for a world stuck in "pick any one of three sizes" bootstrap grids.

</comment></comment></comment><comment><USER9> So we return to tables ...

<comment><USER10> It may seem like that, but the major difference is the layout is left to the CSS. When combined with css media queries, the grid can provide a complete restructuring of the layout completely independent of the markup which would not would have been possible with tables.

<comment><USER2> Grids are also significantly more flexible and more responsive than tables. You finally get reliable vertical centering of elements as a side-benefit.

Tables got a very bad name because they were abused back when they were the only thing available for layout: "if the only tool you have is a hammer..." Yes, but sometimes data is actually tabular.

Grids are good for UI layout. The web was just for documents, but not any more. So now we need good ways to lay out UIs.

<comment><USER11> > You finally get reliable vertical centering of elements as a side-benefit.

Worth noting that you already get this with flexbox's align-items: center, which you can use today!

<comment><USER12> A comment on the original link stated that 'flexbox is slow', someone responded with a question; 'is the spec inherently slow or just current implementations?' but no-one elaborated.

</comment></comment></comment></comment></comment><comment><USER13> Great, but I feel horrible at the same time because browser just slowly reinvents everything, and is still limited to a single specific implementation. How about just make Javascript frigging fast so everyone can code their own layout system? How about standard NaCl interface for layouting? Browser needs to be an open platform, not a framework.

<comment><USER14> > How about just make Javascript frigging fast so everyone can code their own > layout system?

Because separating content (HTML) from layout (CSS) from behavior (JS) is a good thing, and because, particularly, being able to have content work without layout or behavior (for situations where you just need the content), and to have content and layout work without behavior (for situations where you just need static presentation) are important.

<comment><USER15> I'm curious: how do you feel about css transitions? I'm being totally non- snarky here, and I fully agree in the ideals of separating the three concerns, but I sometimes wonder if the existing lines aren't drawn in slightly the wrong place.

<comment><USER14> Conceptually, I think what they cover fits more into presentation than behavior, because its how the transition from one state to another is _shown_. So I don't see CSS transitions as an example of the line being drawn in the wrong place.

I'm not saying that its always clear cut or that reasonable people can't disagree on where to draw the line.

</comment></comment></comment></comment><comment><USER16> Is there any non-video documentation? I find videos painfully slow compared to scrolling through some quick actual code examples side-by-side with results.

<comment><USER17> [http://www.w3.org/TR/css-grid-1/](http://www.w3.org/TR/css-grid-1/)

</comment></comment><comment><USER18> Prediction: Sometime in 2018 we will have a thread: "Ask HN: Is it finally time to use CSS grids?"

<comment><USER2> Prediction: The response will be "not until Firefox supports it".

</comment></comment><comment><USER2> I see that this draft is dated January 2014. Earlier versions go back to April 2011: [http://www.w3.org/TR/2011/WD-css3-grid- layout-20110407/](http://www.w3.org/TR/2011/WD-css3-grid-layout-20110407/)

What's changed in this version?

<comment><USER19> It seems the what's mostly changed is support. IE10 has it, and Chrome has it experimentally.

<comment><USER15> Chrome appears to have _some_ of it experimentally. For example, the old 'grid-definition-columns' which was removed from the spec _is_ supported, but the newer (?) 'grid-template-columns' _isn 't_. Alignment doesn't seem to work, at least as I understand it should (e.g. 'align-self: center' should vertically align a grid item).

<comment><USER5> This is work that Igalia is doing for us. There are a lot of patches pending that haven't landed yet:

[https://codereview.chromium.org/149373004/](https://codereview.chromium.org/149373004/)

</comment></comment></comment></comment><comment><USER20> For 95% of what people want this for, CSS tables would probably work just as well ("display: table" ). The main advantage of this seems to be the "minmax" ability, and some rethinking of the api, since CSS tables are semantically based on HTML tables.

</comment><comment><USER21> Is there a JS library/framework that lets me use this now?

<comment><USER22> Google for css grids polyfill.

</comment></comment><comment><USER17> Is this an attempt to standardize the grid layouts that everyone has to either build themselves or use a framework like bootstrap for?

<comment><USER23> This is way better.

</comment></comment><comment><USER23> CSS grid is what CSS should have been from the beginning.</comment>


Ask HN: Should I learn Swift? - <AUTHOR> Java to Ruby/Rails convert via JavaScript. Feel like I should know a compiled language too. What are the prospects of Swift outside Apple dev? <comment><USER2> Swift outside of Apple is a long bet for now. It's just been open sourced and it competes with other languages in a crowded market.

As siscia said, you should probably pick a language that will teach you new things. Especially if you aren't hurting and in need of a marketable skill now. The investment will be worth more than just putting another similar language on your list. Why? Because you will learn to see things from a different angle and maybe tackle problems in more efficient ways.

</comment><comment><USER3> Don't fossil on languages, try a new paradigm, learn something functional.

My personal choice will be between Haskell (still a compiled Lang) and clojure

</comment><comment><USER4> Maybe one language from each "family": Rust, Haskell, Prolog, Lisp, Erlang.

<comment><USER5> I like this comment a lot because it resonates with what I think I could stand to benefit from learning multiple paradigms, i.e. learning what to apply to what type of problem. Can you expound maybe a paragraph or so as to what each "family" has to offer, in your personal experience?

<comment><USER4> I've learnt C/C++ (same category as Rust) & Haskell & Lisp, and I've had an epiphany with each of those, that significantly shaped my programming ability today. I have not yet learnt Prolog or Erlang.

Rust is in the same category as C - just better designed. If the OP wanted to learn a compiled, low level language, to learn the paradigm, I'd suggest Rust for minimised frustration. C/Rust has minimal static type checking system, is performant and low level, compiles to machine code. They are both imperative languages that map relatively close with the underlying assembly.

Haskell has a much more sophisticated type system that integrates closely with the rest of the language, e.g. pattern matching. I don't know how to describe it in detail without resorting to Haskell jargon. The difference between the type system of Haskell and Java/C is as big as the difference between Java and a language without class/types. I think I "got it" in the 4th of my 8 month honours thesis, written in Haskell. You know about Java's classes and interfaces? They're human constructs, like a set of paintings by the same author. You could put them in different arrangements but you're sort of limited in what arrangements you can put in. Imagine if those type ideas were distilled to a mathematical definition with some sort of axis (like the real number maths where you can intertwine +, -, *, % operators), that are building blocks which can build on itself, then you have the Haskell type system. It's a lot more "pure".

Lisp's type system is akin to Python's, it doesn't really check until runtime. The biggest difference between Lisp and Python it's meta programming abilities. Have you heard about C macros? Imagine a language where it's macro language is the language itself. You could write your own language constructs, operators, etc. That's Lisp.

<comment><USER5> Thanks for this! Cheers

</comment></comment></comment></comment><comment><USER6> So many times I've found myself jumping back and forth between new languages, trying to learn what might be the best for X field in 20XX.... Usually ending up learning very little.

Should you learn Swift? Possibly. But I'd be careful with learning for external motivators like job prospects.

I've found personal interest and wanting to build something as being the strongest motivators of learning</comment>


Ban of Bitcoin ATMs in Switzerland - <AUTHOR> http://www.steigerlegal.ch/2014/06/05/verbot-fuer-bitcoin-geldautomaten-in-der-schweiz/

<comment><AUTHOR> The original article is in German. Google translation:

[http://www.google.com/translate?hl=en&ie=UTF8&sl=auto&tl=en&...](http://www.google.com/translate?hl=en&ie=UTF8&sl=auto&tl=en&u=http%3A%2F%2Fwww.steigerlegal.ch%2F2014%2F06%2F05%2Fverbot- fuer-bitcoin-geldautomaten-in-der-schweiz%2F)

<comment><AUTHOR> I have just stumbled upon an article in English, maybe a moderator can switch the URL?

[http://www.thelocal.ch/20140605/finma-blocks-launch-of- zuric...](http://www.thelocal.ch/20140605/finma-blocks-launch-of-zurich- bitcoin-atm)</comment></comment>


No Way NSA - <AUTHOR> http://www.nowaynsa.com/ <comment><USER2> It's a very good looking protest page. Well done.</comment>


Most Medical Imaging Devices Run Outdated Operating Systems - <AUTHOR> https://blog.hackerfoss.com/2020/03/most-medical-imaging-devices-run.html <comment><USER2> Having worked in that 'biz' I would say this is true but a feature, not bug.

Any complex system like that is certified to operate within parameters given a specific set of equipment, software revisions and the like. Figuring out the implications of OS upgrades (much less vendor-supplied software _or hardware_ \-- even non-electronic parts) is difficult enough as it is. This applies not only to patient-facing imaging equipment but various lab equipment as well.

Such equipment should not be connected to a network of course, but that is not implied as a problem in this blog post.</comment>


LightBlue Cortado: Arduino wirelessly programmable via iPad over BLE - <AUTHOR> https://launch.punchthrough.com

<comment><USER2> Ordered! This is cool in a lot of dimensions. Wireless programming, low profile, low power, connects to any modern smart device, ibeacon support and really cheap.</comment>


Ask HN: How do you keep your energy level up? - <AUTHOR> I recently graduated and started a full time job as a software developer. By and large, I love my job. I usually spend my days solving interesting problems which is what I love doing.
That said, after working 8 hours a day (I usually do 7-4 with a 1 hour lunch break) I find myself exhausted afterwards. I sometimes find myself going to bed not long after dinner. I don't have time for any of the hobbies I had in college like gamedev or video games despite having a similar if not greater workload in college.
It seems like the main difference is that the work was broken up by classes in college which spread the work out more and made it less exhausting.
To be clear, I'm not talking about "burn out", at least not in the sense that it's normally talked about. I still love my job (I just started!) and the work it entails.
I take vitamins, and I get a reasonable amount of sleep each night (7-8 hours). I tried working out but that just seemed to make me more tired.
As I look at my future, I hope to one day have kids and get married, and I'd be a pretty poor parent if I came home with this level of energy every day.
So how do you do it? Do you have any tricks to keeping your energy level up throughout the day? <comment><USER2> >I don't have time for any of the hobbies I had in college

>but that just seemed to make me more tired.

>I'd be a pretty poor parent if I came home with this level of energy every day.

This isn't energy, it's depression. Even if you are not talking about "burn out", talking about your energy levels is a mood issue, unless you are overweight, have a bad diet, or have irregular sleep (which, as you say, you do not).

I would mention these concerns to your doctor. 10% of US adults ([http://www.healthline.com/health/depression/statistics](http://www.healthline.com/health/depression/statistics)) suffer from depression, and it has nothing to do with whether you enjoy your job. The difference, if treated, is that you will enjoy your job _and_ have energy at the end of the day.

<comment><USER3> woah there conclusion jumpin cowboy. tired after work != automatic depression.

Get a full set of bloods taken. could be underactive thyroid or anything.

<comment><USER4> Exactly what I said. Jumping to conclusions.

This sounds very similar to the kind of advice that gets normal people hooked to drugs and destroy their lives.

No one it's immune to the ups and downs of life.

</comment></comment></comment><comment><USER5> Modalert, caffeine, workout about 3 days a week, consume a small amount of carbs(smoke sativa weed instead of drinking beer before calling it a night), and a very fast internet connection.

<comment><USER2> Stimulants will make them more active during work hours. They are talking about energy in evening hours. If you are suggesting stimulant use in evening hours, let me shut that down right now, because it will affect their sleep quality.

Exercise is a decent idea. I would suggest an antidepressant instead of a stimulant, though.

<comment><USER5> Antidepressants cause more problems than solve, at least from my experience. Modafinil(modalert) is a mood enhancer, which I use when I wake up. Weed is too, depending on the individual. Sativa brings you up with energy and focus and then brings you down to help you sleep.

<comment><USER2> >Modafinil(modalert) is a mood enhancer, which I use when I wake up.

Again, OP is not talking about when he wakes up.

>Sativa brings you up with energy

Like a stimulant. This is not useful for OP.

Lumping all antidepressants together and saying they cause more problems than they solve is generalizing too much. Which ones cause problems, and for which people? The most common type is SSRIs, but if OP does not metabolize folic acid properly, it is off the table. I will concede that tricyclic antidepressants have more side effects, but SSRI use is relatively common, at 10% ([https://www.scientificamerican.com/article/the-rise-of- all-p...](https://www.scientificamerican.com/article/the-rise-of-all-purpose- antidepressants/)). That is compared to 7-13% of adults who report cannabis use ([http://www.gallup.com/poll/194195/adults-say-smoke- marijuana...](http://www.gallup.com/poll/194195/adults-say-smoke- marijuana.aspx)).

Speaking from personal experience, antidepressant has made all the difference for me, in terms of energy. Unrelated, I use atomoxetine for focus throughout the day. As it is not a stimulant, there is no crash or feeling tired in the evening hours. Its levels are consistent throughout the day, and I code at all times of day with little fluctuation, in terms of motivation.

</comment></comment></comment></comment><comment><USER6> If you really are brand new to the working world I would give it time before looking for solutions to a problem that might ease with time. Soon the newness will wear off and you'll become proficient at the admin portions of your job, if not the job itself (solving problems). The reality is that as the newb on the job you are probably focused and engaged the whole 9 hours onsite and that is exhausting as you have discovered. Have you ever watch kids play at a party or BBQ? They are all riled up and running around at full speed and overly stimulated for 5 or 6 hours. Ask one of their parents and they will tell you -- after an event like that the kid will crash hard and sleep like a rock that night. You are in the same boat. In time you won't have to be fully engaged like that for 9 hours and the remaining mental power and energy will be available in the evenings and weekends for hobbies, family & Etc.

You are like the college football players who make it to the NFL and are used to 8-10 game seasons which in the NFL (including preseason) doesn't get you through the half-way point. You are working for a living now and not in Kansas anymore so it might take some time to adapt to the ebb and flow of life.

That said, it is important for the long term to make your health a priority. Unless you have a child, do not compromise that 7-8 hour sleep because in my experience sleep is one of the most important aspects of good health. Is that 7-8 hours of quality, uninterrupted sleep and do you wake up feeling refreshed? If that is not the case you need to investigate. Another concern that I notice in your post is that exercise makes you tired and that is not normal for someone (presumably) in the mid-twenties or even thirties. Unless you are extremely out of shape exercise should make you sleep better, think better and have more energy. Even if you are out of shape at your age a regular exercise routine should very quickly pay much bigger dividends in energy, sleep and general well-being. I highly recommend you pursue that lead and get doctor's evaluation to rule out any problems and start exercising as a life-long habit.

Finally, contra all the other's advice, I would kick the coffee/caffeine or any other stimulants to increase your "energy" (except on an emergency basis). Also, I would limit any alcohol to "relax" because if used more than occasionally the consequences to your well-being are bad. I recently quit drinking coffee and it has really improved my sense of well-being and quality of life. I think all these drugs are detrimental if used daily or even regularly -- they lose their effectiveness and have net negative impact on your capacity to function.

</comment><comment><USER7> Skip your dinner break, no-one needs an hour, have a sandwich. Get home for 3, have a power nap, till 3.30/4 you'll be fine for the rest of the day.

</comment><comment><USER8> if you just started full-time, it IS an adjustment. give it some time to see how you adapt before you start panicing about having no energy left for other things.

</comment><comment><USER9> Standing desk. Skip lunch. Green smoothies.</comment>


HTML5: The Technology Changing the Web - <AUTHOR> http://online.wsj.com/article/SB10001424052970203537304577030033160849296.html <comment><USER2> I'm surprised that wsj is portraying that Apple is the driving force between HTML5. It seems to me to be a much more "grassroots" level idea than one coming from the top down.

</comment><comment><USER3> Good lord. This is why I universally recommend journalists writing on technology take at least 6 months of programming instruction.

</comment><comment><USER4> _"A year and a half after Steve Jobs endorsed it in an unusual essay"_...Must everything be explained in the context of Steve Jobs now?

</comment><comment><USER5> _a set of programming techniques called HTML5 is rapidly winning over the Web_

A set of programming techniques, orly?

<comment><USER6> The sad part is that if a journalist friend of mine sent this to me to proofread for technical content and asked about the HTML5 description, I'd have read it, sighed, thought, sighed, and replied "yeah sure that's fine".

Not because I'd want him or her to look silly but because what is already there (while not entirely accurate) is about as useful as anything else one could say about what "HTML5" is in a reasonable amount of words/pages.

</comment></comment><comment><USER7> I'm a big believer in jazzed-up images.</comment>


Ask HN: How to cold call - <AUTHOR>

How do you cold call effectively? I am thinking about starting a service where people can get a mobile version of their website, and so far (2 calls), people have been declining me. Any tips? <comment><USER2> Some hints that helped me a lot: \- 2 calls is nothing. 100 calls is something. Do 100 calls. 50 at least.

\- Step by step. Step from call to purchase is too large. Make it shorter - appoint the meeting. Let the meeting be the objective of your call.

\- Are people you call the ones to make final desicion at the company? If not - you miss the point. As for your product - you need marketing director or CEO. Reach them.

\- At the meeting - don't talk about features of your product - talk about benefits your product will bring this person.

\- Have something to show - better business cases. Your cases are the best, off course. But any will do. There are plenty of stories when mobile websites made business grow. Just have something the client could look and feel.</comment>


Show HN: I wrote perl golf that screwed up GitHubs syntax highlighter - <AUTHOR>

https://github.com/kr094/perl/blob/master/golf/fi.pl<p>personal best little hacking achievement <comment><USER2> Clicky link: [https://github.com/kr094/perl/blob/master/golf/fi.pl](https://github.com/kr094/perl/blob/master/golf/fi.pl)

<comment><AUTHOR> Thank you, it's late..

</comment></comment><comment><USER2> It's not possible to syntax-highlight perl code perfectly without compiling it... but I'd expect a decent perl syntax highlighter to process that line correctly.</comment>


Ask HN: Is anyone interested in a ticket to HOPE? - <AUTHOR> I have a ticket to this year's HOPE conference in NYC, and can't attend because of a wedding I forgot about. Is anyone interested in a ticket?<p>Tickets are sold out, but go for $170. I'd be open to any offers on price for the ticket, and would be happy to make sure that the ticket went to a hacker who is a student or from a traditionally under-represented background. <comment><USER2> I would love a ticket. I am an aspiring hacker long time devloper and would like to round out my development skills. This would be quite a step up. I am strapped for cash but can help with any code issue you might have

<comment><AUTHOR> I don't have a way to contact you from this. If you see this, shoot me a message? Contact in profile.</comment></comment>


Do Men on OKCupid Follow the Standard Creepiness Rule? - <AUTHOR> http://www.randalolson.com/2014/09/15/do-men-on-okcupid-follow-the-standard-creepiness-rule/ <comment><USER2> I've known many violators of this "rule", male and female, on both sides of the equation. It's profoundly insulting to all parties concerned -- especially those on the younger side, but well into adulthood (i.e. in their mid-20s or above). Who presumably, according this "rule", must be too naive, or too needy, to appreciate the fact that their older partners must be "creeps."

<comment><USER3> You're interpreting "rule" as some type of prescription. Such as " _it 's a rule to not accept a date after Wednesday night, etc._"

That's not how it's used in "Creepiness Rule". In this case, "rule" is a synonym for "heuristic" or a prevailing generalization[1].

But saying "Creepiness Heuristic" doesn't have that snappy and headline- friendly sound to it that the "Creepiness Rule" does.

[1]See definition #2 at [http://www.merriam- webster.com/dictionary/rule](http://www.merriam-webster.com/dictionary/rule)

<comment><USER4> > That's not how it's used in "Creepiness Rule".

It is. It's supposed to be a guideline, not merely a descriptive statement.

[http://en.wikipedia.org/wiki/Age_disparity_in_sexual_relatio...](http://en.wikipedia.org/wiki/Age_disparity_in_sexual_relationships#The_.22half- your-age-plus-seven.22_rule)

<comment><USER5> From that link:

"...whether the age differences in their potential intimate relationships are socially acceptable"

Sounds to me like a descriptive statement to me.

<comment><USER6> [http://www.infoplease.com/ipa/A0908934.html](http://www.infoplease.com/ipa/A0908934.html)

"The last-known Union widow, Gertrude Janeway, died in Jan. 2003 in Tennessee. John Janeway joined the Union army in 1864 and was briefly a POW at Andersonville. The couple married in 1927, after waiting three years until Gertrude turned 18. John was 81.

The person thought to be the last-known Confederate widow, Alberta Martin, was born Dec, 4, 1906, and died at age 97 in Alabama on May 31, 2004. In 1927, at age 21, she married William Jasper Martin, then 81. Martin joined the Confederate army in May 1864. Upon her husband's death, she married his grandson from his first marriage."

Looks like Western culture standards aren't cast in stone. Or made in heaven.

<comment><USER7> Those marriages were made to pass on pension benefits.

</comment></comment></comment></comment></comment></comment><comment><USER8> Slightly offtopic, but I'm feeling a little ranty.

This whole idea that two adults cannot engage in a romantic relationship without being unnecessarily harassed, based solely on their ages, is ridiculous. Just because it makes you uncomfortable doesn't mean that the people involved are uncomfortable, being taken advantage of, or naive. It just means they have found apparent happiness in another human being. It's no one else's business and judging others based on the age of their partner (assuming both are consenting adults) should be stopped.

<comment><USER9> Now we just need to establish what "adult" means. Which country's interpretation at which point of time in history do you like the best?

<comment><USER10> I'm not sure which country has it, but I'll generalize some criteria:

* Able to make rational decisions for one's self. * Successful co-operation with already existing 'adults'. * Able to produce surplus survival resources to enable successful raising of offspring.

By the above requirements I would suspect that if you removed an automatic assumption of truth based on chronological age, that a majority of American 'adults' would fail at lease one item on the above list. In some cases it really isn't their fault, but a fault of society failing to correct it's own conditions.

</comment></comment></comment><comment><USER11> Note the mistake of assuming preference = requirement. The whole everything that isn't forbidden is mandatory and everything that isn't mandatory is forbidden.

So search for a woman within age range X to Y, but I have never in my life carded a woman to make sure.

I might be wrong but the ancestry of the "rule" was some sort of statutory rape disqualification. Follow that rule as an adult in (insert state here) and it was a get out of jail free card for the guy even if the girl was technically underage. To handle those annoying "he's 18 and one day while and she's 17 and 11 months and 29 days old" situations. So technically you can't consent till you're 18, but if one partner is 18 and the other is 18/2+7 aka 16 or older, its not illegal. Needless to say this is not legal advice and I don't remember the state and it once being true in AL in 1920 doesn't mean its true today, anyway.

(and I'm getting downvoted. thanks guys. My point isn't that its great not to prosecute rapists or make a statement about some weird moral/ethical perspective on dating younger women or that I totally confused the article with some legal debate, but to point out that AFAIK this "common sense math formula" originally came from a statutory rape law in the American south decades ago, and thats the answer to the debate on HN of "where did this supposedly well known law come from that no one knows the source of" Perhaps given this as a start someone who knows the history of those laws, perhaps in the south, could confirm the details? I'm not asking you to agree with it, or promoting its reinstatement, just stating its history)

</comment><comment><USER12> Those OKCupid statics are really useful, they help you understand what's commonly expected, e.g. if you date outside the commonly accepted age range, you might face additional challenge than others. That is useful information to have, so you can be prepared for such challenges.

But for gods sake, use that information to your advantage, not handy-cap your own mind, same as how you should use any other kinds of knowledge.

</comment><comment><USER13> Why is the bottom of the green area jagged, but the top smooth?</comment>


The Three Minute Rule - <AUTHOR> http://blogs.hbr.org/tjan/2010/01/the-threeminute-rule.html

<comment><AUTHOR> Summary:

3-Minute Rule: what are users doing 3min before, after using your prod? reveals possible new features/mktg</comment>


Rovers rev up for Google's moonshot jackpot - <AUTHOR> http://www.newscientist.com/article/dn17555-rovers-rev-up-for-googles-moonshot-jackpot.html

<comment><USER2> How will they actually get the rover's to the moon? That seems like the hard part?

<comment><USER3> Well, drive them there, of course! ;-)</comment></comment>


Kernagic: a semi-automatic tool for spacing fonts - <AUTHOR> https://github.com/hodefoting/kernagic <comment><USER2> Are there any examples / screenshots available anywhere?

<comment><USER3> Yeah do Comic Sans.</comment></comment>


I wish there was a modern correspondence medium similar to letters - <AUTHOR> https://www.facebook.com/ibicking/posts/1085705508187383 <comment><USER2> When I was at school I had a penpal in Japan, this was before email so we corresponded through airmail and it took about 2 weeks between letters. There's a lot to be said for that kind of communication, now everyone can talk to anyone anywhere in the world instantly.

And I think for all it's incredible advantages we've lost something. When you're writing a letter that'll take 2 weeks to get somewhere you can't just put 'lol' or 'k'!

So I do appreciate the authors points but I don't see how we could ever go back to that, from a technical point of view it would be easy to build a service that fulfilled his criteria, but would anyone use it? Maybe the world is ready for an 'inverse Twitter'.

</comment><comment><USER3> There is a modern media similar to sending letters ... sending letters. Last time I checked you could still post a letter in the mail to far off places.</comment>


MMU gang wars: the TLB drive-by shootdown - <AUTHOR> https://bitcharmer.blogspot.com/2020/05/t_84.html <comment><USER2> There is a very glaring omission (or call it gloss-over) in this article - whether and when a free() even causes the allocator to actually release memory to the OS. JVMs are kinda famous for their "om nom nom" attitude on this, but you can't transfer from ptmalloc (glibc, whose man page is cited regarding >=128k mmap) to tcmalloc and jemalloc.

Also, on Linux, an allocator may use madvise(MADV_FREE) instead of munmap(); this tells the kernel that the data in a page is no longer needed but can be unmapped at the kernel's discretion, possibly even at different times for different threads (e.g. when doing a task switch for an unrelated reason.)

[EDIT: this doesn't actually work, see below. Sorry.]

<comment><USER3> IIRC MADV_FREE doesn't actually let the kernel avoid shootdowns. From the man page ([http://man7.org/linux/man- pages/man2/madvise.2.html](http://man7.org/linux/man- pages/man2/madvise.2.html)):

        MADV_FREE (since Linux 4.5)
           The application no longer requires the pages in the range
           specified by addr and len.  The kernel can thus free these
           pages, but the freeing could be delayed until memory pressure
           occurs.  For each of the pages that has been marked to be
           freed but has not yet been freed, the free operation will be
           canceled if the caller writes into the page. (...)

The problem is with this bit about a write to the page canceling the free... This side effect needs to be implemented in a page fault. But if the page is still in the TLB, then writes to it won't fault. So... you need a TLB shootdown. :(

I do wonder why there isn't an API for "lazy munmap()"... it would behave exactly like munmap(), except that the pages might remain accessible in other threads until the end of their timeslices, when the kernel can apply queued TLB flushes. It seems to me likely that 99.9% of uses of munmap() could be switched to this lazy operation without introducing any bugs. I'm not a kernel programmer, though. Maybe there's some reason this doesn't work, or maybe the performance improvements aren't worth the effort?

<comment><USER4> > I do wonder why there isn't an API for "lazy munmap()"... it would behave > exactly like munmap(), except that the pages might remain accessible in > other threads until the end of their timeslices, when the kernel can apply > queued TLB flushes.

That does exist, it's called MADV_DONTNEED and most operating systems have implemented it. However, MADV_DONTNEED on Linux was incorrectly implemented and (from memory) would always result in the page being unmapped immediately -- making it roughly equivalent to MADV_FREE. To quote the man page:

> All of the advice values listed here have analogs in the POSIX-specified > posix_madvise(3) function, and the values have the same meanings, with the > exception of MADV_DONTNEED.

<comment><USER3> AFAICT the POSIX behavior for MADV_DONTNEED is just a hint that the memory won't be accessed soon.

[https://pubs.opengroup.org/onlinepubs/009695399/functions/po...](https://pubs.opengroup.org/onlinepubs/009695399/functions/posix_madvise.html) says:

        POSIX_MADV_DONTNEED
            Specifies that the application expects that it will not access the specified
            range in the near future.

[https://www.freebsd.org/cgi/man.cgi?query=madvise&sektion=2](https://www.freebsd.org/cgi/man.cgi?query=madvise&sektion=2) says:

         MADV_DONTNEED    Allows the VM system to decrease the in-memory priority
            of pages in the specified address range. Consequently,
            future references to this address range are more likely
            to incur a page fault.

Neither of these suggest that the contents of the memory content can be discarded (as Linux does), only that it can be swapped out.

So it doesn't appear that this provides the "lazy unmap to avoid shootdown" behavior on any OS.

</comment></comment></comment></comment><comment><USER5> _Every once in a while I get involuntarily dragged into heated debates about whether reusing memory is better for performance than freeing it._

I couldn't comment on all the instances the article talks about. But this way of asking the question seems to me to hide the problem. It seems simpler to say "what memory allocation algorithm should you use?" Which is to say, "does your knowledge of your application's memory needs and memory performance trump all the effort and knowledge that went into creating the memory allocator of the operating system you're using?". And so then you get into the massive number of technical considerations the article and others might raise.

Memory allocation is a weird thing, it's an algorithm but it's often taken as a given in programming languages and discussions of algorithms.

<comment><USER6> Hi, author here. I'm not sure if I follow your argument. This article doesn't touch on allocators at all (ie. SLUB vs SLAB). It focuses solely on the cost of _freeing_ memory which TLB-shootdowns are a notable part of.

I even mention it at the beginning:

> Regardless of the method by which your program acquired memory there are > side effects of freeing/reclaiming it. This post focuses on the impact of so > called TLB-shootdowns.

Hope this helps.

<comment><USER5> As I understand things, allocating and freeing memory pretty much forms a single system. Especially, if I have a system where I "manually" allocate 10 meg for my use, never free it but use an internal method to mark the memory free or used, I will still have issues with caching and virtual memory based on my use of the memory. IE, reusing memory effectively creating a "roll your own" free and allocate functions.

And in general, how contiguously you allocate memory plays a big part in whether freed memory can be easily discarded from the cache. If you get the heap to be exactly like a stack, then the cache shouldn't have problems. But I'll admit I'm not an expert and I could be missing something.

<comment><USER7> This article isn't so much about free-ing, but about unmapping memory. It could well be that you have an allocator that decides not to un-map free-ed memory so that it can quickly be re-used later.

That said, as per [https://linux.die.net/man/3/malloc](https://linux.die.net/man/3/malloc) (and the article) the default implementation of free will (in some cases) unmap memory.

It is this un-mapping of memory that causes other threads to be affected. Because those threads should get a seg-fault after the unmapping if they try to access that memory.

</comment></comment></comment></comment><comment><USER8> This whole rigmarole is necessary for a single reason: TLBs don't participate in the cache coherency system.

Uh, why is that? If they did participate, then the mere act of writing to the cache line(s) which change the mapping would implicitly invalidate all of the associated entries in all of the system's TLBs. (Handwave, handwave), maybe you still end up needing a barrier similar to the instruction barrier needed when altering the content of executable pages.

What's the downside? Is it just power? Or is there something more fundamental about the TLB structure that makes it impractical?

<comment><USER2> I'm guessing what you mean is for the TLB to get a notification when the physical memory that contains the page mapping it was loaded from is changed.

(As opposed to, some weird contortion the other way around where you touch the cache for the mapping that got changed.)

It'd probably require holding the cacheline for the TLB entry in the actual cache in at least MESI "S" state. For 5 levels of page tables. And you can't do non-flushing changes (e.g. dirty bit) anymore. I'm no CPU designer but it sounds complicated and bug prone...

<comment><USER8> > I'm guessing what you mean is for the TLB to get a notification when the > physical memory that contains the page mapping it was loaded from is > changed.

Yes, that's right.

Let us conceive of an inclusive cache architecture, just for the sake of argument. L2 already maintains a directory listing of all the lines which are present in L1I and L1D, and forwards cache coherency traffic to those caches based on the messages it receives. Expanding this to the ITLB and DTLB would be exactly the same circuits. The hard parts are already done.

But I think you're onto something with the hardware-managed dirty bit. Its much less general than the S->E->M transition, and doesn't need the Exclusive state at all.

I've done a bit more digging in the background. Turns out that ARMv8's TLB invalidate instructions are broadcasted operations. You don't need IPIs to execute them on every core. So processors do have _some_ snoopy and/or directory management hardware interface for managing TLB shootdown. It just isn't as general-purpose as the rest of the cache maintenance hardware.

<comment><USER2> A separate broadcast makes much more sense on the complexity front... if it were tied to the cache, the TLB wouldn't really care about anything other than specific transitions. It doesn't need the cacheline contents, and one cacheline would generally hold 8 or 16 PTEs (depending on PTE and cacheline size.) You'd also necessarily be binding to the PTE's physical address since page table walks occur on physical addresses.

With a broadcast, on the other hand, you get the specific transition event you need, and you can choose whether to broadcast the physical PTE, physical data or virtual (+ASID) address, or both. You can also have an acknowledgement returned if needed.

</comment></comment></comment></comment><comment><USER9> Nice write-up. I've long believed that malloc(4192) == mmap() is a very bad idea for this reason -- in fact, let your heap get giant pages, damn it. Also, fork() turns out to be pretty evil. fork() is OK when you're forking worker processes very early in a daemon's life, but for most other uses it's just a very bad idea -- use vfork() or posix_spawn() instead.

There are just too many problems with fork(). That paper about vfork() being harmful had it exactly backwards. It is fork() that is harmful. It has safety issues that make using it safely sufficiently hard as to not be worth it in many cases, but the real killer is fork()'s copy semantics, which just kills performance.

(A colleague of mine has used fork() in signal handlers to call abort() on the child side as a way of getting core dumps from live processes without killing them. That's pretty neat, and one of the very few uses of fork() I would endorse.)

</comment><comment><USER10> The anti-windows nipple rubbing was... weird. And not helpful.

As a primarily Windows guy I'd rather just know what, if any, differences there are. =/

<comment><USER11> Is this the only thing from the article you found worth pointing out? Also, no one here had a problem with that except you. What does it tell you?

<comment><USER10> That everyone here uses Linux and MacBooks.

</comment></comment></comment><comment><USER12> All of this is moot if you have only the one thread. If you need parallelism, and can afford its complexity, separate processes sharing only what must be shared can eliminate your TLB exposure. Single-writer mappings eliminate cache storms.

All of this is moot if you allocate all your memory upfront.

All of this is moot if you can identify junctures when a stall is free, and cluster your shootdowns at such times.

<comment><USER13> > _If you need parallelism, and can afford its complexity, separate processes > sharing only what must be shared can eliminate your TLB exposure._

Then you need to ensure that all shared data structures are exclusively allocated from a dedicated memory pool which is mapped to all processes. Oh, and you must make sure that you either don't use any pointers within those datastructures, or that the shared memory pool is mapped to the same address in all processes. And no pointers must point from within to outside that memory pool.

In theory, it is possible. In practice, this would preclude any kind of non- trivial parallelism.

<comment><USER12> I see that you just haven't done it yet.

"Allocation" in this context just means open(), mmap(). A "shared memory pool" is a thing I would have no use for.

But I can assure you that you can have excellent, non-trivial parallelism with separate processes and chosen shared memory pages -- much moreso than with threads that must battle one another for access to locks, queues, and "pools". I routinely get order-of-magnitude performance improvement by reorganizing this way.

The single-writer ring buffer is the component that makes it all work. The environment might seem stark, but in exchange you can have exactly 0% concurrency overhead. Not wasting 90% on pool management and thread contention means other optimizations become meaningful. And, you can start and stop the processes independently.

</comment></comment></comment><comment><USER14> Awesome article... Extra points for posting on blogger.com :)

</comment><comment><USER15> A hell of a good write up. I learned tons here.

</comment><comment><USER16> The title is absolutely obnoxious.

<comment><USER11> That's only if you're devoid of sense of humor.</comment></comment>


Wazer introduces the first desktop water-jet cutter - <AUTHOR> http://spectrum.ieee.org/video/geek-life/tools-toys/this-water-jet-cutter-can-slice-through-anything-steel-glass-or-steak <comment><USER2> For anyone who needs things waterjet cut (or other methods) there are a lot of metal fab shops out there, and you can get things cut cheap enough. The last water jet job I had done in a 24 hour rush was $140 for a 1 sq ft piece of aluminum 1/4" thick. It was shaped with a couple holes in it, not complex, but $140 is a long way from $6000.

For speed, this thing is slow (fine for hobby use) and you may find that other processes are more appropriate - especially if you cut a lot. I have a HD Plasma that can cut 1/4" steel plate at 282 inches per minute; compare that to the 0.4" on this machine. While my machine was $60,000 and thus 10x more money, it does cut 700x faster ..... and I am going to the Fabtech show in Vegas this week because I need to go even -faster- . [http://www.fabtechexpo.com/](http://www.fabtechexpo.com/)

Dreaming of a Kinetic machine with dual torch heads ... [http://www.kineticusa.com/products/production-spindle- drilli...](http://www.kineticusa.com/products/production-spindle-drilling- cutting-machines/kinetic-k5000/)

Or maybe a 6KW fiber laser ... (this video is not sped up!) [https://www.youtube.com/watch?v=B3gMM5VSQUE](https://www.youtube.com/watch?v=B3gMM5VSQUE)

Fabtech is one of those trade shows where something under a few hundred thousand dollars seems cheap!

<comment><USER3> I totally lost my respect to IEEE as a "serious organization" when I saw they were advertising [1] their start-up event with the title "Everything you know about startup success is wrong"

1: [http://postimg.org/image/cz2rbvifz/](http://postimg.org/image/cz2rbvifz/)

</comment></comment><comment><USER4> The difficult thing in water jet cutting, historically, was the development of nozzles that can withstand the abrasive fluid. These parts have to shoot a jet of fluid which can cut through steel and ceramic; but themselves cannot be easily cut by the passage of that fluid.

I'd be concerned about the life of the nozzles and the cost and availability of replacement parts.

<comment><USER5> I wonder if you replaced the abrasive material with a ferrous material could you direct the stream with magnets? I guess the material would first have to be charged. And would the water flow follow the [hypothetically] focused stream of ferrous material? I need some coffee.

<comment><USER6> Interesting idea. If the water were conductive -- say salt water -- then I don't see why you couldn't steer it with magnets. The trick would be to keep an electrical current running through the jet.

At normal fluid pressures -- the classic example being peeing on an electric fence -- it's hard to get much current flowing since there's so much empty space between droplets. But at thousands of PSI, is that still true?

<comment><USER7> Water is dipolar (the oxygen atom 'pulls' harder on the electrons it's sharing with the hydrogen atoms, so the middle is negative and the ends are positive). It can be controlled by both electrostatic and magnetic fields, no salt needed.

<comment><USER6> Electrostatic, sure. You can deflect a stream of water from a faucet by holding a comb near it. But magnetic?

</comment></comment></comment></comment></comment><comment><USER8> I've looked at the examples of things they cut with that thing [0] and the amount of time and abrasive needed to cut even a single knife blade out of steel is quite shocking:

> _Cut time: 118 min. | Abrasive used: 39 lb._

I presume this abrasive sand, garnet, is non-recyclable? Yikes!

Imagine how many bags of sand you'd need to cut a whole sheet of metal!

[0] [https://www.kickstarter.com/projects/1294137530/the-first- de...](https://www.kickstarter.com/projects/1294137530/the-first-desktop- waterjet-cutter?ref=nav_search)

<comment><USER9> AFAIK garnet isn't recyclable, but it's also pretty much just sand (non-toxic, though the material you're cutting might make the resulting slurry something to avoid).

To put the amount of material in perspective, the large table waterjet in the shop that I work at recently had its annual cleaning, during which over 1.5 tons of garnet mud was removed (we do use it regularly, but we're far, far from a high-volume shop). To cut a single knife blade ours would probably use less than a pound of garnet, but then again our machine cost several hundred grand.

As for time, that is indeed pretty high, but it's comparable to what you'd expect from commercially-available 3D printers. DIYers wouldn't be discouraged there.

For me, the biggest reservation is that 4mm of steel seems quite shallow, if indeed that is the maximum depth.

(Note that I just started working at this machine shop two months ago, so I'm hardly a real expert here. :P )

<comment><USER8> Thanks for an excellent overview and for confirming my assumptions. I've seen commercial waterjet machines in action when I visited a tool factory when I was in high school and those machines were amazing... they were cutting through plates of steel like it wasn't even there.

As for garnet, yeah, it's sand but it's finely meshed and I'm guessing you need a strongly abrasive sand. Unless you're near some beach with that type of sand, you'll have hard time finding something optimal.

I just don't see why any DIY-er would want this want this machine given how expensive and time-consuming the whole process is. Unless you're rich or working for some rapid-prototyping place, you're much better off paying commercial guys for cutting your blanks for you. Anyway, feel free to correct me if you think my reasoning is wrong since I'm no expert.

<comment><USER9>
      > you'll have hard time finding something optimal

I wasn't intending to imply that one could use any old sand in the machine, only that disposal shouldn't be unduly bad for the environment (unless your recycling comment was intended to focus on the economic aspect rather than the environmental aspect).

Taken in the context of being a first-generation device, I don't think this is a bad product at all. First-generation 3D printers were way less polished than this appears to be (though of course I haven't used it myself). It remains to be seen how much maintenance it will require, but even current-gen 3D printers seem to manage to break down once a week or so, so again I don't think DIYers will be deterred there. :P And in particular, I think hackerspaces with a decent amount of cash but with scant floorspace might find this product compelling (our waterjet is easily the single largest tool in the shop). This might also appeal to folks with personal shops who can't justify the enormous expense of a full-size waterjet, who might purchase this out of sheer novelty. AFAICT it won't appeal to rapid prototypers, because prototyping in acrylic (or wood) via a laser cutter is already so much faster than waterjetting (unless you _need_ your prototypes to be metal, in which case you already own a full-sized waterjet).

TL;DR: empowering DIYers is good, even if initial appeal is limited, and hopefully subsequent generations of the device will improve the economics.

<comment><USER10> You can basically use any old sand as long as it's meshed within spec for your machine depending on what you're cutting.

<comment><USER11> If you use silica sand, you get silica dust and silicosis.

</comment></comment></comment></comment></comment></comment><comment><USER12> Odd that they don't want to let anyone know the operating pressure. They seemed to spend an inordinate amount of song-and-dance dodging the "whats the pressure" question.

<comment><USER13> It is odd. That was my first question, having used a more traditional (==much larger) one.

I have trouble figuring how the cutting speeds claimed jibe with the overall weight of the device. Not calling it out, just saying based on their numbers, that seems like quite a lightweight tank for the kind of pressure used for cutting, for instance, stainless steel.

<comment><USER14> I'm also kinda wildly interested how they keep vibration down, given the operating pressure, etc

</comment></comment></comment><comment><USER15> Based on one of the examples on their website (the knife), I estimate that we can cut around 27 times faster on a professional waterjet machine.

Given equivalent running costs, this means that 2 hours of runtime on a pro Flow or Omax machine is equal to the price of the entire Wazer.

In other words, the $6000 you spend on the Wazer will buy you a LOT of complete parts from on online service like Big Blue Saw.

<comment><USER16> Latency is a major advantage of this stuff. Do 10 examples on this as you iterate a design then 1,000 on a professional device. Even if it is really slow, you can probably use different materials and or thinner materials.

<comment><USER17> As other comments pointed out there seems to be an issue with max pressure it can produce. If it has to be run for hours on end it might actually be cheaper to get a local place to do it...(Not even considering the costs of maintenance and consumables, just power and initial price)

I've had parts made on a crappy waterjet once and we just tossed them all out due to extreme taper (Although the company was a massive piece of shit too, used the wrong material)

</comment></comment></comment><comment><USER18> Huh, another puff piece about a crowdfunding project on an IEEE blog. Is this a trend?

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

</comment><comment><USER19> Looks pretty cool, but it seems like it would be impractical to use regularly for small things due to the hassle of purchasing, storing, and disposing of large quantities of abrasives. (I wonder if higher-pressure commercial machines consume less abrasives?)

My point of comparison is that I own a 45 watt laser cutter from Full Spectrum [1], which I'm pretty happy with. The machine is kind of expensive, but the cost of operating it is very low. Just have to keep the mirrors properly aligned and clean, and top off the water bucket and scoop out dead bugs from time to time. The main operating expense is the material, and I can get 1/4" or 1/8" birch ply for under a dollar a square foot. I can't cut metal or glass or ceramic or stone though, which is where a water jet would come in handy. Another advantage of a water jet is that you don't have to vent smoky exhaust. (Fortunately, I live in the top floor of an apartment, and if anyone notices they probably think I'm running a barbecue.)

[1] [http://fslaser.com/Product/Hobby](http://fslaser.com/Product/Hobby)

<comment><USER20> Is it possible to cut metal with a more expensive laser cutter?

<comment><USER21> Yes, but in most cases you'd be looking at industrial-scale machines. Better find a smaller local shop and send them a .dxf, they'll have better access to raw material anyways. Buying sheet metal in small quantities is expensive and a pain.

Small laser cutters are really fun though. Other interesting materials (besides wood) that can be laser cut with good results are acrylic and delrin. Delrin has great mechanical properties but can't really be glued effectively. Acrylic cracks easily but has the advantage of being easily "welded" with some solvents (acetone can work in a pinch but isn't the best, dichloromethane is great but requires most safety precautions).

</comment></comment></comment><comment><USER22> This was on kickstarter here: [https://www.kickstarter.com/projects/1294137530/the-first- de...](https://www.kickstarter.com/projects/1294137530/the-first-desktop- waterjet-cutter?ref=nav_search)

It is a little pricey, but pretty cool.

</comment><comment><USER23> Very cool, but the price of the abrasive seems high; why does it have to be disposed of instead of reused?

<comment><USER24> That struck me as well. The abrasive cost looks to be the killer there.

<comment><USER25> Lets say you only cut steel. Then the steel particles could be filtered out with magnets. I suppose its much more common to want to work with steel than glass or ceramics.

<comment><USER26> If you only cut steel you should be buying a plasma cutter.

<comment><USER27> This 100%. Water jet is great when you need to cut things that don't cut well any other way (tiles, glass,stainless steel, hardened tool steel). Otherwise, plasma, laser, router, mill, etc are all nicer and easier to work with.

Yeah, I'd love to have a water jet for making tools, but I've learned to live with the fact that these kind of things are better owned by someone else.

<comment><USER28> idk, plasma leaves a lot of slag and depending on the application requires substantial finishing work. mill is fine but has a limited work area (like this waterjet), and at least in my shop, cutter lifetimes aren't great. Thats probably because i don't have the best processes. Also holding down sheets well enough is a substantial hassle unless you're set up for a particular run. Metal routers are really noisy and are arguably more of a hassle than mills.

but I totally agree with your last point, its less convenient, but doing small to medium runs though a local water jet shop is pretty cost effective. Its mildly pricy but they will source standard material for you, and you pick up clean parts a day or two later. even ignoring maintenance - dealing with the up front cost, the consumable cost, and renting enough space to keep the thing is a pretty serious commitment. I have free access to a 4x8 cnc plasma gantry and I still send out quite a bit of work to the water jet place.

</comment></comment></comment></comment></comment></comment><comment> guard-of-terra If you're curious how these things look like: [https://www.youtube.com/watch?v=PCsoC3i7JYc](https://www.youtube.com/watch?v=PCsoC3i7JYc) (this is some other waterjet cutter obviously)

Looks amazing.

<comment><USER29> Great video!

</comment></comment><comment><USER11> This is a messy process, unlike laser cutting. The Kickstarter videos gloss over that. (They also avoid showing video of the thing cutting at actual speed.) The tank fills up with water and garnet sludge. A lot of sludge. They don't show cleaning out the tank.

I've used TechShop's Flow waterjet cutters a few times. They're way overkill for most TechShop jobs, being able to cut 4 inches of steel plate 8 by 8 feet. TechShop's people are looking at the Wazer. The big question is operating costs. If the Wazer goes through its consumables fast, it could be too expensive to run. It's useful to have a small waterjet, but it's not clear that a really slow waterjet is useful. Especially if it chews up more garnet per cut. Still, it could be great for thin sheet metal jobs.

I hope this thing ships. Remember GlowForge, the low-cost laser printer? That's been hyped for two years now, and holds the all-time Kickstarter pre- order record, $28 million, beating out the Pebble watch. But it hasn't shipped. Currently they're claiming they will ship by the end of December 2016.

</comment><comment><USER30> The kickstarter page has a 'preorder' button. So did Kickstarter give up on the 'donate to fund artistic endeavor/get a premium' model, and just switch to selling things now?

</comment><comment><USER31> Mmmmmm... gritty steak, my favorite.

<comment><USER32> Yeah, I would think the abrasives used in the cutter are not exactly food safe.

<comment><USER33> Steak can probably be cut without an abrasive.

</comment></comment></comment><comment><USER34> How does this compare to a co2 pump laser CNC? what conditions would water jet be preferable especially because it also requires high power consumption? Co2 lasers are cheap and pretty easy to build/ maintain. They also can put out enough power to cut steel. In my experience only special optical/thermal materials like borosilicate glass or certain plastics are not good with co2 because of heat build up/ stress and fracturing properties

<comment><USER35> CO2 lasers aren't great for many metals due to wavelength issues. Waterjets create essentially no heat affected zone. As an example, I've cut two inch thick black granite with a waterjet, and I'm not sure a CO2 laser would do more than scuff it. Silver seems to just reflect infrared lasers like a mirror. Some plastics make nasty fumes in a laser, but cut fine with water. When both technologies were in their earlier years, I would have taken a waterjet over a laser for most industrial uses. Now I think I'd lean more towards a fiber laser. I'm not sure how much more innovation there is left in the waterjet realm, but lasers seem to be continuing to get better.

<comment><USER34> Thanks that makes sense.

What cut edge quality can waterjet achieve? It seems it would be a factor of the abrasive material particulate size. Has pure waterjet been employed (the pressure requirements would be huge I would assume but doable). I've seen directed explosive blasts + water cut through cars :)

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

It's interesting you bring up silver/ other IR reflective materials), as I know fiber lasers cut silver.

Here's a cool paper on it:

[http://onlinelibrary.wiley.com/store/10.1002/latj.201390001/...](http://onlinelibrary.wiley.com/store/10.1002/latj.201390001/asset/18_ftp.pdf;jsessionid=AE3A209E65435632EF12EE00663E72BB.f03t04?v=1&t=ivjhm9f2&s=4fcd1e0db0ec9adb9fe9e1ef8637140dc6389093&systemMessage=Wiley+Online+Library+will+be+unavailable+on+Saturday+26th+November+2016+from+07%3A00-11%3A00+GMT+%2F+02%3A00-06%3A00+EST+%2F+15%3A00-19%3A00+SGT+for+essential+maintenance.++Apologies+for+the+inconvenience).

<comment><USER35> I actually worked on beta testing what was, around eight years ago, the most precise waterjet in production. It did indeed use very fine sand that seemed to get into everything. Keeping it from caking was the main challenge. Edge quality on an OMAX is a software setting (I love their software and use it for everything 2D and vector). Basically, the numbered quality settings allow you to prioritize what kind of edge quality you want. 1 gets you the bare minimum needed to get the parts to separate. 2 is fine, but a bit rough on the bottom. Picture that the waterjet pierces the material and then moves slowly, grinding the interior edge of the cut along the path. If you corner quickly, it flares out in the opposite direction. I think of it as being like cutting with a paintbrush. 3 is optimized for dimensional accuracy on the top of the cut. Despite the fact that the water stream spreads out as it goes, the top of the cut is wider than the bottom. This is due to ejecta cutting on the way back out of the cut, and the velocity being higher near the nozzle. Higher numbers are for reducing the taper of the cut, but generally reduce dimensional accuracy. There are also settings for cutting without abrasive, which are generally only worthwhile for something soft or edible, and settings for etching, which I found too loud and messy to mess with. There are also nozzles that will tilt as they cut, which allows you to move and corner quickly by countering the taper with tilt.

I do have experience with cutting precious metals with a laser. CO2 and fiber lasers may both be infrared, but it's a big spectrum. CO2 is a wavelength better suited for cutting organics, and doesn't have the fine focus or energy density available in fiber. I've used a 70 watt picosecond fiber laser for cutting silver and it actually cuts very nicely, but the problem is getting up to the initial threshold to affect it at all. Titanium, with it's low reflectance to infrared, low thermal conductivity, and high melting point, will cut with a power setting that won't leave a visible mark on silver with its opposite set of properties.

<comment><USER34> That was an awesome description. Thank you

</comment></comment></comment></comment></comment><comment><USER36> That was the ugliest steak I think I've ever seen.

</comment><comment><USER37> What's the advantage of water vs metal blades? Do metal blades not cut through glass/porcelain/etc well?

<comment><USER38> I would like to know how its possible to operate this thing without wearing down the nozzle as fast as you're cutting the workpiece. Is the grit fed down the center of a laminar flow of water so it never touches the metal of the nozzle?

<comment> semi-extrinsic The particles in the flow won't hit the nozzle much at all, since the average flow is tangential to the nozzle walls. Even if the flow is highly turbulent inside the nozzle, there is a boundary layer where the velocity becomes zero. However, when the flow impacts a solid object, the particles can't "keep up" with the fluid splashing away due to their inertia, so they hit the solid object at high speed.

Particles in turbulent flow are characterised by (among others) the Stokes number [1], which says something about how well the particles follow the flow. This depends e.g. on the particle size, roughness, and the density difference between solid and fluid.

I imagine they have tuned the Stokes number to an optimal tradeoff between cutting speed and nozzle/fluid line wear.

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

</comment></comment></comment><comment><USER26> I see this falling flat on it's face unless the table is easily expandable. Waiting a long time for a part is a much easier to deal with problem than constantly hitting the upper limit of what your machine can cut.

</comment><comment><USER39> Tip: Make sure to turn your volume down before clicking the link.

</comment><comment><USER40> Holy cow, the addition of a set of legs costs an additional $250?! Who the hell could ever justify such a price increase to save a bit of worktop space?

<comment><USER41> Custom options on small-run hardware is invariably quite high because of the cost to manufacture and the small end-market.

Compared to options on other machines out there it actually feels quite cheap to me (even in current GBP terms).

I'd not fault them for this.

</comment></comment><comment><USER42> why would you use a Rolex to show off your water-jet cutter? So many harder yet less expensive things to demo...

</comment><comment><USER43> Seriously, why has it taken so long for me to be able to get a steak in the shape of the US?

</comment><comment><USER44> Since the product doesn't actually exist yet they should perhaps say Plans rather than Introduces.

<comment><USER45> By "doesn't exist" do you mean "isn't for sale?"

</comment></comment><comment><USER46> What is the base of the cutter made out of? Does the water jet defuse before hitting the base?

<comment><USER15> There's typically a catch tank filled with water below the workpiece, which diffuses the stream pretty quickly. I've also heard of other materials being used, like stainless steel ball bearings.

</comment></comment><comment><USER47> very interesting, except for the destruction of a rolex watch.

</comment><comment><USER48> As much as I appreciate the innovation, I'm not sure this would do well in places like California where water has become a bit more scarce than it once was.

<comment><USER49> This is the kind of numerically illiterate logic that now requires me to ask for a glass of water at a restaurant when I'm in CA.

There are probably 10+ orders of magnitude difference between the couple gallons used here and the billions of gallons used in agriculture, industry, etc.

Water isn't expensive at anything less than an industrial level, and using this will have 0 impact on the water shortage.

<comment><USER50> > numerically illiterate

innumerate :)</comment></comment></comment>


Infinite Force? Forty-year-old Fortran to the rescue - <AUTHOR> http://nbodyphysics.com/blog/2015/12/08/threebody-2-0/ <comment><USER2> I'd like to say to everyone starting out doing math with computers: You see that old book of numerical recipes or physics problems done in Fortran? Yeah, those are pretty damn good recipes. Do you need some weird function, like a gamma function or hypergeometric function? Maybe you want to minimize a function with simulated annealing or you want to design a Chebyshev filter? You can dig up a library somewhere or you can just look in that dusty old book on the shelf.

There's a C version but the Fortran version is easier to find.

<comment><USER3> > You see that old book of numerical recipes or physics problems done in > Fortran? Yeah, those are pretty damn good recipes.

If I don't have that book, what's a good one to get?

<comment><USER4> [https://www.gnu.org/software/gsl/manual/html_node/](https://www.gnu.org/software/gsl/manual/html_node/)

</comment></comment></comment><comment><USER5> I think porting code from one language over into another is one of the better ways to learn a new language. Especially older, lower-level code. I've probably learned more from rewriting an old school project ray tracer in three or four different languages, or grinding away at utilities to load up Quake and Wolfenstein 3D assets based on the ID code, than I have in my actual day job.

</comment><comment><USER6> This reminds me of something that's always struck me as odd about large-scale physics simulations: using invariant spacial coordinates when doing a gravitational simulation is totally absurd. Wouldn't precision problems be much less of an issue if you distorted space according to gravitational influence, as happens in real life?

<comment><USER7> The 'resources' section of the post has 2 links, e.g. www.ma.utexas.edu/mp_arc/e/03-547.pdf goes through several rather clever transformations of (spatial and/or time) variables to improve accuracy.

</comment></comment><comment><USER8> I just took a class of dynamic systems and this post struck me.

Actually it is possible to model the planets using simple mathematical tools and find a space of solution to the problem (have planets that keep staying together) in an analytic or simil-analytic form.

All this can be done on paper, which is actually faster than code integrator but way less cool to watch...

<comment><USER9> The three body problem though is famous for having no solution in terms of basic functions. I think for your planets model you must have been making different assumptions than in the article.

<comment><USER8> In system dynamic you can divide a problem in simple (with a finite number of solution) and complex (with an infinite, fractal shaped, number of solution).

If the problem is "complicated" (a lot of strange, ugly, non analytic equation)but simple you can roughly cut the solution space by hand, assuming a small number of solution.

If the problem is complex all you can do is looking for cycle and equilibrium point using your intuition about the system or being lucky and find a strage attractor (chaotic behavior) slightly moving the parameter.

So, yes, I was to quick writing my reply, you can definitely model the n-body problem, exactly solve it is another beast, check a solution however is still relatively easy...

</comment></comment></comment><comment><USER10> Actually since the earlier 90s there are mathematical proofs showing how to generate infinite velocities using 4 objects. (In the Newtonian framework)

<comment><USER11> Do you have a reference?

<comment><USER10> One guy is called Xia and he proofed it 1994. (For only 4 objects using a non- constructional proof)

Here is a reference for an earlier proof with 5 objects: [https://en.wikipedia.org/wiki/N-body_problem#cite_note-34](https://en.wikipedia.org/wiki/N-body_problem#cite_note-34)

Update: [https://en.wikipedia.org/wiki/N-body_problem#Singularities_o...](https://en.wikipedia.org/wiki/N-body_problem#Singularities_of_the_n- body_problem)

<comment><AUTHOR> Thanks! There is also a discussion in The Million Body Problem (Heggie & Hut). Looking forward to poking around in this.

<comment><USER10> No problem! Wow, this sounds fancy, gotta read this!

</comment></comment></comment></comment></comment><comment><AUTHOR> nbody here.

Note the Android Lite version 2.0 somehow ended up in Occulus mode in the final APK. A fix is uploading to Google play now!

I have no idea how to even turn that on in Unity - so it's a bit of a puzzle!</comment>


iOS App Reverse Engineering - <AUTHOR> https://github.com/iosre/iOSAppReverseEngineering <comment><USER2> Also, don't miss this walk-through from last week:

Reverse-Engineering iOS Apps: Hacking on Lyft

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

<comment><USER3> My talk was also very introductory. Snakeninny's book covers a lot of things I didn't get to, including an introduction to ARM assembly, and how to reverse engineer components of iOS itself.

</comment></comment><comment><USER4> Why are they storing a binary file in a git repo? Every version of the file is stored, which makes it hard for anyone to quickly clone the repo. The repo is 261.9 MB large, even though the pdf is 16.4 MB. The file should be located in the "Releases" section.

<comment><USER5> Man that stuff really drives me crazy. Putting releases is one faux pas, and the inclusion of every library required to build the thing is the other one that burns me up.

I have been known to take a copy of reposurgeon to strip out the binaries and demonstrate to the repo owner how much smaller the repo would be if one were to make use of an actual release or build process. I would be glad to fix every one of them I come across, if I thought I had any prayer of having the repo owner accept the new slimmer version.

<comment><AUTHOR> I've stripped the repo and now it's only 16M large

</comment></comment></comment><comment><USER6> Thank you for this. Sharing your knowledge for anyone to enjoy and innovate upon is a great thing you're doing.

</comment><comment><USER7> I am getting this error - 'Failed to load document'. Anybody else having same problem?

<comment><USER8> Press the raw button and it should download.</comment></comment>


Show HN: Twofu: A Two-Factor Authenticator Command-Line App - <AUTHOR> https://github.com/ukazap/twofu/blob/master/README.md <comment><USER2> This pretty much does away with one of the benefits of 2fa; namely the client you're entering password into is physically divorced from the client you're getting the second factor from. Take for (stupid) example, you're a company that uses pubkey + 2fa auth for user SSH logins. The pubkey already resides on the device logging in, if the key in in memory or not pw protected, there's no access control if the second factor is also available from the same machine.

<comment><AUTHOR> Valid point. I leave it to the users how they secure their machine in which this app run, e.g. it's not wise to use this while your hard drive (or at least home directory) is unencrypted or the said machine is a corporate laptop.</comment></comment>


How Alexa mines open data - <AUTHOR> https://gcn.com/articles/2018/06/28/johns-creek-alexa-open-data.aspx <comment><USER2> Eh, misleading article title. It's interesting to see an Alexa use case with local governments, but it's really a showcase of that and not a general piece on Alexa and data mining.</comment>


McDonald's to use vegetable oil for UAE trucks - <AUTHOR> http://www.allheadlinenews.com/articles/90053315?McDonald%27s%20to%20use%20vegetable%20oil%20for%20UAE%20trucks

<comment><USER2> Glad to hear this, for some rough math the 20,000 liters of vegetable oil (unprocessed) is roughly 5,200 gallons[1].

Let's assume we lose no volume during the processing to biodiesel, the average semi carries about 200 gallons of fuel[2] -- so that provides 26 fillups for the year of biodiesel.

Not huge, but it's a great start. That is still a lot of oil not getting thrown out.

[1] <http://goo.gl/MIhxV> [2] [http://answers.yahoo.com/question/index?qid=20080326203920AA...](http://answers.yahoo.com/question/index?qid=20080326203920AAQWTcT)

<comment><USER3> Currently, used vegetable oil is rarely just thrown out. Used oil can be used to make soap, cosmetics and many other goods. Most fast food chains and other large consumers of cooking oils sell their used oil to companies that then resell the oil for other uses.</comment></comment>


Six Banks Pay $5.8B, Five Plead Guilty to Market Rigging - <AUTHOR> http://www.bloomberg.com/news/articles/2015-05-20/six-banks-pay-5-8-billion-five-plead-guilty-to-market-rigging

<comment><AUTHOR> No jail time for anyone. Less than $1B fine each.

At best, this is a bit of theater to try to convince the world that these banks are not more powerful than governments, but let's be honest... They are.

When you can manipulate the entire world's market via a _chat room_ and this is the best a government can do, you know no one holds sway over you.

Not to mention, this is blatant collusion.

Comcast must be pissed. We're worried about a Comcast/TW monopoly - in the meantime banks are acting like a single entity, manipulating global markets for their own gain, and I haven't heard a single peep about breaking them up. Not from the U.S., not from the EU, who are busying themselves being worried about Google...

How can I be anything but pessimistic about the future global oligarchy?

<comment><USER2> I have been thinking about this, and don't think jailing bankers will be any more effective than jailing drug dealers in terms of "fixing" the banking problem.

However since banking is regulated, it might be possible to "ban" people from the game, which is to say take an individual out of the bank, forfeit a years wages and bonuses, and ban them from working in any financial institution in the future.

The reasoning behind that sort of penalty is as follows, most "rich" bankers have a fairly high cash burn rate, forfieting a year of wages & bonuses would not bankrupt them but it would force them to stop for a period of time and recover their budgeting. Banning them from financial institutions would take them out of the game with respect to recreating the bad thing they did before, and ideally force them to find a different way to make money. Finally, by not actually putting them in jail you save the taxpayers a ton of money.

<comment><AUTHOR> Ya know, I think that's a pretty decent solution for deterrent, although the game might become, make as much as possible before being benched.

As for prison, I'm not worried about the deterrent - I want the punishment dealt out. The number of lives hurt by these games are huge. We jail people for things that are so infinitesimally small by comparison. On the individual level (and call it vengeance if you must, I call it justice) I want these people to pay for their crimes, just as I would have to pay.

</comment></comment></comment><comment><USER3> It's simply not enough. The penalties for such behaviour should be steep, such behaviour should not be tolerated from any organisation let alone those trusted with money.

Makes you wonder how in bed they are with the DoJ!</comment>