Font Dragr: Test custom fonts in the browser. No code, just drag and drop. - <AUTHOR> http://fontdragr.com/

<comment><USER2> Similar idea -- <http://www.extensis.com/en/WebINK/fontdropper/index.jsp>

</comment><comment><USER3> Author here.

If you're interested in hacking on this project it's available on github to look at.

<https://github.com/ryanseddon/font-dragr>

</comment><comment><USER4> This is a great tool. Seems to be a much easier/faster version of Tim Brown's Web Font Specimen (<http://webfontspecimen.com/>).

</comment><comment><USER5> Pretty cool. It would be very nice if it had some default fonts in there to just play around with out-of-the-box.

</comment><comment><USER6> Seems like a nice idea, but I get a "Data was not valid JSON." error when drag-dropping any font on FF6 Ubuntu.

<comment><USER3> You may be the same person who mentioned on twitter about this. That error should only happen when dropping some data that isn't in the correct format, it should never get to that part of the code if you're dropping a font file from your file system. Do you mind creating an issue on the github repo[1] with some info?

I've tested on ubuntu 11 with FF5 and all seems well, perhaps FF6 may be doing something to cause it.

[1] <https://github.com/ryanseddon/font-dragr/issues></comment></comment>


DIY: 200 Dollar PC, Part 3 - PaulStamatiou.com - <AUTHOR> http://paulstamatiou.com/2008/02/09/diy-200-dollar-pc-part-3 <comment><USER2> so I'm confused. This is _way_ more than a $200 PC given all the time and effort.

Here's how I'd go about it -- either:

a. go get a dell hot deal for $199 (they had a server a couple weeks ago for $199, no OS)

or

b. Fry's $59 mb/cpu special (built in video and lan), $20 case (microcenter), $15 PSU (frys/microcenter), $65 hard drive (Frys/newegg), $20 memory (newegg, frys).

Seems like a sub $200 computer isn't that hard to accomplish. So again, I ask what is the point of the article?

<comment><USER3> Maybe he just wanted to show off his workshop skills. And notice that the machine has 2 disks...

But I agree, it was mostly a pointless way of saving maybe $100-200 (edit: not pointless for the article's author of course, I'm sure he had fun with his project -- I just think it wouldn't make sense for the average hacker to try to replicate it).

Edit 2: now if it had been a fan-less design, that would have been more interesting as a DIY project.

<comment><USER2> I agree, if he'd done fanless or super small (which what he did is small, with the itx and crappy PSU)....

He also must not have kids or a cat, since an open case like that certainly wouldn't fly!

<comment><USER4> You're right, I have no animals or kids. I'm 21 and live in college pad with smelly guys.</comment></comment></comment></comment>


Rands in Repose: How to Run a 1:1 - <AUTHOR> http://www.randsinrepose.com/archives/2010/09/22/the_update_the_vent_and_the_disaster.html <comment><USER2> _When the Vent begins, you might confuse this for a conversation. It's not. It's a Vent. It's a mental release valve and your job is to listen for as long as it takes. Don't problem solve._

This is one of the most important things about conversations I've ever learned. When someone comes to you with a problem, you need to detect if that person wants 1) your help with problem-solving, or 2) commiseration.

#1 tends to be a calm, analytical conversation, while #2 can be emotionally motivated.

When someone is looking for commiseration but you offer problem solving, you might actually add to their frustration by your lack of compassion for their situation.

If they're looking for problem solving but you commiserate, you might actually add to their frustration as they wonder why you're doing so little to help them.

Identification is the first step to being an effective conversation partner.

<comment><USER3> Thanks for this. I have definitely frustrated friends who come to me complaining, in exactly the way you describe, because I offered only problem solving when they wanted commiseration. I think I can identify commiseration (they come complaining about something stupid, and then reject my sensible suggestions), but I don't know how to solve it -- how do you effectively commiserate with someone?

<comment><USER2> _how do you effectively commiserate with someone?_

I think people want their suffering to be understood. All that's necessary is to let them know you identify with their problem. Just validate their complaint.

For example, saying "oh man! that sucks!" might be all that's needed. Or, "I can't believe he said that!" Or, "you can't be expected to read their mind!" etc.

You'll know you're effective if such comments start to relieve your conversation partner. If you're wrong and problem solving is actually called for, people will explicitly ask you for solutions-- especially if it's a conversation at work, as in the OP.

<comment><USER4> Better yet "That happened to me this one time..."

empathy > sympathy

<comment><USER5> That's risky, because it might come across as implying you don't care about their own problems because you have/had your own.

</comment></comment></comment></comment></comment><comment><USER6> If you want to actually make this happen, read the book, "Parent Effectiveness Training" by Thomas Gordon. Get over the title and understand this is about active participation in a conversation with two people. You listen. You let the other person talk. You don't try to solve their problem, at least until or unless they want it. Let them express, and sometimes that alone is enough. It works whether in business, personal relationships, or even parental relationships.

Brilliant Rands blog entry.

</comment><comment><USER7> The article is a bit overly prescriptive. "These are the three kinds of conversations you will encounter, and here is how you should respond." Human interaction is not that easily codified.

The book _Behind Closed Doors_ superbly describes approaches to conducting weekly one-on-one meetings, in addition to IT management in general.

Oh, and "1:1" is a ratio.

<comment><USER4> In any one on one, there _is_ a 1:1 ratio of managers to managees.

<comment><USER7> Two-on-two is also a 1:1 ratio.

Really, you get 3 points for that, and I get -2 points for a valid criticism and a book mention? People don't like dead trees? If you care about being a better manager, get the book -- it's a much better treatment of the subject. Actually I think ol' Rands here ripped off a lot. See page 12.

</comment></comment></comment><comment> brown9-2 Anyone read either of Rand's books? I see a new one just came out last month: <http://www.beinggeek.com/>

Also thanks to his wikipedia page, I just learned for the first time that the magical software company that Rand describes with smart and attentive managers is Apple.

<comment><USER8> I read Managing Humans a while back, when I was a programmer, and liked it. Then, a year later, after I'd started working as a manager, I read it again and found it _amazing_. Seriously, having seen how things work as an actual manager, I was able to relate much more to all his stories and characters, which are spot-on, and got a lot of help from this book.

</comment></comment><comment><USER9> My experience has been that engineers tend to resent this kind of stuff. Many of them would consider it 'fluff' that essentially distracts them from important work.

I have one on one meetings with my team, but I don't force a lot of structure on it. If it takes 2 minutes fine. If it takes an hour thats fine too. If nobody wants to do it during crunch time then we don't do it.

Not saying one on ones are not important, but given a certain kind of team and a certain kind of employee they are not necessarily required or a productive use of time.

<comment><USER10> I'd still say you need to book at least 30 minutes. If your staff don't want/need more than 2 minutes, then fine. The important thing is telling them "this time slot I'm all yours".

</comment></comment><comment><USER11> Ugh. A thirty minute status meeting every week? I'd be updating my resume.

<comment><USER12> Most 1:1s shouldn't be meetings. Think of them as 'bonding' time. This is where you get a pulse of each other. In the manager's case, find out whether your report is happy or on the verge of burning out.

One recommendation I would do is to not do the 1:1 in a typical office setting. Some of the most effective managers I know do it outside - from the cafeteria to a nearby restaurant. A friend of mine had a great manager who did 1:1s while doing joint grocery shopping for the Friday evening team meeting/casual get-together thing.

<comment><USER11> If we're not boozing and cracking jokes it's a "meeting", and I've got better things to do.

> where you get a pulse of each other ... find out whether your report is > happy

Mature adults want a business relationship at work, not a psychotherapist. Everybody does their job and gets paid, the end.

This whole idea sounds like those "Please rate our service" surveys you get from businesses. I'll rate your service with my wallet, thanks. If you can't figure out how to make sure things are running smoothly that's your failure, and I'm positive survey results won't help. It really shouldn't be that hard.

Really, if a manager can't see what's what with who just from the day-to-day, then I assure you the place is screwed up and some stupid weekly meeting will be useless.

<comment><USER13> I think most adults will fail to meet your standard for maturity, from time to time.</comment></comment></comment></comment>


Google hired 30 employees to stop locals from stealing its bikes in droves - <AUTHOR> http://www.sfgate.com/technology/businessinsider/article/Google-hired-30-employees-whose-only-job-is-to-12478672.php <comment><USER2> The title is a bit misleading in that the 30 are _contractors_ , not Google employees.</comment>


Rhythm for beginners - <AUTHOR> http://www.whitakerblackall.com/blog/music-theory-for-beginners-ii

<comment><AUTHOR> Some great discussion about part 1 here: <http://news.ycombinator.com/item?id=2326502>

</comment><comment><USER2> this blew my mind! dude mashes (piano) keyboard, plays it back, sounds as you would expect -- awful. then dude uses software to snap all notes to the nearest sisteenth and adds a boring base line. sounds awesome!

search for heading "An Experiment"

<comment><USER3> You picked out the best part of the article: the clips are fun. I also liked the quantized version of random notes on a keyboard.

However, as a musician, this sort of article makes me uncomfortable. He says: "In this post, we will be discussing rhythm basics and all things related." Not exactly. He discusses rhythm basics from a certain cultural background, roughly western European mainstream music of the present day.

His discussion focuses one particular notation (whole notes, etc.), one particular tool (a sequencer), and most of all one particular musical language (mostly 4/4 with a backbeat, and typical mainstream instruments, electronic keyboard and drum kit: kick, snare, hi-hat).

Music is not limited to that which can be quantized.

His discussion of swing is primitive. He probably doesn't play jazz, though I can't say for sure.

I don't mind that he approaches from a certain place. It just makes me uncomfortable that he omits his background to the point where a beginner might mistakenly think the post is somehow universal.

<comment><USER4> So your point is that his "Rythm _for beginners_ " article is not advanced enough?

</comment></comment></comment><comment><USER5> You can also apply the same ideas to design. Oftentimes you can make a crappy design look decent by just aligning things to a grid or to each other. _The Non-Designer's Design Book_ by Robin Williams is a good intro to the whole idea.

</comment><comment><USER6> I've always loved the math of rhythm. I also always loved the logic of the different rythmic notations - whole notes, quarter notes, 16th notes.... So orderly.

</comment><comment><USER7> Part I really caught my attention when it was posted a week or so ago. I've never really learned about music but it seems like a lot of programmers really like composing music. (Actually, L. Peter Deutsch famously left programming in favor of composing.)

I can't speak of it's quality yet, but the original post lead me to stumble upon: <http://www.musimathics.com/>

<comment><USER8> I think it's because programming and music theory are actually very similar. Both involve manipulating a set of rules creatively to make something that is satisfactory to yourself, while following conventions set by professionals that came way before you. It's really very similar.

<comment><USER9> Western music theory and programming are similar in that both are systematic concepts and can use numbers or "functions" to express them. The thing is, that description fits many things (even painting, drawing, photography, etc.), so it makes the relationship between programming and music less unique and less noteworthy.</comment></comment></comment>


Human ancestors developed a taste for alcohol 10M years ago - <AUTHOR> http://www.latimes.com/science/la-sci-sn-human-ancestors-alcohol-20141201-story.html <comment><USER2> Walking around Northern British towns on a Friday evening can provide a glimpse of those early hominoid alcohol consuming ancestors.

<comment><USER3> The amount of clothing they wear is probably close in area to the stereotypical loin cloth too.

</comment></comment><comment><USER4> I can kind of see alcohol being a powerful evolutionary mover: water sources are frequently contaminated, killing off lots of drinkers, and the kinds of biological contaminants frequently are more deadly in the young, (yes animals get sick from drinking dirty water just like people) while alcohol can be a decontaminant and is often present with hydrating water as well as other nutrients and energy sources (like fruit) keeping drinkers of both alive maybe long enough to reproduce.

</comment><comment><USER5> I don't have a link to the video but: There's an island in the caribbean that has little monkeys who love to steal tourists' alcoholic drinks. Only about 12% of the monkeys drink the alcohol (repeatedly going back to it), the same rate of alcoholism in humans. I thought that was interesting, monkeys and humans have the same rate of alcoholism, I guess the AA group was right, maybe alcoholism is a genetic disease.

<comment><USER6> > I don't have a link to the video but: There's an island in the caribbean > that has little monkeys who love to steal tourists' alcoholic drinks. Only > about 12% of the monkeys drink the alcohol, the same rate of alcoholism in > humans. I thought that was interesting, monkeys and humans have the same > rate of alcoholism

You seem to equate "drinking alcohol" with "alcoholism" for monkeys, but not for humans. This might be justified -- maybe only monkeys with something reasonably analogous to alcoholism will drink alcohol at all -- but it seems a lot like taking numbers that match and inferring a pattern even though the thing being measured isn't the same.

<comment><USER5> Sorry I forgot to specify 12% of the monkeys repeatedly and habitually stole alcoholic drinks. Much higher numbers of monkeys steal the alcohol but after tasting it abandon the drinks.

</comment></comment></comment><comment><AUTHOR> I have also read that alcohol was one of the first medicinal ingredient discovered by man. Elephants too like to get a bit high by eating overly ripe fruits.</comment>


Ask HN: Share your data schemas and structures - <AUTHOR> There's a lot of open source out there but I feel that data structures and schema's aren't being shared. At least I do not see it being shared and highlighted or collected.
I would love to see a rep of good starting point model schemas for sql and nosql.
Ie, user, auth, messages, transactions, profiles, account, access control, etc ... List can literally go on forever. <comment><USER2> [http://ontologydesignpatterns.org/wiki/Main_Page](http://ontologydesignpatterns.org/wiki/Main_Page)

[https://stackoverflow.com/questions/145689/relational- databa...](https://stackoverflow.com/questions/145689/relational-database- design-patterns)</comment>


Nginx 1.9.11 with Dynamic Modules - <AUTHOR> http://mailman.nginx.org/pipermail/nginx-announce/2016/000170.html <comment><USER3> A little more explanation of what that means from the docs:

In NGINX 1.9.11 onwards a new way of loading modules dynamically has been introduced. This means that selected modules can be loaded into NGINX at runtime based on configuration files. They can also be unloaded by editing the configuration files and reloading NGINX.

[https://www.nginx.com/resources/wiki/extending/converting/](https://www.nginx.com/resources/wiki/extending/converting/)

<comment><USER4> Hugely important. Compiling your own Nginx has never been trivial in modern development pipelines, and until now that's been the only way to use external modules.

<comment><USER5> Honest question: Why do you think it was non-trivial? What is/was complex?

<comment><USER6> I found that nginx actually "just works", however not all software is easy to compile and many of us shy away from compiling for various reasons.

<comment><USER7> Compiling nginx is surprisingly easy and straightforward; a perfect example to get started with packaging for yourself.

<comment><USER8> Indeed - but having built an nginx module, it's hard to convince others to use it. Often, nginx users are simply using the binary packages from their Linux distribution, and if they compile their own, they'll have to remember that they have a version that's compiled from source on the system and not the packaged one.

<comment><USER9> Exactly and then when it is time to patch nginx you can't just install a new binary and reload - you have to have documented exactly right set of modules previously compiled. Depending on the modules this can be time consuming and error prone. Not impossible, but adds additional automation requirements.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> We've just posted a blog post "Introducing Dynamic Modules in NGINX 1.9.11." [https://www.nginx.com/blog/dynamic-modules- nginx-1-9-11/](https://www.nginx.com/blog/dynamic-modules-nginx-1-9-11/)

We'll take a read through the comments here and are looking forward to answering questions and receive feedback. You may also email the NGINX development mailing list (info in blog post).

(I work @ NGINX).

<comment><USER11> Hey :)

I've just created a separate HN submission pointing to your blog post.

I hope you don't mind.

Keep up the amazing work!

</comment></comment><comment><USER12> We support nginx in our products, due to high demand for it, but we don't really like the way it has historically handled modules. Having to custom- build to do interesting things is very far away from the "plug and play" experience that our users expect and can get with Apache.

While I'm not on the bandwagon that says all Apache installations would be better on nginx (and I still run Apache on all of our servers, except nginx test machines), I do think this makes the case quite a bit more compelling, particularly for people who package and distribute the web server (OS vendors, control panel maintainers like me, container builders, etc.).

</comment><comment><USER13> If I could get mod_pagespeed, mod_security and mod_cloudflare configured without recompiling/accidentally breaking everything, I'd be so ecstatic.

</comment><comment><USER14> Good for them.

It's worth to note that an nginx fork called Tengine (by Taobao) has a similar feature before.

[http://tengine.taobao.org/index.html](http://tengine.taobao.org/index.html)

<comment><USER15> Yes and the only reason why Taobao forked it was because Nginix did not allow such feature to be upstream.

</comment></comment><comment><AUTHOR> Docs: [https://www.nginx.com/resources/wiki/extending/](https://www.nginx.com/resources/wiki/extending/)

</comment><comment><USER16> Is this going to make it easier to get luajit on a stock nginx server?

I just see a single bullet point regarding "Dynamic modules", anywhere I can get more info?

<comment><USER17> Probably not. The lua module hooks into internal symbols not considered part of the module API.

<comment><USER18> Nginx doesn't really have a module API. While lua reaches deep inside, loadable modules already have to be compiled for the specific nginx version, which means this module isn't in a different situation from any of the others.

</comment></comment></comment><comment><USER19>
        load webserver.nlm

(a reference for the old-timers here)

Seems an odd feature for 1.9.11, why not wait for 2.0?

<comment><USER20> The 1.9 series is unstable (mainline) while 1.8 is stable. Classic odd/even unstable/stable versioning.

<comment><USER19> This is the answer, I had forgotten about this strategy.

</comment></comment></comment><comment><USER21> Looking good so far I have enabled a few Nginx dynamic modules including Openresty's set-misc, echo and headers more modules [https://community.centminmod.com/posts/26535/](https://community.centminmod.com/posts/26535/)

      load_module "modules/ngx_http_image_filter_module.so";
      load_module "modules/ngx_http_headers_more_filter_module.so";
      load_module "modules/ngx_http_set_misc_module.so";
      load_module "modules/ngx_http_echo_module.so";
      load_module "modules/ngx_http_geoip_module.so";
      load_module "modules/ngx_stream_module.so";

</comment><comment><USER22> This is great news for the pagespeed people.

<comment><USER18> Unfortunately, it looks like it may not be something will be able to work with. Instead of an ABI like Apache uses, Nginx went with signature checking. To load a precompiled module, the signature has to match. This means we would have to compile many different binary modules for every configuration people might have, and for every version of Nginx. Like several dozen.

As it stands, though, the module system would be very helpful for OS packagers, because they don't have to worry about signature mismatch.

<comment><USER23> I would think that containers would help obviate such concerns, since it would be rather trivial to keep even a hundred images in place for an automated compilation run.

Of course, serving the output would be harder, but still not impossible.

<comment><USER24> How does containers help? Building a hundred different nginx's shouldn't be neither harder nor easier if you stuff the binary in a container or not.

<comment><USER23> It gives you one image per configuration, instead of one build machine, or one stored VM. It makes it easier for a single machine to iterate over dozens or hundreds of build environments with a minimum of overhead.

For example, one Ubuntu machine with Docker can create build environments for every Linux based distro (and version thereof) that exists, and iterate through all of them when it comes time to build. The setup is not trivial, though it is easier than creating a similar environment with VMs or physical machines.

<comment><USER25> Every distribution on the planet handles this with chroots for doing builds and it works out just fine without needing to do gymnastics with docker. Fedora, for example, has a farm of build hosts that are architecture specific (so there is no cross-compiling outside of bootstrapping a new build target), from there a new chroot gets created for every build and the build runs isolated within it. They've been using this same system to maintain packages for up to 7 different releases at once (counting the EPEL repositories) with no issues, I fail to see any benefit docker brings to the table here - <USER2> really, nginx should just provide a stable ABI.

</comment></comment></comment></comment></comment></comment><comment><USER21> Well got nginx 1.9.11 stack installer dynamic module ready almost with ngx_brotli fixed, lua nginx module patched [https://community.centminmod.com/posts/26128/](https://community.centminmod.com/posts/26128/) just missing ngx_pagespeed compatibility and i'd be happy as a pig in mud :)

</comment><comment><USER26> Is this going to make it easier to enable stub_status module without compiling Nginx? (or buying NginxPlus)

[http://nginx.org/en/docs/http/ngx_http_stub_status_module.ht...](http://nginx.org/en/docs/http/ngx_http_stub_status_module.html)

<comment><USER27> What problems are you having using stub_status?

I'm using the nginx mainline PPA and didn't have a problem enabling it.

<comment><USER26>
      This module is not built by default, it should be enabled
      with the --with-http_stub_status_module configuration
      parameter

I had to compile Nginx myself, because that module was absent. As you can read also on various community pages, boards, etc.

Nginx is the only server software that I have to compile myself, just to get a basic status feature. It's a way to upsale people to their NginxPlus which offer a lot more status data in the binary.

<comment><USER28> [http://nginx.org/en/linux_packages.html#arguments](http://nginx.org/en/linux_packages.html#arguments)

      Configure arguments common for nginx binaries
      from pre-built packages for stable version:
      ...
      --with-http_stub_status_module
      ...

</comment></comment></comment></comment><comment><USER29> Does Dynamic modules will help to enable mod_pagespeed easily?

<comment><USER18> Sadly, probably not: [https://news.ycombinator.com/item?id=11066250](https://news.ycombinator.com/item?id=11066250)

<comment><USER30> Compiling a module is still a lot more straight-forward than recompiling the whole of Nginx, which is probably the main obstacle to people using it (at least it is in my case).

<comment><USER18> Cool. We're working now to make this possible.

(And, in fact, to work at all when compiling against 1.9.11, since the addition of dynamic modules broke us: [https://github.com/pagespeed/ngx_pagespeed/issues/1110](https://github.com/pagespeed/ngx_pagespeed/issues/1110) )

<comment><USER21> Piotr is working his magic for ngx_pagespeed 1.10 [https://github.com/pagespeed/ngx_pagespeed/issues/1114](https://github.com/pagespeed/ngx_pagespeed/issues/1114) just need a patch for 1.9 branch too</comment></comment></comment></comment></comment>


3Dud TV - <AUTHOR> http://www.cringely.com/2011/01/3dud-tv/

<comment><USER2> I don't think anyone expects 3D TV sales to take off for the foreseeable future. We don't have enough content, and 3D TV prices are still too inflated, for the casual consumer to be enticed. When 3D TVs are priced as cheaply as regular sets, when glasses-free technology is the norm, and when more content is broadcast in 3D (especially sports), we'll probably see a shift. Those three things aren't likely to happen for another two years though.</comment>


When You're Just Drawn That Way: Who Framed Roger Rabbit? - <AUTHOR> http://www.tor.com/2015/11/05/when-youre-just-drawn-that-way-who-framed-roger-rabbit/ <comment><USER2> > Warner Bros fought over virtually every appearance of Bugs Bunny, which is > why in the Bugs Bunny/Mickey Mouse scenes, Bugs Bunny speaks last—Disney > finally gave up in exhaustion.

Its weird to hear about Disney being out-negotiated. The Disney of the 1980s wasn't the juggernaut of today. I can't imagine any WB property outshining a Disney property now. A year after this release Disney experienced its "renaissance" with its release of the Little Mermaid and then a string of hits that are classics today: Lion King, Beauty and the Beast, Aladdin, Pocahontas, etc.

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

Its also a little depressing to hear that instead of creatives trying to find ways to make these characters work with each other, there were endless fights over who gets the last word and such.

>Mae Questel, who had last voiced Betty Boop in 1939

Imagine being called nearly 50 years later to do an old job! Incredible.

<comment><USER3> _Imagine being called nearly 50 years later to do an old job!_

What programmer hasn't had that nightmare?

<comment><USER4> "The year 10000 is just around the corner, and it says in your files that you know COBOL." (ref: [http://haruth.com/Jokes/Jokes12.htm#COBOL](http://haruth.com/Jokes/Jokes12.htm#COBOL) )

</comment></comment></comment><comment><USER5> > The pornography in the original novel [ _Who Censored Roger Rabbit?_ ] also > had to go ...

I would have appreciated more background on animation for adult audiences. Some of the early Betty Boop stuff was _extremely_ sexual. And Bugs Bunny was barely in the closet. As a kid, I loved his drag bits.

I even recall seeing an X-rated version of _Snow White and the Seven Dwarfs_. There's lots of third-party Disney porn now, but that was reportedly done at night by the Disney team.

<comment><USER6> Walt Disney was extremely puritanical when it came to sex, but his animators were definitely not.

Much to Disney's dismay, the wrap party for Snow White was orgy-esque.[1]

[1] [http://www.cartoonbrew.com/old-brew/bill-justice-on-the- snow...](http://www.cartoonbrew.com/old-brew/bill-justice-on-the-snow-white- wrap-party-2162.html)

</comment></comment><comment><USER7> More details about the development of this film can be found in the book "The Animator's Survival Kit" by Richard Williams, animation director in this film.

<comment><USER8> Ah, a classic book indeed. I second the recommendation - even if you aren't that interested in animation, it helps you see movement with a new perspective.

<comment><USER9> I haven't read the book, but here's another product of Disney's that helped me see movement and animation with a new perspective: [https://en.wikipedia.org/wiki/12_basic_principles_of_animati...](https://en.wikipedia.org/wiki/12_basic_principles_of_animation)

</comment></comment></comment><comment><USER10> > "I'm not bad. I'm just drawn that way."

What makes this line so funny is that, originally, it was Mae West's line. Said by Jessica Rabbit, which creates the pun, the line becomes even funnier than the original.

</comment><comment><USER11> The alternate universe where Tom and Jerry made it in is someplace I could spend some money...

</comment><comment><USER12> Also, I would want a Wizard of Oz animation movie in my collection.</comment>


Ask HN: Automated Web Design Tools - <AUTHOR>

Some time ago there were a few web design and development tools posted to HN. These tools did things like automatically set up a development folder with bootstrap and angular, which you could select from a command line based menu. Would someone be able to post a link to these tools. Are there any new versions or other useful scripts of a similar nature that you would recommend? <comment><AUTHOR> I've found one of them, it was Bower. This wasn't the one i was originally thinking of but none the less useful.

</comment><comment><AUTHOR> Another is Yeoman. What similar tools do you guys use?</comment>


Ask HN: How much of your programming work is mapping this data to that? - <AUTHOR> When I boil it down, it seems a great deal of the stuff I do is taking data from "here", adding and removing and sometimes transforming fields, so that it can be put "there".<p>"Here" and "there" are anything that expects or provides data.<p>Just seems to me that a substantial portion of the work of the programmer is "here to there" data mapping work. <comment><USER2> This is "interface" programming, and is one of the most common programming tasks. Creating reports can be seen as doing this (convert from machine info to human info) Entry/Editing programs go from human to machine, inter- operability is machine1 to machine2. The list goes on and on.

The more you tie meta-data to your data the more this can be automated. And the more you use "standardized" formats the more this can be automated as well. (Unless the standard format can be read in more than one way, then you have a mess.)

</comment><comment><USER3> Absolutely.

In real-world projects, it is very often the case that much of what I do (maybe 75%?) is basically what I think of as "plumbing."

Not just in web development, where it manifests as marshalling and packing and unpacking data, but in multi-threaded embedded programs, where it manifests as packing data into structures and sending it between tasks using queues and serialization, maybe managing checksums and supporting retries and error- handling, transmitting between chips via serial, I2C, SPI, etc), and in GUIs (managing state, moving data between formats and cascading state changes while trying to keep everything sane and consistent in a multi-threaded environment. It's often a basic design element I've seen plenty of times before but it still needs to get written and it has to run flawlessly.

The remaining 25% or so can involve some real algorithmic thinking, or and state machine thinking, and that's more interesting, but there is almost always some tedious boilerplate around it unless I'm working on, say, a side project in Haskell, but even using a nice pure functional approach which makes gleaming, beautiful functions to express an algorithm, there's the "plumbing" and the tooling, monadic and weirder.

That's just something that is inherently hard about maintaining a long career in software development -- keeping yourself motivated to get through the duller parts so that you can enjoy the more interesting and challenging parts, and not just doing the minimal, but writing quality code and comments, not skipping steps, documenting your design, writing whatever documentation someone will need later to understand it later, etc. Even simplifying and revising it just for the sake of reducing complexity of working code, when something can be simplified.

</comment><comment><USER4> > When I boil it down, it seems a great deal of the stuff I do is taking data > from "here", adding and removing and sometimes transforming fields, so that > it can be put "there".

Try looking at it differently. When you take data for a database and present it to the user, you aren't moving data from here to there but you are creating information. This is why we call it IT not DT.

Creating information for people is a much more interesting problem and you have to know a lot more about their workflow and requirements.

</comment><comment><USER5> You can distill it even more than this. All we ever do as programmers is take some kind of data as input, process that data, and return new data as output. This is true for all software: websites, mobile apps, video games, AI, operating systems, embedded systems...ad infinitum.

</comment><comment><USER6> A lot. Feels like there should be a way to automate it away or give it to a framework to do, but the best way I've seen so far is to give that work to the junior devs while I get to work on the more challenging aspects of a project.

<comment><AUTHOR> I feel like in the future the Internet, at some lower layer, will become very much boiled down to primarily a system that has a very standard way of flexibly and automatically connecting, mapping and transforming data.

Alot of the programming work done today to achieve this will go away.

We are on the way there now clearly.

<comment><USER6> One would hope. But I've been doing this for a few decades and I haven't seen much progress on taking the grunt work out of moving data around and "reformatting" it. A lot of other things in the programming world have improved dramatically though. I wish test driven development had been around when I started.

</comment></comment></comment><comment><USER7> I'd say it's like 50% for me, I wish it was less.

</comment><comment><USER8> see: [https://github.com/jbenet/transformer](https://github.com/jbenet/transformer)</comment>


The fate of reduce() in Python 3000 (2005) - <AUTHOR> https://www.artima.com/weblogs/viewpost.jsp?thread=98196 <comment><USER2> > Also, once map(), filter() and reduce() are gone, there aren't a whole lot > of places where you really need [lambda].

By far the most common use of lambda for me is the "key" argument for sort() or sorted(). As in something like:

foo.sort(key=lambda x:x[2])

Yes, there are itemgetter and attrgetter in operator module, but I always have to look up their names and writing the lambda expression is simply faster.

<comment><USER3> itemgetter and attrgetter are compiled C functions called by cpython [https://github.com/python/cpython/blob/master/Modules/_opera...](https://github.com/python/cpython/blob/master/Modules/_operator.c)

<comment><USER4> They mean faster to write, not that it's necessarily faster to execute (though the difference is likely immaterial).

</comment></comment></comment><comment><USER5> > _I think dropping filter() and map() is pretty uncontroversial; filter(P, S) > is almost always written clearer as [x for x in S if P(x)]_

Performance reasons aside, I _strongly_ disagree with this statement. Anyone can see that `filter` is going to apply the predicate to the iteratable in the first statement. The second statement is super awkward, declares a temp var `x` which to my limited Pythonic eyes looks like it's just calling the identity function on `x` that comes back from the "filter".

Again, I have no doubt Python is optimized to perform better with the second form, but that seems a limitation in the interpreter. The syntax to non-Python devs is pretty raunchy imho.

<comment><USER6> I am used to haskell's syntax, does this become more readable once you get used to it? The haskell equivalent would be

        [x | x <- s, p x]

<comment><USER7> In many senses this is a style thing, but:

There is going to be a pretty sharp break between people who accept that working with a collection deserves special syntax support and those who don't. The readability issue for me isn't that the syntax doesn't look nice, it is that I've invested years into making a very efficient little mental space that deals with "data2 = fn(data1)" style constructs and I want to use it here like I do everywhere else.

Some silly-high percentage of for loops can be cast into this data2 = fn(data1). Why am I being told that it isn't readable? If this isn't easy to read, then something is wrong with the function syntax.

A chaining operator, to recast fn3(fn2(fn1(data))) => data > fn1 > fn2 > fn3 with reduce is much more readable, debuggable and easy to reason about than having to remember what syntax todays language uses to talk about collections and how that works in to the flow of data in my program.

</comment></comment></comment><comment><USER8> reduce() is still available in the functools module.

I highly recommend to become familiar with the functools, itertools and collections modules to anybody using Python and not using them regularly.

<comment><USER9> I've really come to miss reduce in Python's builtins since std::accumulate has become a staple in my C++ development. It seems surprising that with Python 3's increased support for functional concepts, it would relegate reduce to the standard library.

<comment><USER4> Not really, increasing support for functional concept was never a goal of Python 3 (or at all), it was mostly incidental and it did regress in other ways than just shoving the (relatively little used due to the existence of min/max/any/all) out of the builtins e.g. while extended unpacking was added, unpacking iterable function parameters was removed.

</comment></comment></comment><comment><USER10> I spent some time comparing Python's [0] map/filter and comprehensions against Snigl [1].

Comprehensions are just plain faster, especially if you perform say filter and map at the same time.

That and a lambda implementation that only a mother could love, lack of tail call optimization etc.

What bothers me about comprehensions is they come with a separate set of rules, like LOOP in Common Lisp or templates in C++; but I'm pretty sure the restrictions are part of what makes them fast.

[0] [https://gitlab.com/sifoo/snigl/blob/master/bench/seq.py](https://gitlab.com/sifoo/snigl/blob/master/bench/seq.py)

[1] [https://gitlab.com/sifoo/snigl/blob/master/bench/seq.sl](https://gitlab.com/sifoo/snigl/blob/master/bench/seq.sl)

<comment><USER11> Agreed, this made my eye twitch:

> filter(P, S) is almost always written clearer as [x for x in S if P(x)]

sure, Guido, if you think it's clear that the variable x is in the enclosing scope...

<comment><USER12> Python 3 changed this, iirc. Comprehension no longer leak.

<comment><USER13> It's still an assignment operation, and you can still get weird effects in the enclosing scope. I did something like this by accident:

        Python 3.7.1 (default, Nov 28 2018, 21:47:25)
        Type 'copyright', 'credits' or 'license' for more information
        IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help.

        In [1]: lookup = {}

        In [2]: [x for (x, lookup[x]) in ('ab', 'cd', 'ef') if x in lookup]
        Out[2]: ['a', 'c', 'e']

        In [3]: lookup
        Out[3]: {'a': 'b', 'c': 'd', 'e': 'f'}

<comment><USER12> The whacky thing there isn't the list comprehension though, it's the implicit assignment of `lookup[x]`. If you desugar it some (which isn't really possible, but

        [(x, lookup.setdefault(x, y)) for (x, y) in ('ab', 'cd', 'ef')]

comes close), what's happening makes a lot more sense. It works exactly the same way as any other scope: first checks locally, then nonlocally or globally. You're modifying a nonlocal. The syntax you're using to modify the nonlocal is surprising, but that's the surprising part, not the ability to modify a nonlocal.

<comment><USER14> I'd desugar it like this:

        >>> lookup = {}
        >>> for (x, lookup[x]) in ('ab', 'cd', 'ef'):
        ...     pass
        ...
        >>> lookup
        {'a': 'b', 'c': 'd', 'e': 'f'}

This makes is much more clear that there is just a double assignment, and that comprehension are pretty close to regular `for` statement.

(this was a great example btw -- I write python3 a lot, and I was staring at it for a long time before Icould figure it out)

</comment></comment></comment></comment></comment></comment><comment><USER15> Discussed in 2008: [https://news.ycombinator.com/item?id=225764](https://news.ycombinator.com/item?id=225764)

</comment><comment><USER16> Why were map and filter kept? What can you do that cannot be as easily done with generator expressions?

<comment><USER17> Coconut has many examples of functional programming techniques that cannot be easily done with python: [https://coconut.readthedocs.io/en/master/DOCS.html](https://coconut.readthedocs.io/en/master/DOCS.html)

Strangely FP is not popular among python developers.

<comment><USER18> is coconut used in production? seems like a really bad idea?

<comment><USER17> It's python after all, so why not?

</comment></comment></comment></comment><comment><USER19> Does anyone know the origin story of reduce/filter in Python? It seemed interesting. I remember watching a talk by Guido. He mentioned that someone submitted a PR with it, and that it was very complete, so he merged it. But I'm curious what the decision making process was like for Python back then, or if there even was a formal process.

Programming language archaeology is a field that ought to get more attention.</comment>


Ask HN: How to earn trust from users and increase conversion rate - <AUTHOR> We are operating an app helping people apply visas using their mobile phone (fill forms, submit supporting documents by taking pictures etc.), we have acquired 300+ customers in less than 2 weeks, and 350+ visa applications created, most of the customers stop after the 1st step (Basic personal information), they won't take further step, only 2 users completed the whole process, and they are very happy with our assistance. We believe it's because of lack of trust, people are not willing to give out their private informations, but how could they trust the other traditional agents? <comment><USER2> I am not readily finding any of the things I want, but your website needs to LOOK trustworthy. It can't be too flashy. It needs to look conservative and banker-ish.

You need it to have the right kind of written copy and there can be no typos. You must clean up anything like that. It will signal to people that you do sloppy work and can't be entrusted with anything more important if you can't bother to clean up typos, misspelled words and grammatical errors.

You also need some explicit signals that your site is trustworthy, such as relevant "endorsements" or verifications by the kinds of organizations that do that kind of thing.

(There may be a few other things you need, but this is a place to start.)

<comment><AUTHOR> thank you for all the great advices, the website is actually a landing page, we will see if we can have a more trustworthy user experience, we will also have someone proof read the content to ensure no typos or grammatical errors appear on the page

</comment></comment><comment><USER3> Not your app (since you didn't post a link) but I see many websites on Show HN missing basic information like the company address, contact person, phone number. Often it's only a email@example.com, domain registered with privacy protection and obvious stock photos, sometimes fake-looking testimonials.

Number 7 on Show HN right now: [https://realideas.site/](https://realideas.site/), I personally wouldn't register since the only contact is an email address

[https://toortl.com/about](https://toortl.com/about) is only slightly better with links to the linkedin profiles of the founders. It is a company? Is it registered/incorporated? Do they have an office? Why no copyright notice/terms-of-serivce/privacy notice. I assume it's a hobby project.

On my own project ([https://geocoder.opencagedata.com/](https://geocoder.opencagedata.com/)) the footer lists tax and company registration numbers. I hope that makes us a little more trustworthly towards companies (B2B). In reality we've never received a letter other than tax related stuff.

<comment><AUTHOR> oh, sorry, the link to the app is [https://itunes.apple.com/app/visard/id1102137634?mt=8](https://itunes.apple.com/app/visard/id1102137634?mt=8), the website is [http://www.visard.co.nz/](http://www.visard.co.nz/)

</comment></comment><comment><USER4> '300 customers' means 300 people paid money for the service. If people are not paying money, then they are not customers. Requiring people to pay money is a good way to filter out people who are unlikely to trust your process and ultimately, if the goal is to have a business, then getting people to pay is a necessary step toward validation. Charging people is also a reality check on the product creating value. If it doesn't seem reasonable to charge for it then it might not be a good product.

If people are not completing the process, then the product might not meet the market. In that case it's not a matter of increasing conversions, it's a matter of creating a better product.

Good luck.

<comment><AUTHOR> yeah, that's true, to be more precise, we have 300+ users registered for less than two weeks. People are searching `visa` in App store then see our app, we have 300+ registered users in a short period of time, which means the need is there, people are not paying since we are not that trustworthy, i am still believing it's a good product, but we do need to do more reality check see how people are willing to pay for the service

<comment><USER4> Because 'Visa' is also the name of a major credit card provider, there are likely to be a significant number of people searching under that term whose needs are entirely different.

My standard concern is that it is much harder to iterate and communicate with users when the delivery channel is an app in an appstore versus a website. It is also more difficult to anchor pricing to a sustainable level and offer personalized service.

Expertise navigating international travel is something that may have more value than a potential customer's flagship mobile device. In an app store, it is going to be nearly impossible to extract that value because...well there's somebody who will offer a service that is similar for free or $1.99. In the app store, the $1.99 service will be largely indistinguishable from a $999 service due to the standard format of app store sales pages.

</comment></comment></comment><comment><USER5> I'd suggest trying to get some kind of endorsement / verification from a government entity or something like a law firm, or any other entity that will boost your credibility. Then display such endorsement on the first screen the user sees when accessing your app.

I think people are scared that your app is not legitimate and the information they share could be used to harm them.

<comment><AUTHOR> yeah, actually, we are supported by Immigration public section, but they can not endorse the app because there are other players in the market

</comment></comment><comment><USER6> Take a look at Staford's Web Credibility Research. The work is a bit dated, but many of the findings are still useful.

[https://credibility.stanford.edu/research.html](https://credibility.stanford.edu/research.html)

<comment><AUTHOR> cheers, will do

</comment></comment><comment><USER7> Its not trust thats the problem. Its marketing. You don't seem to have a marketing systen in action. To me its pretty clear that you need to work on converting those 300+ users into paying customers through a drip campaign and special offers.

</comment><comment><USER8> Have you talked to the people who stopped halfway?

<comment><AUTHOR> yes, we have tried to contact some of them, since we've been communicating with customers about their visa applications, the main reason they gave us for stopping halfway is they don't trust us, they have big concerns their privacy will be compromised

<comment><USER9> On your website, create a section where describe your process in processing the visas and indicate within that process what you will do to keep their data secure.

<comment><AUTHOR> hmm, that's a brilliant idea, will try to describe that on the website</comment></comment></comment></comment>


Don't reinvent the wheel, unless you plan on learning more about wheels - <AUTHOR> Software industry does not have a true love for wheels, inventing wheels, and less than everything for reinventing the wheel. Anyway, that's often necessary to really understand how things work.
"Don't reinvent the wheel, unless you plan on learning more about wheels."
The quote is by Jeff Atwood (aka @codinghorror).
What do you think about it? Did you ever try to build something that already exists, just out of curiosity, or to understand it better? How did it go?
I've recently written a Promise polyfill. I didn't need it, it was not an urgent task, I didn't have timelines, I didn't have requirements about performance, weight, or anything else… it was a really fun, and instructive experience. These days I'm publishing on youtube a video series of myself, live-coding it. This is the first video https://www.youtube.com/watch?v=E_p-PVNqhZE, Any thoughts? <comment><USER2> Here's the entire thing: [https://blog.codinghorror.com/dont-reinvent-the- wheel-unless...](https://blog.codinghorror.com/dont-reinvent-the-wheel-unless- you-plan-on-learning-more-about-wheels/)

I've built plenty of wheels (servers of various protocols mostly), and one thing that I learned is that making things easy is hard - e.g. the protocol may not be well defined, or the user agents might have their quirks, or abuse it outright; the end user won't care, so the server needs to accomodate.

</comment><comment><USER3> Each situation is different.

If you work for a company where there is a lot of red tape when it comes to bringing in outside code, you may have to re-invent the wheel quite often.

</comment><comment><USER4> I'm currently building a link shortener just for fun. There are plenty of link shorteners out there but I just like to work on it for the sake of it

<comment><AUTHOR> Do you hava something visible on GitHub? I am curious :)

<comment><USER4> not yet, but I can send you a link later if you want :)</comment></comment></comment>


What is the food insulin index and why tracking it matters? - <AUTHOR> https://nutrita.app/insulin-index/ <comment><USER2> you can do so much more for diabetics and the obese by telling them to little foods high on the insulin index than you can by telling them to avoid "calorie rich" foods that are "hyperpalatable"

the insulin index is a good estimate of how your metabolism will react to a food, much more so than it being "calorie rich" (which calories?) or "hyperpalatable" (to whom?)</comment>


Retroshare: Secure Communication for Everyone - <AUTHOR> https://retroshare.cc/ <comment><USER2> Tried this with a co-worker in the first days of smart working. It worked, but the only useful feature (in our context) was the file sharing, and it was confusing to setup and very slow to transfer.

Then I stumbled upon nebula ([https://github.com/slackhq/nebula](https://github.com/slackhq/nebula)) and I stuck with it. It's by far the easiest way I found to setup an overlay network, and it checks all the marks:

\- multi-platform (not tried on Android, but there are binaries for various arm devices, so maybe on termux...).

\- P2P, with the option to use a fixed-ip device beacon as sort of DNS.

\- works behind NAT if you use the beacon.

\- very easy to setup and configure.

Now it's like we are working at the office again, with SVN, file sharing, chat, compilation servers, etc.

Definitely recommended.

<comment><USER3> I prefer ZeroTier, which is just as easy to set up and doesn't need a beacon to get through NAT. It was also developed by a small, independent outfit and not a bunch of Slack engineers.

<comment><USER4> Same here. I have been using ZeroTier as my primary road warrior VPN for two or three years now and it has been excellent. Has worked in many different hotels, cafes, etc as well as on airplane satellite internet. I have it on my OPNsense router at home and on my Android phone and Chromebook.

</comment></comment></comment><comment><USER5> I tried this out in 2013, back then it was difficult to set up on non technical friend's computers.

From what I see now, VoIP, and video calls are modern additions.

For a non technical user, I still think that the marketing is not compelling. Friends and group stuff, "we have Facebook for that".

<comment><USER6> > I tried this out in 2013, back then it was difficult to set up on non > technical friend's computers.

Same. I actually walked my mother on how to install on Linux box via sms in a pinch. I wouldn't recommend it. The VoIP was choppy at times and had a lag if you had less than 10mb down rates, which I often did as I was limited to 3g wifi back then. So I used it mainly as a text based system.

Signal is the best alternative to this, VoIP calls are really clear and wprk well once set up and synced. I can't recommend Telegram for anything private anymore and I just use it for group chat stuff.

</comment></comment><comment><USER7> This uses libretroshare: [https://elrepo.io/](https://elrepo.io/)

"We are developing a decentralized repository of culture that allows the publishing and sharing of content in an organized way, suitable for audio, video, text and other formats. The system is built on top of mature technologies that leverage the capacities of distributed Community Networks. It will allow communities to share culture in a lasting way, priorizing local exchange without losing the ability to reach a global audience."

elRepo has received NLnet funding.

</comment><comment><USER8> RetroShare was removed from Debian in the past. Anybody any clues why?

</comment><comment><USER9> I really wish this was more adopted. But the fact that there's no mobile app (that I know of) keeps a lot of people out.

It's good software though.

<comment><USER10> The [download page] does mention a [mobile app] that only supports chat for now.

download page: [https://retroshare.cc/downloads.html](https://retroshare.cc/downloads.html) mobile app: [https://f-droid.org/en/packages/org.retroshare.android.qml_a...](https://f-droid.org/en/packages/org.retroshare.android.qml_app/)

</comment></comment><comment><USER10> I might give it a shot. If it can be run in a container on a server, that'll make it much more attractive.</comment>


In California, ex-employee can be sued under CFAA for deleting company files - <AUTHOR> http://computerfraud.us/recent-updates/california-court-holds-that-an-employee-can-be-sued-under-the-cfaa-for-deleting-company-files

<comment><USER2> The court action in the article actually says something totally different from the headline. The court denied a motion for summary judgment, giving the ex- employee her day in court to defend herself against the lawsuit.

You can sue anyone over anything. It would have been news if the summary judgment had proceeded, but that's not what happened.</comment>


Flooding of US Coast, Caused by Global Warming, Has Begun - <AUTHOR> http://www.nytimes.com/2016/09/04/science/flooding-of-coast-caused-by-global-warming-has-already-begun.html <comment><USER2> NY Times: "Caused by Global Warming"

USGS: "More than half caused by land subsidence"

"Land subsidence causes more than half the relative sea level rise in Norfolk, largely explained by groundwater extraction." [http://pubs.usgs.gov/circ/1392/pdf/circ1392.pdf](http://pubs.usgs.gov/circ/1392/pdf/circ1392.pdf)

The article at least mentions the subsidence issue by saying it will be "worse than average" in areas where the land is "sinking at a brisk clip", but gives a distorted view of the relative contribution.

<comment><USER3> So you are saying there is some kind of scam to overestimate the rise in sea levels caused by global warming?

</comment></comment><comment><USER4> As I wrote in HN's dialog about a New York Magazine article on global warming [https://news.ycombinator.com/item?id=12471815](https://news.ycombinator.com/item?id=12471815):

As usual, nothing about prevention.

Global temperatures and the sea level are rising because of human behavior. If we want different results, we have to behave differently. Engineers and scientists know engineering and science but not so much leading people to change their behavior.

It's easy to blame others: "Listen to me! If you don't you'll be sorry!" isn't effective. Also, what fraction of engineers and scientists have, say, flown in a plane or something similarly polluting in the past twelve months?

If you want to change behavior, you need to learn and practice leadership skills and apply them to yourself as well as others. The science is clear. More is nice and I agree we should keep pursuing it, but the best way to decrease the effects of global warming is to change our behavior. (This is why I moved from science to leadership.)

This article's writing about flood-proof architecture and other rearranging- deck-chairs-on-the-Titanic behavior is necessary since it's too late to stop a lot of change, but it's not too late to stop the change that we -- you and I -- are contributing to now. As much as I wish past generations had changed their behaviors so we wouldn't see these problems today, future generations will wish we had changed our behavior today. Even if you don't have kids or grandkids, I would think caring about human society in general and empathy and compassion for future generations would be enough to focus on changing our behavior proactively, not just reactively fixing problems others bequeathed to us.

<comment><USER5> I don't understand the emphasis on air travel I frequently see in these discussions.

Passenger planes are much more fuel efficient per passenger-mile than single- occupancy cars. Most people drive far more miles alone each year than they travel by plane. It makes no sense to me to criticize someone for flying a couple thousand miles at ~100MPG when the average American drives 12,000 miles per year at ~25MPG.

Beyond that, I don't see how refraining from individually polluting activities will help to enact the laws and treaties we need to make a real difference. It's a collective action problem, and those aren't solved by having individuals with strong beliefs alter their own habits to match what they want, they're solved by having individuals with strong beliefs convince everybody to change their habits.

<comment><USER6> The one that gets me is the suggestion that direct flights are more efficient. Sure, if you go from New York to Los Angeles, but it wouldn't make sense if you were headed to a smaller city away from a major centre.

With millions to be saved, I'm sure airlines do a decent job of working out the most efficient combination of large direct flights and smaller commuter planes. I don't think a 3/4 empty 767 to Fargo is the way to go.

If you want to take it to an extreme, imagine if the post office only delivered your mail point-to-point in the interest of efficiency.

<comment><USER5> I actually wrote a Mac screensaver with this theme: [https://www.mikeash.com/software/chemicalburn/](https://www.mikeash.com/software/chemicalburn/)

It shows the transportation networks that arise if you assume that the link between two points gets better as more traffic uses it. It has different curves for the improvement which produce different patterns. Many of them produce the familiar hub-and-spoke model, all without any such notion in the underlying code.

</comment></comment></comment></comment><comment><USER7> > Local governments, under pressure from annoyed citizens, are beginning to > act. Elections are being won on promises to invest money to protect against > flooding.

Interesting. I do recall that in 2012, North Carolina's House Bill 819 prohibited the state's Coastal Resources Commission from calculating sea-level changes using recent data.

<comment><USER8> It was a sad day to be a North Carolinian...

<comment><USER9> Their legislature gives them many such days.

</comment></comment></comment><comment><USER10> We all know by now CO2 and CH4 leads to a warmer planet. We also know what's driving greenhouse gas levels to rise across Earth. Contributors are deforestation, intensive animal farming, and primarily the combustion of carbon fossil fuels like coal, tar sands, oil, natural gas etc.

But here is the underlying problem, despite us knowing how bad things are, (97+% of scientists who study this field agree we are causing the planet's climate to shift away from the temperate climate we thrived in) not enough is being done at present to truly solve the problem. What really is disheartening and what no one in the media and government is talking about is how in 2015 CO2 levels rose by the largest amount in human recorded history. 3.05 PPM [http://www.esrl.noaa.gov/gmd/ccgg/trends/gr.html](http://www.esrl.noaa.gov/gmd/ccgg/trends/gr.html)

We are being lied to, often mislead by our governments that uniform actions are being performed to save the planet for the future of man. Vested interests in the fossil fuel industry continue to drive climate change. Yes, solar and wind energy are starting to become incredibly efficient and cheap but not enough of it is coming online in proportion to fossil fuel burning that persists and is also installed annually. If we do not rally against it, our ability to live on this planet is at stake. The lives of our posterity are also at risk because of the burning. Even if you chose not to have kids, it still makes our work and lives meaningless if our species and other species on this planet go extinct because we allow dumping in our atmosphere to go on unfettered. It will not be until we take extreme actions not on a country level but as humanity together that we will slow the burning and save ourselves.

What are these actions you might ask that will actually be effective? These can range from banning fossil fuels entirely, global carbon pricing system, banning deforestation, changing human diets, extreme uniform investment in renewable energy and potentially fourth generation nuclear reactors, more funding for developing nations to install alternative energy sources, and to shift the transportation grid towards sustainability.

<comment><USER11> Deforestation is so serious, I visited Indonesia last year and all I could see from the plane was smoke from illegal burning of forests for palm oil plantations and cheap mass animal agriculture. It was the worst fire in known history and a really, really sad thing to witness, the baron charred fields left behind are really a terrible thing to see.

I wonder why on earth more wealthy Governments don't send in the "defense forces" to help stop this illegal activity, instead of going to Syria, it's such a no brainier. Countries like Brazil and Indonesia shouldn't be required to protect everything on their own, nor should activists, murders of activists are a reality because they're just getting in the way of business.

It would also be easy and relatively cheap to start replanting and re- generating damage forests, I know it won't bounce back immediately, but it does regenerate eventually if assisted (apparently).

For those that are unaware, palm oil is in pretty much in all packaged foods sold in super markets, often hidden as _vegetable oil_ , the WWF has information about identifying products that use it [http://www.worldwildlife.org/pages/which-everyday- products-c...](http://www.worldwildlife.org/pages/which-everyday-products- contain-palm-oil)

After the destruction I saw, if one wants to continue living and has any loved ones, I would cross it off your shopping list now, along with any imported animal products.

Also, be highly skeptical about any "certified products", having spent time in Indonesia and seeing corruption first hand, I doubt such things truly exist, better to just get off the palm for good.

<comment><USER12> > I wonder why on earth more wealthy Governments don't send in the "defense > forces" to help stop this illegal activity, instead of going to Syria, it's > such a no brainier. Countries like Brazil and Indonesia shouldn't be > required to protect everything on their own, nor should activists, murders > of activists are a reality because they're just getting in the way of > business.

Pardon me, but why the hell do you think that sending in the military, _especially_ foreign military, would effect any changes on the ground? The problem is corruption, a purely political problem, and as the Iraqi surge very well demonstrated, a military solution cannot solve a political problem.

<comment><USER11> As far as corruption goes, I don't think it has a lot to do with Indonesia and Brazil. These are large places and it's hard to police every square inch of it without pretty good technology and money, once someone gets away with burning forest down, that's the end of it, why would there be a need for corruption in that case?

If there is any serious corruption happening, it's in the west, imagine freely being allowed to sell products that contain palm oil with no penalty's or taxes attached. People in these countries are poor and desperate, they have more of a reason for behaving that way, McDonalds et al doesn't.

I also never suggested sending in the cavalry or a repeat of shock and awe, I'm suggesting policing _in co-operation_ with government of said countries to _help protect_ a vital asset to not only humans but all species. Imagine using satellites to help quickly identify fires for example?

When large parts of priceless Indonesian rain forest were burning to the ground, and still are, there was very little international discussion and assistance with:

\- Raising awareness, I doubt major western corporations wanted people to know about it.

\- Putting the fire out.

\- Stopping additional fires being started.

\- Regeneration and repair.

Considering people starting fires aren't exactly friendly / educated people, maybe military assisted protection of the forest is better than innocent people just doing there best, I never suggested a war, I'm suggesting a peace keeping / guarding force.

</comment></comment></comment></comment><comment><USER13> This problem can't be solved. No politician who advocates the sort of changes required will be reelected. There is no way to enforce international agreements.

Probably the best idea is to start thinking about risky geoengineering remediation techniques.

<comment><USER14> If U.S. leads the way, EU, Canada and Japan will follow. Then you have over 50% of world GDP behind ecological embargo. So the rest are not too much of a problem.

If U.S. does nothing, then each individual EU country and Japan and Canada will all be individually too small to do it. EU won't take orders from non- NATO countries. And EU can't risk it's credibility on something that expensive that's not backed by USA. It would fuel exit-populist propaganda too much. Meanwhile USA is not breaking apart in similar fashion.

Looking from a Nordic country, this is the only reason why electing Trump would be a sad mistake. Otherwise Trump is just funny.

</comment></comment><comment><USER15> For a more geologic view:

[http://curry.eas.gatech.edu/Courses/6140/ency/Chapter10/Ency...](http://curry.eas.gatech.edu/Courses/6140/ency/Chapter10/Ency_Oceans/Sea_Level_Variations.pdf)

</comment><comment><USER16> Maybe after SF is underwater rents will come down.

</comment><comment><USER17> Will the US see large engineering works this century to prevent flooding? Large stretches of Florida have quite alot of property right on the sea barely above sea level, would these property owners demand protection?

<comment><USER18> Florida is already seeing lots of sinkholes because of the geography - it's build on porous limestone which erodes easily.

There's probably not much chance of saving florida.

<comment><USER19> >These tidal floods are often just a foot or two deep, but they can stop traffic, swamp basements, damage cars, kill lawns and forests, and poison wells with salt.

Is the wellwater seepage the biggest problem? Guessing the other things in the list could be fixed with lots of money and infrastructure.

</comment></comment></comment><comment><USER20> Liberal propaganda. We still have snowballs: [https://www.youtube.com/watch?v=3koOUFp4crU](https://www.youtube.com/watch?v=3koOUFp4crU)</comment>


Ask HN: Any BigCo's (or just non-startup Co's) hiring remotely? - <AUTHOR>

Are you aware of any Big or non-startup companies hiring programmers remotely, possibly from overseas? <comment><USER2> Even developers/designers too?</comment>


OpenSK: a fully open-source security key implementation - <AUTHOR> https://security.googleblog.com/2020/01/say-hello-to-opensk-fully-open-source.html <comment><USER2> For a mature, non-Google open source _and_ open hardware option: [https://solokeys.com/](https://solokeys.com/)

Software: [https://github.com/solokeys/solo](https://github.com/solokeys/solo)

Hardware: [https://github.com/solokeys/solo- hw](https://github.com/solokeys/solo-hw)

<comment><USER3> Not sure if STM32L432 is more "open source" than nRF52840 (does latter require blobs for radios?), but I think OpenSK can be ported to STM32 too. It's probably easier to port TockOS-based OpenSK to different MCUs than STM32_hal- based Solo to something other than STM32.

<comment><USER4> > nRF52840 (does latter require blobs for radios?)

Yes it does ([1]).

But honest question are there any chipsets out there which doesn't? Maybe some open source projects? The radio protocols are incredibly complex so I would be (pleasantly) surprised if there was.

[1] [https://www.nordicsemi.com/Software-and- tools/Software/S140](https://www.nordicsemi.com/Software-and- tools/Software/S140)

<comment><USER5> Nordic provides binary blobs for BLE, but also provides full register level documentation for the radio peripheral, so there's nothing in the way of an open source radio solution with the NRF52 family parts.

Here's one: [https://foundries.io/insights/2018/01/08/20180110-ble- dongle...](https://foundries.io/insights/2018/01/08/20180110-ble-dongle/) and I believe there are others out there in various stages of completion.

</comment></comment></comment></comment><comment><USER6> Seems like they're not using the CryptoCell to drive crypto ops and have instead written the cypto algos in software in Rust... from the README ([https://github.com/google/OpenSK](https://github.com/google/OpenSK)):

We're currently still in the process on making the ARM® CryptoCell-310 embedded in the Nordic nRF52840 chip work to get hardware-accelerated cryptography. In the meantime we implemented the required cryptography algorithms (ECDSA, ECC secp256r1, HMAC-SHA256 and AES256) in Rust as a placeholder. Those implementations are research-quality code and haven't been reviewed. They don't provide constant-time guarantees and are not designed to be resistant against side-channel attacks.

</comment><comment><USER7> FIDO2 is nice and all.

I do want a good pgp/ssh compatible card with Curve225519 and can't find one - yubikey has RSA and P384 iirc, but none have 25519.

(I need to sign data often; rsa 2048, the minimum rsa length acceptable at this point, is both slow on hardware elements and very long)

<comment><USER8> Looks like this changed for series 5 keys.

In August 2019: "the YubiKey now also supports ... Curve25519, the default curve used in ssh (EdDSA and Diffie-Hellman)", "Addition of Ed25519 signature support, a modern ECC curve".

See [https://www.yubico.com/blog/whats-new-in-yubikey- firmware-5-...](https://www.yubico.com/blog/whats-new-in-yubikey- firmware-5-2-3/)

<comment><USER9> Have the OpenSSH devs finally relented and allowed support for PKCS#11 with ECC then ? ;-)

Last I saw there were patches put forward to the devs since 2015 and they consistently refused to look at them, let alone merge them.

<comment><USER10> When last I checked, at least on linux/ubuntu the blocking issue was in opensc-pkcs11, not ssh.

</comment></comment></comment></comment><comment><USER11> Still want something with NFC and USB-C, though.

<comment><USER12> SoloKeys have this (I have one from KickStsrter) - [https://solokeys.com/products/solo-tap-usb-c- preorder?varian...](https://solokeys.com/products/solo-tap-usb-c- preorder?variant=27688258863168) \- they work really well. Been using mine for nearly a year now I think.

</comment></comment><comment><USER13> Having NFC or Bluetooth on the hardware makes me paranoid. Aren't their software stacks large enough to be a security risk?

<comment> yjftsjthsd-h I mean, if it's properly open source and user-controlled, you should be able to build a firmware that just comments out all of that, right?

<comment><USER14> Also even better if there was a solder pad that needed to be connected before the wireless would work.

<comment><USER15> This is more or less what we do with Solo. The NFC keys (both usb-a or usb-c) have an extra NFC chip that harvests energy and powers up the main micro controller. The non-NFC keys don't have that chip, so it's pretty evident by just looking at the board.

<comment><USER14> I have a solo btw. Its rather nifty. Good job on it.

</comment></comment></comment></comment></comment><comment><USER16> Great news! Yubikeys are priced at 50€, these thingies are 5 times cheaper.

<comment><USER17> Y5 Yubikeys cost that much, because they do a lot more than just FIDO/U2F. U2F Yubikeys cost more like $20.

</comment></comment><comment> ur-whale Hardware isn't Open-Source though.

<comment><USER3> They don't define hardware in this project. It supports only nRF52840 for now, but I don't think it's too much tied to it and that it cannot be ported to something other.

<comment><USER5> Apart from having a pretty generous chunk of RAM and flash, the '840 is a 64MHz Cortex M4F -- there's a pretty huge variety of ARM M MCUs out there, especially if you don't care about the radio.</comment></comment></comment>


Noise-cancelling windows halve traffic sounds even when they're open - <AUTHOR> https://www.newscientist.com/article/2248486-noise-cancelling-windows-halve-traffic-sounds-even-when-theyre-open/# <comment><USER2> Great discussion from a few days ago:

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

<comment><AUTHOR> Very relevant, and I missed it. Thanks for sharing.</comment></comment>


How energy storage can make green energy economical - <AUTHOR> http://www.lightsail.com

<comment><USER2> Another company addressing this problem is <http://www.aquionenergy.com/> (CMU/Pittsburgh startup) In July they got $30M from kpcb.com

Its interesting that in Oct the price of electricity in Tx dropped to 0 (for brief time). They were basically giving it away because there isn't a way to store it. [http://cleantechnica.com/2011/10/20/wholesale-price-of- elect...](http://cleantechnica.com/2011/10/20/wholesale-price-of-electricity- drops-to-0-00-in-texas-due-to-wind-energy/)

<comment><AUTHOR> The price of energy sometimes goes _negative_ , even, because wind farms want to recoup the renewable energy credit. Craziness!

Aquion is definitely an exciting competitor, and we wish them all the best. It is an honor to have such a worthy competitor. I think we'll bring out the best in each other.

They probably can reach the smallest scales better than we can, though I think we're going to give them a run for their money at mid - larger scales. It will be a challenge to come up with a system nearly so low cost and long lasting as one using compressed air. There are also some very interesting things we can do with low-grade heat, but that is another story. :-)

<comment><USER3> In my area it will sometimes drop to zero or negative on early summer mornings during heat waves. The peaker plants are still spun up and they need the load to burn off the excess energy.

Granted, even a little negative doesn't mean you'll make money by turning on all the lights and cranking the A/C. Distribution charges and etc usually add a few cents per kWh.

</comment></comment></comment><comment><USER4> What kind of action can we take? Your point is powerful and your solution is revolutionary so I immediately want to be signed up for knowing more or helping somehow. If those graphs were set to music as the video for a kickstarter, I would donate.

<comment><AUTHOR> For, now, I think, really, the main thing is to get the idea out there. And the opportunities for making a difference and making money with renewables + storage are immense. If we get the message across to governments and utilities and public utility commissions, we'll really start to see traction especially for governments of islands and rapidly emerging economies.

Offpeak Energy + Storage < Peakers + Grid Upgrades

Promote the green solution (and save green!) :)

Also, we have a pretty awesome team already, but we're always looking for exceptional people. email@example.com :)

</comment></comment><comment><USER4> That is some good infoporn right there to graph and prove the point: With LSE, we could solve the energy storage and distribution problems from green energy. Beautiful and reminds me of the best style of WIRED.

</comment><comment><USER5> I am still surprised that more people do not take action in the T&D arena. Huge gains in efficiency with available technology 25%+.

It always made sense in my mind to decrease loss before increasing availability.

Great idea to razor focus by lightsail.

<comment><AUTHOR> Thanks! Transmission and distribution don't get the attention they deserve, it's true. I think storage can change that, though :-)

</comment></comment><comment><USER6> It seems like the source of energy is wind. But how will LightSail actually store the energy?

<comment><AUTHOR> We've yet to unveil the details and results of our technology, but here's a preview:

We have a breakthrough energy storage technology called Regenerative Air Energy Storage.

The concept is to store energy in compressed air -- a motor/generator first drives a compressor, which stores air in a tank. To deliver stored energy, the air comes out and is expanded, driving the motor/generator as a generator and generating electricity.

Our innovation captures the heat energy of compression (the majority of the energy in compressed air is stored in the form of heat) and allows us to regenerate from it almost all of it in the form of useful energy.

We do this by spraying a fine water mist directly into the compressing and expanding air. The high surface area and heat capacity of water rapidly absorbs the heat of compression, and delivers it during expansion, to be converted back into mechanical energy.

<comment><USER6> Thanks for the explanation! I'm working on energy storage too, but through electrochemical means (ie. water splitting). It's always interesting to hear how other people are tackling the problem. I look forward to hearing more about LightSail in the future.

</comment></comment></comment><comment><USER7> This is really, really cool. I have been hoping to see green tech startups, hopefully we will start to see a lot more.</comment>


Sedar Argic - <AUTHOR> https://en.wikipedia.org/wiki/Serdar_Argic <comment><USER2> > For a period of several months in the first half of 1994

It started a good deal before 1994.

This article misses out on the conspiracy theory that Hasan B. Mutlu was Argic, and was succeeded by Ahmet Cosar, a Univ of Minnesota (grad?) student. The Argic nom de guerre was succeeded by a couple of other fake Turkish accounts for a month or two. There was a good deal of speculation that "Argic" had a pink contract with Uunet.

Strangely, when Cosar lost his student visa and had to leave UM, Argic and his "friends" disappeared. Wonder why that was?</comment>


Clojure from the ground up - <AUTHOR> https://aphyr.com/tags/Clojure-from-the-ground-up <comment><USER2> I've been doing Clojure full time for a few years. Here a recommendation on editor setup if you're new to the parentheses:

1\. Setup Cursive ( [https://cursive-ide.com/](https://cursive-ide.com/) ) 2\. Start a REPL on the command line with `lein repl :start :port 38123` and connect to that repl with cursive, a remote REPL. 3\. Bind and learn the following structural editing commands:

a) Grow selection (this will be by FAR the most used in the beginning)

b) Slurp.

c) Send top form to REPL.

d) Join lines

Don't ever select by line, only use "grow selection". Don't ever break any parens ("[({") imbalance. Shouldn't happend if you use "grow selection".

Editing like this will get you pretty darn productive. I used it for probably 6-7 months before I introduced more structural editing commands (Next in line is IMO "Move Forward").

<comment><USER3> the biggest leap in productivity i've experienced is after i tried parinfer ([https://shaunlebron.github.io/parinfer/](https://shaunlebron.github.io/parinfer/)). seriously, just find the plugin for your editor, it is amazing, the cognitive load of balancing is simply gone.

<comment><USER4> Coded Clojure for years, including w/ Paredit and I find Parinfer extremely frustrating as it fights my edits and sometimes creates syntax errors - in the Atom Parinfer in indent mode anyway. Maybe other implementations are better? Or do I just have to "unlearn" a bunch before I can relax and let the magic flow? Cuz as it is, Parinfer makes me nuts.

<comment><USER3> the only issue i've seen with parinfer is that i can get confused when you have multiple forms within single line, it can sometimes inadvertently slurp the rightmost forms and i have to go and insert closing parens manually. that doesn't happen often though, otherwise it's been very smooth for me. i imagine that when one is fluent with paredit and structural editing, parinfer can feel like a step back, but for newbies it is the first thing i will always recommend.

</comment></comment></comment></comment><comment><USER4> Btw, this tutorial is by the author of the esteemed Jepsen [https://jepsen.io/](https://jepsen.io/) and Riemann [http://riemann.io/](http://riemann.io/) . He really knows his stuff, yet this material is very approachable.

It should be noted however, that the project was put on hold several years ago, with the intent to eventually tackle: Polymorphism, Modularization and refactoring, object state, JVM interop, Clojure type system, Compiler at runtime, Build your own language, Performance analysis, Parsers and protocols, Storage and persistence, Networks and messaging, and Concurrency and queues.

Consider [http://www.braveclojure.com/](http://www.braveclojure.com/) as another free and well-written Clojure learning resource, that's more complete.

</comment><comment><USER5> I like Clojure but ended moving away from it to Racket instead. The error messages and debugging story in Clojure just plain suck, and have for a long time now.

Error output is just java stacktraces, which for a newcomer make zero sense. I got stuck for two days on something before realising the problem was because of a lazy list elsewhere in the program. The CIDER debugger is pretty good, but I can't help feel that people who sing it's praises haven't been exposed to graphical debuggers like in Visual Studio, which offer a far superior experience. Additionally there is no break on exception functionality, and you have to actually commit a debuggable version of a method before you can step through it. Combined with the nonsensical erro output, you can be looking for hours for the actual location an error occurs. Which is bizzare because functional languages usually make error finding a breeze because mutable state is so locked down.

I'll mention Cursive too, which is an intelliJ plugin, that does actually offer a really good editing experience, and more importantly a modern graphical debugger that makes sense. But it's only a 30 day trial before you need to pay, and because Clojures error messages are still useless I just can't see a reason to pay for something I get for free with any other language. It's a shame because otherwise the Clojure library comes across as really well designed.

Since moving to Racket, I've been a lot more productive because of the out of the box editor it ships with, which along with its built-in package manager, really make it feel like you can hit the road running.

<comment><USER6> That's the fatal flaw--being a layer over the JVM. It's a shame since the rest of it, as well as the community, is top-notch.

<comment><USER4> Yes, stack traces suck, but being on the JVM is also a gigantic win for its runtime ecosystem and vast collection of solid libraries that you can access almost seamlessly. I.e. it's a flaw, but hardly a fatal one for large numbers of enthusiastic Clojurists.

<comment><USER7> It's not _just_ being on the JVM that causes the annoying stack traces. It's certainly possible for Clojure to inspect errors and provide better ones. But then it needs to know a lot more about its hosting VM. The crappy stack trace situation was a design decision to keep Clojure loosely coupled to its VM, allowing it to be more easily ported to JS (ClojureScript), .NET (Clojure- CLR), etc.

</comment></comment></comment></comment><comment><USER8> The modeling chapter is really fun (for those with some clojure chops already looking for a fun random place to assess the work).

</comment><comment><USER9> Chapters do not appear ordered. Is this intentional?

<comment><USER10> Yes, they are in reverse order, start from the last post and work up.

<comment><USER11> From the ground up :)</comment></comment></comment>


WTF – A Terminal Dashboard - <AUTHOR> https://wtfutil.com/ <comment><USER2> Currently on the front page => [https://news.ycombinator.com/item?id=17195618](https://news.ycombinator.com/item?id=17195618)</comment>