Duke Nukem Forever: barely playable, not funny, rampantly offensive - <AUTHOR> http://arstechnica.com/gaming/reviews/2011/06/duke-nukem-forever-review-barely-playable-unfunny-and-rampantly-offensive.ars/ <comment><USER3> I found the review persuasive. The points about misogyny resonated with me, but everything he criticized about the gameplay resonated as well.

Linear gameplay with cutscenes, bleah. Regenerating health, meh, not in this kind of game. You can only carry two guns and they aren't fun to shoot -- what are they THINKING? This is DUKE. I don't know what era they grew up in, but my action heroes can carry at least six guns, maybe eight, and at least half a ton of ammo.

Nothing as fresh and silly as the shrink gun was? It was little novelties like that made Duke fun to play. If you want to make penis jokes, make a penis gun. If you want to make a joke about homophobia, make a leather gun that decks a bad guy out in a leather outfit with assless chaps, temporarily incapacitating his friends as they laugh at him. Blammo -- joke's on them! It wouldn't have any point against the big bosses since they work alone, but it would be fun to use anyway -- what is this big blob of alien going to look like in leather? It would also add some sexual interest without being too misogynistic, since you could shoot women to give them a bad-ass leather and sunglasses look, which would give them a lot more class and dignity and real sex appeal than they usually have in Duke games. Maybe they'd grab a gun and fight on your side for a while.

How did I just think up a major improvement to the game while writing an HN comment, and they couldn't do it in... how many years?

<comment><USER4> Please, create this game, I will buy it. You had me at the assless chaps gun.

<comment><USER5> Was it only Quake that had such extensive modding capabilities, or was it Duke also?

In short, if they stick to the _spirit_ of games from that time, then user content will show up and you'll both get your wish.

<comment><USER6> Games don't seem to stick around long enough for modders so much nowadays :\

<comment><USER7> Thats only half the reason for the lack of mods, the other is that the orignal game creation sdks are now free or freemium atleast so it wouldn't make sense to try to mod something if you can get supreme tools for original creation nearly for free.

</comment></comment></comment></comment></comment><comment><USER8> Its hard to trust a humorless judgement of humor.

While I haven't played the game myself, I'd like to point out to the author of the article that if attempting to describe why a something isn't funny, the best weapon in your arsenal would be humor, not simply sticking up your nose in disgust (though one could mix that in).

That said, a lot of the jokes in the game sound pretty straightforwardly shitty and weird. However I'm trying to imagine the author describing a Louis CK comedy set, a dirty comic I find hilarious, and I'm fairly sure he could ruin that in short order, so I'll hold off on my judgements.

<comment><USER9> I'd suggest you play the demo before sticking with how you're describing the article.

I'm a fan of nearly all types of comedy and don't mind the mindless, 'tasteless' humor types. That said, the demo was tasteless AND unfunny. Considering Gearbox and 2K's recent track record, it's not too surprising -- they've been relatively mediocre at best lately.

<comment><USER8> Hey, I can believe that the game sucks in a painfully humorless way, never said it didn't. I'm just talking about the writing style of the article. If it was that unfunny, there should have been plenty of material in the article for the author to riff on.

As is, he sounds like a straight laced bore.

<comment><USER10> Agreed such a terrible review.

I mean his first reaction was to kill the women - and then shout down the game for it - considering they explode exactly 5 seconds after the dialogue ends, so yeah, really tried to avoid that huh..

<http://youtu.be/bbGihyEoOy8>

<comment><USER11> How the hell did he miss that? It actually takes three seconds from "we'll get the weight off, we swear" to them screaming end exploding.

Also, my favorite bit:

"Duke, what's happening to us?"

"Looks like you're... _awkward pause_ fucked."

If that's any indication, I completely sympathize with the reviewer.

</comment></comment></comment></comment></comment><comment><USER12> I bought the game the day of the release (having waited for it for twelve years!) and I must say it's good to be back. I agree with some points, the loading times are terrible (especially when you're killed and want to get back in the action sooner) and "boss" levels are hard with the loading times when you're dead too, but guys, it's Duke Nukem!

A point this author didn't make is that it actually feels like different teams in different era's worked on the game, some levels have very blurry low-res textures, other levels are crisp and well-designed.

And as for the "feces"? Picking it up is optional and it dind't cross my mind. You can interact with the environment 1000 times more than Halo (for instance) allows you to which is great.

It's a game for people who've waited 12 years for Duke Nukem.

</comment><comment><USER13> A game is in development hell for years. It "officially dies", then in a matter of a year or two, a sequel is whipped up by another studio using the inherited rights to the name.

Did anyone really expect this to be anything besides a cheap cash-in on the last gasp of the Duke Nukem franchise?

<comment><USER14> > It "officially dies", then in a matter of a year or two, a sequel is whipped > up by another studio using the inherited rights to the name.

This is not what happened. Please don't spread lies. The single player game is exactly what 3D Realms had developed and Triptych finished following 3DR's demise. Triptych consisted of a bunch of 3DR guys who wouldn't let the game die and spent close to a year working out of someone's house with no compensation. The work done by non-3DR/Triptych people was mainly the multiplayer and the console porting.

<comment><USER15> There's no reason to call someone a liar when it could just as easily be a simple mistake. Don't attribute to malice, etc.

<comment><USER14> He's making stuff up and stating it authoritatively as if it were simple fact. I'm not sure what else to call it.

</comment></comment></comment></comment><comment><USER16> Clearly there is something wrong with me as I found the game throughly enjoyable. I did go in with low expectations after reading a few reviews.

However I also HATE God of War for its violence and misogyny. quite strange.

</comment><comment><USER17> I was on the fence before, but I'm definitely going to play it now.

</comment><comment><USER18> For those interested in why it took over a decade to develop it before it crashed: Learn to Let Go: How Success Killed Duke Nukem <http://www.wired.com/magazine/2009/12/fail_duke_nukem/>

The downfall was perfectionism.

<comment><USER19> Perfectionism doesn't necessarily result in death marches and a crap product. Look no further to Valve to see what perfectionism can mean in the games industry (can I have my HL2:E3 now... _please_?), and of course let's not forget the obligatory reference to the master of perfectionism, Apple.

The difference between these two companies and the making of DNF? As Steve job said, "Real artists ship".

</comment></comment><comment><USER20> "Did everyone really forget that Duke Nukem c1996 was also 'barely playable, not funny, rampantly offensive?'"

<https://twitter.com/#!/ibogost/status/80475033998327808>

<comment><USER9> Short answer: No. D3D was never like that.

Long answer: If you were offended by a game where you get pixelated peeing, some strippers with streamer pasties on their boobs and a few cuss words, yes it was offensive. This is hardly comparable, though, as at the time there was nothing like it, unless you include the idiotic outrage from Mortal Kombat.

</comment></comment><comment> saint-loup I found this review interesting and more balanced: [http://www.rockpapershotgun.com/2011/06/13/wot-i-think- duke-...](http://www.rockpapershotgun.com/2011/06/13/wot-i-think-duke-nukem- forever/)

</comment><comment><USER21> I've been watching a playthrough of Duke Nukem Forever (because I don't want to play the actual game). Firstly, it looks really, really fun. Not smart, not something that I would play through multiple times, even if I did play it - <USER2> doesn't compare to Fallout 3 in the least - but fun, in the same way that watching a mindless action movie can be fun. Secondly, picking up feces from the toilet is entirely optional, and reflects upon the reviewer as well as the game. One of the major selling points of the game was that everything can be interacted with, so what did you expect?

</comment><comment><USER22> I went to high school with a lot of people who weirded me out. This one particular breed was a combination of a lack of social skills, misogyny, and self pity. I always wondered what would happen to people like them... now I know they're making video games for Gearbox.

</comment><comment><USER23> I've only played through the first 20 minutes or so and had a blast. Sure its not cutting edge at all but you can see the old 3dRealms touch of being able to interact with a lot of things.

Users should set their expectations of the world's greatest game aside and just taking Duke Nukem Forever with a grain of salt. To me its like an 80's or 90's action movie.

I would have payed to play this even if it was a 2 hour tech demo just to see what they were working on all this time.

</comment><comment><USER24> I just finished DNF and I actually liked it.

It's not a game I would like to play more than once but in my opinion, it was worth his pre order price. I was entertained about 8-10 hours with mini games, some jokes and first person action.

There're parts which appear unfinished and can't be missed, but DNF can be a entertaining game if you can look over it.

</comment><comment><USER25> Nostalgia Forever. I remember playing the older Duke games as a kid (strip bars anyone?!) and thinking it was an amazing game. Like many people here, I carried that nostalgia with me for many years to the point where I bought (I didn't pre-order) DNF--and well... all I can say is, when you grow up your taste in things change. I wouldn't call DNF a bad game, it's just not something the adult me wants to play. I know though, if I handed this to my younger self, I would be quoting the stupid one liners all day at school. Gearbox made a decent game, they just didn't realize their main demographic grew up.

</comment><comment><USER26> Talking about the joy of exploring the levels, I remember when I first discovered the hidden room in the first level in DN3D with the jetpack. A JETPACK! How awesome and novel was that in 1995??

And to think the game was not even true 3D! (You could aim straight ahead, shoot and hit your friend that was flying in the air). Despite that technical shortcoming, the game was FUN. I wasted many hours during summer in 1995 playing this game with a friend, and we even made our own levels to play in deathmatch, figured out novel ways to place laser tripmines, and used teleporters for nefarious purposes. Sounds like a classic case of "we made it 'cause we can" not because it was fun.

</comment><comment><USER27> There's probably a lesson in here somewhere about letting development on any software drag on for so long. At a certain point you have to just kill it and move on with your life. I hope we at least get a case study out of it.

</comment><comment><USER28> I think the lesson here is sometimes when a publisher shuts down a studio instead of letting the game get finished they actually know what they're doing.

<comment><USER29> Much like stories or novels published after the author's death are generally bad. More often than not there's a reason why they weren't published. There are rare exceptions where the novel/story was _interrupted_ by author's death, but otherwise - beware.

</comment></comment><comment><USER30> The first paragraph of the article made me laugh at my desk. The rape is not funny, though.

<comment><USER31> Unless you're raping a clown.

</comment></comment><comment><USER32> Not that it will change anyone's mind, but given that I'm more than half way through DNF on the PC, here are my thoughts:

\- Graphics on the PC are decent when maxed out on good hardware.

\- Load-times are unbearably long. 25-45seconds on a Dual-core 3.0Ghz machine (SATA drives, no SSD here) and an Radeon HD 6950.

\- Did I mention load-times?

\- Nudity is abundant and enjoyably breasty (I sincerely doubt MOST of the people looking down their nose while playing this game don't actually enjoy this aspect).

\- Level design is boring and feels very "last gen shooter". Not much detail (although the Vegas back drop during the first 1/4 of the game is decent) and movement through a level is primarily linear.

\- Guns are boring and feel VERY uninspired. There is nothing "fun" about the weapons. There isn't a single gun I enjoy shooting. I'm a gun connoisseur when it comes to FPS; for example, the Turok remake was an OK game (annoying terrible at parts) but the weapon design and sound work was _fantastic_.

\- Enemies are not fun to fight or kill. Some of the bosses are interesting, but the enemies you fight the other 97% of the time are either overly aggressive and beat you down, making you frantic to take them out at the expense of "having fun" with them (e.g. freeze ray, shrink ray, etc... you are just panic'ed to kill them) or they have some annoying stupid AI routines (like flashing in/out of position as their health gets low) that does nothing for the gameplay and just artificially extends the boring-ass battle.

\- The game isn't funny -- it's not that they don't try, it's just a bunch of humor that isn't enjoyable anymore. Sort of like popping Bill and Ted's Excellent Adventure in and not laughing once and trying to remember why you were rolling on the floor laughing when that movie came out. Or popping in Wayne's World and trying to remember why you EVER though Dana Carvey talking strange and both of them stay "SCHWING!" ad nauseum was enjoyable.

\- Monster-truck/mini-car-driving scenes are the most enjoyable so far.

\- Difficulty is not balanced well at all. With 3 or more pig-gorillas on screen you can get your ass handed to you very quickly on Easy and on Hard you can take down a boss just as quickly. I don't understand what the difficulty settings do exactly. Regardless, Easy doesn't feel "Easy" and Hard doesn't always feel "Hard".

\- For as much time/money/marketing Broussard put behind the "interactivity" of the world -- it feels really flat. There are a few simulated things (like pin-ball machines and poker machines) that are fully implemented and a total waste of effort IMO, at the expensive of plenty of other things being non- inter-actable. This is a perfect example of "depth" not "breadth" design in all the wrong places.

\- The game is written/designed around the idea that you care at all about the fan-fare that is Duke. I don't and I imagine most people playing this game honestly don't care at all about the Duke character -- given that, a lot of the enjoyability of being in this all-duke world, being this over-the-top- character that is super-flat... just means nothing. So what little "umph" being Duke was going to breath into this just isn't there at all. As a comparison, it was intoxicating to be Shepard in Mass Effect 2 with all the characters in the world reacting to seeing you for the first time after what happened (avoiding a spoiler here) -- in Duke, I am just not entertained by all the things Duke in this world. IN FAIRNESS, I might have cared in 2004, so maybe all this stuff was applicable and funny at some point.

You can't slap a single tag on this game like "Offensive" or "Unfunny" or "Uninspired" and point at that single thing as it's failing... it's all of them to some degree.

The game is not a glaring flop, it's just mostly boring to play (it feels like a chore to me), has a few high-light moments (bewbs) and is totally forgettable.

For $5 rental? Sure pick it up and play it. For $39-49-59? No freaking way. I can literally think of 100 better games to put your money on depending on your preferences.

</comment><comment><USER33> Is anyone really that surprised?

</comment><comment><USER34> I'm not really comfortable about the fact that dozens of adult people have spent several years of their work and milions of dollars so that other people can run in virtual environment and throw shit around.

<comment><USER35> Cheap attack is cheap.

How big is entertainment sports business? How many millions of dollars do we pay individual players?

<comment><USER34> Tautologies are also very cheap these days :) It wasn't meant to be an attack, I'm mostly wondering about the motivations.

It takes a _huge_ amount of work to make such a game, even if everything goes perfectly well. I know there are interesting technical challenges in the game and there's potentially a lot of money and other motivation, but I simply can't image myself working hard several years to create a virtual environment where you can throw shit around and watch women explode because of alien insemination. (This is a simplification indeed, but the point should be clear.)

Would you invest the time and effort? If yes, why do you feel it's worth it?

<comment><USER36> The legendary Carmack has been working on a game called "Rage" for the past 6 years. Six years ago, iphones & androids didn't exist. Game developers do it because they enjoy it, even if the hard-core-games tend to make less dough than games like angry birds or guitar hero.

<comment><USER37> And if they're building a game full of misogyny and shit-throwing "because they enjoy it", that's somehow better?

<comment><USER38> Hey! Misogyny is bad, but (virtual) shit-throwing is just funny!

Angry Turds for iOS. Coming soon. It's a steaming-pile of gaming goodness!

Development was tough. We had to push and push, but we made the drop.

EDIT> I'm just glad to be done with development. Now I can spend more time at the pool, with the kids.

EDIT2> So, apparently someone already made Angry Turds for iOS. I'm not affiliated with them in any way.</comment></comment></comment></comment></comment></comment>


People Speak Faster in Less Efficient Languages - <AUTHOR> https://www.theatlantic.com/science/archive/2019/09/people-speak-faster-less-efficient-languages/597391/ <comment><USER2> Not the same, but obviously related:

 _Human speech may have a universal transmission rate: 39 bits per second_

\-- sciencemag.org

[https://news.ycombinator.com/item?id=20880789](https://news.ycombinator.com/item?id=20880789) (237 comments)</comment>


Another Google X: Project Tango, building 3D environment with a smartphone - <AUTHOR> https://www.google.com/atap/projecttango/

<comment><USER2> Looks line a great idea for virtual visitings. Wonder if it can build a 3D modeled environment based on a scaned one and how real would it look like. Could it use real pictures to make the object textures? Would it be able to deal with glass, mirrors and other reflective surfaces?

</comment><comment><USER3> ..to project it in an environmental hologram. It's not the end of the world that's near, it is Starship Enterprise's holodeck.</comment>


ArduPilot and DroneCode - <AUTHOR> http://discuss.ardupilot.org/t/ardupilot-and-dronecode/11295 <comment><USER2> ArduPilot is really an amazing project and I hope that they walk away from this stronger than before.

It's not just drones - they have autopilot code for fixed wing planes (Plane project) and rovers as well. Antenna tracking, too. Extremely well documented ([http://ardupilot.org/copter/](http://ardupilot.org/copter/), [http://ardupilot.org/rover/](http://ardupilot.org/rover/), [http://ardupilot.org/plane](http://ardupilot.org/plane)).

Am currently building a geological survey fixed wing plane using ArduPilot.

Someone built a remotely controlled tractor using the Rover code, even:

[https://www.youtube.com/watch?v=OBNWYIC3lY0](https://www.youtube.com/watch?v=OBNWYIC3lY0) (first attempts)

[https://www.youtube.com/watch?v=Ybxhvlyw-X0](https://www.youtube.com/watch?v=Ybxhvlyw-X0)

[https://www.youtube.com/watch?v=C69E9rm8x8M](https://www.youtube.com/watch?v=C69E9rm8x8M) (a few years later)

The guy initially built this to make his life as a farmer easier and now he founded a company and markets his technology (Reimer Robotics).

</comment><comment><USER3> This is why non profits need to separate governance from fundraising. If "donating" money gives you influence, it's not a donation -- it's an investment.

</comment><comment><USER4> Wow, I thought Ardupilot pretty much was DroneCode.

I wonder which one of those Platinum members (3DR, Intel, Qualcomm) is behind the aggravation?

Also, I thought DroneCode was governed by the Linux Foundation? I find it hard to believe they would allow a private interest takeover of the project

<comment><USER5> I'm super curious as well.. 3DR is the original platinum member, Intel and Qualcomm are newer. It seems like all three were collaborating on pivoting towards proprietary drone tech which obviously doesn't sit well with ArduPilot/tridge

</comment></comment><comment><USER6> Once again, as open source becomes key to what is shaping up to be a multi- billion dollar market, people who like to own markets will make their moves to own those markets.

</comment><comment><USER7> More comments:

[https://lwn.net/Articles/700479/](https://lwn.net/Articles/700479/)</comment>


ClojureScript 1.7: ClojureScript can compile itself - <AUTHOR> http://swannodette.github.io/2015/07/29/clojurescript-17/ <comment><USER2> > We grabbed a string out of CodeMirror, read it via tools.reader into > persistent data structures, passed it into the ClojureScript analyzer, > constructed an immutable AST, passed that AST to the compiler, and generated > JavaScript source with inline source maps and eval'ed the result. All of > this happened inside of your web browser.

This is just fantastic! As David himself mentions - this might not be extremely pragmatic but it sure as hell as cool. For me it means that I can get back to writing my web-based Clojure book without being dependent on Himera[0], which although great, is really hard to work with.

Awesome work by @swannodette and team!

[0] - [https://himera.herokuapp.com/index.html](https://himera.herokuapp.com/index.html)

<comment><USER3> I don't pretend to know front end dev too much; I don't program for a living, but it seems the 'bazaar' model of layering, patching and piling things up is making that world unnecessarily complex. If I understand this thread correctly, you lose Google's Closure optimizations(?), you go round about AST->compiler->JavaScript and you can eval the result. Is the eval equivalent to Scheme or Common Lisp? What are its limitations? I like what I see of ClojureScript as a language syntax and some of the underlying concepts. I am playing with PicoLisp and PilOS (PicoLisp running on a VM - not really a Lisp Machine), and the simplicity and directness of it is refreshing. The layer of abstractions are minimal. I guess that's the same reason I like the J programming language. I am astounded by the amount of work and the accomplishment here, but I have to wonder if we can't see the forest for the trees any longer in computer science. Currently reading 'The Architecture of Symbolic Computers', studying Shen, PicoLisp, Racket and the J programming language. Perhaps my naivete of not having to work in this field, and the luxury of being able to dabble across languages and systems has shifted my perspective?

EDIT: How do you debug your work? What traces do you get back? Can you still do REPL (like Emacs/Slime) this way?

<comment><USER4> ClojureScript isn't particularly different to how most other languages work. You have a parser (analyzer) that turns text into an AST, then a compiler that turns the AST into the target code. In this case it's Javascript, but the same principle applies if the target is assembly or bytecode.

ClojureScript is now self-hosting, which means that you can eval any valid ClojureScript, so yes, eval in ClojureScript is now equivalent to the eval in languages like Clojure, Racket or any other Lisp.

Usually when a language is bootstrapped, that becomes the new norm. For instance, Go was originally mostly written in C, but since 1.5 Go has been written in Go. However, the Java version of the ClojureScript compiler can leverage Google's Closure Tools, which include a rather useful Javascript optimizer. This means that we'll still want to use the Java version of ClojureScript in most cases.

</comment></comment></comment><comment><USER5> I swear David Nolan does not sleep.

<comment><USER6> I do in fact enjoy sleeping immensely. As alluded to in the post while I tend to do a lot of "driving" \- this release was the result of a broader effort by the growing Clojure & ClojureScript communities.

<comment><USER7> And we are very thankful for all your contributions David.

Thank you so much.

</comment></comment></comment><comment><USER8> The most interesting case for me will be fast starting clojurescripts as the author points out.

The one area I have not been happy with is clojure's startup times so hopefully this fixes that going forward.

<comment><USER9> It can be very fast to get things running. Here is an example using "desktop" JavaScriptCore on OS X: [https://twitter.com/mfikes/status/626884586392453120](https://twitter.com/mfikes/status/626884586392453120)

</comment></comment><comment><USER10> This also means that we can use clojurescript as a scripting language. Will make some systems automation much more fun!

<comment><USER11> I'm only vaguely familiar with clojure, but why would you want to use clojurescript over clojure?

<comment><USER12> For what GP mentioned ("systems automation") depending on the JVM (as one would with Clojure) is kind of a non-starter, due to the long startup time. By contrast, Clojurescript (essentially the same language, but compiled to JS instead of JVM bytecode) can run in something like Node.js, where startup times are considerably faster.

Edit: this new development (CLJS compiled with CLJS) is remarkable because previously, compiling CLJS required a running JVM. One could still compile automation scripts and run those, but that wouldn't really be true to the "scripting" style anymore.

<comment><USER9> You can dynamically compile and run ClojureScript scripts so long as you have properly hooked things up to a JavaScript engine. I've started on an effort that makes this easy OS X, wrapping JavaScriptCore and I could see similar efforts for Node.js. Here's what I've been working on: [http://planck.fikesfarm.com](http://planck.fikesfarm.com) It can run scripts you have on disk, etc, and it has basic file I/O capabilities at the moment so you can write simple text processing scripts, for example.

<comment><USER10> planck is a really exciting project. What IO capabilities do you think are missing at this point?

<comment><USER9> Just for DX / ergonomics, I'd like to mimic more of the file I/O stuff that you have in Clojure, especially the ability to cope with streams. And then perhaps having network I/O would be interesting as well.

Then there is the `clojure.java.shell` namespace that could prove very useful for scripting.

</comment></comment></comment></comment></comment></comment><comment><USER13> I have been looking at functional languages for frontend. But, I guess I am one of those people who just can't unsee the parentheses in lisp languages .

How does clojurescript compare to elm/purescript ?

<comment><USER14> You have to use it for some time, and then the parenthesis will just disappear.

<comment><USER15> plus an editor with a nice paredit mode.

<comment><USER16> Having paredit makes me miss LISP when I'm not writing it. It just makes moving around and restructuring code so much easier than it is an a C-based language.

</comment></comment></comment></comment><comment><USER17> I've been wanting to get into ClojureScript (to clean my development practices, etc) but I'm wondering if I need to be a Clojure user. Does it make sense for a Javascript developer to just jump straight to ClojureScript?. I've seen PureScript also.

<comment><USER18> As has been said, they are basically the same language.

In terms of learning, it's probably easier to learn Clojure at the very beginning.

It's simpler to get repl working and get a project building with Clojure right now. Not much simpler, but simpler. And at the very beginning, when the toolchain is magic to you, that matters.

As early as you like you can switch to Clojurescript, learn the handful of small differences and go from there.

<comment><USER15> It's so simple now:

[http://planck.fikesfarm.com/](http://planck.fikesfarm.com/)

download, run, and you have a clojurescript repl ready to go on osx at least.

<comment><USER17> nice thanks

</comment></comment></comment></comment><comment><USER19> Does this mean I could use compile and then require clojurescript modules in node? Today I use babel to "transpile" es2015 to es5 and then load those in, could I do something similar with clojurescript?

<comment><USER9> None of this recent work facilitates compiling ClojureScript into CommonJS modules for use with Node.

But, the opposite is in flight: ClojureScript now has support for depending on libraries that are packaged using the CommonJS system.

<comment><USER20> > None of this recent work facilitates compiling ClojureScript into CommonJS > modules for use with Node.

[http://www.matthewstump.com/misc/2012/06/04/writing- nodejs-m...](http://www.matthewstump.com/misc/2012/06/04/writing-nodejs- modules-in-clojurescript/)

Should be really very easy to do, you only need to study what cljs compiler emits and the docs for Google Closure Compiler JS libs.

<comment><USER21> Can someone this to me? It seems that mfikes (parent) comment, and klibertp's comment seem to contradict each other. Not to mention the examples that glenjamin highlighted.

I have heard similar comments in other places, in that it's not possible to package ClojureScript as a NPM module.

Is it because of the size of the module, or something else?

</comment></comment></comment></comment><comment><USER22> I'm curious if ClojureScript uses the original clojure library code (eg, drop, take, map...) or re-implements them? I tried to find something in codebase, seems like it uses original.

<comment><USER6> A non-trivial portion of Clojure (data structures, compiler) are written in Java. In ClojureScript these are written in Clojure or ClojureScript so there's really not as much to share as it would seem.

</comment></comment><comment><USER23> This is fantastic. It will be a lot easier for noobs to get their feet wet if they can use use the full language without having to fool around with installing a Java toolchain.

<comment><USER24> A while back I enjoyed going through this, also allows you to get a feel without futzing around with tools: [http://clojurescriptkoans.com](http://clojurescriptkoans.com)

</comment></comment><comment><USER25> How far clojurescript is to be clojure/js. By that I mean how close the JVM and JS are semantically. There were discussions about that few months ago, because of differences deep down between platforms builtin types (js integers, etc). Swannodette also explained that cljs and clj don't share as much code as the team would like. How much clojure code would run correctly as-is on cljs ? Without having to use specific reader conditionals.

</comment><comment><USER26> Thanks, for all the fish ( by fish I mean awesome code ) @swannodette and team! Can't wait to use Om Next.

Also looking forward to seeing some code examples of Demand-Driven Architecture[0]. Does anyone know of any edifying clojure code examples?

[0] [http://www.infoq.com/presentations/domain-driven- architectur...](http://www.infoq.com/presentations/domain-driven-architecture)

</comment><comment><USER27> I wonder if one of my favorite libraries for Clojure, Anglican [1] a probabilistic programming language, can be ported to ClojureScript without much effort. One could do amazing things with this.

Keep up the good work. Clojure & ClojureScript are awesome.

[1] [http://www.robots.ox.ac.uk/~fwood/anglican/](http://www.robots.ox.ac.uk/~fwood/anglican/)

<comment><USER28> If your library is written in pure Clojure (no reliance on Java) it's fairly trivial with Clojure 1.7's Conditional Readers.

Here's an example of a repository that I've repurposed to compile both Clojure + Clojurescript.

[https://github.com/rymndhng/clj-diff/commits/add-cljc- redo](https://github.com/rymndhng/clj-diff/commits/add-cljc-redo)

</comment></comment><comment><USER29> How does the output of the ClojureScript-compiler-in-ClojureScript compare to the real thing? Do you lose the Google Closure optimizations, and if so, does that mean it isn't a good idea to compile your web app using the ClojureScript compiler running in Node (for example)? It's nice if you can compile ClojureScript on a machine without Java.

<comment><USER30> Correct; you do not get the benefit of Google Closure when using the bootstrapped compiler. The JVM-based compiler will continue to be the best way to compile ClojureScript projects for production.

</comment></comment><comment><USER31> This is a huge milestone! I had a problem I was solving with Clojurescript six months ago and having access to the reader would have solved it perfectly, with lisp elegance. Instead I had to make a mess.

I think this opens huge computer science educational opportunities. Imagine a LOGO DSL inside your browser. With all the power of cljs. I am very excited!

</comment><comment><USER32> Wow, this is quite amazing! Does this also mean that we will be able to write macros in Clojurescript?

Are there any plans to use mostly the same backend for Clojure and Clojurescript? It seems that since the languages are almost the same, it's only the code generation part that would be different?

<comment><USER9> Yes and no. You can write macros for which the source is ClojureScript, but they need to be kept separate. Here is a stab I took at explaining that subject: [http://blog.fikesfarm.com/posts/2015-06-19-portable-macro- mu...](http://blog.fikesfarm.com/posts/2015-06-19-portable-macro-musing.html)

There are no plans for the same backend AFAIK.

</comment></comment><comment><USER33> I think an article outlining the details behind the non-trivial example, specifically on configuring how library names are resolved and how it can be modified dynamically, would be instructive.

<comment><USER34> The source code for the post is available[1], as is the macro[2] which is loaded via XHR.

The short of it is that a load function is passed to `cljs/compile-str`, which provides the mapping. In this case, it doesn't bother to do any mapping because it knows that it is loading `bar.core`. However, `bar-url` could instead be in a map from the namespace to the URL. Surprisingly simple, actually!

1\. [https://github.com/swannodette/swannodette.github.com/blob/m...](https://github.com/swannodette/swannodette.github.com/blob/master/code/blog/src/blog/cljs_next/core.cljs#L138) 2\. [http://swannodette.github.io/assets/cljs/bar/core.cljs](http://swannodette.github.io/assets/cljs/bar/core.cljs)

</comment></comment><comment><USER35> Awesome!!! Now we want Clojure in Clojure :)

<comment><USER36> Doesn't this imply the development of a JVM written in Clojure?

<comment><USER37> Nah, A Clojure program which translated Clojure code to JVM bytecode would be a good start.

<comment><USER38> Like this? [https://github.com/clojure/tools.emitter.jvm](https://github.com/clojure/tools.emitter.jvm)

</comment></comment></comment></comment><comment><USER39> When will the module support be released? Soon I hope! Thanks for the great work on all this.

<comment><USER6> Module support is already in 1.7.28 however it requires a corresponding release of the Google Closure Compiler.

</comment></comment><comment><USER40> For some reason I feel like ClojureScript starts to transform into a new Clojure dialect (which runs on node.js and not on a JVM). Am I correct?

<comment><USER6> ClojureScript will always run on the JVM. It's just that from now on it will _also_ always run on JavaScript.

</comment></comment><comment><USER41> Hm. This allows putting functions into edn that gets sent to the browser now, then doesn't it? Since ClojureScript can eval now?

<comment><USER9> If you put the function source into edn and the function doesn't depend on anything but core constructs, it would be nearly trivial to eval using the new cljs.js.

If those functions need to call into other ClojureScript namespaces that you've already compiled into your code then the analysis cache would need to be populated so that eval can operate properly.

For reference, here is cljs.js/eval: [https://github.com/clojure/clojurescript/blob/v1.7/src/main/...](https://github.com/clojure/clojurescript/blob/v1.7/src/main/cljs/cljs/js.cljs#L497)

</comment></comment><comment><USER42> Finally, thanks god</comment>


Show HN: Headless Chrome Crawler - <AUTHOR> https://github.com/yujiosaka/headless-chrome-crawler <comment><USER2> Pretty cool, but I recommend anyone wanting to do this kind of thing to check out the source Puppeteer library. You can do some really powerful stuff and make a custom crawler fairly easily.

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

<comment><USER3> Puppeteer has some limitations. You can't install extensions, for example.

I haven't looked into it, but I imagine it has a pretty clear fingerprint as well. So it would be easier to block than stock chrome in headless mode.

<comment><USER4> Unless something has changed that I missed, you can install extensions (I complained when the default args messed this up [0]). For example, I built something that uses puppeteer and an extension to capture audio and video of a tab [1]. It's just headless mode that doesn't allow extensions [2] (which I now realize is probably what you meant).

0 - [https://github.com/GoogleChrome/puppeteer/issues/850](https://github.com/GoogleChrome/puppeteer/issues/850) 1 - [https://github.com/cretz/chrome-screen-rec- poc/tree/master/a...](https://github.com/cretz/chrome-screen-rec- poc/tree/master/attempt1) 2 - [https://bugs.chromium.org/p/chromium/issues/detail?id=706008](https://bugs.chromium.org/p/chromium/issues/detail?id=706008)

</comment></comment></comment><comment><USER5> This has been possible for a long time with any browser using Selenium for example. It has APIs and client libraries for many languages.

Also using a real browser brings a lot of problems: high resource consumption, hangs, it is unclear when the page has finished loading etc. You have to supervise all browser processes. And if you use promises, there is high chance that you will miss error messages because promises hide them by default.

</comment><comment><USER6> While as a developer I find this super interesting, as a system administrator this makes me cringe. We don't have a lot of resources for servers, and I end up spending a disproportionate amount of time banning IPs from bots running poorly configured tools like this, which aren't rate limited and crush websites.

I'm grateful that "Obey robots.txt" is listed as part of it's standard behavior. If only scrapers cared enough to use it as well.

<comment><USER7> I've found that _mod_evasive_ [1] works particularly well in these situation and helped us a lot dealing with it (though I'm not a sysadmin and I'm sure there are better tools to deal with it). But for someone who is just a webmaster, I'd recommend using it for a quick dirty fix for such hassles.

[1] [https://www.digitalocean.com/community/tutorials/how-to- prot...](https://www.digitalocean.com/community/tutorials/how-to-protect- against-dos-and-ddos-with-mod_evasive-for-apache-on-centos-7)

</comment></comment><comment><USER8> There are a lot of folks reevaluating their crawling engines lately now that Chrome headless is maturing. To me there are some important considerations in terms of CPU/memory footprint that go into distributing a large headless crawling architecture.

The stuff we are not seeing open-sourced is the solutions companies are building around trimmed down specialized versions of the headless browsers like Chrome headless, Servo, Webkit. People are running distributed versions of these headless browsers using Apache Mesos, Kubernetes, and Kafka queues.

</comment><comment><USER9> I was stuck last time I was using headless chrome when I needed to use a proxy with an username and a paasword. Headless chrome just doesn't support it. Any changes on that?

<comment><USER10> There's a workaround - [https://blog.apify.com/how-to-make-headless-chrome- and-puppe...](https://blog.apify.com/how-to-make-headless-chrome-and- puppeteer-use-a-proxy-server-with-authentication-249a21a79212)

<comment><USER9> Thanks. Wish it was simpler. It seems overkill to have to an extra proxy in the middle with no auth to authenticate with the one with auth, just to make headless chrome working.

<comment><USER11> There's also page.authenticate, which has worked well for me. [https://github.com/GoogleChrome/puppeteer/blob/master/docs/a...](https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pageauthenticatecredentials)

</comment></comment></comment></comment><comment><USER12> I've been considering writing my own puppeteer docker image such that one could freeze the image at crawl time after a page has loaded. This would allow me to re-write the page-parsing logic after the page layout changes. Has anyone done this already or know of any other efforts to serialize the puppeteer page object to handle parsing bugs?

</comment><comment><USER13> I'm thinking about adding a crawler to Bookmark Archiver, to augment the headless chrome screenshotting and PDFing that it already does.

Wget is also a pretty robust crawler, but people have requested a proxy that archives every site they visit in real-time more than a crawler.

</comment><comment><USER14> Can't see from examples, how do I get back individual elements from the body?

<comment><USER15> Not a user of this tool, but [https://github.com/yujiosaka/headless-chrome- crawler#event-n...](https://github.com/yujiosaka/headless-chrome- crawler#event-newpage) points to [https://github.com/GoogleChrome/puppeteer/blob/master/docs/a...](https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#class- page) where you can grab elements.

Basically, when new page event happens, you get the `page` object where you have access to it and can do queries.

<comment><USER16> `page.$(query)` or `page.$$(queryAll)` to be more specific

[https://github.com/GoogleChrome/puppeteer/blob/v1.1.0/docs/a...](https://github.com/GoogleChrome/puppeteer/blob/v1.1.0/docs/api.md#pageselector)

</comment></comment></comment><comment><USER17> there's this too: [https://github.com/brendonboshell/supercrawler](https://github.com/brendonboshell/supercrawler)

</comment><comment><USER18> Nice job! Can this be scaled and distributed to multiple machines?

<comment><USER17> maybe with this? [https://Browserless.io](https://Browserless.io)

</comment></comment><comment><USER14> also how does this handle pages that load with a small number of links and then uses JS to write in a bunch of DOM nodes and links?

<comment><USER19> I don't know about this project specifically, but typically with headless Chrome, you let it run the JS and then read the DOM.

<comment><USER14> most naive code I see is like the following

        const page = await crawler.browser.newPage();
        await page.goto(url);
        await page.waitForSelector("a[href]");
        const hrefs = await page.evaluate(
        () => Array.from(document.body.querySelectorAll('a[href]'), ({ href }) => href)
        );

and then you do something with hrefs.

However if you have a page that loads with 4 links defined, does its script and then ends up 100+ links you miss the 100+ links. I notice people often failing to account for this in their crawlers, so I wondered if this one was.

</comment></comment></comment><comment><USER20> is it possible to scrape songs from spotify web app with this?</comment>


Packagepeer - <AUTHOR>

Packagepeer is a network which connects online shoppers with neighbors who volunteer to take delivery of goods in their name for a fee. Online shoppers can search their neighborhood for packagepeers, amongst which they can choose their favorite based on rating, other user comments, proximity, pricing etc. Packagepeer covers the entire process through its website where both types of users, the online shoppers and receivers, are registered and put in contact with each other. Once the contact is made and found suitable, the user can access the packagepeer's details to use them as the delivery address when purchasing online. Then, online shoppers can pick up their goods from their neighbor's house at their most convenient time and pay a small fee in turn for their neighbor's service. https://www.packagepeer.com <comment><AUTHOR> [https://www.youtube.com/watch?v=-pXZfPf2bms](https://www.youtube.com/watch?v=-pXZfPf2bms) watch the video for a step-by-step explanation</comment>


Computer vision model to identify the Australian Aboriginal Flag [follow up] - <AUTHOR> https://ajaxdavis.com/post/An-Open-Source-Computer-vision-model-to-identify-the-Australian-Aboriginal-Flag-Tutorial/ <comment><AUTHOR> Hey everyone,

This is a follow up to a question I asked a few weeks back -> [https://news.ycombinator.com/item?id=24187794](https://news.ycombinator.com/item?id=24187794)

(mods: sorry I truncated the blog title slightly to make room for the [follow up] tag)

I was asking for a bit of advice on how to use CV to solve a problem. Using your answers and some personal research I got to working on it. And learnt more about CV and managed to implement what I originally had in mind.

I've got a job running against a couple million images and looking forward to the results even if nothing comes up.

I've always struggled with learning ML, and some things finally clicked, so I wrote this as a tutorial.

I spent quite a bit of time making this as easy as possible, so I hope it serves you well and I look forward to your feedback.

</comment><comment><USER2> In the first example the rectangle is too subtle. Can you draw it in blue?

What is the ratio of false positives? Do you have some samples of the false positives?

<comment><AUTHOR> Great suggestion, will update it with blue images now.

And will get back to you on false positives (there are tonnes)</comment></comment>


Nerdy Day Trips - <AUTHOR> http://www.nerdydaytrips.com/

<comment><USER3> Great idea. Dragged my wife out to Lowell Observatory on our honeymoon in the US. She will be horrified to learn that I now have many more options for future trips.

My brother, father and I visited the Budweiser Budvar factory in České Budějovice earlier this year and could've watched the bottling processes and robotics at work for hours. We talked later about how tours of so many factories would actually be a really interesting experience. Auto plants, cooperages, electronics factories, food processing factories, etc. If these opportunities already exist, I imagine they'd be lost in a sea of common tourist options.

<comment><USER4> The trouble with factory tours is that they're uneven in quality. Many of 'em don't let you see anything interesting. I've soured on them after a couple of bad experiences. The Ben & Jerry's ice cream factory in Vermont should be fascinating, but it consists of watching a long video followed by looking through a window at the factory floor while they point things out to you. You're not allowed anywhere near the actual machines. The Lindt chocolate factory in Zurich is even worse -- there's no tour at all, you're just stuck in a museum room at the factory. The free tasting redeem 'em both somewhat, but for what it costs to get there you might as well just stay home and eat ice cream and/or chocolate without the factory.

Best factory I've ever seen wasn't open to the public, it was a factory making fibrous cement sheets. I've also toured radiotelescopes and the National Ignition Facility, but the fibrous cement sheet factory was way cooler.

<comment><USER3> The Cadbury factory in Tasmania (Australia) is now similarly weak - no more factory floor tour: now you just watch a video and see a basic chocolate making demo. It's also only redeemed by the shop selling discounted and seconds chocolate.

A real shame.

</comment></comment></comment><comment><USER5> John Graham-Cumming is also the author of _The Geek Atlas_.

<http://www.geekatlas.com/>

<comment><AUTHOR> Thanks for mentioning my book. For people who are interested in maps there's a map of all the locations in The Geek Atlas here:

[http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&#...](http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&msid=115534058077032750528.00046797f70f17dec592b&ll=46.55886,-9.140625&spn=162.559086,360&z=1&source=embed)

And if anyone's got the energy they can enter them all on the Nerdy Day Trips web site. I've done the first 22, but need to do other stuff tonight. If you do that and enter a significant number (say > 30) then (a) please add a note "This is one of 128 geeky places from the book, The Geek Atlas" and (b) email me and I will send you a free signed copy of my book.

</comment></comment><comment><USER6> As a fan of the The Geek Atlas, this was pretty awesome. It turns out I used to go past the Mossman Lock Collection every day at an old job many many months ago, and I didn't even realize it until I saw it put on a map!

</comment><comment><USER7> Don't forget the world's tallest (guyed) structure, a TV broadcast mast in North Dakota: <http://en.wikipedia.org/wiki/KVLY-TV_mast>

First man-made structure to exceed 2000 feet in height.

</comment><comment><USER8> Feedback using Firefox 6.0.2

\- no meaningful feedback when mousing over a tag.

\- mouse scroll wheen controls the window's menubar, not zooming in and out. Disconcerting for someone used to Google Maps.

\- clicking on a tag takes a relatively long time to load.

\- when you load location information maybe make the background a little more transparent.

<comment><USER9> I was definitely looking for a Google Maps-like experience. In addition to what you said, I'd like to the place description to _not_ cover the destination, so that I can keep track of where it is on the map.

Also, clicking the search box doesn't clear the existing text. I ended up clicking multiple times before realizing that the window wasn't frozen.

</comment></comment><comment><USER10> If you focus on the UK check out openstreetmap. The map data coverage might be better. cloudmade has some beautiful styles.

</comment><comment><USER11> This is brilliant. I hope it stays spam-free. Thanks for building it.

Can we have a way to go back and re-edit our entries as I'd like to add a website link to one of mine?

</comment><comment><USER12> What does everyone think of the map as the background portion of the UI? I found it to be a little cluttered.

I recently wrote similar app for cougar sightings (the cat) <http://cougarreport.com> . I moved the map into a separate spot.

Any opinions on which layout is the preferred way?

<comment><USER13> Big maps look really good. I remember the first time I used the 'hide panel' button in Google Maps, I literally voiced 'ohhh'. I'm not a fan of the modal dialogs on the linked site (nor the cufon - for whatever reason I can only see a handful of letters). The modal dialogs just add that unnecessary 'close' step which really detracts from casual browsing of trips.

On your site, you could definitely make the map bigger using a fluid design and you may be able to show all the cougars to some users. On an aside, the way you present the data on both the map and text is very slick.

<comment><USER14> I had a similar issue with Cufon, and it was resolved with a graphics driver update. Perhaps try that?

Not that it isn't a hideous piece of software that has no place in the web eco-system.

</comment></comment></comment><comment><USER15> this is awesome. I just discovered another place to hit on my vegas trip next march.

</comment><comment><USER16> Great idea! A little browser geolocation would be a nice finishing touch.

</comment><comment><USER14> Love the idea! But please can you make the map the default action for mousewheel scrolling? I want to zoom into the map, rather than up and down a page I'm not going to read anyway.

</comment><comment><USER17> Reminds me of <http://atlasobscura.com/>

</comment><comment><USER18> How about a little IP geolocation action? The UK isn't exactly a day trip for me.

<comment><USER19> Also in complaints: _do not_ break Maps's scroll-zoom for me. Unforgivable UI design.

<comment><USER20> Or at least give the option not to break it. Scroll-zoom drives me crazy - <USER2> slightest touch causes the map to either zoom in fully, or out too far (I wish all websites that used maps gave me the option to turn it off).

<comment><USER13> This is actually a wider problem than just scroll-zoom. Using JS to hook scrolling to anything is a UX nightmare. The problem is that on my desktop I can discretely scroll one step at a time with my mouse but on a laptop using a trackpad a scroll ends up firing dozens of events. This discrepancy basically bars scrolling from having any use on the web besides, well, scrolling.

</comment></comment></comment></comment><comment><USER21> Slowwwwww. :(

</comment><comment><USER22> are all nerds living in the UK (or going only there for day trips)?</comment>


Letsencrypt certificates can't be used for payment providers - <AUTHOR> https://mobile.twitter.com/iOvrThoughtThis/status/1019212124973928448 <comment><USER2> A CA is just an expensive machine to sign names for money. But, it is an _expensive_ machine. For stupid petty mistakes like issuing Microsoft.com they just rap knuckles but for mis signing a bank.. there are expensive assets to seize. (Edit: no, I know it's a bad metaphor but a big entity to sue.)

That said, i think ev certs are bogus and most id checks to issue a certificate are bogus. It's a giant circle jerk. you

<comment><AUTHOR> It's not even EV payments they require. It's just specifically not lets- encrypt certs and self signed certs.</comment></comment>


Our commitment to a more capable web - <AUTHOR> https://blog.chromium.org/2018/11/our-commitment-to-more-capable-web.html <comment><USER2> _Since the beginning of Chrome we have worked to provide a solid foundation for modern web applications._

Bullshit. Implement MathML, then come talk to me about how _" we strongly believe that every developer should have access to the capabilities they need to make a great web experience, and we want to support them as they do"_.

And this?

 _Developer feedback is critical to help us ensure we're shipping the right features_

No, it isn't. If it were, you would have a working MathML implementation.</comment>


Trying to negotiate a salary? Some good tips - <AUTHOR> http://www.businesspundit.com/new-job-salary-negotiations-3-disastrous-mistakes/

<comment><USER2> If at all possible, it's also a good idea to let the other person in the negotiation be the first to propose a number/terms.

</comment><comment><USER3> The most important trick is just to name a price in the first place. Especially in software, if you're good at what you do and the position is a good fit, you are almost guaranteed to be able to get what you ask for, as long as it's not ridiculous. At worst, you'll get a counter-offer. If someone drops you outright it's because they really don't want you and the salary just forces them into a decision. (Or, rarely, it's because they truly can't afford you: you don't want that job, becuase it won't be there for long anyway.)

Employers actually hate it when people come in with squishy responses like "Oh, I'm not looking for salary specifically..." because it just makes more work for them. It's much easier if they can say "this person costs this much, do we pay it or not?". Coming up with a "fair" salary is much harder.

<comment><AUTHOR> I agree it's better to be concrete. Do your research ahead of time and see what you're worth!</comment></comment>


A cliff that changed our understanding of time - <AUTHOR> http://www.bbc.com/travel/story/20180312-how-siccar-point-changed-our-understanding-of-earth-history <comment><USER2> You can now eat Hutton's unconformity. Behold: Hutton's Unconformicake :-) [http://all-geo.org/highlyallochthonous/2011/01/the-baking-of...](http://all- geo.org/highlyallochthonous/2011/01/the-baking-of-an-angular-unconformity- huttons-unconformicake/)

</comment><comment><USER3> > Siccar Point is one of the most important geological sites in the world – > but it took a 62-year-old farmer to spot its significance

Calling James Hutton a "farmer" is really a twist in narrative, when it proceeds to describe how he was a semi-genius polymath/inventor educated in medicine and chemistry who only bought a few farms after becoming wealthy as a scientist then being alienated from upper society for having an illegitimate son.

<comment><USER4> I see you read 3 short paragraphs further into the article, where that was all explained in detail (except you missed the note that the farms were inherited from his father) ...

Considering that (according to this article) he later called agriculture "the study of my life", perhaps "farmer" is an appropriate one-word summary after all.

<comment><USER3> As far as I can tell his relation to farming is limited to his obsession with the processes and geological side-effects of agriculture rather than the act of farming itself. Calling him a "farmer" would be quite a stretch, when you compare the typical archetypes of the two. Especially in the context of his contributions to natural history/sciences.

In regards to inheritance, this analogy reminds me of the two brothers who inherited a farm in East of Eden from their father. Just because you both own it doesn't make you both a "farmers". Only one brother worked the farm as a traditional farmer, even after becoming wealthy.

</comment></comment></comment><comment><USER3> Wikipedia contains a far better example of this phenomenon of a rock face in Argentina over the authors photo:

[https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Qu...](https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Quebrada_de_Cafayate%2C_Salta_%28Argentina%29.jpg/1280px- Quebrada_de_Cafayate%2C_Salta_%28Argentina%29.jpg)

Source: [https://www.wikiwand.com/en/Stratum](https://www.wikiwand.com/en/Stratum)

Edit: Very interesting article none-the-less. Thanks for sharing

<comment><USER5> Actually I was less than impressed with the rather poor HDR impression of the photos in that original article. Makes me think of all the wrong cheap tools around that makes dark skies, fluo greens and halos around everything....

<comment><USER3> Yes, it was quite disappointing after reading the introduction of the authors trip to the rock face on a boat trip to find the picture wasn't very revealing of the topic... the editing tried to highlight it but the pictures didn't do it justice.

</comment></comment></comment><comment><USER6> I love Hutton's line _" We find no vestige of a beginning - no prospect of an end"_....

Hardly surprising that Edinburgh became the birthplace of geology - few cities have their geological wonders quite so blatantly on display.

I can recommend the Geowalks around Edinburgh: [http://www.geowalks.co.uk/](http://www.geowalks.co.uk/)

</comment><comment><USER2> > Hutton realised that the formation and movement of these rocks to create the > coastline we see at Siccar Point couldn't happen in sudden cataclysms over > years or decades

Color me skeptical. Why couldn't these be quickly deposited layers that were later turned upright in some cataclysm? Why couldn't they have taken decades?

Yes I know it's heresy to question long established science, but that is the essence of science is it not? Questions and skepticism :-)

Off to do more reading I suppose.

<comment><USER7> I was at a cave tour with family, and there were stalagmites and stalactites in an early room. The guide said "These took thousands of years to form."

Then later in the tour, there was a super thick layer of rock formations coating (layered mind you) a large section, it looked nearly identical to the stalagmites and stalacties from before, and the guide said "This all formed in a few months from a rush of hot mineral rich water from a broken geyser."

The guide seemed to realize how these two notions completed conflicted in the story telling, got all flummoxed, tried to justify the difference in time claims (no one even questioned the guide) and then awkwardly stopped talking and continued the tour.

I think there is a reasonable possibility we may be wrong about the timing of at least some rock formations...

<comment><USER8> The key in that case would be composition. Gyeser deposits are typically silica, and even when they're carbonate, they have a very distinct composition.

Also, I doubt what you saw was related to a geyser. It's not impossible, but I can't think of anywhere with volcanic activity and large caves formed in carbonates.

More likely, you were in the Carlsbad area, in which case you have some massive gypsum formations that are related to acidic waters formed by bacteria decomposing hydrocarbons. They form relatively rapidly (and the acidic waters formed the huge caverns). However, they're a completely different chemical composition than the stalactites just beside them (Gymsum vs calcite -- basically, gypsum has sulfur, which isn't in the rock around it, while calcite is what the "native" rock is made of).

<comment><USER7> Sorry for the second reply, but just for the technically curious, I found photos:

The government site says these stones are calcite, flowstone, round bubbly rocks. (formed in a same/similar manner as stalagmites?) Almost all the rocks in this cave are calcite. (I looked through a number of them on this site) [0]

This appears to be the thick layer of rock that I was told formed rather quickly. [1]

This is a clear picture, and it looks like large crystal growth? Which would explain the difference from slow stalagmite/stalactite growth? [3]

A detailed description, I honestly don't get all the chemistry/geology enough, but I have to trust they are being consistent. :P [4]

[0] [https://www.usgs.gov/media/images/flowstone-formations- jewel...](https://www.usgs.gov/media/images/flowstone-formations-jewel-cave)

[1] [https://www.usgs.gov/media/images/cross-section-calcite- crys...](https://www.usgs.gov/media/images/cross-section-calcite-crystal- covering-jewel-cave)

[3] [https://media- cdn.tripadvisor.com/media/photo-s/04/53/d9/bd/...](https://media- cdn.tripadvisor.com/media/photo-s/04/53/d9/bd/jewel-cave-national- monument.jpg)

[4] [https://www.nps.gov/jeca/learn/nature/geology-of-jewel- cave....](https://www.nps.gov/jeca/learn/nature/geology-of-jewel-cave.htm)

<comment><USER8> Oh, yeah! Jewel Cave is a bit unique in this regard. There's a lot of sparry calcite (large, well-formed crystals) inside the cave. The difference is in the size and shape of the crystals. Large crystals like that can only form when they have lots of room to grow (i.e. when everything is underwater).

Those formed while the cave was flooded with water that was over-saturated with calcium carbonate. The rate of growth of a calcite crystal is a lot faster (inches per decade) under those conditions. The speleothems that are forming today grow slower (inches per century) because they're precipitating from a very thin layer/drip of water that only becomes saturated when it starts to evaporate or flow differently. Both processes are very rapid in geologic terms, but there's a significant difference in rate between the two.

</comment></comment></comment></comment></comment><comment><USER9> Ref: Illustrations of the Huttonian Theory of the Earth (1802) from Charles Darwin's Library

[https://www.biodiversitylibrary.org/item/107595#page/7/mode/...](https://www.biodiversitylibrary.org/item/107595#page/7/mode/1up)

</comment><comment><USER10> Along with Joggins Fossil Cliffs in Nova Scotia [1], which were studied by Lyell and Darwin as well.

[1] [http://jogginsfossilcliffs.net](http://jogginsfossilcliffs.net)

</comment><comment><USER11> If you're going to write a biographical piece (which is what this is) it's worth being precise. He was ostracized from polite society not for /having/, but /acknowledging/ a son born out of wedlock. The 18th century crawled with hypocrites.

<comment><USER12> I don't think this changed much. Only the subjects.

<comment><USER7> It won't ever change, someone will always find something to be hypocritical about.

<comment><USER13> I think hypocrisy gets a bit too much stick -- recognising the right way, and doing things the right way are different.

I, for example, get my kids to bed at a sensible time and teach them good sleep hygiene whilst having appalling sleep habits myself. In some cases it's precisely because one realises the magnitude, or outcomes, of ones failure that one emphasises something one personally fails to achieve.

I imagine most politicians are just targeting a particular voting group however.

<comment><USER7> > _I think hypocrisy gets a bit too much stick -- recognising the right way, > and doing things the right way are different._

I think the correct definition of hypocrisy is pretending your are doing something you are not, and then expecting others to do what you "pretend" to do.

As a parent you are doing the right thing, but you are obviously not "pretending" that you are achieving what you expect your kids to do.

But there is a limit.

I had (and have) issues I deal with as a parent similar to yours, but when I was later called to the mat by my kids (when they got older) I told them "I am trying to do the right thing.", but that only goes so far. You may actually cause your kids to have the same issues if you don't solve yours, and if you continue to make excuses, you may cross over from simply failing to hypocrisy. (why should a kid "try" to maintain a good habit and be punished when they fail, if the parent doesn't?)

I have changed my children's behavior by changing my own, my motivation happened when I hit the hypocrisy wall. (on some issues anyways)

The politic issue is just sad and out of control though, are there no truly ethical and moral leaders left?

<comment><USER13> I don't reveal my flaws, eg to my kids (though I'm not lying to hide them) which makes it hypocrisy IMO.

I'd rather politicians do things morally, but if they realise the moral/ethical thing, fail, and cover up their failure but nonetheless support the position they know to be morally superior: I think I'd rather that than have them shrug and say "well I failed so that moral position isn't worth fighting for".

If I supported non-violent protest as a politician, but got in a fist-fight at a rally, hid that fact ... should I give up on promoting and supporting non- violent protest.

I don't see private failing as necessarily discounting oneself in public office.

A not uncommon situation is an adulterer being outed; they probably know better than others the harm that can come through such acts.

Thanks for your thoughtful and thought provoking response.

<comment><USER7> > _I don 't see private failing as necessarily discounting oneself in public > office._

I agree. If everyone knew everyone's failings no one could live together. I think we all can agree that there's a time and place to not reveal someone's error or publicly denounce an error. (thankfully the choice is personal and it's no one's business but our own to decide which is which)

In the case of parenting, there are some flaws you can't hide. Might as well face those and teach your kids how to do it right. They can learn from your example not only how to humbly present errors, but also be gracious in return.

A side benefit of this is easier correction. (this has happened to me a few times) One time an older child failed at something that I have historically failed at, and I corrected her. She shouted at me "well you do it too!", and I could boldly state, "You know I think it's wrong, you know I am working on it, I have made progress and I plan on permanently changing, and I can expect you to try as well."

What I said was honest and true, and she'd witnessed me completely changing other behavior before. And then we both calmed down, and everything was just a little bit better.

And I do agree with your sentiment about hiding some things from your kids. I knew too much as a kid, and it was a burden.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Interesting biographical piece but very little science (or even reference to science) in the article. To be expected I suppose for a mainstream article. Hutton seems like an interesting guy, historically, but he could hardly be considered a scientist, even by 18th century standards.

Stephen J Gould writes in "Time's Arrow, Time's Cycle: Myth and Metaphor in the Discovery of Geological Time" that

        Hutton did not draw his fundamental inferences from more
        astute observations in the field, but by imposing on the
        earth, à priori, the most pure and rigid concept of
        time's cycle ever presented in geology—so rigid, in fact,
        that it required Playfair's recasting to gain
        acceptability.

Geike writes

        In the whole of Hutton's doctrine, he vigorously guarded
        himself against the admission of any principle which
        could not be founded on observation. He made no
        assumptions. Every step in his deductions was based on
        actual fact...

To which Gould says in the same book

        Geike's mythical Hutton has been firmly entrenched in
        geological textbooks ever since."

<comment><USER15> S. J. Gould, whose works I thoroughly enjoy, was not immune to casting a story according to his world-view, either, and these passages seem to be part of his rejection of the extreme uniformitarianism that he claims permeated geology at the start of his career. In other works, he writes approvingly of Hutton's perspicacity, while pointing out that his broader theories were speculative. The passages quoted above appear more critical of Geike than Hutton.

Hutton's dogmatic uniformitarianism must be regarded in the light of the then- prevalent, and equally dogmatic, catastrophist theories, which claimed that the Earth as we see it now was shaped by extreme events that no longer occur. In presenting contrary observations from the field, Hutton was at least as much a scientist as those holding on to the other view.

<comment><USER14> Thanks for the perspective. Gould clearly has an axe to grind in some of his writings. As to him being more critical of Geike than hutton, he has a LOT more to say about hutton in the referenced book. I didn't want to be too inflammatory but Gould has no such compunction in "Time's Arrow". He mostly criticizes Hutton for relying on metaphor and being reactionary to the catastrophists. He does not reject him out of hand though.

I think it's important to be able to criticize important figures in any fields history while recognizing the good that came from their disruption of the field. You can come to the right conclusion for the wrong reasons. In such cases it's natural to reject the conclusion as wrong, or to recast your morals to see the reason as right depending on your world view. Both are obstacles to scientific thought.

</comment></comment></comment><comment><USER16> Please flag me if unappropriated but: the pictures used to illustrate this article uses HDR in a particularly unsubtle way (i.e. there are visible halos between the sky and the colors are way over saturated).

There are probably pictures of Siccar Point that reflect better the reality of the place than those gaudy images.

<comment><USER17> Also the saturation is cranked up to 11, and maybe some kind of diffuse-glow effect.

I don't think you're being inappropriate. The processing totally ruins what would otherwise be strong contrast between red-orange sandstone and greywhacke which is normally grey (plus whatever is growing on it) instead of the orange- ish colour it has in those particular photos. In other photos the unconformity is much easier to see.

</comment></comment><comment><USER18> Cliff Richard?</comment>


How to Survive and Thrive in an Open Office - <AUTHOR> https://spin.atomicobject.com/2019/11/08/thrive-in-an-open-office/#.XcVulncRs4Y.hackernews <comment><USER2> This reads like a propaganda piece written by HR. The author doesn't address the objections in a serious way. But beyond that, I think the underlying message by designers of these open offices is this: "You have no individuality that matters here. You are a replaceable part."</comment>


Climate change is making night-shining clouds more visible - <AUTHOR> https://phys.org/news/2018-07-climate-night-shining-clouds-visible.html <comment><USER2> Let me guess in order to stop climate change we need to give up our guns and submit to global government. Good luck I think the ruse is over for enough people. I mean no computer model can even predict the path of a hurricane, yet somehow in 100 years earth will die. Really? You say science is your thing?

</comment><comment><USER2> Why don't you teach us about atmospheric aerosols? I doubt any of you even know about it. If you know what's up in your way ahead of your peers</comment>


Microsoft previews Roslyn: .NET Compiler-as-a-Service infrastructure - <AUTHOR> http://msdn.microsoft.com/en-us/roslyn <comment><AUTHOR> So I read Eric Lippert's blog post on Roslyn[1], where he says the motivation for the project was because other teams within Microsoft were re-implementing parts of the C# compiler piecemeal, so it made sense to expose those parts as an API. You know what that reminds me of? Steve Yegge's Platform rant. Specifically, the part where Bezos made Amazon convert all of their existing development infrastructure into services, that other units can make use of. That's what Roslyn is, on a much smaller scale: refactoring an application (the compiler) to be services-oriented platform.

[http://blogs.msdn.com/b/ericlippert/archive/2011/10/19/the-r...](http://blogs.msdn.com/b/ericlippert/archive/2011/10/19/the- roslyn-preview-is-now-available.aspx)

<comment><USER2> Not really, no. It's more like a compiler as a library with a nice API.

<comment><USER3> Libraries can be platforms too.

Platforms are a mode of operating when providing, on an ongoing basis, something that third parties use. There are several "promises" around platforms: a promise not to break compatibility, a promise not to coopt client software features, and - oddly enough - a promise to be incomplete, so that third parties have opportunities to build.

</comment></comment></comment><comment><USER4> I think this is quite interesting. The ability to treat code as data is an incredibly powerful concept. I don't know exactly what Roslyn does, but I see a lot of potential:

1\. Measuring code complexity. I've often felt that code complexity can be gauged several ways, and one is the number of "if" statements (or select..case). Being able to query the code base of an extremely large solution is a big step in that direction.

2\. Being able to "query" the call stack - how do I get from this line to the base constructor of my "user" object. Rather than stepping through the debugger, it could be a query of the code base to find the path from here to there.

3\. Detecting bit-rot. Finding any method class that's simply never used could be another "query" of the code base. Yes, proper test-coverage would help detect this, but not every production system has unit tests.

4\. I've worked on projects in the past where we really wanted to add guid tracing to the preamble of each function to dynamically trace the code at run time. If Roslyn supports "update" queries of the code, it might be easy to add such a feature across the whole code base (or perhaps only classes that inherit from some known base class).

Managing a code base like this (rather than grepping/searching) is a powerful concept. Perhaps we could see a LINQ for source code some day?

<comment><USER5> I agree with all of your points, though the only one I can address is the LINQ for source code quip and amend it somewhat to an already possible "LINQ for codebases." It should, in theory, be just a few weekends worth of work to use Mono.Cecil (<https://github.com/jbevain/cecil>) to provide a nice queryable API to inspect an (already compiled) codebase. I'm sure some nice static evaluation tools could be written based on this that nobody's thought of yet.

That said, being able to inspect the source-code pre-compilation is a whole other level above and beyond—as a fan of the compile-time safety that statically-typed languages provide, any opportunity to eliminate bugs and complexity before the code makes it to a customer is a welcome one, and if Roslyn is good, it could be huge.

<comment><USER6> Roslyn will be good. It has to be because from what I understand, the MS team themselves will use Roslyn in Visual Studio and other products. Roslyn isn't just a public API for others to analyze code. It will be the foundation on which .NET framework languages will depend upon.

See Eric Lippert (Member of the Roslyn team, C# Principal) notes here:

[http://blogs.msdn.com/b/ericlippert/archive/2011/10/19/the-r...](http://blogs.msdn.com/b/ericlippert/archive/2011/10/19/the- roslyn-preview-is-now-available.aspx)

<comment><USER5> Well…I think Roslyn will be good, but I think it's reaching to say it must be because the MS team themselves will use it.

After all, these are the same people who invented (and used!) MFC, long known as the Microsoft _Frustration_ Classes.

<comment><USER7> 1992 called and wants its Microsoft stereotype back.

<comment><USER5> It was a joke, lighten up. For what it's worth, I'm a .NET developer and think it's awesome.

</comment></comment></comment></comment></comment></comment><comment><USER8> Interesting. Some years ago my business partner and I wrote a server in Ruby on Rails that used Mono to compile customised .NET assemblies on the fly. Worked very nicely for our problem domain but was ultimately scuppered by CAS workarounds.

</comment><comment><USER9> If Rosyln is written in C# does this mean Roslyn can run on Mono?

</comment><comment><USER10> I image keeping my development tool in Redmond ensure I keep paying fees but what does this do for developers?

<comment><USER11> As mentioned in the link, there are two presentations you can view.

Interesting demo during BUILD: <http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-816T>

You can skip to 35:40ish

Cool presentation from MSR: <http://research.microsoft.com/apps/video/?id=152281>

You can skip to around 5:00

<comment><USER2> The build video is somewhat amusing to me. The crowd was WAY into the REPL demo, wherein they showed things that any dynamic language has been doing for decades, all the while trumpeting the "power of static typing". There IS power in static typing, but by the time you're in the REPL you don't need much of it.

<comment><USER12> Intellisense in a REPL based on static type information is novel, as far as I know. Some dynamic languages do this based on dynamic type information, but that is limited to expressions whose value is known. For example you have a variable A in scope at the REPL, and it has a method A.foo(), then you'll get completion on .foo. But you'll not get completion on A.foo().bar(), because the value of A.foo() is not known at the time of typing that expression.</comment></comment></comment></comment>