The forbidden railway: Vienna - Pyongyang (2008) - <AUTHOR> http://vienna-pyongyang.blogspot.de/2008/04/how-everything-began.html?m=0 <comment><USER3> I went London-Shanghai (and ultimately Osaka) last year; one of the most affecting parts of that journey was going through the deserts of Kazakhstan and north-west China (e.g. <https://www.cliché.net/photos/2012-04-02%20Trip/SDC16011.JPG> and <https://www.cliché.net/photos/2012-04-02%20Trip/SDC16084.JPG> \- hosted on my home connection so will be slow), which you miss by staying on the trans- siberian line. It's also a chance to see a really different side of China (as a European it's easy to imagine China will all be the same, being a single country, but of course it's as big and varied as, well, Europe) - and the route I took goes right past Baikonur, so there's always the chance of a rocket launch.

It's no good for going to North Korea (you finish in China, and as noted the line Beijing-Pyongyang is closed to tourists), but if you were just thinking of a big rail trip like the trans-siberian, have a look at the route via Kazakhstan too.

<comment><USER4> I took a train from Shanghai to Urumuqi once, took 2 and a half days; China is just freaking big.

Beijing Pyongyang is/was open to tourists at least a few years ago, they put you in a special car while everyone else gets off somewhere in Liaoning.

<comment><USER5> The train Beijing-Pyongyang is still running indeed. I took it half a year ago.

</comment></comment></comment><comment><USER6> Wow that was really cool. It's too bad the pictures started breaking when he was documenting his time in North Korea, all of those would be really interesting to see.

Odd how easy it was for them to get in. Flash a couple passports, visas, and fake like you like the great leader and you're in.

He commented that the route he took is no longer an option for tourists - <USER2> that it really was in the beginning, but the travel agency where he bought his tickets was informed that that one was no longer available. He said that when asked who recommended the tickets and where he found them, he responded with "we found them and bought them". I wonder how the travel agency got involved. (After reading more - he contacted the travel agency late enough for them not to alter the travel plans, but soon enough to talk to the Koreans to set up a guide).

I never knew how isolated South Korea was because of North Korea (no road/rail transport to the rest of the world).

That was pretty cool, and ridiculously in depth.

</comment><comment><USER7> I saw this posted in the comments on another thread and spent hours reading the whole thing -- epic journey, and I absolutely adored the photographs of North Korea.

It looks surprisingly beautiful, in its own way.

</comment><comment><USER8> I really had no idea how horrible the humanitarian crisis in North Korea really was until I began reading about it yesterday after checking out the blog post that was on the front page here. I feel ashamed I have been ignorant for so long.

In summary of what I've learned, it's generally accepted that there are around 200,000 people kept in active concentration camps [1]. There are two types of camps: those for political prisoners (and those related to suspected defectors, because you're guilty by association with the convicted individual) held until they die, and re-education camps for "minor" offenses. Regardless of the prisoner classification, both are subject to a similarly deplorable fate.

Conditions are eerily reminiscent of concentration camps operated by Nazi Germany and Imperial Japan.

This includes: 1) Constant threat of public execution at the whims of guards. 2) Deplorable conditions including: lack of suitable sleeping areas, lack of general access to toilets except on a twice daily basis. 3) Malnutrition. Amnesty reports 40% of inmates die due to malnutrition. Highly rationed diet consisting of 100 grams of corn (if you're not being punished) and salt soup. Finding and eating rats raw is generally considered a blessing, but at the risk of punishment by guards. 4) Torturing prisoners is commonplace. Without going into the gory details, suffice it to say, it is horrible. 5) Human experimentation performed on prisoners a la Dr. Mengele. 6) Infanticide of babies born in captivity.

I remember when I first learned about the Holocaust in school and wondered how in the hell did the world stand by for so long while these atrocities were being committed? Now I understand.

When you are, by pure randomness, lucky enough to be living in a part of the world where these horrible acts are distant enough to barely register on the press radar, reading about these things do seem unfathomable, almost fake.

Most of what I've heard about North Korea in the past has focused on their bizarre cult of personality and generally bizarre culture. As comical as North Korea is made out to be in much of the internet, there is a serious humanitarian crisis ongoing. Given that the Korean War ended in 1953, the situation has perpetuated for sixty years now.

If the statistic of six million Jews murdered during the Holocaust shocks and disgusts you, I shudder to think about what we shall uncover after the North Korean dictatorship falls (if it ever does at this point if the situation continues) and their dark history finally becomes public knowledge. It really makes me feel nauseous to think that we always have to wait until after the atrocities end to learn from them.

Is there anything we can do? I'm sure there is, I just don't know what. Ugh.

[1] Amnesty International Media Briefing on North Korean Prison Camps [http://www.amnesty.org/en/library/asset/ASA24/001/2011/en/26...](http://www.amnesty.org/en/library/asset/ASA24/001/2011/en/2671e54f-1cd1-46c1-96f1-6a463efa6f65/asa240012011en.pdf)

<comment><USER9> This is why I'm getting a bit annoyed with all the "visiting North Korea" stuff. You are directly funding the regime.

<comment><USER10> You are, but ignoring things and people never visiting would be worse.

<comment><USER11> The people visiting only see staged theatrics, it doesn't do a whole lot of good.

<comment><USER10> I don't know - I certainly found out a lot about North Korea from those visits. I assume you did too.

</comment></comment></comment></comment></comment><comment><USER12> Awesome travel diary. I took Trans-Mongolian from Moscow to Beijing with my friends in 2002 and it was quite a trip. I can just imagine how did the OP feel when they crossed North Korean border. Based on the photos he took, country-side dwellings in North Korea are of better quality than my impression was.

</comment><comment><USER13> If you are curious about North Korea, just look across the border from China. You can see plenty. Near the town of Changbaishan (and slightly west of there) is the best area. You're only a few meters across the river, and you can see everything, even a full scale city. If you're a train nut, you can even satisfy your curiosity by seeing a failed short-haul train the North Koreans took years to build. There's no need to go there and fund them.

</comment><comment><USER14> That was great. I fricking love trains.

</comment><comment><USER15> Lovely story! If the author ever wants to apply to YC, he has a perfect answer for the 'hack a system in real life question' :)

</comment><comment><USER16> Amazing story, from beginning to end - the bucolic DPRK countryside hides such dark mysteries.

</comment><comment><USER17> such an amazing story

</comment><comment><USER18> It's great as long as you know you are not getting a full picture. You see what _they_ want you to see, if you think any different you are delusional. If you approach anyone on the street, you will most likely get them in trouble and it's very unlikely for them to tell the truth (even "the veggies are kinda brownish" is subversion and by now they have seen what happens to their "subversive" neighbors and maybe family members).

Not to mention that almost all of them have been born and raised in that system, they know no better and are fed daily propaganda to make them believe that the outside world is much worst. I'd bet that most North Koreans would pass a lie detectors test with flying colors when saying that they love their current system.

<comment><USER19> History will judge us very harshly for what we have all allowed to happen in north korea. Everyone should see Adrian Hong's speech: <http://www.c-spanvideo.org/clip/4170683>

He's co-founded a NGO that helps escapees from dprk.

One challenge I always have when I speak about North Korea is I run out of adjectives for how bad things are. And many of you that follow policy or human rights situations oftentimes get jaded with numbers,"

"It's very easy for us to write off bad things because we just assume these are bad things that happen 'over there,' and many times they don't necessarily affect us. And the challenge with North Korea in particular is that things are so bad on such a scale and scope that it sounds fake. It sounds unfathomable, it's impossible to really comprehend."

<comment><USER20> > History will judge us very harshly for what we have all allowed to happen in > north korea.

Is there any way of stopping it short of a bloody, protracted war?

<comment><USER21> The proximity of populated areas of South Korea, and the touchiness of China over intervention in the area, are particular problems. If it weren't for those, the U.S. would probably have bombed the North at one point or another, especially once the nuclear tests gave a plausible excuse to do so. If anything there was a better argument for attacking North Korea than for its fellow "axis of evil" member Iraq (on either humanitarian or "WMD" grounds), but Iraq was a much easier target. It wasn't really for any lack of interest on the U.S.'s part: for a few years, very pro-intervention neoconservatives had a strong role in the Bush administration's defense policy, and they investigated North Korea options, but presumably couldn't arrive at one.

<comment><USER22> But what strategic interest does the US have in North Korea? To get closer to China?</comment></comment></comment></comment></comment>


Peter Thiel is actually a citizen of New Zealand - <AUTHOR> https://www.nytimes.com/2017/01/25/technology/peter-thiel-new-zealand-citizenship.html?ref=business&_r=1 <comment><AUTHOR> Maybe he knows something we don't - is there a habitable place farther away from America?

</comment><comment><USER2> And the Othering of Thiel continues...</comment>


Debug C++ Code on Linux from Visual Studio (Apr 2015) - <AUTHOR> http://blogs.msdn.com/b/vcblog/archive/2015/04/29/debug-c-code-on-linux-from-visual-studio.aspx <comment><USER2> Any idea what ide/editor Linus is using?</comment>


The koshering of the Oreo cookie (2008) - <AUTHOR> http://news.cornell.edu/stories/2008/02/getting-lard-out-koshering-oreo-cookie <comment><USER2> I remember liking Oreos as a kid in the 80s, but I tried one recently and it was chalky and horrible. I just assumed it was a combination of lossy memory and undeveloped childhood tastes.

But apparently I'm not crazy, and Oreos _were_ more delicious back then! Curmudgeons everywhere must be feeling a little vindicated right now. I only wish I had a lawn to yell at kids on.

<comment><USER3> It really seems like all junk food has gotten very bad in the last 10+ years. Cereal, sweats, etc.

<comment><USER4> I think that's primarily due to cutting out hydrogenated fat, which can really help texture, and artificial flavors and colors. Time for a true-junk food revival!

</comment></comment></comment><comment><USER5> What did they replace the lard with?

Edit: From wikipedia

> In the early 1990s, health concerns prompted Nabisco to replace the lard in > the filling with partially hydrogenated vegetable oil.[13]

Isn't partially hydrogenated vegetable oil much worse than lard?

<comment><USER6> Yup. This was back when it wasn't, though, back when fat was evil and we had to completely eliminate it from our diets.

Lard tastes better too. You ever had pie crust that was made with lard instead of vegetable shortening? Makes you feel like you've been lied to your whole life.

<comment><USER7> > back when fat was evil

Not fat (the replacement was also fat) but rather saturated fat was the evil one.

<comment><USER8> Is it no longer so? Is saturated fat now considered OK?

<comment><USER9> The tl;dr of it is that large amounts of saturated fat may not be exactly good for you, but the dangers were grossly over exaggerated. You should probably still eat mostly vegetables, but you can put some butter and lard on things and not feel guilty.

</comment></comment></comment></comment></comment><comment><USER10> "Kosher" is no longer a set of objective standards. That ended when two Jewish groups fought it out in court over New York State's kosher inspection law in 1991. They were arguing over which rabbi got to declare that something was kosher.[1] A Federal judge ruled that government can't take a position on that issue, because it's an establishment of religion to do so. So New York State got out of the kosher-inspection business.

There are many kosher inspection groups in the US, especially in Brooklyn, NY, which has at least sixteen.[2]. There's a whole "more kosher than you" thing going there. In Israel, where the government is heavily involved, it's used as a competitive weapon to stop some imports.[3]

[1] [http://www.nytimes.com/2000/08/04/nyregion/judge-voids- law-c...](http://www.nytimes.com/2000/08/04/nyregion/judge-voids-law- certifying-kosher-food.html) [2] [http://www.crcweb.org/agency_list.php](http://www.crcweb.org/agency_list.php) [3] [http://www.globes.co.il/en/article-how-food-importers-use- ra...](http://www.globes.co.il/en/article-how-food-importers-use-rabbis-to- block-competition-1001161785)

<comment><USER11> > "Kosher" is no longer a set of objective standards.

While it's true that there are different interpretations of what constitutes kosher food, it's not really relevant here, as none consider pork to be kosher.

<comment><USER12> How about the blowtorching of existing ovens which have previously been used to cook pork products? Is that always "kosher"?

That was the most interesting tidbit to me, and seems like requirements for that procedure could easily vary between certifying organizations.

<comment><USER7> > Is that always "kosher"?

Yes, that is always required. The basic rule: The same type of heat that was used to cook the food, is the same type of heat needed on the vessel to clean out the food. The minimum heat is boiling water.

Since an oven gets very hot, you need high heat to clean it. (Hot enough that a tissue pressed on the metal turns black - it doesn't need to glow red hot.)

> and seems like requirements for that procedure could easily vary between > certifying organizations.

No, that's not one of the things that vary, that one's universal.

To an outsider, the stuff that varies would seem very minor. It won't be anything large like this.

</comment></comment></comment></comment><comment><USER13> I've thought that Oreos don't taste as good as they did when I was a kid. I thought it was just faulty memory or taste buds going bad or seeing the past with rose colored glasses, but maybe they really don't taste as good ;-)

</comment><comment><USER14> No mention of Hydrox cookies, which were a) kosher from the beginning and b) the original cookie of which Oreo is a knockoff.

They were far better than Oreos, in my memory, but sadly they went off the market some time ago.

They've recently been revived, but I haven't tried the new ones. No animal fats. No HFCS.

</comment><comment><USER15> Nassim Taleb has written on this phenomenon:

[https://medium.com/incerto/the-most-intolerant-wins-the- dict...](https://medium.com/incerto/the-most-intolerant-wins-the-dictatorship- of-the-small-minority-3f1f83ce4e15)

</comment><comment><USER16> This sounds incredibly expensive.

What was the profit motive for this?

<comment><USER6> Selling to jews and (probably moreso) Muslims. When you can't sell your HFCS confection to 25% of the world's population, you start to think about these things.

Edit: confabulation->confection

<comment><USER17> Oreos still have HFCS and all kinds of unhealtly stuff. In fact more unhealthy than lard.

<comment><USER6> This is about selling ice cream, though. Most of which had HFCS in it, especially in '97.

<comment><USER17> And so do oreos. I don't get the point.</comment></comment></comment></comment></comment>


Announcing TypeScript 3.0 RC - <AUTHOR> https://blogs.msdn.microsoft.com/typescript/2018/07/12/announcing-typescript-3-0-rc/ <comment><USER2> This is really exciting! I actually ran into two problems that this already solves, one of which I briefly touched on in the article I posted to HN this morning.

One is project structure. I came up with a solution for type-safe RPC that required a shared file for type definitions, and my solution was to symlink that file. It looks like the new project feature should let me get rid of that and have a "shared" TS project as a sibling to "server" and "client"!

The other is spread arguments. I recently ran into the error "Spread types may only be created from object types" [1] and I think this feature is addressed by TS 3.0!

[1] [https://github.com/Microsoft/TypeScript/issues/13557](https://github.com/Microsoft/TypeScript/issues/13557)

Call me crazy, but I really think TypeScript is the future of the web and I'm betting my whole career on it by diving deep into it and becoming an expert on it so that I can do consulting as a TypeScript & React expert.

<comment><USER3> I love TS but don't see it as the future of the web. It's currently the best way to write JS and use the JS/Node ecosystems, but compile-[insert better language here]-to-wasm will be more compelling than TS in the future.

<comment><USER2> I don't think wasm and JS are competitors. From what I can tell, wasm currently isn't blessed with the same first-class citizenship in the browser that JS is, and I don't think that's in the works either. It looks like wasm is mainly meant for porting C libraries to the browser (Emscripten style) and maybe the occasional Doom or Quake just because.

<comment><USER3> You may end up being right, but here are my premises:

1\. People are dying to stop writing JS. The evidence is CoffeeScript, TypeScript, and the million other compile-to-JS options.

2\. Wasm is in every major browser, and direct DOM access is in the roadmap.

3\. There are lots of people who don't want the context switching that's been required in web frontend programming. They want to use a single language on the front and back ends. If wasm can access the DOM, this becomes possible with any language that compiles to wasm (Rust, .NET family, probably others).

<comment><USER2> 1\. That's just so wrong. CoffeeScript came out _9 years ago_. The transpiling craze peaked years ago, and most of the good features of all those other languages have been pulled into modern ES. There's only a few of them left in somewhat common usage and mostly because they're niche (Haskell-like or Lisp- like). TypeScript solved a totally different problem, it's just a layer of type safety _on top of_ JavaScript, it's actually still JavaScript, so if people like TypeScript then they like JavaScript.

2\. That may be true, but that doesn't mean wasm can take over JS in terms of features. For example it still has no GC, which for some things (embedding Doom) may be good, but for general app development it's better to have a GC and the other high-level features JS has that wasm doesn't.

3\. That just means some people _want_ wasm to take over, for that one specific reason. It doesn't mean it's actually going to gain traction to evolve in that direction.

<comment><USER3> > _The transpiling craze peaked years ago_

That's a bizarre comment from someone who just said they're dedicating their career to transpiling. Flow is a layer of safety on top of JavaScript, while TypeScript is a different language. You can't run it with JS runtimes, and it has features JS will never have. It's definitely transpiled.

See also: Elm, ClojureScript, NativeScript, PureScript, Haxe, and the staggering number of transpile-X-to-JavaScript projects out there.

> _but for general app development it 's better to have a GC and the other > high-level features JS has that wasm doesn't_

The features that are missing from wasm can be implemented in the original language. Rust, at least, doesn't have garbage collection. There are also multiple proposals to add garbage collection to wasm.

> _That just means some people want wasm to take over, for that one specific > reason. It doesn 't mean it's actually going to gain traction to evolve in > that direction._

People wanting something to happen is all that's needed to make it happen. If you concede people will want it, then you concede it will happen. wasm replacing JS as the API for the browser makes more sense than, say, JavaScript on a server, and yet here we are...

<comment><USER4> > You can't run it with JS runtimes, and it has features JS will never have. > It's definitely transpiled.

AFAIK TypeScript has a grand total of one non-typesystem related feature which doesn't already exist in JS (or as an ES proposal) - enums[1]. All the other parts of TypeScript can be transpiled just like Flow - by stripping away the type annotations.

[1] [https://www.typescriptlang.org/docs/handbook/enums.html](https://www.typescriptlang.org/docs/handbook/enums.html)

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> Typescript magic build stuff is useful. Although a realization needs to be made that webpack is the king of front end build systems. Mostly because it's able to package all sorts of things into a single js/css file.

So any speedups in wbepack with Typescript would be very much appreciated by the community.

<comment><USER6> webpack is king, but ill take browserifys speed via watchify anyday

<comment><USER7> webpack is a monolithic build tool.

I prefer substack/browserify's unixy approach to software design.</comment></comment></comment>


A tiny language called Z (2013) - <AUTHOR> https://chrisdone.com/posts/z/ <comment><USER5> Cool idea with splitting function arguments into separate lines. It's a bit verbose, but avoids some of Python's old problems regarding what to do about inline lambdas.

But on the down side, now macros have to do _string formatting_ (like adding indents and newlines) to produce output that is legible code, for example the "when" macro:

      defmacro when input
             fn blocks
                ap "if"
                   ++ z:indent-before 3
                                      car blocks
                      ++ "\n"
                         ++ z:indent 3
                                     car cdr blocks
                            ++ "\n"
                               z:indent 3
                                        "unit"
                z:blocks input

That's one place where all languages that replace s-expressions with indentation seem to stumble equally: nested parens may look funny, but metaprogramming in lisps is delightfully easy because everything is a list and whitespace doesn't matter, so it's easy to produce and consume at compile time.

<comment><USER6> This isn't a problem with the syntax, you could just have macros consume and produce lists and avoid this entirely. In fact, there already exist reader macros that implement pretty much exactly this syntax but for Lisp: [https://docs.racket-lang.org/sweet/index.html](https://docs.racket- lang.org/sweet/index.html)

<comment><USER5> Right, so you need to support mixing some lists in, to complement meaningful whitespace, the way sweet-expressions or SRFI-49 do. But that's exactly because the consequences of "whitespace only" syntax are too severe.

</comment></comment></comment><comment><USER7> G, H, L, N, O, U, W and Y are the remaining letters for programming languages, grab one fast.

<comment><USER8> According to [https://en.wikipedia.org/wiki/List_of_programming_languages](https://en.wikipedia.org/wiki/List_of_programming_languages)

I is still free :-)

<comment><USER9> That's because I is the same as SKK

<comment><USER10> For those who'd like to know more: [https://en.wikipedia.org/wiki/SKI_combinator_calculus](https://en.wikipedia.org/wiki/SKI_combinator_calculus)

</comment></comment></comment></comment><comment><USER11> I thought it was a lisp with a reader based on whitespaces other than parenthesis. An IDE with indentation support becomes a survival tool here. I would put it on the list of esoteric languages.

<comment><USER12> In fact, can't you achieve the author's point by writing a Lisp or Scheme reader?

</comment></comment><comment><USER13> That looks a lot like sweet expressions, which have been implemented for both Common Lisp and Scheme. More info here: [https://readable.sourceforge.io/](https://readable.sourceforge.io/)

<comment><USER13> The "Z" notation is easy to explain, but I think it has practical problems. In particular, even trivial functions end up taking a very large number of lines. Here's the blog post example of "Take the first n elements of list xs":

      defun take n xs
            if = n
                 0
               unit
               if unit? xs
                  unit
                  cons car xs
                       take - <USER4>
                              1
                            cdr xs

Here's exactly the same thing using sweet-expressions (which I led the development of):

      defun take n xs
            if {n = 0}
               unit
               if unit?(xs)
                  unit
                  cons car(xs)
                       take {n - 1}
                            cdr xs

Even in this trivial example we see a 20% reduction in line use. We can trivially do a lot more, e.g., the last 3 lines could become one line for a 40% reduction in number of lines:

                  cons car(xs) take({n - 1} cdr(xs))

Number of lines matters. Modern screens are typically quite wide but lack height, so a notation that _requires_ the use of lots more lines for simple functionality means you can see far less information at one time (increasing change and debug time). Z-expressions also lack any kind of infix notation, which is a serious problem. Most software developers will _not_ use a language without a built-in infix notation, for the same reason they won't use a line- oriented text editor... there are better alternatives available.

I think it's also especially easy to get things wrong. For example:

                       take - <USER4>
                              1
                            cdr xs

Is completely different from:

                       take - <USER4>
                            1
                            cdr xs

Indentation-sensitive notations where the amount of increased indentation causes different interpretations can make it very easy to insert unintentional and hard-to-detect bugs.

Anyway, my opinion, but hopefully I've provided some reasonable rationale for my opinion. I don't object to indentation-based syntax (obviously), but unsurprisingly I think there are better alternatives for this use case :-).

</comment></comment><comment><USER14> Temporary panicked flashback to having to learn Z (the formal notation) at university.

<comment><USER15> I also thought about that, although I have to slightly disagree because I actually like Z. Having only integers and sets really drove the point for me of "tell me _what_ it does, not _how_ it does it".

I should also mention that naming a project with a single letter guarantees that no search engine will easily find it. It took me forever to find a link to Z, and I _knew_ what I was looking for...

(For those who never heard about Z: [https://en.m.wikipedia.org/wiki/Z_notation](https://en.m.wikipedia.org/wiki/Z_notation))

<comment><USER16> > "tell me what it does, not how it does it"

({1},(∅ o α)) ∈ I̸=I ∧ ((∅ o α),{2,3}) ∈ I⊆I {M : Model; t : W | t ∈ [ e ]E M ∧(∀t :[e ]EM•[e ]]E (M⊕t)=[[e ]]E (M⊕t)) •M􏰀→[e]E (M⊕t)} ⊆ [[μe•e]]E

It's not always obvious to decipher what it does, either.

<comment><USER17> Can anyone tell me what that does do?

<comment><USER15> I wanted to give it a try, but the text has unicode errors that behave slightly diferent in every browser I tried, so I'm not sure how it's supposed to be read.

That said, here are two general pointers to get an idea:

1\. Z uses sets, functions, and integers as its basic "type", on top of which you write more complicated "types". Therefore, in Z you often write specifications of the type "I have this element that belongs to this set, a function that maps elements of this 'type' to other types, and this operation says that my element is inserted into this mapping function" (without you writing down how the insertion is computed). Note that I write "type" in quotes because Z is not a programming language, and my use of the word type is a bit careless.

2\. The comment is being a bit cheeky, since Z has comments, function names, and whitespace for better understanding that the comment is not using. The comment is right that the syntax can get complex at times, though, but calling your varibles "t" and "M" doesn't help.

Random fact: the Wikipedia example is a bit clearer, but written in Spanish. It details how to write a toy birthday agenda. It turns out that it was uploaded by a guy I personally know, which should give you an idea of the size of the Z community...

<comment><USER16> > The comment is right that the syntax can get complex at times, though, but > calling your varibles "t" and "M" doesn't help.

For what it's worth, this was posted verbatim from the spec :-D

</comment></comment></comment></comment></comment></comment><comment><USER18> Are there languages that try to ignore whitespace as much as possible like Lisp and avoid almost most "redundant" enclosing delimiters like Python through advanced use of prefixes, separators and other fancy punctuation?

Most programming languages have very simple rules like "tokens end at incompatible characters or at whitespace" or "statements ends at the end of the line or at a semicolon"; there's probably an opportunity to spend some complexity on low-level syntax to reap benefits like macros without boring text and token manipulation.

<comment><USER19> The APL family of languages makes very limited use of delimiters. They are a bit more common in k and q, but in Dyalog APL and J, the use of adverbs makes almost always possible to write expressions without using any parens or with a very low number of them.

Concatenative languages such as (or derived from) Forth also use a very low number of delimiters, since they can usually be replaced by stack manipulation words.

I am not sure this is what you were asking, but if you do not know APL and/or Forth, I recommend you to have a look. It's a funny rabbit hole in which to get lost.

<comment><USER18> I know Forth, and I think it escapes the whitespace vs. delimiters dilemma by "cheating" in a very elegant but uninteresting way: manipulating the stack at runtime instead of munging strings and syntax trees at compile time, so that abstractions that would be macros in Lisp-style languages or relatively complicated classes, functions etc. in mainstream procedural languages can be a much simpler DSL of words that just do something to the stack and other execution state, without the burden of other concepts and representations.

<comment><USER20> In my mind, Forth "escapes" the whitespace-vs-delimiters issue by not having variadic functions. Forth code is more or less a direct transcription of the parse tree in the same way that lisp is, just postorder instead of preorder. And if you eliminated variadic functions from lisp, you wouldn't need its parentheses either.

<comment><USER21> I haven't Forthed in a long time, but you can write variadic words (e.g., "keep popping until a negative number is reached"). You just (a) shouldn't, probably; and (b) can't document their stack effect properly.

</comment></comment></comment></comment></comment><comment><USER22> As someone spending a lot of time on the command line SSH'd into various servers I use vim for editing alot, and a language with easy editing (everything is line-based) seems like a cool idea, it reverses the trend of building more and more sophisticated (and complicated) IDE integrations for code formatting, splitting etc., instead favoring simple editing along newlines.

<comment><USER23> Great, but there is no word spelled "alot".

</comment></comment><comment><USER24> Reminds me of wisp: [https://srfi.schemers.org/srfi-119/srfi-119.html](https://srfi.schemers.org/srfi-119/srfi-119.html)

</comment><comment><USER25> Is this like a lisp meets python?

<comment><USER26> [http://docs.hylang.org/en/stable/](http://docs.hylang.org/en/stable/)

</comment></comment><comment><USER27> I love it. A suggestion is to have something for parallel computations because personally I know I won't even try a language that doesn't have something for that. I think the way the language handles parallelism is key to its design and syntax. Other than that, it's really cool.

</comment><comment><USER28> IMHO your editor should be formatting your Lisp with this kind of indentation anyway, parentheses or not. If you have that, Z-expressions seem kinda moot.

<comment><USER29> To me, the only syntax type I dislike more than tons of parentheses is significant indentation. But with s-expressions that's a presentation issue that can be solved with proper formatting and de-emphasising the parentheses visually, whereas significant indentation to me feels actively programmer hostile.

But while I also don't like the appearance of significant indentation, if it was just a presentation choice of an underlying more robust representation, I'd be fine with that.

So I sort-of agree - it seems like something that could be a neat editor plugin etc. on top of a s-expression based language and would be better for it than as the only/default syntax.

</comment></comment><comment><USER30> This is absolutely delightful! It's so different. It's like a kind of Forth or Lisp with unique structuring.

</comment><comment><USER31> _Z has very, very simple syntax. Weird, but simple. Here 's how it works, function application is of the following form:_

        name argument

This was the explicit design of Smalltalk. (Also of the non-C parts of Objective-C.) Subject verb.

        nameReference keyword: arg1 withArgs: arg2

The nameReference is the subject. The keyword:withArgs: is the verb.

</comment><comment><USER32> The indentation style reminds me of Urbit's higher-level language Hoon.

[https://urbit.org/docs/learn/hoon/style/](https://urbit.org/docs/learn/hoon/style/)

</comment><comment><USER33> Nothing special. I am using templates and two times processing, so the template may have `<%= (some expression) %>` and such will be evaluated before it comes to Markdown processing. With thousands of pages it does matter if the Markdown processor is fast or if it has some "built-in" processing stuff that would cause delayed creation of pages.

Using templates and selective evaluation is simple and better.</comment>


Selling $2,000+ Worth Of My Unfinished Book - <AUTHOR> http://planscope.io/blog/selling-2000-worth-of-my-unfinished-book/ <comment><USER2> "Money – cold, hard cash – on the other hand. That's the ultimate form of validation."

This is priceless especially considering how much effort goes into writing a book or creating a SaaS product.

<comment><USER3> How do you actually contact people to ask for this? Emailing people? Or making a signup page and see who clicks on the (faux) "buy" button?

<comment><USER2> For my coming SaaS product (<https://www.wisecashhq.com>), I created a signup page back in september 2011, then tweeted regularly when I worked on it and mentioned it around (shipping end of september 2012).

It gradually got around 200 "pre-signups", and I used the list to contact people as well and verify my assumptions.

I will write a blog post about that soon!

<comment><USER3> That's what we have done either (but with an Adwords campaign, to see how much traffic there is to be had from Google), but I think that's no commitment to cash, just "I'm interested". I once read here on HN that bootstrappers should actually ask people whether they would pay X$ for that - but now being in this situation, I wonder how to actually do that, knowing none of the future audience in person.

<comment><USER4> > knowing none of the future audience in person

I'd seriously think about that 30x500 course if I were you. (Thibault is alum.)

The biggest chunk of the course is devoted to making sure there's a "commitment to cash" BEFORE spending a dime. And that includes $$$ adwords.

<comment><USER3> For our product, we know that there is commitment to cash for this category of products, because there are other products in that area which do well as far as we know. What we don't know is whether people pay $X for exactly our product. We have pondered a lot over the free 30x500 course materials, but haven't got around to join the course. We did not spend much on Adwords (< $100) and we did already gather some addresses. But it's hard to estimate the actual conversion rate without asking people to really pay money for it, and without screenshots and the like.

So, yes, we thought we could validate the idea with an Ad campaign, but we did not do it right, I think. We did not measure anything significant at all, and what we did is gather an "I'm interested" list. You are right that perhaps the best ways to validate a product is to ask real people - like asking quite bluntly "Would you pay $30 per month for this product, with this certain USP?", or even "Would you pay me $100 upfront to build this product?". That takes a lot more guts than just setting up a landing page and an adwords campaign, but I see that we should do it.

<comment><USER4> _You are right that perhaps the best ways to validate a product is to ask real people - like asking quite bluntly "Would you pay $30 per month for this product, with this certain USP?", or even "Would you pay me $100 upfront to build this product?"._

That's not what I said. Ensuring commitment the way you mentioned doesn't quite work because of divergence between what people say and what people do. The latter is by far the more reliable, agreed?

The 30x500 course teaches advanced 360-degree market study where you learn what people actually do and what they so badly wished they were doing instead. (So yes, you'll learn how to read between the lines, among other things.) The results of that market study forms the most robust foundation to building a value offering that has buy-in baked-in.

p.s. The above is why you'd never hear about the need to "validate a product [idea]" among 3x5ers. The assumptions behind that expression are just wrong to begin with.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> I've really enjoyed the build up to the book. I haven't pre-ordered yet (mainly because I wanted to see how serious the author was), but Brendan has been on top of his game. I've received maybe 2-3 emails, each containing great little bits of information sharing info that (I imagine) will be further articulated in the book. The best part: it's hyper-relevant. I'm coming up with strategies for my design business and Brendan's insight has already influenced some early direction.

Give this dude your money (I'm about to), he's doing it right.

<comment><AUTHOR> Thank you, sir! Looking forward to hearing your review - and most importantly, how effective it was helping raise your rates for all the right reasons.

</comment></comment><comment><USER6> The lesson here: The best way to sell stuff is by selling stuff.

Look at what's involved:

* Guest posts / articles to become known as an expert

* Emailing a list of interested parties

* AdWords, preferably in a campaign that can scale

* Twitter and other social media

Learning to write good copy, or finding someone to do it for you, will have an impact on your business. I still get a trickle of traffic (that converts well) from an article I wrote over 6 years ago. I'd much rather spend time adding "one more feature", but a few hours spent writing quality content will have a much larger impact on the bottom line.

</comment><comment><USER7> The copy on this article and the book page itself feels so spammy that I would never buy the product. I respect the desire/need to make money, but I do think a certain percentage of your potential audience will be turned off immediately by the excessive use of this type of obvious marketing-speak (excessive use of bold fonts, short, pointed sentences, all the vague truisms, "money back guarantee"..). I hope this doesn't become the standard type of post on Hacker News, I'm sorry but after clicking on that link it really feels like I've just been spammed.

<comment><AUTHOR> Thanks for the comment, and I _used_ to agree with just about everything you said.

However, there's nothing at all wrong with "marketing-speak". It's based on psychology: people skim, bolding is used to emphasize importance, and money back guarantees - well, they're exactly what they mean.

For most things, I personally prefer easily digestible content over blocks and blocks of text.

<comment><USER8> So instead of arguing ... what % of HNers are actually clicking through to your "no bullshit" offer?

Very few articles on the front page of HN are littered with testimonials and sales copy.

<comment><AUTHOR> I've made just under $1,000 in sales today from HN. 1 in 7 people who have clicked through to the article go to the sales page.

EDIT: I'm sure a few people people are skeptical. Here's a screenshot from ejunkie (and I just crossed over the $1k mark): [https://dl.dropbox.com/u/2205912/Screen%20Shot%202012-08-23%...](https://dl.dropbox.com/u/2205912/Screen%20Shot%202012-08-23%20at%204.20.01%20PM.png)

<comment><USER8> So you've made around 3 sales per hour since you've submitted it.

Assuming 3 sales/hr directly from HN, that is encouraging.

I don't know how anyone can verify 3 sales/hr from HN only from that screenshot, however. Sorry my thirst is unquenched, it's just this whole deal reminds me of ClickBank sales where fudging screenshots and hyping and bullshitting others is fairly commonplace.

I would believe 1 in 7 __overall users __click through, but I'm still curious who is doing it because I am a jaded, jaded marketer.

<comment><AUTHOR> You'll just need to take my word on it - I'm not going to post ejunkie/PayPal creds :-)

Total uniques for the main article: 7,772 Total uniques for the sales page: 1,238 A 2% conversion rate (26 sales) isn't that far fetched. It was converting higher with the pre-HN traffic (about 6% on average).

</comment></comment></comment></comment></comment></comment><comment><USER9> I would quite happily preorder a copy of your book but there's not enough information to feel comfortable about parting with $39.

Is this an ebook or in dead tree format? Do you ship internationally?

<comment><AUTHOR> It's an ebook with worksheets and additional case studies / interviews from freelancers who charge a lot (most notably: Amy Hoy and Thomas Fuchs).

Take a screenshot of this comment as witness, but I'm serious about refunding _anyone_ who ends up not being able to raise their client rates. Paying for stuff that doesn't deliver value is dumb.

<comment><USER10> > Take a screenshot of this comment as witness, but I'm serious about > refunding anyone who ends up not being able to raise their client rates.

Some advice -- you really, really don't want to do this. You don't need to guarantee results to sell a worthwhile book, and IMHO you shouldn't.

Here's why:

1\. Let's say you have a profit margin of 20% on your book overall -- printing costs, promotion, etc. versus income.

2\. Let's also say that 80% of your book's readers do increase their client base as you claim.

3\. The problem is that the remaining 20% can take you at your word, demand a refund, explain that the book was lost in a fire, and succeed in wiping out your profit.

4\. Worse, someone might say your claim moved your book from the category of an ordinary caveat-emptor purchase, to a guarantee of success, and demand consequential damages. Very bad, and you made it possible.

It works like this: Because of the First Amendment, an author can say virtually anything in a book -- anything. But when you make a claim about a book's contents to motivate sales, you short-circuit First Amendment protections -- you turn your book from a freely expressed opinion, to a method with a guaranteed outcome. Very bad idea.

> Paying for stuff that doesn't deliver value is dumb.

Not as dumb as making an unnecessary claim that has a potentially disastrous outcome.

Just my opinion, expressed in words, with no guarantees.

<comment><USER11> You believe something about people's behavior which is a testable proposition about the nature of material reality, like "If you push an apple off a table it will accelerate to the nearest cat." The scientific method exists. Have no worries, your apples and profits are both safe, because both those theories are _absolutely false_.

<comment><USER10> Interesting that you would mention the scientific method, then offer no evidence for your theory.

I said what I did because I have seen it happen countless times in a long career that has included a lot of writing. I have the evidence. When someone makes a performance claim about the contents of a book, the book then becomes nearly irrelevant to the outcome, which hinges on the claim.

<comment><USER11> Money-back guarantees virtually invariably raise sales in A/B tests. I have _never_ seen one decreases sales in a statistically significant fashion. I have never seen a guarantee meaningfully increase refund rates. (No customer of mine has refund rates worth mentioning. I will literally mail paper checks to people who bought my software five years ago and my refund rate is below ~2%.) If you have data to the contrary, I bow to the data.

As it happens, I have a product launch coming up. I will offer a money back guarantee, and I will do it in an A/B test. If I am wrong, and the guarantee statistically significantly decreases sales, I will a) have a cow and b) donate a cow to charity. If I am right, you don't have to do anything, because being consistently right at this sort of prediction makes propositional bets with authors a distinctly inferior way to increase one's income versus just being consistently right at this sort of thing.

<comment><USER10> > Money-back guarantees virtually invariably raise sales in A/B tests.

The original poster didn't make a money-back guarantee, as in "If you aren't happy with my book, I will refund." Instead he made a claim about increasing the number of clients, i.e. a performance claim ("I'm serious about refunding anyone who ends up not being able to raise their client rates."). Here's the law on that issue:

URL: [http://nationalparalegal.edu/conlawcrimproc_public/FreedomOf...](http://nationalparalegal.edu/conlawcrimproc_public/FreedomOfExpression/LimitationsOfExpression.asp)

Quote: "Commercial speech holds a special place in First Amendment analysis. It is not an unprotected category of speech, nor is it afforded the same level of protection as non-commercial speech. In addition, there are sub-categories within commercial speech. Truthful commercial speech is afforded protection while false or deceptive commercial speech is not protected."

Here is another account that makes the same point:

URL: [http://www.wisbar.org/AM/Template.cfm?Section=News&Templ...](http://www.wisbar.org/AM/Template.cfm?Section=News&Template=/CM/ContentDisplay.cfm&ContentID=107215)

Quote: "In 2004, the Federal Trade Commission (FTC) banned Kevin Trudeau from appearing in any infomercial promoting any product except publications, which are protected by the First Amendment, provided he did not misrepresent the content of the publication."

What these rulings mean is that _the contents of a book are protected by the First Amendment, but promotional claims about the book are not._

<comment><USER12> You keep talking about "commercial speech" being different from "non- commercial speech", as if that explains your claim that "If you aren't happy with my book, I will refund." (claim A) is a safe thing to say, but "I'm serious about refunding anyone who ends up not being able to raise their client rates." (claim B) isn't.

But both claim A and claim B look like commercial speech to me!

Both are promises to provide refunds under certain specified conditions. One, claim A, offers refunds under the broad and hard to dis-prove condition of "aren't happy with the book", while claim B offers refunds under a somewhat narrower and slightly easier to verify condition of "not able to raise rates". How is claim B more dangerous than claim A?

And comparing commercial speech vs. the contents of a book is irrelevant, since neither claim A nor claim B is contained within a book.

<comment><USER10> > But both claim A and claim B look like commercial speech to me!

One of them offer a refund without making any kind of claim, the other makes a claim about the contents of the book and about what outcome purchasers have a right to expect. They are treated differently under the law.

But I can see you are simply not going to get this, no matter how many cases I quote for you, how many legal decisions.

> How is claim B more dangerous than claim A?

One of the statements offer a refund without making any kind of claim about the book's effect. The other makes a claim about the book's effect.

Imagine you are a doctor, offering a miracle cure that is in the pages of a book. To one group you say, "If you're not happy with my book, I will give you your money back."

To the other you say, "My book provides a cure for cancer. If your cancer isn't cured, I will give you your money back."

The first pitch is protected under the First Amendment because it doesn't describe the book's contents or effect, _and therefore it doesn't matter what the book says_. The second doesn't have First Amendment protection, because it's commercial speech that makes a claim about the contents of the book. In the second case, the author makes the mistake of making a claim about the book and its contents in his promotion, outside the protection of the First Amendment.

How is that in any way complicated?

URL:

[http://articles.businessinsider.com/2011-12-16/news/30523850...](http://articles.businessinsider.com/2011-12-16/news/30523850_1_infomercial- coral-calcium-ftc-order)

Quote: "Trudeau insisted his First Amendment rights were being infringed, and began advertising books rather than diet supplements in new infomercials ... [but] the new ruling requires Trudeau to give back all the money he made from selling books during the infomercial ban."

The reason Trudeau lost his case, even though he was selling books, is because he didn't just sell the books, he described what the reader should expect from them in his pitches. It was on this basis that the court ruled against him.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> Great post...it also introduced me to this book, Exceptional Ruby: <http://exceptionalruby.com/> Buying it right now.

<comment><USER14> Exceptional Ruby is indeed fantastic. If you like it, you may be interested in Avdi's current book project "Confident Ruby": <http://devblog.avdi.org/2012/06/05/confident-ruby-beta/>

</comment></comment><comment><USER3> I am one of those 57 buyers.. I stumbled across the book after having seen the link in another article that was on HN. HN is the right audience for this book indeed :)

<comment><AUTHOR> Thanks! Looking forward to your review.

</comment></comment><comment><USER15> Impressive stuff, although the book promotion page looks slightly off. Reminds me of those 'free make money' ebook pop-up's I got in 2005.

<comment><AUTHOR> I'll followup with a post on why I used the sales letter format to sell the book, but I can tell you this: it converts 3x better than the alternatives I tried.

<comment><USER16> We had a similar situation with an inhouse-ad on our site. The polished version performed ok, but just for the fun of testing, we switched to a rough screenshot image. It performed more than five times as good.

Just because one doesn't like it, doesn't mean it won't work. My learning was: Always, test everything.

<comment><USER17> _Just because one doesn't like it, doesn't mean it won't work. My learning was: Always, test everything._

This is a point that every single commenter on HN needs to be aware of. There are far too many people who seem to think that just because _they_ don't like something, it can't work, won't work, should be priced lower...

<comment><USER2> Even further: asking people if they like the page would result in different results compared to testing if they end up paying for the advertised product.

</comment></comment></comment></comment></comment><comment><USER10> I hate to sound old-fashioned, but this puts the cart before the horse. Authors should have a book available for sale before accepting delivery payments. Ask any publisher how this sort of thing usually works out.

<comment><USER18> Not sure I follow this. Pre-ordering books is a pretty well established practice among publishers (yes, real ones, not just ebook authors).

Actually, it's the primary hack for getting on best-seller lists (pre-orders, then fulfillment in strategic batches designed to show consistent sales over time).

Or is this a more basic "No one should sell anything that doesn't already exist" argument?

If so, I'd point out concert tickets (usually 6 months advance sale), seminars, conferences, and most other large undertakings that need some sort of validated audience numbers as counter-evidence.

Why not all products, as long as there's no attempt to deceive, and the purchaser is clear that the product is not ready yet?

<comment><USER10> > Not sure I follow this. Pre-ordering books is a pretty well established > practice among publishers ...

The difference is the person pre-ordering can back out, and generally speaking in pre-orders, no payment is made until delivery. It ends up being a measure of public enthusiasm, not a way to gather revenues in advance of delivery. In this case, people are paying for a book that doesn't exist yet.

> Actually, it's the primary hack for getting on best-seller lists

Yes, true, but see the pre-order discussion above -- generally, no money changes hands until the book is actually available.

Also, I have to add, the ultimate best-seller-list hack is to buy copies of your own book and put the copies back into the pipeline, endlessly, as the Scientologists are said to do.

> Or is this a more basic "No one should sell anything that doesn't already > exist" argument?

But that's true in general -- in the worst cases, where delivery doesn't happen, the seller can be charged with fraud. I hasten to add I am not comparing this hypothetical (but all too common) outcome with the book under discussion, which for all I know is perfectly worthwhile.

<comment><USER18> Ok, but you didn't address my point about concert tickets et al. Obviously you pay in advance of seeing the concert, or attending the conference, and sometimes these things get canceled.

It's reasonable to expect money back, or worst case some sort of "raincheck" in case of a cancelation or delay. Same applies to ebooks in my mind.

"Public enthusiasm" doesn't pay the deposit for a concert hall or conference center, right? Why should an author not get paid in advance of the effort of writing a book? [Hint: authors already figured this out a couple of centuries ago - thus the publishers' advance]

So it's not really a question of money changing hands, it's just whose money, and whose hands.

<comment><USER10> > Ok, but you didn't address my point about concert tickets et al.

Fair enough. A concert doesn't work like a book -- the concert venue must know who is coming, in what numbers, in order to prepare. A traditional book publisher only needs to know enough to decide on the size of the next "printing", to fill the supply channel incrementally, as demand warrants.

The concert happens all at once, so the audience size must be known up front. The book publication might stretch over decades, with periodic decisions about the size of the next printing, so the publisher only needs to know the rate of change in demand, the "first derivative," to use the calculus term.

Two very different cases, from very different, non-comparable businesses.

<comment><USER18> Yes, of course, I'm not making an argument that concerts and books are _the same_ business. That would be dumb.

I'm saying rather, there's no obvious reason to not get paid for them the same way, as long as the audience is willing. If they're not willing, that obviously won't work. But clearly in some cases (like the OPs), they are willing.

So as an author, you'd have to be irrational to not want to be paid as early as possible.

As a purchaser, you're free to vote with your wallet, and not pre-buy anything you don't want to. But if you want what the author is proposing, and want to give him encouragement by pre-buying, why is that somehow bad or wrong?

And my fuzzy calculus aside, the first printing for most books will also be the last one. So better to get the volume right. If only there were a way to accurately gauge demand before doing a printing...

<comment><USER10> > And my fuzzy calculus aside, the first printing for most books will also be > the last one.

This is not the norm in publishing, at least, the desirable kind. For most publishers who promote and market books, profits don't start until the first printing has sold out and subsequent printings begin, with (a) all book preparation activities already complete, and (b) a public who don't need to be persuaded of a book's value. It is at this point that an author begins to be looked on as more than a one-trick pony.

Imagine a pre-publication advertisement: "A truly epic myth! Floods, plagues, the anguish of being unimaginably stupid! Certain to be a best-seller if the author ever gets done writing it! Pre-order the Bible now -- get in before the rush!"

:)

> If only there were a way to accurately gauge demand before doing a > printing...

In modern publishing, there's no need -- books are printed, one copy at a time, when they are ordered. For example, my book only gets printed after someone buys a copy. This change (electronic on-demand publishing) essentially wipes out the traditional publishing model.

<comment><USER19> "This is not the norm in publishing, at least, the desirable kind."

Ah, it's good you said that. I always thought publishers like O'Reilly and Pragmatic Programmers were totally _undesirable._ Now I can point out why.

"In modern publishing, there's no need -- books are printed, one copy at a time, when they are ordered."

Cite?

<comment><USER10> >> "In modern publishing, there's no need -- books are printed, one copy at a time, when they are ordered."

> Cite?

<http://en.wikipedia.org/wiki/Print_on_demand>

<comment><USER19> I think we all know what Print on Demand is, but that Wikipedia page doesn't list any proof for your assertion that it is "the coming thing." The only publishers it lists as offering POD are specialty POD publishers.

That's hardly the sweeping industry change you described.

<comment><USER10> Your objection is that there is little evidence in the present for an assertion about the future -- the "coming thing". Knock yourself out.

<comment><USER19> You state things in the present tense:

"In modern publishing, there's no need -- books are printed, one copy at a time, when they are ordered… This change (electronic on-demand publishing) essentially wipes out the traditional publishing model."

This implies that this is the way things are, now, or will be in the very near future, for the majority. And there's no proof that "in modern publishing, books are printed, one copy at a time."

<comment><USER10> > This implies that this is the way things are, now, or will be in the very > near future, for the majority.

And? It's a reasonable prediction based on current trends, and see below for more evidence.

> And there's no proof that "in modern publishing, books are printed, one copy > at a time."

What? That's true -- it is how "modern publishing" is distinguished from old- style publishing. This is not to say that the majority of books are published that way, but then I never made that claim.

In modern publishing, books are "printed" one copy at a time, when they are ordered. How is that remotely controversial? It covers on-demand publishing as well as e-books:

<http://www.3dissue.com/ebook-market-share/>

Quote: "Whilst the market has seen significant growth since 2008, the last 12 months in particular has shown a substantial rise. Between January 2011 to January 2012, sales in adult eBooks grew by 49.4%, while sales in children and young adult eBooks grew by 475.1%, according to the AAP. The good news for digital publishers is this trend is expected to continue."

<comment><USER19> Who other than you considers ebooks "printed"?

<comment><USER10> Who other than you doesn't?

E-Book: <http://en.wikipedia.org/wiki/E-book>

Quote: "An electronic book (variously, e-book, ebook, digital book, or even e-editions) is a _book-length publication in digital form_ , consisting of text, images, or both, and produced on, _published through, and readable on computers or other electronic devices_.[1] Sometimes the equivalent of a conventional printed book, e-books can also be born digital. The Oxford Dictionary of English defines the e-book as _"an electronic version of a printed book"_ ...

<http://speakingvolumes.us/about-our-ebooks.asp>

Quote "Sometimes the equivalent of a conventional printed book, eBooks can also be born digital ..."

No need to repeat ... hundreds of other sites make this meaning clear.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER20> This post is great marketing for mentioned unfinished book. The HN frontpage is probably the perfect target audience, well put!

<comment><AUTHOR> But by far the lowest converting traffic source :-) Thanks!

<comment><USER2> It's definitely a low converting traffic source, but then it brings an interesting coverage/publicity, tends to generate retweets etc (based on my experience on <http://hackerbooks.com/>).

</comment></comment></comment><comment><USER21> That looks interesting enough that I sent a link to a friend. Sometimes making to HN front page does pay.

update: She bought it last week.</comment>


Ask HN: I talk about something in rl and get ads on ig/fb. How do they do that? - <AUTHOR> That it's very creepy aside, I am wondering from a technical standpoint how they do that including the speed that it happens.
- I talk about something with friends, for example a pair of new shoes. I never search for shoes online and never online ordered. Next time I open instagram I get ads for new sneakers.
- I talk with a friend about depression and mental conditions, next thing I get ads for a new online counseling app.
This happens with friends using both Android or iOS. We are not on the same wifi network and don't talk about these things online through messengers. I don't have facebook installed (but have instagram and messenger). I am a somewhat cautious person and besides very rarely checking instagram or replying to messages barely open either app.
One theory is that someone at a later point searches for it online and through GPS approximation and social graph the network makes the link back to me. But besides that I have no clue. Always listening through microphones is a far stretch especially given security models and APIs on iOS. <comment><USER2> My guess is that it's either what your theory says or pure coincidence. It's a mathematical fact that the ads sometimes _have_ to align with whatever your conversation topic is.

The chance of such alignment may be significantly higher than our intuition says, a bit like the birthday paradox counterintutively has a >50% probability of happening.

<comment><AUTHOR> I am aware of that theory but it just seems too on point to be just coincidence and bias. Especially because I am already aware of this happening I monitor what I get advertised so it's not like I am skipping things subconsciously that I don't care about.

The suggested ads take a full 180 turn depending on what's going on in my life. At first it's about jobs, then shoes, then about mental health, then about some concert I only verbally talked about (with bands I don't listen to).

Instagram ads are spot on, exactly what's currently recent in my life. There is no relation to the ads beside me talking about it.

</comment></comment><comment><USER3> Your theory is entirely plausible and in fact I would expect no less from a creepy entity like Facebook.

Another option could be that you've searched or browsed content about this before so you were getting these ads occasionally anyway but didn't pay attention to them until you talked about it and now that ad stands out.

</comment><comment><USER4> They are listening via mic. Check permissions for your apps and disable mic.</comment>


Stack Exchange's Architecture in Bullet Points - <AUTHOR> http://blog.serverfault.com/post/stack-exchanges-architecture-in-bullet-points/ <comment><USER2> I'd be interested in finding out why they chose to go with Windows-based web servers. Administering 12 production nodes would not be fun and doing so over remote desktop seems like a pain to me.

<offtopic>I recently discovered puppet and I am just way too excited about what I can do with it.</offtopic>

<comment><USER3> StackOverflow is done in ASP.NET MVC. They were one of the earliest adopters of ASP.NET MVC. It would make sense to go with Windows servers as Mono w/ Linux may not be up-to-date with latest C#/ASP.NET code. BTW, as they are part of BizSpark program, they would have got the server licences for cheap.

And I am genuinely curious as to why you think 12 Windows servers are pain compared to 12 Linux boxes?

<comment><USER4> He seems to think you have to log on via remote desktop to administer.

<comment><USER5> Out of honest curiousity, how _do_ you administer them?

<comment><USER6> The same way as you administer _any_ cluster.

<comment><USER7> Using SSH? That's what I've used to administer every server I need to for many years.

The last time I had to work on windows servers SSH wasn't really an option though so we used remote desktop. This was on win2k servers though so things may have changed.

I think the question deserves a better reply than the glib "The same way as you administer any cluster." Is the answer really SSH? Or something else?

<comment><USER8> The introduction on the Powershell Wikipedia article is a good overview [1]. Powershell can also be used remotely, and various Microsoft products provide cmdlets (basically utilities) to use from the shell.

There are a few ways of dealing with IIS7: * Remotely using IIS Manager [2] * .NET-style configuration files - think httpd.conf * Powershell cmdlets * AppCmd.exe

SQL Server has Management Studio in various flavors, SqlCmd.exe or Powershell cmdlets.

The only time I log in to servers is to run installers or when laziness takes hold. These various tools work well enough that Microsoft offers Windows Server Core which only provides CLI access (and Powershell in the most recent version).

[1] <http://en.wikipedia.org/wiki/PowerShell> [2] <http://www.iis.net/download/IISManager> [3] [http://learn.iis.net/page.aspx/334/install-and-configure- iis...](http://learn.iis.net/page.aspx/334/install-and-configure-iis-7-on- server-core/)

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Interesting that they've moved to Lucene.net for search - I remember hearing them say that full text search is one of the reasons they were so happy with SQL Server.

<comment><USER10> ugh, no, I can't imagine ever saying that. Full Text Search in SQL Server is very badly integrated, buggy, deeply incompetent, and I hate it. Hate it hate it hate it hate it hate it.

<comment><USER9> I'm not sure where I got that impression then. Thanks for the correction!

</comment></comment></comment><comment><USER11> Here's an earlier explanation about their caching set-up using Redis:

[http://meta.stackoverflow.com/questions/69164/does- stackover...](http://meta.stackoverflow.com/questions/69164/does- stackoverflow-use-caching-and-if-so-how)

<comment><USER12> I'd be interested to know what _platform_ they're running Redis on. Is it Windows or Linux?

Edit: Oh, the article link mentions it's running on CentOS. I was looking for that in the parent's link.

</comment></comment><comment><USER13> Congrats to them. 12 page servers and only 2 dbs is super lean for ~100m pageviews. They seem a bit bloated on eng staff though.

Off topic, but more proof how inaccurate Alexa is. I have a service that gets 1/10th of their p/v and is almost 3k points higher.

<comment><USER14> To be fair, Alexa doesn't purport to rank by page views.

</comment></comment><comment><USER15> I like posts like these, provide a good blueprint for other .NET sites to use as a guide if they end up exploding in popularity like Stack Overflow.</comment>


The abominable strtok() - <AUTHOR> http://zefonseca.com/blogs/zen/the-abominable-strtok/

<comment><USER2> First off, strtok() is dead, long live strsep().

Secondly, this is C code--it's pretty low-level. Yes, strsep() messes with your input. But that is very well documented. If you don't want it to, strdup() beforehand (or strndup() if you don't trust the input).

His whole example of strtok() dying on a character constant is stupid--why on earth would you do that? If you've got a string constant you may as well just have the constant array and save yourself the parsing headache.

This isn't rocket science.

<comment><USER3> I tend to use and recommend str(c)spn, which althought more low-level are more flexible and often what you want. And also you don't have to modify input if you don't want to.

<comment><USER4> strcspn is really, really fussy. When what you want is the semantic equivalent of "foo,bar, baz".split(','), I don't think it's worth the potential for error, or the tangliness of the code.

</comment></comment></comment><comment><USER4> I've heard lots of dev teams gripe about strsep(3) because it "isn't standard" or "isn't cross-platform". Preposterous! strsep is a ~20 line ANSI C function; it will compile and run flawlessly on any platform that doesn't natively provide it.

I agree strongly with the other comments on this thread that strsep(3) is just peachy, even though it "alters its inputs". Unlike in functional programs, reasonable destructive functions are to be _preferred_ in C programs; it's easier to work around destructiveness than it is to track state (and/or to go through contortions to pretend that you aren't tracking state).

</comment><comment><USER5> I began to have serious concerns about this article when I saw the author allocate and then immediately leak memory in the first example.

I agree with the message: don't use strtok, it has unpleasant side effects that you probably don't want. I do not feel this article does a good job of presenting that message. It spends too much time on pathologically bad examples of strtok usage while only briefly mentioning (and providing no example code for) any of the alternatives.

<comment><USER6> He also elided basic error checking. I have no problem if people don't follow all good programming practices in pedagogical examples.

<comment><USER4> What error checking are you referring to? If it's the alloc, I think the explicit error check on it is usually an antipattern and should be avoided.

<comment><USER7> Curious: you think it's better to crash attempting to use a NULL pointer? If so, why is that better than checking for the NULL?

<comment><USER4> I think regimes that involve manual checking introduce the possibility of mistakes; when those mistakes involve array references, they can be exploitable.

I've always, in both my dev career and in security research, felt that manual checking is dumb. In 99.999% of cases, the only option given to code when allocations fail is to start a chain of events that ends the program. Inflating each and every allocation (or, more likely, missing the little things that allocate silently, like strdup) into 4-5 lines of code seems wasteful.

What I advocate is what my friend Danny told me he did at Juno in the mid '90s: preload a wrapper on malloc (don't use silly wrappers like "xmalloc") that catches faults and does something intelligent; centralize your handling of allocation failures, instead of trying to graft it onto each and every allocation point.

The nice thing about my philosophy: it means that when you write normal, non- runtime code, you just pretend malloc never fails. Your code is cleaner, and it's probably safer.

<comment><USER2> It depends what kind of program it is. A long running GUI program probably doesn't want to completely abort if the user tries to open file that it doesn't have enough memory to process--especially if there are other unsaved documents open.

Similarly an embedded program might not want to reboot itself if there aren't enough memory resources to carry out a command (due to other commands being processed at the same time).

But you are right, a lot of the time (perhaps even the majority of the time) it really is perfectly acceptable to just die if you can't malloc().

And it really does take a lot of effort to manage memory like that, but if it is done right it can really make things work robustly.

<comment><USER4> Your allocation failure strategy is orthogonal to how individual allocations should be handled. In a UI program, keep a reserve of memory, return valid addresses to the caller, and pop up a warning.

It's actually _easier_ to do things like this if you aren't hand-crafting individual little alloc-check-handle routines.

<comment><USER2> That seems full of edge cases. If your reserve isn't big enough it doesn't help and if it's too big then it's a waste. It seems much cleaner to be able to gracefully abort whatever operation you were doing. Presumably there is already error handling for fs/network errors. Usually you can hop onto those handlers with memory errors and be just fine.

Though if it's linux it'll just kill you anyway :-). (Yeah, I know you can turn the OOM killer off).

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> I think anyone that's done even a little bit of C work on any platform is aware of this issue.... but it's always worth griping over it some more. I guess the poster just ran into it and couldn't help but express his frustration :)

For Win32 developers who don't have the glib g_strsplit function, you can use strtok_s which is detailed on MSDN here: <http://msdn.microsoft.com/en- us/library/ftsafwz3(VS.80).aspx>

strtok_s is re-entrant, thread-safe, and uses no global data, but keep in mind it still modifies your input string.

</comment><comment><USER9> The man page covers the problems with strtok pretty well. I found it useful enough and while the code that uses it is pretty awkward it works well enough and gets the job done.

I think I that I have used it in shipping code two or three times. These days I don't do much in C so it's unlikely I'll ever use it again.

</comment><comment><USER10> strtok() altering the source string is a natural consequence of null termination. The traditional Pascalian equivalent (put the string length at the head of the string) creates a symmetric problem at the head of the string. My (perhaps naive) idea is to use a struct containing the string length and pointing to the beginning of the string data. Nondestructive tokenization becomes simple.

This post actually gave me an impetus to go back and add tokenization to my string library that's built around this idea.

<comment><USER4> The big problem with _tok_ isn't that it alters the string; it's that it keeps state, and so can't be used in multicontext code. _sep_ changes the interface to delegate state tracking to the caller, which is the way it should be.

Just as map and reduce in Python is "unpythonic", interfaces that mint new temp strings to process what should be a simple charstar are un-c-like, and should be avoided.

<comment><USER10> _Just as map and reduce in Python is "unpythonic", interfaces that mint new temp strings to process what should be a simple charstar are un-c-like, and should be avoided._

That's not what I'm doing at all, though. I'm just giving char *'s and size_t's for portions of the original character array, not duplicating subsections of the array at all.

<comment><USER4> You are, in other words, reinventing strspn?

<comment><USER10> strspn takes a set of characters to match against and tells you how long to go until you reach a non-matching character. My tokenizer, like strtok, takes a set of delimiter characters. So same thing except with complement sets, I guess.

It's also part of a larger library that consistently uses pointer/length pairs to designate strings as opposed to null termination, which admittedly is quite non-C. No clue whether it's actually a good idea.

EDIT: If anyone's actually curious, I have it on github: <http://github.com/philwelch/string></comment></comment></comment></comment></comment>


Scientists develop material that could regenerate dental enamel - <AUTHOR> https://www.qmul.ac.uk/media/news/2018/se/scientists-develop-material-that-could-regenerate-dental-enamel-.html <comment><USER2> Can we stop linking to "right to try"-bait headlines?

This clearly a long way from the "potential cure for cancer" bullshit, but I think we just need to have a blanket rule to link to the actual research, or alternatively not to use headline from the press release.

</comment><comment><USER3> Protein-mediated apatite crystal growth.

Doing that in situ (on teeth) is another ball of wax. But this is a first step.</comment>


The Difference Between A Developer, A Programmer And A Computer Scientist - <AUTHOR> http://www.skorks.com/2010/03/the-difference-between-a-developer-a-programmer-and-a-computer-scientist/

<comment><USER2> Boring, navel gazing semantics.</comment>


One of the great things about analog technology is it fucks up correctly - <AUTHOR> http://modcult.org/read/2010/9/9/songs-in-the-key-of-r <comment><USER2> It's a good tale, and I think it's the same power failure which starts James Burk's Connections book, but I wonder if he (blog author) has cause and effect backwards.

There's nothing so intuitive about an overloaded generator slowing down and causing record players to slow that we'd expect to see it in a childrens story.

Perhaps instead we think lights dimming and record players slowing is the right thing to happen in a power grid problem _because_ that's what used to happen.

Also, distorting music is a terrible thing for a record player to do. It's hard to see that as "the correct way" for a record player to fail.</comment>


By 2045 'The Top Species Will No Longer Be Humans' - <AUTHOR> http://www.businessinsider.com/louis-del-monte-interview-on-the-singularity-2014-7

<comment><USER2> Machines aren't a "species" of anything. Species is a biological classification.

Besides, this sounds pretty much like re-hashed Kurzweil. Not that some of it might not come true, I hope it does, but there is a long way to go from here to there.</comment>


The harsh truth about entrepreneurship revealed by an experienced entrepreneur - <AUTHOR> https://www.goodvitae.com/truth-about-entrepreneurship/ <comment><AUTHOR> can experience people share some more.</comment>


Combining Design and Development Stories in Pivotal Tracker - <AUTHOR> http://blog.carbonfive.com/2012/10/18/design-and-dev-stories-in-tracker/

<comment><USER2> (Bias warning: I know Lane, the author of the post, and think she's scary smart ;-)

This used to be my preferred tool to get everybody to understand the work that UX folk did - but in more recent years I've begun to think that it can get in the way more than it helps. These days I see it more as a transitional tool rather than a long term solution.

The problems that I've seen with separate UX stories are:

* They can become something that gets dropped when pressure situations occur (it's 'only' a design story...)

* They get away from, on agile teams, the idea that _all_ stories deliver direct business value (or Running Tested Features or whatever). I don't like design stories that fail to do this, in the same way I don't like development 'stories' like 'build database layer'.

* They tend to stay the sole job of the UX person and seem to act as a bit of a barrier to getting the whole team to help swarm on stories. They highlight the work - which is great - but they label it 'ux' so it becomes a subset of the teams responsibility rather than the whole team's responsibility.

I'd be interested to see how Lane feels about them in a years time - or as the team grows. (I wonder if these are really Rob/Lane stories rather than dev/design stories... if you see what I mean).

... hmm... should probably put this as a comment on the blog...

</comment><comment><AUTHOR> This post is getting some pretty interesting discussion on the blog. It's clearly a topic that people have strong feelings on. I'm interested in the thoughts of people here.</comment>


Simple Deep Learning Benchmark - <AUTHOR> https://github.com/aizvorski/vgg-benchmarks <comment><AUTHOR> Here is something to tide you over while waiting for DeepMark... A simple benchmark of TensorFlow, Theano (using Keras), Torch, Caffe and Neon, running the VGG-16 network. Includes results on a GTX 1080. This is also useful as a basic example of how to use each framework. More results and improvements welcome :)

<comment><USER2> Maybe you can get people with other cards to run the benchmark and add their results to your page.

<comment><AUTHOR> Yes, I hope they do! The benchmark is easy to run if you have CUDA+cuDNN installed.

</comment></comment></comment><comment><USER3> There is another nice one here: [https://github.com/soumith/convnet- benchmarks](https://github.com/soumith/convnet-benchmarks)

<comment><AUTHOR> Yes, soumith's is a much more comprehensive benchmark. I wanted a new one for a few reasons:

\- run training including weights updates, not just forward+backward

\- run on Pascal architecture (latest and greatest)

\- use cuDNN 5

So mine doesn't try to cover nearly as much ground, but is a closer match to the most common use case of running training on latest hardware right now.

When soumith's next project DeepMark is done, that will be the new best benchmark, it looks really good.</comment></comment>


No Algorithms - <AUTHOR> https://inessential.com/2019/07/02/no_algorithms <comment><USER2> Will there be a win/linux version?

<comment><USER3> No.

However, you can look at [https://github.com/brentsimmons/NetNewsWire](https://github.com/brentsimmons/NetNewsWire)</comment></comment>


Did New Zealand's NIWA also manipulate climate data? - <AUTHOR> http://blogs.telegraph.co.uk/news/jamesdelingpole/100017977/climategate-the-scandal-spreads-the-plot-thickens-the-shame-deepens/

<comment><USER2> Any scientist who refuses to release all data, and exact methods of analysis (suitable to allow someone else to reproduce it) should be utterly ignored.

Any conclusions reached - even in part - from data that has not been full released should be ignored.

That said, is there any evidence of global warming?

I really do want to know - is there any evidence based on data that has been fully released?

I fail to understand how not releasing data was ever tolerated. Isn't that the hallmark of science? That someone else can reproduce your work? And if they can't you are just a crank?

<comment><USER3> Yes. Try going to this website:

<http://en.wikipedia.org/wiki/Global_warming>

and clicking on the images. The first two images have a large amount of detail (<http://en.wikipedia.org/wiki/File:Satellite_Temperatures.png> , [http://en.wikipedia.org/wiki/File:Instrumental_Temperature_R...](http://en.wikipedia.org/wiki/File:Instrumental_Temperature_Record.png))

Global warming is real.

<comment><USER4> I think the parent was really hoping for a link to the source data, along with a rigorous explanation of how it was acquired. Too many of these graphs result from massaged/corrected/otherwise altered data rather than direct results, and quite often the methodologies have gaps that are left unexplained.

That's not to say that they might not be correct, but it would be nice to see a link to the graph, the raw data, and a detailed explanation of every step in the chain between measurement and graph.

<comment><USER5> _> Too many of these graphs result from massaged/corrected/otherwise altered data rather than direct results, and quite often the methodologies have gaps that are left unexplained._

A publication generally has a page limit. Authors generally have a lot to say, so they leave everything out that would be "common knowledge" amongst experts in their field. After all, that's the target audience they're writing for. If someone with an honest intention asks about the methods or the data, I have no doubt it will be explained or given.

The problem is, the debate has been heavily politicised. Scientists aren't politicians. If somebody with pre-conceived notions comes along, they will do what any non-media-conscious person would do: tell them to get lost. Nobody wants to be the target of a show-trial. Unfortunately, because of the heavy politicisation, a strong "us against them" feeling has evolved, which makes people regard honest criticism as suspect.

It's not right. However, since these are humans, it _is_ understandable.

The best thing we—people interested in an honest scientific debate—can do is to back out of the political discussion and let scientists handle it. Let sceptical scientists do their job. Let the debate be held in scientific journals, not in newspapers and blogs.

<comment><USER6> _A publication generally has a page limit_

I'm sorry, but this statement doesn't make any sense in the digital era. I can download closing prices for nearly every traded US stock over its entire existence in spreadsheet format from Yahoo for free. I downloaded binaries for an entire operating system to run the computer that I'm typing this reply on for free. "Page limit" is not a reasonable excuse for a scientist whose work is funded by the public. I have no doubt that a researcher who was willing to make data available in a digital format that is compatible with commonly used tools such as R would be able to find an outlet willing to host this data for public consumption. In fact, I would almost see this step as a requirement in today's technological environment. How many extra pages would be needed to cite a URL from which further details could be retrieved?

 _If someone with an honest intention asks about the methods or the data_

This statement makes even less sense than the last one. The scientific soundness of data or method is unrelated to the intention of the analyzer. Publishing full details of the analysis can only strengthen confidence in the conclusion that has been reached. Only someone with reservations about the conclusion would seek to obscure the steps in the process by which it was reached.

<comment><USER5> _> I'm sorry, but this statement doesn't make any sense in the digital era._

There are very few peer reviewed online journals. So everything posted online is without the benefit of peer review. Writing exclusively online therefore will not work; hence you're already page limited for one part of your publication. You could write two papers, but a) the effort required is a lot more and b) the longer one (for online publication) will still not be peer reviewed.

And really, if any competent climatologist can understand and infer some steps in your processing, why mention or explain them?

As for data, I don't think it will be very hard. It would probably require one or two days of collecting though. However, I doubt the demand is very high, among competent climatologists anyway. If it was, I would assume this would be common practice.

 _> This statement makes even less sense than the last one. The scientific soundness of data or method is unrelated to the intention of the analyzer. Publishing full details of the analysis can only strengthen confidence in the conclusion that has been reached. Only someone with reservations about the conclusion would seek to obscure the steps in the process by which it was reached._

If the requests for more information come from competent climatologists, I would have no argument with you. But that's not the case; at least in those cases we're hearing about. The requests are made by economists, politicians and people who have stated—without data to back them up—in the past they don't "believe" in climate change. Some even going so far as to call it a conspiracy—it never was clear to me what the climatologists were conspiring to do, though.

If the requests comes from competent scientists, you can rely on their personal integrity. If it comes from people with no scientific background, you can't. They have little to no understanding of the subject or the methods involved. You can be quite sure that that won't stop them from trying to interpret the data. Their conclusions are certain to be wrong, and—due to their preconceived notions—are certain to call into question: the integrity of the data, the integrity of the scientist, the integrity of his institute and the integrity of all climatologists. Most of the time explicitly too!

Since those guys are opinion leaders, the only effect would be another news article stating climate change doesn't exist and that it's all a big lie by climatologists. An article based on the pre-conceived opinion of an incompetent "user" of scientific data.

That doesn't strengthen confidence in the conclusion being reached; it weakens it. People should listen to the climatologist in such a situation, but they don't. They listen to the one who preaches the opinion they already had.

So refusing the data to those with ill intentions isn't based on reservations about the conclusion—it's based on the reservations about the intentions of the requester.

And all that is because people aren't playing "science" any longer, they are playing "politics". It's a different game and it has different rules.

</comment></comment></comment></comment></comment></comment><comment><USER3> Additionally, this is a blog-clone of this article <http://news.ycombinator.com/item?id=962332> and all the same comments apply.

<comment><USER5> It's interesting to see the differences in comments between that article and this. The comments on this article seem to be "sceptic"-dominated, whereas the other one seems to be dominated by "believers". I wonder what's causing the difference.

<comment><USER7> Time-of-day</comment></comment></comment>


Turns out Google may just be your garden-variety monopoly after all - <AUTHOR> http://money.cnn.com/2007/08/06/technology/google_schlender.fortune/index.htm?postversion=2007080706

<comment><USER2> This writer is either the stooge of the carriers, or not very sharp.

The most revealing phrase is "forcing the agency into an auction for spectrum that would arguably have far less business value." The government is supposed to be operating in the interests of its citizens, not creating artificial scarcity so businesses can charge them a lot.

</comment><comment><USER3> I don't know how someone could consider Google's 4 demands as being designed only to benefit Google. Those 4 demands benefited USERS, is that not obvious? I thought it would have been but I guess the telco lobbyists did a good job of convincing certain people otherwise. This guy is basically preaching the exact same thing as the dissenting FCC commissioners.

Perfect example of our wonderful govt ignoring citizen interests in favor of those of the lobbyists.

This guy is beating a dead horse anyway, the ruling has already happened and is done. Its really just a matter who participates in the auction and who comes through in the clutch. I dont see GOOG shareholders being happy with them spending the amount of money that the telcos will be able to however.. especially if the carriers collude. This understanding could have been the reason why google tried to instate these rules to begin with.

</comment><comment><USER4> > If they [existing telecoms] pay billions for spectrum, shouldn't they be > entitled to use it as they see fit? What are we, communists?

Didn't you get the memo, Mr. Schlender? Communists are so last century. The bad guys of this centry are terrorists, not communists.</comment>


Ask HN: How do you debug code? - <AUTHOR> For a given algorithm, I find myself placing debug logs all over to print values of variables.<p>I even find this quicker than using breakpoints. <comment><USER2> It depends on the difficulty of the bug(s) that need to be localized and fixed.

I use a wide range of techniques from simple printf's all the way to a full- blown methodology that has not failed, especially when dealing with coupled bugs or those caused by concurrency issues, hardware and such.

I wrote about my methodology here: [http://ortask.com/wp- content/uploads/fault_localization_impr...](http://ortask.com/wp- content/uploads/fault_localization_improved_testing-Non_ACM.pdf)

</comment><comment><USER3> Though I'm a big fan of debugging, and one of my specialties is debugging _everything_ , I'd also like to point out that writing unit tests is also a very good way to "debug".

2 good things come out of unit tests:

1\. You'll decrease the chances of having to debug that code again 2\. You'll learn how to write code that needs less debugging.

Now to adress your question directly, I have developed a few techniques of debugging, which come in quite useful.

1\. Going directly to the problem. Example 1: you're debugging some database problems -> put a breakpoint in the library that's interfacing with the database. Example 2: Some object has some unexpected property -> put a breakpoint at the point when that property is set. Example 3: you're receiving weird http requests -> put a breakpoint as close as you can to the code giving you the request.

2\. Conditional breakpoints. Some IDEs have this feature build in. If not, you can just write code around that. All you have to do is write a conditional statement with the condition you expect, and if it will evaluate to True, put a breakpoint inside this condition - there you have it, simple conditional breakpointing (helps with loops and other scenarios).

3\. Write code that minimizes state change. I know I'm being preachy again, but the worst bugs I encountered all revolved around objects being changed by code in extremely unexpected places. Don't do that! Think by default never to modify objects once created, and only stray from this rule when the alternative becomes ridiculous (e.g. when you have to write a lot of really complicated code which nobody will understand)

</comment><comment><USER4> I usually will look at the input, and then look at my output. If it's not what I expect, I look at the code. Then I'll discover something usually. It's hard to articulate how I do it. I couldn't pass one of those hacker rank style challenges for 2 or 3 companies this year out of the box, but I think I can debug code pretty well.

</comment><comment><USER5> For 'shallow' bugs, printing / logging - solves problem 90% of time.

Deeper bugs use the IDE, breakpoints and debugger, goto definition and call stack examination solve the other 10%

Some tips for production: Put logging calls in at critical points -- e.g. initialisation of interfaces log input and output shapes (I work in mostly in vectors), DEBUG level logging, which is more verbose, can log the shape of incoming vectors to help with sanitation efforts.

</comment><comment><USER6> Yes, debug logs are my usual m.o. too. In general I follow the divide-and- conquer approach for localizing the source of a bug - it works well for > 95% of bugs.

If you're using an interpreted language, a REPL is brilliant for debugging individual functions (I use this mostly with Lisp, but also to some extent with Python).

Disclaimer: I'm not a professional dev...</comment>


I took Gabriel Weinberg's Advice and cloned ThreeWords.Me with Pictures - <AUTHOR>

This is an experiment to see if I could make something "inherently viral".
http://mybestpic.org/lTmQAr
Let me know if you have any suggestions toward that end.
It's based on Gabriel's post from about a week ago: http://www.gabrielweinberg.com/blog/2011/02/if-i-were-starting-out-i-would-clone-threewordsme.html
He already gave me some good advice: let people import their facebook photos with facebook connect.  Will be adding that soon. <comment><USER2> It might be more inherently viral if anyone could pick a picture for anyone.

</comment><comment><AUTHOR> Clickable: <http://mybestpic.org/lTmQAr>

or

<http://mybestpic.org>

</comment><comment><USER3> How about three captions for a picture instead?</comment>


Nixie: the drone that flies and takes a picture of you - <AUTHOR> http://www.flynixie.com

<comment><USER2> Amazing concept.

<comment><USER3> Thanks!

</comment></comment><comment><USER4> Awesome video

<comment><USER3> Thanks so much! - Team Nixie</comment></comment>


Neural Net Learns to Play Atari "Kangaroo" - andrew-lucker https://www.youtube.com/watch?v=tspZQcVvIJQ&list=PLX1tECIw-CXVYcg4k4SJl92rmzU5-hflW&index=42 <comment><AUTHOR> I have a small suggestion: if, instead of posting the videos of the AI's execution, you (re-)linked the rust-openai repo, you'll get a better response ;)

<comment> andrew-lucker I could, but the HN community is really diverse. I think there are genuinely more people interested in just watching stupid machines play video games. I could be wrong, but that is my working hypotheses.

On the other hand, if there is enough interest, I could start live-coding Rust or similar. I would love to do something to support building the Rust community, but I don't want to keep talking to an empty room again and again.</comment></comment>