Dry Erase White Board Paint for Offices - <AUTHOR> http://www.ideapaint.com/work/ideapaint

<comment><USER2> I pressed for a long long time to get whiteboard walls at our office. Mostly because it would be a cool/hip thing to have, and, you know, cool and hip makes you productive right?

Seriously though; it is pretty useful when brainstorming. But the BEST use is the one next to my desk where I can lean over and jot notes & progress updates etc. at will. No more post-it notes cluttering up the place :D

The other advantage over a traditional Whiteboard is the sheer size. I always run out of space on normal boards, an entire wall isn't infinite, but it takes significantly long to fill.

Some tips. This is only a "chuck it on the wall" product if you are not overly concerned with the look (for example; using it for a cafe price board etc.). In an office w/o the proper prep it can look nasty, uneven and start to get messy in very little time.

You really need to re-plaster the walls, then sand them finely (this is the big pain). And then seal them properly with a skinning under coat (that will iron out any tiny bumps). Hopefully leaving you with a nice flat surface.

We skipped this bit the first time and had to re-do the entire test wall after about 2 months.

</comment><comment><USER3> The big problem with this is your walls have to be really, really flat for it to work like a real whiteboard.

What we found that works even better -- and cheaper! -- is to go to your local hardware store and pick up some tileboard (used for doing shower interiors, etc). It's like $5 a sheet and is the same material used in whiteboards! And if you're cheap you can just glue it directly to the wall.

<comment><USER4> Yup, I actually did this same thing this weekend! It was a little over $10 a sheet (not $5 as you say), but that's nothing compared to OfficeMax quoting me $163 for a 4x6 foot (framed) whiteboard.

$13.04 for a 4x8 sheet at Lowes: DPI) 1/8"D x 4'W x 8'H Trifty White Hardboard Wall Panel, Item #: 16605

Or, they also stock a 32"x48" piece ( Item) #: 61082 ) if you just want one for a cube wall.

Note that this won't be magnetic. The OfficeMax representative said that the magnetic variety was around 3x as expensive as the non-magnetic. Comparing $13.04 to $489, I think I can make that sacrifice.

I'm cheap, but I secured mine to every other stud (32") with some polebarn screws I had on hand (nice white hex head, rubber washer to avoid crushing the hardboard). That way, I just have to spackle and repaint 8 little holes, instead of re-doing the drywall. Cheaper in the long run!

Oh, and it works great as a whiteboard.

<comment><USER4> Curses. How do I get URLs to work? I've tried `[markdown](http:\\\example.com)` and HTML. Those URLs are ugly; I don't want to use the URL->link facility recommended in the formatting help: <http://news.ycombinator.com/formatdoc>

</comment></comment></comment><comment><USER5> nice idea. ideapaint has been around for some years now. at our office, we gave it a thought.

pros:

\- biggest possible room for your ideas (your walls)

\- that's it - but the above is a big one

cons:

\- toxic

\- pain in the ass to get on the wall

\- uncleanable since walls are not flat

\- even bigger pain in the ass to get it off the wall once you change your office location

also:

we compared the cost/m² and it turned out that ideapaint costs more than regular whiteboard (at least in Germany that's the case).

</comment><comment><USER6> I'm not sure if it is the same specific brand, but I bought a tin of this and was warned it is toxic until 100% dry.

In fact, even when it is dry it is toxic but inert. However do be careful of the fumes as you apply it - especially if your office is not well ventilated.

</comment><comment><USER7> We use this at the office and it works pretty well. It's not exactly the same as writing on a real whiteboard, but having an entire wall for drawing database diagrams is very useful. Our wall is like most walls, I guess, in that it is not perfectly flat like a whiteboard. The small divots and bumps make it nearly impossible to clean (especially if the writing has been left there for a while).

<comment><USER8> The cleaning is the biggest thing. I've seen this in a few places and there are always red and blue tints left over from erasing. Old writing tends to be a bit hard to take off without some kind of liquid spray.

<comment><USER9> I think the big problem is that plaster walls just aren't flat enough to prevent ink hiding in the divots and creases. So you can wipe over the surface but never get the little spots out of those imperfections.

We've painted a whiteboard-sized area of our office with this stuff. There's no border to tell you where the whiteboard paint finishes. As you'd expect, the ink is no longer confined to the bit that's wipe-clean. Otherwise (with the spray proviso above) it's been very useful, and we can always extend it with another pot later.

Another alternative is those statically charged pieces of "whiteboard paper" - Whiteyboard is mentioned below, and there's also <http://www.magicwhiteboard.co.uk/> \- although they don't stay up tidily for much longer than a couple of weeks. I think they're only really meant to last e.g. a day-long meeting.

</comment></comment></comment><comment><USER10> Previous Discussion of IdeaPaint:

<http://news.ycombinator.com/item?id=699602>

<http://news.ycombinator.com/item?id=701255>

</comment><comment><USER11> Wall-based whiteboards are a standard at youDevise. We found whiteboard wallpaper that seems better than the paint - can dig up the name for anyone interested.

Agree it is important to keep clean as you go but ours seems fine after 6 months of heavy use.

<comment><USER12> I'm interested. Ideapaint is intriguing, but has too many drawbacks.

<comment><USER11> It'll take awhile to find out (the person who ordered and installed it has moved on, so I really do have to dig around for it). How can I send you an email with the name?

<comment><USER11> I found it!

[http://www.tektura.com/pages/display_pattern.asp?Type=Range&...](http://www.tektura.com/pages/display_pattern.asp?Type=Range&PID=5&PAT=7)

</comment></comment></comment></comment><comment><USER13> I'd love to paint a couple walls with this when I get a more permanent office.

If you like moving around with your whiteboard check out: <http://www.whiteyboard.com/>

You can move it around and wash it and it's fairly cheap.

<comment><USER14> Seconded. I live in rental apartment and painting walls is not an option for me. I have their biggest size surface stuck to my wall and I love it. The only downside that I found so far is that if dry erase marker writing stay there for a longer time, they do not come off as easily as from traditional whiteboard. But paper towels (and sometimes a little bit of cleaning solution) easily solve that.

</comment></comment><comment><USER15> Very cheap alternative: cellophane. <http://www.youtube.com/watch?v=oBMUI- Mj_YU>

<comment><USER16> We tried this at our old office -- wasn't a huge fan. It tends to bubble up and doesn't erase well. Our new office heavily uses IdeaPaint, and assuming you can swallow the cost, it's an infinitely better solution.

</comment></comment><comment><USER17> Malamine board from hardware store, 8X4: $14

Install in 20 minutes (screw to wall), doesn't have to dry, removable, perfectly flat.

<comment><USER4> The word is "Melamine", which is the name of the resin used to bind the wood powders in that family of engineered wood products.

You actually want tile board, which is a coated, thin hardboard used in bathroom walls. The particles in hardboard are finer than medium-density fiberboard (MDF), which is finer than particle board), all of which are varieties of melamine board.

</comment></comment><comment><USER18> has anyone used this and give a recommendation? I'd love to try this, but it'd be nice to have a third-party perspective or even see it in action somewhere

<comment><USER19> I don't know if it's the same brand, but they use it in the conference rooms at one of the places I work and it's terrible. It's so difficult to clean that they've already repainted after just a couple of months. Now no one is allowed to keep their work on them overnight, and they've banned low-odor markers (apparently those stain more?).

</comment></comment><comment><USER20> I used one of these on Friday, and I was disappointed. It was painted well - very flat and consistent. But it just wasn't the same as a whiteboard. There's a smoothness and a polish to a real board that doesn't seem to happen with these paint types.

</comment><comment><USER21> WhiteyBoard has peel and stick whiteboards in large sizes at pretty affordable prices. I'm trying to decide between this and the shower wall method right now.

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

</comment><comment><USER22> As a general tip for dried on marker with whiteboards, I've always found that drawing over the old stuff, and the rubbing off the new ink works very well.

<comment><USER23> That tip also works when someone accidentally writes on the board with a permanent marker.

</comment></comment><comment><USER24> We used Ideapaint at our office and it still works and looks great two years later. I would highly recommend it.</comment>


A new year resolution to have Crystal reach the 1.0 milestone in 2017 - <AUTHOR> https://crystal-lang.org/2016/12/29/crystal-new-year-resolutions-for-2017-1-0.html <comment><USER2> I think Crystal is a very practical language to work in for web. It doesn't have the polish of Go (yet), but it feels more approachable to me. Rust has its place with low-level systems work, but Crystal gives you something that is reasonable to write and still compiles to a binary. In turn, it performs well and is easy to distribute, deploy, and containerize as well.

<comment><USER3> If I'm already using, say, OCaml, why would I want to switch to Crystal? (assuming that multicore takes the same amount of time to arrive in each). Whenever I've read about Crystal it sounds like a broadly sensible language, but it doesn't sound like it brings anything new to the table - in which case I'll favour the more mature language with the bigger library/tool ecosystem.

<comment><USER4> > it doesn't sound like it brings anything new to the table

A fast and typed Ruby, isn't it enough? ;)

<comment><USER3> OCaml (well, actually Scala in my case, but I can understand why people wouldn't want to have to use the JVM) is already that, as far as I can see. What is it that Crystal offers that OCaml doesn't?

<comment><USER5> Doesn't share the fugly OCaml syntax.

<comment><USER6> Not a great way to convince OCaml fans to use something else.

<comment><USER7> All 3 of them? Jokes aside, they're probably aiming for Ruby fans (or fans of other dynamic languages).

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Well I hope you succeed. Competition is good and in the "Go" space, there's need to be more competition to demonstrate the technical flaws of Go, or just give an option for those who want to quit an obnoxious and patronizing community. You should really be set on the type system and concurrency by now.

<comment><USER9> There is no need to demonstrate anything.

Go is a good enough replacement for C, for user space applications.

With some improvements, even for more lower level tasks.

As for the flaws, anyone that had the pleasure to work with the Algol and Wirth family of languages is well aware of them.

<comment><USER10> Go is really more of a Java than a C replacement.

<comment><USER11> This sentiment is actually very interesting to me. I had (/have?) the same kind of sentiment toward Go, but when I spent time playing with it recently I realized just how close to C it actually is. Enough so that when someone says it's a C replacement, I can actually see where they're coming from/somewhat agree with them. And the reason for that is that Go actually seems to follow a lot of C conventions pretty darn closely, and not provide as high level of an interface as Java does. You're much more likely to work in raw "arrays" (aka: slices) in Go than you are in Java, it doesn't have generics, "classes" are structs that are defined very similarly to structs in C, error codes as return values, etc. The main differences that are adding to C as far as I'm currently aware are interfaces, the ability to add a "method" to a type (which is effectively the same as calling a function with a type as the first argument, except in the case of interfaces), and the garbage collector. All of which, to me, feel like a kind of evolution on C. A different path instead of C++ in a way. While people would argue that having a GC ruins what C is good at, it can also be viewed as a version of C that's much more memory safe, while still allowing you to dip into very low level if you need to.

...there's probably some other stuff I could say, and probably more coherently, but it's early (for me) and I kind of just wanted to get that thought out there. I hope it's at least a bit thought-provoking, or something. If not, well, my apologies for rambling at you ;)

<comment><USER12> The language was designed by an expert on Wirth-style languages plus the two inventors of C. They wanted to create minimal, useful language based on old techniques with only features they could all agree on. Pike used Oberon-2 back in the day, knowing its advantages. The C inventors naturally wanted it more like C. The result is a merger of these. The concurrency stuff was an exception that came from Limbo language Pike worked on.

The Wirth languages were categorized by a focus on absolute simplicity and safety with just enough complexity to make building large programs easier. They constantly added or removed features in various language revisions in a search of balance. His main metric was compile time: anything that took too long was kicked out. The result was these languages were easy to learn, compiled _fast_ (100kloc a sec on good machine), rarely crashed, and ran reasonable speed. They had GC's but also allowed manual management. They were objectively better than C language because people could produce correct programs more quickly with same effort put in due to design.

[http://www.projectoberon.com/](http://www.projectoberon.com/)

Modula-3, designed at DEC, was probably the best of that line given it's like a safer, simpler C++ with a subset closer to C. Here it is:

[https://en.wikipedia.org/wiki/Modula-3](https://en.wikipedia.org/wiki/Modula-3)

Used in SPIN operating system that let you live-load code into the kernel for acceleration safely due to type-safe linking on top of memory-safe interfaces. Quite a few commercial deployments. Didn't take off since C was too popular & programmers only went with C-like alternatives. Lots of vulnerabilities and crashes happened.

Another alternative was Delphi, which succeeded for a while. _Way_ more productive and crash-resilient than using VC++. It fell away due to C/C++ popularity but Free Pascal community still maintains a variant of it. Their compiler targets a ton of platforms which was common for Pascal.

[http://www.freepascal.org/](http://www.freepascal.org/)

<comment><USER13> > _The language was designed by an expert on Wirth-style languages plus the > two inventors of C._

Did Dennis Ritchie have a hand in creating Go? I must have missed that.

While Ken Thompson's earlier B language no doubt had an influence on C, Dennis Ritchie is widely regarded as the creator of C, which is really rather different from B, borrowing more heavily from BCPL and Algol-68. As an early (and heavy) user of C (perhaps the earliest, besides Ritchie himself), I'm willing to concede that he had enough input on C's design to be called a co- designer or co-creator. But which other "inventor of C" played a role in the creation of Go?

I also find it hard to label Rob Pike as an expert in any kind of language design. An expert in windowing systems and concurrency, perhaps, but language design? Hell, no. Even his earlier design, Newsqueak, was more of an experiment in concurrency than in language design—and it notably was a collaboration with Luca Cardelli, an expert in ML and OOP who also worked on Modula-3, and whose influence can be seen in Modula-3's several very ML-like constructs. Articles like this one[1] by Pike only serve to reinforce my thoughts that he, though a rather smart guy otherwise, is really rather ignorant about language design and about the role of types in programming in general.

> _The Wirth languages ... had GC 's but also allowed manual management._

None of Wirth's languages had GC until Oberon, as far as I'm aware. And spiritual successors by other groups, like Object Pascal and Ada, never really picked up on GC, either (Ada had GC as an optional part of the standard, but was removed in the latest standard because it was so rarely provided by implementations). As far as I can tell, Modula-3 is the only other "Wirth- style" language to provide GC.

Modula-3 was indeed a great language, and I think it's a real shame that it didn't get picked up more widely. At a time, it had several really solid implementations, and the language's definition is very short while still providing a plethora of useful features for programmers. The silver lining is that it was, at least, a very influential language, despite its limited adoption.

Oberon, on the other hand, was a very spartan language that offered little in terms of features, and it exhibited that Wirth really didn't grok OOP at the time he designed it (which, if I recall correctly, is something he later admitted, though I'm having trouble finding a citation at the moment). Some of Oberon's issues were fixed in later versions of the language, but some of its issues were also "doubled down" in later versions, as well.

> _Another alternative was Delphi, which succeeded for a while. Way more > productive and crash-resilient than using VC++._

Delphi was indeed a real alternative for a while, and while you're right that it was more productive than VC++, that's not saying much. Later versions of Delphi grew to C++ levels of size, complexity, and hairiness, and that's reflected in Free Pascal's implementation, as well. It's something that I've lamented on more than one occasion because I remember how great it was and feel as though it could still be great with a bit of streamlining.

[1]: [https://commandcenter.blogspot.com/2012/06/less-is- exponenti...](https://commandcenter.blogspot.com/2012/06/less-is- exponentially-more.html)

<comment><USER9> > As far as I can tell, Modula-3 is the only other "Wirth-style" language to > provide GC.

Besides Oberon, there was Oberon-2, Active Oberon, Component Pascal, Zonnon, Modula-2+, Modula-3.

All of them with roots actually on the Xerox PARC workstation that used Mesa/Cedar.

<comment><USER13> Ah, cool. I wasn't thinking of Oberon-2 or Active Oberon as separate languages when I made that statement. I didn't know Modula-2+ had GC, and was unfamiliar with Component Pascal or Zonnon. Thanks!

<comment><USER12> Well, he kept changing them enough to break compatibility & even how you express concepts at times. Oberon is both a language and a name for a whole family of languages that represent his people's life-long experimentation with simple, language design.

Unlike Cardelli, his weren't ultra-practical but they did try with a commercialized one called Component Pascal. It got significant adoption for a Wirth language along with IDE. As usual, the BNF grammar is pretty small despite its expressive power. It kind of came and went far as adoption but people are still apparently posting to the forum in 2016.

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

[http://blackboxframework.org/index.php?cID=home,en- us](http://blackboxframework.org/index.php?cID=home,en-us)

<comment><USER13> Cool, thanks for the pointers :)

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> Looking forward to 1.0, and cant wait to see an implementation of Ruby in Crystal, going full circle.

It will still be CRuby, but the "C" is Crystal.

</comment><comment><USER15> Windows support is very important for all kinds of apps and libraries

<comment><USER4> I didn't 'play' yet with Crystal exactly for that reason: lack of Windows support.

edit: Windows 7

<comment><USER16> If you just want to play with it, and have windows 10, it runs fine in the Linux emulator thingy.

<comment><USER17> Having a hacky workaround isn't the same thing as first class support. Bash on Windows 10 is in my mind similar to resorting to Cygwin. No thanks. I despise Windows, but if you have an overbearing IT dept, that's your only option.

Edit* Just saw where you said "play"

</comment></comment></comment></comment><comment><USER18> How does Crystal handle concurrency?

<comment><USER19> Like Golang, using fibers & communicating via channels. I/O is also asynchronous similar to Node (using an event loop).

You can read more here: [https://crystal- lang.org/docs/guides/concurrency.html](https://crystal- lang.org/docs/guides/concurrency.html)

</comment></comment><comment><USER20> As stated elsewhere Crystal could become a big success if either * they compile to WebAssembly * they become official 'native ruby' (similar to cython) * they reduce compliation time to under half a minute (to become a template for other languages)

<comment><USER16> Compiling to web assembly should actually be quite easy, given llvm's support. The hard part will be porting the standard library to the environment wasm provides.

We're already well past the point where we could become "native ruby" and I'm glad of that. Ruby has quite a few warts, and I'm glad most of them haven't been copied by crystal.

Compilation times are already well under a minute for the whole of the crystal compiler itself. It was actually improved quite a bit on Linux in the latest crystal release.

</comment></comment><comment><USER21> This was very good but...

" _reach a point where breaking changes to the core of the language are down to a minimum_ "

I'm very afraid of the word _minimum_ in this context. This is why "no one was ever fired for picking Java".

<comment><USER16> I think that's a mistake in the article, we will follow semver after 1.0.0, and we definitely don't want a 2.0.0 less than two years after 1.0.0. I'm sure crystal will provide the same stability guarantees as go and rust.

<comment><USER21> My main concerns are development time and tooling. Crystal looks great and offers some great features that no other native-compiled languages really offer at this time (which is amazing) but I am the kind of person that needs first-class IDE support to take a look. I think crystal would be the perfect platform for some great software development.

Aside from tooling I need a guarantee that my code, if following all of the best practices, should be compilable from now till the foreseeable future.

</comment></comment></comment><comment><USER22> Wow. I like this. I already like Ruby, so I'm happy to see a language taking after and improving, adding more. This as opposed to "here's a bunch of new synataxes and conventions to keep straight!"

</comment><comment><USER23> Can it be used (in the future) to implement cross-platform desktop apps?

<comment><USER5> Not any more than several other languages, because as usual, the show stopper is the lack of decent cross-platform desktop GUI libraries.

There's QT, which is huge and unwieldily and not so good looking on OS X, GTK+ which is a mess on both Windows and OS X, wxWidgets (based on other libs), and a few fringe, and incomplete libs.

For one-platform apps, though, or a single backend for multiple platform UI frontends, it will do just fine, provided we get bindings for Cocoa, Windows UI libs, GTK etc.

<comment><USER16> But the problem here is not the suitability of languages themselves, the problem is the huge undertaking required to build a gui library which can compete with Qt, gtk etc.

Crystal at the very least has good support for binding C so maybe this will be the language which finally produces a modern gui toolkit, but with the move towards web apps its becoming increasingly unlikely.

<comment><USER5> > _But the problem here is not the suitability of languages themselves, the > problem is the huge undertaking required to build a gui library which can > compete with Qt, gtk etc._

Well, the whole Cocoa/QT/WinForms scope might be huge, but we don't even have good minimal UI libs -- e.g. with just the few basic widgets: buttons, text fields, labels, radio buttons, checkboxes, kind of what HTML forms can do -- and only very limited functionality (e.g. no fancy text formatting in the labels or whatever).

Tons of programs could be GUI-fied with just the above (sort of what Tk does, but decent looking).

<comment><USER16> Libui, which was on hn a while ago, looks like the basic minimal cross- platform gui library to me. And that's already got bindings to crystal.. I think most developers are searching for something more.

<comment><USER5> Yep, something exactly like that, with good documentation, and bindings for multiple languages, can go a very long way for lots of apps.</comment></comment></comment></comment></comment></comment>


The Hygienic Efficacy of Different Hand-Drying Methods: A Review of the Evidence - <AUTHOR> http://www.mayoclinicproceedings.org/article/S0025-6196(12)00393-X/fulltext

<comment><USER2> Short version: paper towels (avoid rough ones) are the most hygienic, evidence for electric driers is mixed, and shaking the hands dry may leave bacteria. Friction is "a key component in hand drying for removing contamination."

This is for a hospital context.

While I didn't like antibacterial soaps for evolutionary reasons, the article makes the entirely logical statement that "Antimicrobial agents in soaps have too little contact time to have bactericidal effects during a single use or with sporadic washings."</comment>


Bad WiFi - <AUTHOR> Hey guys,<p>Do you know why WiFi works so poorly? My biggest two problems are log ins over forwards, which of course do not work for https connections. And bad chosen WiFi access point, when two different WiFis with different SSIDs are in reach. Both problems seem to have possible work arounds and probably annoy a lot of people. Do you have the same problems? Do you know why that is? <comment><USER2> Bad chosen WiFi connection as in you have two saved choices and it automatically chooses the worse one?</comment>


Free will is back, and maybe we can measure it - <AUTHOR> http://aeon.co/magazine/philosophy/free-will-is-back-and-maybe-we-can-measure-it <comment><USER2> _We desperately need a new way of thinking about free will._

We really don't.

The author of the article has written off hundreds of years of philosophical debate about determinist free will versus indeterminism and decided that his interpretation of free will, which falls firmly in the causal indeterminism camp, is the right way to think about things. Admittedly that's the nice one, because determinism is _hard_ when it comes to things like ethics and morality, but we don't need to redefine 'free will' to have the discussion. Especially when it's a low redefinition[1].

The fact is whether or not we have free will is largely irrelevant. There's a really interesting Philosophy Bites podcast with Daniel Dennett about what's important in the free will question[2]. It's well worth a listen if you're interested in philosophical stuff.

[1] [http://www.fallacyfiles.org/redefine.html](http://www.fallacyfiles.org/redefine.html)

[2] [http://traffic.libsyn.com/philosophybites/Daniel_Dennett_on_...](http://traffic.libsyn.com/philosophybites/Daniel_Dennett_on_Free_Will_Worth_Wanting.mp3)

<comment><USER3> ISTM that the hundreds of years of debate comes from a unfortunate misunderstanding provoked by many centuries of religious thought: that to be free we need some kind of "soul" apart from physical reality. (The article mentions that)

But I don't fully understand why so many smart people, including non- believers, can't see the obvious: that determinism has nothing to do with free will. Free will is just a mechanism of finding a path between the set of natural forces operating inside our mind, including all the range of motivations, from basic instincts to sublimated aspirations.

The opposite to freedom is slavery, either from external circumstances or from own instincts that, in turn, is caused by external circumstances: arrested development, physiological defects or the mental illness.

So lack of freedom has causes and freedom has causes too (configuration of our brain and a favorable environment). The opposite of freedom is not "uncaused".

Requiring no determinism is one more example of the not true scottman fallacy. Or moving goal posts.

<comment><USER2> _that determinism has nothing to do with free will_

The theory goes that, on an atomic level, interactions between particles is a deterministic process - it's wholly and completely predictable because the outcome is determined by a knowable set of rules. Given the fact that our brains are just[1] a huge set of particles and chemical processes it should then follow that a perfect computer model of someone's brain would make the exact same decisions as that person.

In other words, we don't actually make any decisions for ourselves. It's all determined by chemistry.

If that's true then someone could argue that the path of their life was predetermined by the state of the universe at any given time, so the fact they shot their wife was actually nothing they could have had any control over, and it's very unfair to lock them away for 30 years if they couldn't have changed anything. It's just the latest outcome of a chemical reaction that started at the Big Bang.

It's actually a very compelling argument. The counter argument requires 'magic' in the form of something that we can control that can't be measured. That's a big ask for any rational scientist.

[1] Pretty huge 'just' there because it discounts God, souls, etc. Many people think that the brain isn't just atomic particles. But there's no evidence that they're right. We've cut brains up and looked.

<comment><USER4> Then by this logic one could argue, that locking them away for 30 years is not unfair because it is also predetermined by the state of the universe at this given time and there is nothing other people could do but to sentence the killer. Free will or no free will the argument goes both ways.

<comment><USER5> Exactly. I have never understood why people use determinism to excuse bad behaviour, but fail to see the resulting punishment is just as determined.

<comment><USER6> They don't fail to see it, they just object to calling it "fair".

<comment><USER5> If determinism is true then nothing (or everything) is "fair".

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> All discussions about free will are completely useless without first defining what exactly "free will" is. Is your definition of free will compatible with the assumption that the brain has to obey the laws of physics? Do you believe that free will is somehow magic?

<comment><USER8> In general, it's far from useless to investigate the nature of X before having a clear definition of X. Perhaps the definition will come as a result of the investigation. Perhaps there will never be a clear definition, but paradigm cases are easy to come by (that's arguably the case with free will).

</comment></comment><comment><USER9> "We must believe in free will — we have no choice." (Isaac Bashevis Singer)

</comment><comment><USER10> This article is complete nonsense.

Just because it looks like animals are solving problems doesn't mean they have free will, any more than humans solving problems means humans have free will.

There is no reason these things can't come about through a deterministic universe.

</comment><comment><USER11> I read the article about being less about free will and more about delayed gratification. Which seems ironic, since from a neural standpoint, can be one of the most addictive things possible.

Not really that compatible with free will in my view.

To slightly contradict myself, I don't think it's quite fair too say that the ability to wait for something can be an indicator of free will, since that characteristic can vary a lot, even among healthy adults. And describing some humans as having more free will than others appears very dangerous to me.

</comment><comment><USER12> So basically: The world is deterministic, so free will just means to be able to weigh options and delay gratification for a bit longer?

That's a sad definition in my book.

<comment><USER13> That depends on exactly what idea of determinism you have. If you mean something like phenomena can be described by the standard model, that's fine, but if it's something like local realism, that's been busted pretty hard. This might prove more interesting than the linked article, though it was on HN previously:

[http://www.nature.com/nature/journal/v409/n6822/full/409791a...](http://www.nature.com/nature/journal/v409/n6822/full/409791a0.html)

Local realism is the idea that objects have definite properties whether or not they are measured, and that measurements of these properties are not affected by events taking place sufficiently far away1.

[...]

Many experiments1, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 have since been done that are consistent with quantum mechanics and inconsistent with local realism. But these conclusions remain the subject of considerable interest and debate, and experiments are still being refined to overcome 'loopholes' that might allow a local realistic interpretation. Here we have measured correlations in the classical properties of massive entangled particles (9Be+ ions): these correlations violate a form of Bell's inequality. Our measured value of the appropriate Bell's 'signal' is 2.25 ± 0.03, whereas a value of 2 is the maximum allowed by local realistic theories of nature. In contrast to previous measurements with massive particles, this violation of Bell's inequality was obtained by use of a complete set of measurements. Moreover, the high detection efficiency of our apparatus eliminates the so-called 'detection' loophole.

<comment><USER14> The Many-Worlds interpretation of quantum mechanics is consistent with local realism.

<comment><USER15> What would happen if a particle measurement had a probability with irrational numbers (in every base)? What would the outcome be?

And I feel that MW would need a pilot wave that carries the information for every parallel possible outcome for entanglement to work, wherein certain pilot waves cause universe splits starting from the point where they overlap and others merge - if you measure the spin of two entangled particles you get two waves that meet where X+X and Y+Y don't interact, but X+Y and Y+X does and thus create new universes. I don't see how the wave-less versions hold up when there for example are orientation-dependent probability and a ton of other crap like that. What else makes the particles interact with exactly the right universe?

Edit: Not to mention how complex MW would have to be to explain the delayed quantum eraser experiment.

<comment><USER14> You're thoroughly confused about what MW is.

<comment><USER15> In what way? There's no one canonical MW either way, my version with growing parallel universe bubbles that merge or split is just my interpretation, as the other versions I've seen seem to be unable to address various issues

<comment><USER14> There is a canonical MW interpretation. The MW hypothesis is just that reality is the evolution of the Schrodinger PDE on a configuration space with no other modification such as pilot waves or collapse required. The math is really quite simple (this simplest of any QM interpretation). It doesn't have parallel universes or bubbles as fundamental objects.

<comment><USER15> And by what mechanics does that happen? How do the universe "know" which particles should behave how in delayed eraser experiments, for example? It just... Happens? How are the particles "separated" and "merged" (in lack of better terms) in the configuration space?

<comment><USER14> Particles are not fundamental, either, and thinking in classical terms will yield only confusion. You'll find a good non-technical introduction to the MW interpretation here: [http://lesswrong.com/lw/r5/the_quantum_physics_sequence/](http://lesswrong.com/lw/r5/the_quantum_physics_sequence/)

<comment><USER15> My basic justification for my interpretation: either entanglement of two photons makes all of spacetime branch out into two instantaneously (however that's represented in the configuration space - Pluto wouldn't wait for the event to enter its light cone to now diverge into two "branches");

Or every point in the universe is essentially an independent configuration space, linked in a kind of matrix, in which the fact that the photon we sent to Pluto had spin X on measurement propagates outwards back to us and upon reaching us causes our configuration space to react accordingly in two different branches. After all the knowledge couldn't be available to you before it came back. Functionally equivalent to my bubble description above, only the terminology differs. Or is the configuration space infinite to the degree that all possible future outcomes is accounted for and represented in every point at once already, practically making it into a growing complex infinite web of interactions when following the time line forwards?

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> Focusing on actual processes in the brain may be a more objective discussion than discussing "free will". For example, is the human brain driven by reinforcement learning? is dopamine part of the reward loop? how does curiosity fit in? Are there tipping point effects in neural networks? What about noise, or even quantum effects if you were trying to model and predict an outcome?

Regardless of one's position, that's an objective discussion with questions that can be tested, with useful results that could help develop a general AI.

Contrast that with a discussion about "free will", a suitcase word with numerous polarizing definitions. It's like walking into a minefield of bias and enmity. And frankly just as much strident opinion from "rationalists" as from the religious. And I ask, where is that going? What's the result such discussion is driving towards? Is the discussion really analyzing a real physical process in the brain or is this a values discussion masquerading as logic?

</comment><comment><USER9> Is he saying that because other animals also seem to exhibit free will, and because some humans appear to be more impulsive than others, that makes it possible without a "supernatural ability to transcend the laws of nature"?

Buried in the article, rather than in an introductory definition of the terms used, is the line:

"for some, a really free will is one that is not determined by anything – one that stands outside the causal chains of nature. Such a person might feel cheated when offered instead a set of capacities that we share (to a degree) with cats and chickens."

Surely there's nothing at all novel here. We've long known that other animals have varying degrees of autonomy.

I also don't think that any determinists would argue (or even ever have argued) against the existence of this kind of free will. Just that it is only free if you also accept that Bertrand Russell's table is "oblong, brown and shiny, to the touch it is smooth and cool and hard", and choose to go no deeper.

</comment><comment><USER17> Free will is how a decision-choosing algorithm feels from inside. Not much more to it, IMO.

When a decision-choosing algorithm says "I can't predict my own decisions, therefore they must be unpredictable in principle", that strikes me as unfounded.

<comment><USER18> Free will is a scalar dimension along which decision choosing algorithms can vary.

With high free will, human can adapt, customize, and innovate situationally optimized responses to an unpredictable environment. With low free will, a Sphex wasp can reactively activate one of its stored patterns and use very little expensive cognitive processing to react optimally in a predictable environment.

</comment></comment><comment><USER19> Once you have a grasp of the fundamental mechanisms of the universe(cause/effect, logic, etc) you quickly see that certain, socially- defined terms are irreconcilable with the facts of reality. Namely they, the three major and thorny ones, are ideas of God or gods, supernatural phenomenon and ideas of free will.

These three ideas just don't fit with the facts. If an entity was powerful enough to create everything, what created IT? If supernatural phenomenon were real, why isn't there solid evidence of its existence, and if it exists on a plane beyond the material then how could it ever affect the material plane we inhabit? Finally, if you accept that the universe follows certain predictable, immutable laws then you must agree that with enough information any future or past state could be predicted or recreated. Humans and their minds live within the constraints of this physical universe, thus any potential future state of mind or behavior could be predicted from the previous state(s) that human was in. All moments arise from the moments before them. There is absolutely no gap there to shimmy in ideas of "free will". I was born at a certain time, place and in a certain community. I had no choice there, but the die was cast and everything I ever become will be constrained by those facts. I will never be able to magically pull myself out of this causal chain.

I would like to add one more thing, to counteract the possible easy pessimism that a realization like this could have on an individual. One day I realized that ghosts weren't real. As a child, this was a burden lifted from my shoulders, as I could rest easier knowing no unpredictable and unfathomable force was going to accost me as I slept. One day I realized that there was no God. I suddenly felt freer than ever, and less self-conscious in solitude. I don't live every day in anxiety about the "lack" of these two delusions. It happened once more with free will. I realized all things belong to a causal chain possibly extending into infinity, and I was just a pattern at the tail end of this chain in time. I suddenly felt more compassionate for every other human, lodged as they are in their station . You and I can't help what we have become, what we came from or what we will be. Even knowing this, I live intentionally, not drowning in a sea of slavish fatalism, but instead with the keen knowledge that I too belong to the causal chain, and that through evolutionary machinations, my mind can suspend disbelief and still feel it is directing the future toward a desired state.

The paradox is difficult to rest in, but it has given me a powerful tool, another paradoxical belief, that I can control my future by knowing that I simply arise from what has past.

<comment><USER20> > These three ideas just don't fit with the facts. If an entity was powerful > enough to create everything, what created IT?

That's exactly the same argument as "what happened before big bang created time and space".

The right argument is "big bang theory requires less assumptions than God, and gives better predictions, so let's use it (until we find even better theory)".

> Finally, if you accept that the universe follows certain predictable, > immutable laws then you must agree that with enough information any future > or past state could be predicted or recreated

According to our best understanding these laws have random generator in them, so for example we cannot predict exactly when a radioactive decay of an atom will happen. And it's not because our lack of knowledge, that uncertainity is a state of universe, it's inherent to the quantum mechanics. At best we can calculate the probability distribution.</comment></comment>


Ask HN: Locked out of Google Aps email with no recourse - advice? - <AUTHOR>

I've been locked out of my Google Apps email for over 24 hrs due to "suspicious activity". I am the admin of the domain so "contacting my admin" is of no help. Filled Contact Us form and spoke to customer support lady who is unfortunately clueless and cannot help me at all.
Terrible experience for such a mission-critical service.
Anyone has suggestions on how to deal with this to restore access?
PS: I did not sent out any spam or do anything that goes against their ToS. Just a loyal customer for 7 years doing normal day to day emailing. <comment><USER2> Email is a critical communication channel. Don't put up with this sort of crap from any company. If you control your domain and have capability to modify records. Buy mail service from another provider and redirect MX record to new service. And if you can estimate approximate value lost due to this action and you are in U.S., send a bill to Google, file a small court claim against Google if unpaid for 30 days.

<comment><AUTHOR> I totally agree with you for the medium term. My challenge right now is that I don't have access to the DNS records and migrating to a new email service will take days/weeks.

<comment><USER2> Migrating to new email service doesn't take days/weeks, at best a few hours as long as you were prepared with existing email aliases (catch all can help minimize the missing aliases) and configuration and access.

In the short term, you are at the mercy of Google. Next time you want to avoid similar fiasco, when you purchase any service from a vendor, please consider the whole offering from sales to support. If you don't see a quick resolution pathway for situations when shit hits the fan, walk away from those vendors.

Personally, I have never bought or recommended others to purchase any "paid" services from Google. They are incapable of and not setup for providing enterprise level product, service and support.

<comment><USER3> How long it takes to switch services depends on how long you have your TTL set on your MX records. If he set it to expire after days or weeks, it would take days or weeks to switch services. Usually the default is a much lower value, but there are some legitimate reasons to want a high TTL (It could help mitigate a domain hijacking for example).

</comment></comment></comment></comment><comment><USER4> Probably not what you want to hear, but I'd avoid Google for any mission critical things, and any business model that relies on Google products for revenue (YouTube, AdMob, AdSense). Their automated "fraud detection" algorithms frequently have false positives and ban innocent users, without chance to appeal and have recourse. Terrible customer service.

</comment><comment><USER5> Have you tried this : [https://support.google.com/a/answer/33561?hl=en](https://support.google.com/a/answer/33561?hl=en)

<comment><AUTHOR> Yes. I enter my credentials and it says my account is suspended.

</comment></comment><comment><USER6> Were you on the free or the paid plan? I am guessing if you were on the paid plan, you would have more recourse?

<comment><AUTHOR> Unfortunately it's the same deal for free and paid.

<comment><USER6> You didn't answer the question.</comment></comment></comment>


Selling their home to keep their small businesses alive - <AUTHOR> http://www.cnn.com/2009/LIVING/02/05/economic.survivor3/index.html?eref=rss_topstories <comment><USER2> Already posted: <http://news.ycombinator.com/item?id=468379></comment>


The Detectives who Watched the Elite Prostitutes of 18th Century Paris - <AUTHOR> http://www.slate.com/articles/news_and_politics/history/2014/04/elite_prostitutes_in_18th_century_paris_and_the_detectives_who_watched_their.single.html

<comment><AUTHOR> Full title: "The Elite Prostitutes of 18th Century Paris, and the Detectives who Watched their Every Move"

Although there's a salacious aspect here, it's fundamentally about the relation between State and society, and how a government uses surveillance as a way to make the world legible and as an instrument of social control.

Example:

 _Eighteenth-century Parisians overstated the extent of surveillance, perhaps because they did not really understand its purpose. By the late 1740s, the police were no longer collecting information in order to investigate criminals or even to anticipate problems. As French police scholar Vincent Milliot argues, by spying on Parisians, the police were literally incorporating them, putting those outside the hierarchy into a special group—the spied upon—for which the police provided oversight. More generally, however, the police were gathering information just to gather information, endeavoring to make the city visible to its government. Intelligence gathering had it own momentum.

So what of kept women? If they were hurling epithets against the king, plotting sedition, consorting with enemies of the state, and secretly converting to Protestantism, the police never indicated. They were not a threat to men who hired them, even socially. Rather, like the_ gens sans aveu _, the police kept track of them as part of the effort to provide oversight to a group that naturally had none._</comment>


Project Jengo Celebrates One Year Anniversary by Releasing Prior Art - <AUTHOR> https://blog.cloudflare.com/project-jengo-celebrates-one-year-anniversary/ <comment><USER2> > After Blackbird filed a lawsuit against Cloudflare alleging infringement of > a vague and overly-broad patent ('335 Patent), we launched Project Jengo, > which offered a reward to people who submitted prior art that could be used > to invalidate any of Blackbird's patents.

That is positively awesome. Thank you CF, wish more companies engaged in actively fighting back against the patent trolls.</comment>


Wonderful Python3 Library for working with webpages' semantic content - <AUTHOR> https://newspaper.readthedocs.io/en/latest/ <comment><USER2> I've been looking for a python library to replace boilerpipe in java and stumbled across this one the other week. Does anyone have experience in comparing results?

<comment><USER3> Newspaper for the most part "just works", and when it doesn't it doesn't do much except provide you with the source so you can munge it and try again. (It also seems to work well for non-English languages, though I've only tried it against Spanish.)

Boilerpipe provides a lot more knobs and things to tweak the output. There are a lot more extractors than the basics that Newspaper provides.

Newspaper will give you the basics. Article content, titles, some metadata.

Boilerpipe let's you make a turn-key solution for particular sets of sites, which can be more or less helpful depending on where you want to use it.

Lastly... Newspaper isn't the fastest thing in the world. It does tend to have high accuracy for article extraction, but it tends to be slow.

</comment></comment><comment><USER4> Thanks for posting this - I spent most of today kicking around idea of an instapaper-style webpage parser, and came to the conclusion that I probably didn't have time to do it well.</comment>


Cleveland Financial Stress Index: A Tool for Monitoring Financial Stability - T-A https://www.clevelandfed.org/en/our-research/indicators-and-data/cleveland-financial-stress-index/interactive-chart.aspx <comment> T-A Now at Grade 4 ("Significant stress period"), associated with greater than 50% chance of a "Systemic Stress Episode" according to [1]. Previous events: LTCM rescue, Bear Sterns collapse and Lehman Brothers failure.

[1] [https://www.clevelandfed.org/newsroom-and- events/publication...](https://www.clevelandfed.org/newsroom-and- events/publications/economic-commentary/2012-economic- commentaries/ec-201204-the-cleveland-financial-stress-index-a-tool-for- monitoring-financial-stability.aspx)

</comment><comment><AUTHOR> Odd that the 2000 stock market bust doesn't show up...

<comment><USER2> IIRC, that had surprisingly little impact on the overall economy.</comment></comment>


Fun.js – Just a sketch - <AUTHOR> http://blog.fogus.me/2013/06/06/fun-js-just-a-sketch/

<comment><USER2> A lot of these examples are wrong...

        function double(n) { return 2*n; }
        map(double, [1,2,3])
        //=> [1, 4, 9]

should be => [2, 4, 6]

        function greaterThan(l, r) {
          return l > r;
        }
        greaterThan(5, 100);
        //=> true

should be => false

        maybeGT(5)(10000000);
        //=> false

Based on your earlier declaration of greaterThan this result is actually correct. The curried application ordering is also correct and flip is unneeded.

        schonfinkel(function(a1,a2) {return [a1,a2];})(1)(2);
        //=> [1, 2]

I would proofread the rest but I am about to be late for class! =O

Edit: since i'm going to complain I might as well say something nice as well. I did like this article example correctness aside, and I hadn't seen that implementation of pipeline before! Much awesome. =)

<comment><USER2> Actually, I think the original intent regarding greater than was:

        greaterThan(100, 5);
        //=> true

That is, l is greater than r, and to then properly curry the arguments _do_ need to be flipped such that maybeGT(5) results in a function that returns whether the argument is greater than 5.

<comment><USER3> Exactly right. We like to be able to do something like:

        var gtThreshold = gt(100);

And then:

        filter(gtThreshold, array);

This is nicely fluent I would say.

</comment></comment></comment><comment><USER4> Some questions from JS novice:

Why map isn't implemented:

        function map(fun, coll) {
          if (exists(coll)) return _map(fun)(coll);
          return _map(fun);
        }

Why use _arguments_ when you can name your parameter in declaration?

And why __ma_ p is defined in global scope? Shouldn't it be better defined inside _map_ function? What are up/downsides in performance for this move?

</comment><comment><USER5> Sorry to nitpick, but I got hung up right at the beginning with his "truthy" function.

It returns true on values such as NaN, zero, or an empty string. I don't think I'm alone in considering those to be "falsy" values, for example:

<http://www.sitepoint.com/javascript-truthy-falsy/>

<comment><USER3> Technically the are JS falsey, but I choose not to treat them that way. I rarely want to treat the result of a calculation as a boolean condition. However, I often want to know if a calculation isNaN or isEmpty. Just because something is falsey doesn't mean it should be treated that way universally.

<comment><USER5> Right on, I get that, but truthy(NaN) and truthy(5) both return true, so you still don't know if the calculation isNaN.

Btw, I should have said first: I love the article in general and it's great to see these techniques becoming more mainstream in javascript. Thank you!

<comment><USER3> I would probably structure the problem like this:

        var ans = someCalculation(x,y);

        if (truthy(ans) && !isNaN(ans))
          //do something
        else
          //do something else

The point being I like to dispatch conditions on boolean results of certain properties of my results rather than the result directly. It helps me to keep my sanity.

Thanks for the kind words BTW. :-)

</comment></comment></comment></comment><comment><USER6> Very interesting post but I'm having trouble with one thing. pipeline(5) returns 5. When I try to follow that path, I get to this: reduce(function(l,r) { return r(l); }, seed, funs) with seed=5 and funs=[] (an empty array). How does that reduction evaluate to 5? In other words, what is "r(l)" when l=5 and r=the first member of an empty array?

<comment><USER3> In reduce the accumulator starts as the seed and is changed in the forEach for each elem. Since there are so elems (funs) the accumulator never changes and returns as the value of seed (5).

<comment><USER6> Of course. Shoulda seen that. ;) forEach on an empty collection returns immediately. Thanks.

</comment></comment></comment><comment><USER7> Just a note - forEach doesn't work in IE8. I wonder at what point can we stop caring about that?

<comment><USER8> there are shims - the MDN one works well, or you can download this library to shim the whole of ES5 [https://github.com/kriskowal/es5-shim](https://github.com/kriskowal/es5-shim) (other libraries are availble)

Focusing on modern browsers and shimming the old ones is the way to go, IMHO

</comment></comment><comment><USER9> What would you say are the skills required to fully understand this?

<comment><USER10> Possibly not too high. Try using map, filter, and reduce on some example problems and you'll pick it up fairly quickly. Project Euler makes for decent fodder. When you've successfully managed to apply them then try rewriting the functions (delete the implementation you are using - such as the library above - and rewrite it from scratch).

<comment><USER11> I wouldn't recommend Project Euler - it's math-based and that would be a roundabout way of learning anything else but math.

Here's my recommendation: [http://www.haskell.org/haskellwiki/H-99:_Ninety- Nine_Haskell...](http://www.haskell.org/haskellwiki/H-99:_Ninety- Nine_Haskell_Problems)

</comment></comment></comment><comment><USER12> Good read, nice intro into functional programming. Thanks!</comment>


New APIs to power customer engagement in Direct Messages - <AUTHOR> https://blog.twitter.com/2017/new-apis-to-power-the-future-of-customer-engagement-in-direct-messages <comment><USER3> A big history lesson and a big WARNING for anyone who is thinking of building anything with Twitter's APIs. Once this company, long ago, encouraged developers to use their APIs to build products and utilities.

Developers heeded the call and flocked to the company's APIs. They built new clients and innovative solutions to make Twitter truly useful. Twitter grew fast with the developer's help and the developer's themselves did well. Many raised millions of dollars in VC funding to make vibrant companies around the Twitter ecosystem. Things were going well.

Then Twitter became greedy. Twitter decided to destroy the very companies that grew Twitter's user base. They changed their TOS monthly outlawing various product categories. They banned clients. They put restrictive quotas on their APIs to starve out companies so they could reap their revenue for themselves. Hundreds of products fell. Millions of developer hours were lost. The Twitter ecosystem shrank and so did Twitter's user growth.

So if you're thinking about building anything with this company then be warned. If anything you've built is remotely popular, then it is only a matter of time before they come to pillage whatever you've built.

<comment><USER4> Twitter also did something that I find particularly interesting: they somehow convinced developers that you needed them to bless your app and provide APIs to build a client that accesses their service, even though those credentials must be distributed _to the public with your client_. To people like me who are old enough to have dealt with AOL, the idea that developers are willing to buy into this fiction is absolutely insane: if the official Twitter client can do it, then so can your client, and there is nothing Twitter can do to stop you that doesn't also break their client (which they are generally _less_ willing to do than change their API on short notice!).

As far as I can tell the only thing that enforces this is what should amount to an antitrust level of collusion between the mega-companies to restrict access to products (via services such as the Apple App Store) that do things that the other mega-companies dislike, as it is in all of their best interests to maintain this same fiction. The reality is that client-side API keys are totally meaningless and make no sense: in an attempt to believe they make sense some developers then start to believe other crazy things like "if I compile a token into my program other people can't read it as it is compiled" or to insist "there must be some way to encrypt my binary to make sure that other people can't get my API key", but this kind of broken thought only happens due to a broken premise :/.

(That said, it isn't 100% clear to me that if someone released a true Twitter client Apple would remove it, so if someone disagrees with that premise I am all ears: that is simply the only theoretical mechanism I can see that would seem to enforce this, and I feel like I have heard of this happening before, but AFAIK the random apps in the App Store for abusing Tindr are all based on reverse engineering the true API for the service, but it is also possible that Apple cares less about helping Tindr or that Tindr has a different internal mentality and culture surrounding this kind of thing; or it could even be the case that these now have been removed and I haven't noticed yet as I don't really pay much attention to track them, or even that I am wrong and they are somehow more indirect in their implementation.)

<comment><USER5> > As far as I can tell the only thing that enforces this is what should amount > to an antitrust level of collusion between the mega-companies to restrict > access to products (via services such as the Apple App Store) that do things > that the other mega-companies dislike

Actually, at least in the US you could be having legal problems... you're circumventing access controls, which may or may not be a "hacking crime". Also, by using the Twitter API you consent to its Terms and Conditions, so they have legal grounds to sue you (for example via trademark law; you most likely will advertise that your app supports Twitter login, but then Twitter can sue you as you advertise Twitter compatibility while violating their T&C).

It's IIRC never been tested in court so it remains an effective FUD, even without the Apple/Google store banhammer.

<comment><USER4> Where would someone even see these terms of service unless they have already bought into the fiction? The terms of service on usage of the official Twitter client could apply (saying you can't reverse engineer it), but if you are reverse engineering something for straightforward interoperability there is a lot of precedent, including for extremely similar services (such as the AOL Instant Messenger Client); I think they would be hard pressed to do anything more than ban you, just you personally, from Twitter.

<comment><USER5> It's the US government I'd be afraid of. Other governments even extradite people like Kim Schmitz into the US, who never even set foot into the US, for copyright infringement. Their justification is "he had used US servers".

Who says that this cannot be done with a 3rd party client developer? The precedent is there, circumstances may be seen similar, all it needs is a clueless DA and judge and boom you have a load of problems on your head.

</comment></comment></comment></comment></comment><comment><USER6> Who really trusts Twitter at this point for anything developer related?

Not just talking about their API. Twitter never knew what they were doing, and that used to be fine, but the difference now is people finally figured out that Twitter doesn't know what they're doing.

They keep releasing all these new features that are all over the place (AND worse than before). They should really stop, step back, and think about only a few core fundamental problems and work on those instead.

<comment><USER7> Thanks for the feedback. Can you be specific about the API features that you're referring to that are "all over the place"?

I'm personally really excited about this, and this is probably the most cohesive a strategy I've seen for the API platform. We're very focused on fundamentals right now.

<comment><USER8> One really obvious one: Polls.

Polls were introduced in October 2015. There is _still_ no public API to create them, view them, or vote in them -- for users using third-party clients, polls are simply invisible.

<comment><USER7> That's frustrating, I realise. It's probably the most common feature I'm asked about regularly (alongside group Direct Messages). Polls are complicated to add, as there are three aspects (creating, voting, and then seeing the results), and they depend on cards, which are also not currently part of the API. It would be good if we at least added the information that a poll is attached to a Tweet to the Tweet JSON object, even if we can't do all the other things right away. I'd suggest keeping an eye on the roadmap for where we're going, but can't promise those things right now.

</comment></comment></comment></comment><comment><USER9> As someone who uses Twitter's APIs heavily, this is both encouraging, and slightly terrifying.

We draw down a lot of data from Twitter. Obviously, we always want more data, so we got in contact with GNIP to see what we could afford (which, in itself took a long time). As it turns out its incredibly expensive, and as a very early startup, we couldn't afford any of their plans. We had no option but to fall back to their standard, free APIs and make do.

There are plenty of people who would happily pay good amounts of money for access to more Twitter data - there really are a million uses for it - <USER2> Twitter's current prices are far too high for anything other than a VC funded Silicon Valley startup to afford. I hate to think how many potential startups and cool projects have been killed off instantly simply because Twitter's prices are insane. You can get real-time global stock market tick data for a year for less than Twitter charge per month for access to the decahose.

So, I'm glad to see Twitter being more open about their future plans, and really happy to see they're moving towards a more self-service paid API for those than want and can afford it. I just hope they make it affordable and don't kill off too much in the process. The last thing they need is to upset a lot of developers, again.

Twitter's API has always been something they've not leveraged enough. All they had to do was keep it open, find a way of serving adds through 3rd party clients, and I suspect there would have been an explosion of good clients that could have made Twitter much easier to use for people who just can't figure Twitter out. Twitter shouldn't be complicated, but it is, and by trying to hold onto the brand as tightly as they have, they've prevented good developers from making easy to use clients that could have brought in users.

I really want Twitter to succeed. I hope this is the start of a turnaround for Twitter.

<comment><USER10> In the market for Twitter data that we were in at ScraperWiki, it wasn't the price per Tweet that was too much, but the minimum spend and the difficulty of getting access to the data at all.

[https://scraperwiki.com/2014/08/the-story-of-getting- twitter...](https://scraperwiki.com/2014/08/the-story-of-getting-twitter-data- and-its-missing-middle/)

That aside, our treatment as potential partners was really bad. There just wasn't a process for new ideas to be brought to Twitter management attention. I wouldn't risk using their API for a business again.

</comment></comment><comment><USER11> This is a good move, in a series of good moves recently, by the slowly- becoming-irrelevant service.

I _want_ to get excited by this API change, I really do. But I can't help but quash my own shower-thoughts about what I could do with this API, because what's to say they let their 3rd-party devs down again?[0]

[0] - [http://www.theverge.com/2012/8/23/3263481/twitter-api- third-...](http://www.theverge.com/2012/8/23/3263481/twitter-api-third-party- developers)

</comment><comment><USER12> They're aiming for the young or the forgetful developer, I assume? Twitter shutting down the APIs a few years ago wasn't generally considered the best way to get commitment from application developers.

<comment><USER7> "shutting down the APIs" \- you mean, requiring authentication and adding rate-limiting? which meant that we could get on top of the fail whale and control platform stability?

The APIs have been open and usable all the time.

<comment><USER13> Maybe he meant adding arbitrary token count limits out of the blue that forced countless 3rd party apps to close shop once they became successful? Or the fact that new features like polls are absent in the public APIs, years after they have been introduced?

I'm sure you're very excited about these new APIs for #brand #engagement, but don't pretend that Twitter has been a great steward of its public API over the last few years.

<comment><USER7> I'm not pretending - I've been responsible for the public-facing APIs (since 2014). We've launched mute, accessibility text for images, multi image and video upload, etc etc. We haven't added every single feature, but we've done what we have done in a very methodical and careful way that ensures platform stability. Polls are a complicated issue because they depend on cards, which are also not currently part of the API. By publishing a roadmap for the first time, we're providing visibility into what's coming. Thanks for the feedback!

<comment><USER13> In retrospect, my words were probably a bit harsh, sorry about that Andy. It's never a nice feeling having one's hard work shittalked by strangers on the Internet.

A roadmap is definitely highly appreciated. Something I'd love to hear from Twitter is a definitive statement on 3rd party clients: are they a welcome and supported part of the Twitter platform, or is their existence a historical accident that have no role in the strategy going forward?

(I'm aware that such a statement is probably not in Twitter's interest to make, but one can have dreams, right?)

</comment></comment></comment></comment></comment><comment><USER14> Fool me once, shame on you. Fool me twice? No thanks.

</comment><comment><USER15> >These APIs are designed to help businesses use the entire Twitter platform

If the only focus is on "customer experiences", why would I want to use this network as a regular user? I don't want endless brands and marketing.

</comment><comment><USER16> More features for SMM and similar "almost spam" activities. I miss days when I was able to post tweets by simple curl command and third-party clients for reading Twitter were not banned.

</comment><comment><USER17> I'm a little confused about this: I see there are better DM apis which I guess is the big push here, but what is interesting to me is the new activity webhook api.

Does that mean that a 3rd-party app will need a server to handle activity notifications to replicate what twitter does on their activity page?

</comment><comment><USER18> Until they increase their API rate limits, this change is next to useless.

<comment><USER7> We increased the rate limits for a range of the API endpoints in the fall last year, in fact. The updates we announced today should also offer more and better data to developers as they scale.

<comment><USER19> You still cannot release a twitter client that doesn't get maxed at 100,000 users. Why bother implementing ideas when it will probably meet with the same problem due to our success.

<comment><USER7> Well, the platform is not just about client apps, people use Twitter's data and features for all kinds of things. You're welcome to build on the platform if you've got a good idea.

<comment><USER19> Well, my good idea was a client app, so no, I'm (and I suspect a good group of other) not welcome anymore.

Frankly, it should be a lot more about client apps and new ways to use the information in a personal manner instead of creating an API that looks for all the world like something I can use to automate my support staff on twitter and fire a bunch of people.

</comment></comment></comment></comment></comment><comment><USER20> Two things I really want:

* Tweet count on a URL

* Read a tweet feed without auth

Also - the HN title is super misleading. The actual title is: "New APIs to power the future of customer engagement in Direct Messages".

</comment><comment><USER21> Fool me once, shame on me. Fool me twice...

<comment><USER22> ...

...

Can't get fooled again.

</comment></comment><comment><USER23> It would be a good thing if, with this announcement, Twitter made a commitment for how this would have a support for the future.

Like "this will be available for x months/years, you can make x requests per minute/hour/day, you can buy a plan offering x for $x dollars" and so on.

Yes, that can limit some better offer in the future? Perhaps. But that make things more stable, and people would commit more to twitter.

Can you change your terms in the future? Of course. But for newer customers. The ones that sign up right now will have that promises kept. Good for everybody.

<comment><USER7> That's a really good piece of feedback that I'll be sure to pass along. In terms of plans and pricing, we're not yet announcing those details, but stay tuned as the new APIs we reference in the two blog posts today mature. We'll continue to offer free access to the APIs as well.

<comment><USER24> Will the free Search API have lower rate limits than they are currently?

<comment><USER7> I cannot say definitively, but I don't believe there are plans to _lower_ any limits. Additionally, given that the existing standard Search API has not been significantly enhanced in several years and the replacement is going to be based on the enterprise offerings, I'd expect the quality of the data to be a lot better than what you receive on the search endpoint today.

</comment></comment></comment></comment><comment><USER25> I really hope Twitter goes bankrupt and we all switch to an open alternative. That, or become an NGO.

</comment><comment><USER26> Ah, customer service at Twitter had a good run. Back to the bots!

</comment><comment><USER27> Yeah, thanks, but no thanks.

</comment><comment><USER28> Regarding Twitter's history of killing APIs and 3rd-party dev; is there a bulletproof approach to setting up such an API/service with the guarantee that it will not be killed/ruined, short of business closure? A one-sided contract, so-to-speak?

</comment><comment><USER29> We're deprecating a legacy OpenID connect implementation and rebuilding the entire user onboarding experience. Part of this requires rebuilding the authentication layer. This is the first time I used their APIs. Instead of sticking with the heard, twitter decided to stick to their OAuth1 implementation instead of adopting the standard today - OpenID. What's worse is that they've come with the ingenious OAuth Echo, which requires you to ship your mobile applications credentials embedded in the code, virtually public to anyone who decides to poke around.

</comment><comment><USER30> Omitting the obvious remarks on Twitter and APIs, this is clearly a good move. Most companies have a twitter handle and the public has already absorbed that fact, so it just seems more natural to offer a bot through twitter DM service than, let's say, telegram. I wonder what took them so long, considering that bots have also been natural to the twitter ecosystem for many years.

This can increase their growth and possibly, if a company bot goes over their future non specified limits, they can cash in. Sorry, could not help myself :)

</comment><comment><USER31> Bummer that it's all webhooks. They're pretty fragile. It'd be much nicer if Twitter had some kind of streaming API that you could connect to with a sequence number and get any messages that you might have missed, or at least any that they still have.

Basically, Kafka over Websockets would be ideal.

<comment><USER7> In the early stages where we are now, we're finding the new architecture pretty robust. There's an acknowledgement back on our side with webhooks responses, so we can build features that ensure your apps never miss an activity.

</comment></comment><comment><USER5> Hey, looks like it will finally be possible to send pictures in DMs from 3rd party clients... can someone please confirm?

<comment><USER8> I wouldn't hold my breath. It's entirely possible that the new DM APIs will be restricted to approved clients or accounts.

</comment></comment><comment><USER32> Twitter's swan song?

</comment><comment><USER33> I'm sure this API will be great news to those people who are harassed with hate speech every time they use Twitter. Since Twitter has an economic incentive to ignore that problem (if they do fix it, then their "user engagement" takes a nosedive) I don't think their future is particularly rosy.</comment>


Barnes & Noble treats Nook Color to Froyo; unveils Nook Apps - <AUTHOR> http://www.zdnet.com/blog/gadgetreviews/barnes-noble-treats-nook-color-to-froyo-unveils-nook-apps/23904 <comment><USER2> Early reports suggest almost 3 million NC's sold in four months[1]. That would mean a run rate of at least 6 million per year. That is astonishing for a brick and mortar retailer with no consumer electronics background. The very attractive price point (could drop under $200) and decent ergonimics (lightweight 7") would mean NC could end up taking a major chunk of the light browsing/reading/email/ebook-reader market.

1\. Amazon now _has_ to bring out a tablet running Android. It is only a matter of time before the NC drops to under $200 and then people start buying the NC instead of Kindle. While rooting the NC is easy, if you check the downloads of the images, I would say less than 15% end up actively rooting. So that means no Kindle app on NC.

2\. Apple now has to figure out alternate uses for the iPad since they are going to get disrupted on the browsing/email/ebook-reader category. I don't even know if they can bring out a 7" iPad (current investments in 10" and maybe even hardware optimized for 10"). Looks like they are trying to repurpose the iPad into a gaming device. In any case, they can't be happy with the rapid rise of NC. Strangely B&N is the only company which has a lower supply chain cost than Apple in the tablet market -- they own retail, they don't have to do any OS development, they don't have to put out the latest hardware.

1\. <http://news.cnet.com/8301-17938_105-20048052-1.html>

<comment><USER3> Curious as to how you see B&N having lower supply chain cost than Apple? Apple is making 15M+ ipads, their unit costs on chips etc are going to be lower, B&N still has to source and develop the hardware for NC

<comment><USER2> Few things. kenjackson alluded to them

1\. NC is using older generation parts (ex. their SoC is OMAP3621 which is at least two generations behind). This is off the shelf from Texas instruments who own the entire supply chain in design and foundry. Look at all the products using this technology -- <http://en.wikipedia.org/wiki/Texas_Instruments_OMAP#OMAP3> \-- now you are looking at pretty decent volume and per unit cost.

2\. 6 million vs 15.4 is not very meaningful in per unit cost difference since both volumes are pretty huge. This is not accounting for the fact that other companies could be using this SoC. Also, Apple does custom design for thier own products so Samsung cannot sell off their chips to someone else. So Apple has to invest in design and all the associated costs in the development and obsolescense of the chips. Given the tight margins it is not surprising Apple buys gross manufacturing capacity below forecasts and let shortages occur.

</comment></comment></comment><comment><USER4> Congratulation to Barnes & Nobles. They are one of the few brick and mortar retailers that was able to embrace the Internet age instead of fighting or ignoring it. Their agility would make a great business school case study.

<comment><USER5> Are we talking about the same store?[0]

[0][http://finance.yahoo.com/q/bc?s=BKS&t=1y&l=on&z=...](http://finance.yahoo.com/q/bc?s=BKS&t=1y&l=on&z=m&q=l&c=)

<comment><USER4> They finally started making money again last quarter: <http://finance.yahoo.com/q/is?s=BKS>

They also managed to survive while Border's went broke: [http://finance.yahoo.com/q/bc?s=BKS&t=6m&l=on&z=...](http://finance.yahoo.com/q/bc?s=BKS&t=6m&l=on&z=m&q=l&c=BGP)

The stock is so beaten down because when Borders started to fall over it looked like book stores were all going to die one by one just like the brick and mortar music stores did.

</comment></comment></comment><comment><USER6> Developer program docs, such as they are, here: <https://nookdeveloper.barnesandnoble.com/>

That gets you access to the SDK. Access to the store is a messier deal. I've found brief summary docs, and a pointer to the application, in two places:

[http://nookdeveloper.zendesk.com/entries/20009311-qualify- as...](http://nookdeveloper.zendesk.com/entries/20009311-qualify-as-a-nook- app-developer) <https://nookdeveloper.barnesandnoble.com/nook-app-dev.html>

Requirements for being a developer include at least a U.S. bank account and Tax ID#; the questionnaire also wants you to say why you're serious, and what other platforms you've already shipped on. (Having an app and wanting to sell it doesn't prove that you're serious enough?)

Royalty terms are given in the press release at 70% of the sale price, but I'm still looking for the page that explains whether that's after discounts (and if so, by how much), and explains the other terms and conditions.

</comment><comment><USER7> You still need a rooted version to access the Android app store (and probably always will since they won't want people buying this to install other eReader apps). It's a shame they need a whole new app store mainly to prevent access to a handful of apps.

<comment><USER8> The nook lacks hardware features (a camera, at least) that google requires for a device to qualify for google branding and google apps including android market.

<comment><USER9> I thought tablets had exceptions to those rules?

<comment><USER8> The rules are based on the OS version. There are some differences for 3.0, but in this case 2.1/2.2 doesn't officially support tablets at all so there weren't any exceptions. Froyo did require a camera, and the four android buttons - I don't think the nook has those either.

</comment></comment></comment></comment><comment><USER10> Just curious, anyone have experience using a rooted nook as a primary tablet?

<comment><USER11> I do, and while you have to assume every statement I make has a silent "for the price" catted to the end, I am really at awe with it and now use it much more than my iPad 1.

The smaller form factor really shines for reading ebooks, email, and cool feed readers like pulse. It's super responsive for all 2D tasks (reading, movies, games like Angry Birds) and you can hold it in one hand for extended periods unlike the iPad, which gets a little fatiguing after a half-hour or so.

The eMail and gmail apps are great, Dolphin Browser HD and Firefox are good alternatives to the standard browser in Gingerbread, and it Tweets well enough. Youtube app plays well. Flash mobile is... well, it's flash on a mobile device (warts and all). Load all fantastic flash ads on demand!

The processor is sporty (not fast), that is unless/until you root it and overclock it. I've got CPU governor set to "performance" and have it set at 600 MHz minimum and 1.1 GHz max. That said, Angry Birds ad-free plays silky smooth; with ads, it's a slog, but that's with almost any android device I've seen aside from my dual-core, nVidia-powered Atrix 4G phone. The overclocking produces no more heat or detrimental effects that I can perceive, so I believe they underpower the CPU by default.

The Omap SoC has a decent graphics card that can play, for example, Backbreaker Football in 3D without any jitter and few (if any) dropped frames at all. It runs quadrant (synthetic benchmark) at an overall score of 2100+ and a 26.4 fps on neocore.

It's a daily driver for me. The screen is great, it's super portable yet more substantial than a smartphone (especially for reading/surfing), and I've been actually reading more now than ever (split between nook's app and the kindle app).

<comment><USER12> How's battery life to be used the way you use it?

<comment><USER11> I can get through an entire weekend day of playing games, getting myself lost in wikipedia, and reading/surfing/youtubing before it gets to about 30% left. I'd say it lasts maybe 6-7 hours between recharges with heavy use. If you turn off wifi and crank down the brightness of the screen, you can pull off more, but I rock wifi always-on when I'm at home.

Standby drains about 10-12% battery in a 24 hour period I reckon.

</comment></comment></comment></comment><comment><USER13> I'm not sure I like the whole "updates will be pushed to WiFi conncted Nooks" thing. However, given the way the NookColor recovers from failed boots (by restoring the system from a couple of ROM-"protected" zip files), there is at least a mechanism in place to do a remote full-system update in a sane way.

Even with Froyo, I'm still looking to turn mine into a non-Android tablet. (Or perhaps a hybrid...?) Especially since it's so easy to run a system from the μSD card. $250 toy indeed. Yet so well-built for the price.

</comment><comment><USER14> Nook has had froyo for some time, just not officially

<http://www.cyanogenmod.com/devices/nook-color>

</comment><comment><USER15> So let me get this straight -- I assume the Nook Color has a backlit LCD display instead of e-paper?

Does this mean that manufacturers are giving up on e-paper already (after years of telling us it was _so_ much easier to read than a backlit screen)? I must say that I've spent a lot of time staring at my old-school Nook by now and I'm not really convinced that it's any easier to read than an iPad screen.

<comment><USER16> It depends on what the lighting conditions are. I couldn't read my Nook e-ink display with a 60-watt light bulb (text wasn't dark enough / background too silver). Apparently the newer e-ink display on the latest Kindle is better. But on the flip side I have a hard time with the Nook Color outside in the sunlight -- for that the e-ink works better. Also, the e-ink is good for a few weeks, instead of 8 hours.

<comment><USER17> I wonder how those hybrid screens (like the Pixel QI screen) work? Until someone cracks the nut of building a color screen with the same fidelity as e-ink, that hybrid approach seems like a really good idea.

</comment></comment></comment><comment><USER18> This is great news. It's now the cheapest tablet on the market (that doesn't have atrocious build quality).

<comment><USER19> I played with a Nook Color and with an iPad 2 at Best Buy last weekend. The Nook felt like it was _worth_ approximately half an iPad, which is about how it's priced.

Granted, that's a great niche to be in. My reservations: it had a weak speaker, it felt a bit bendy, and it didn't seem to rotate the screen too often when I switched from horizontal to vertical orientation. I don't think its software was designed to rotate as often as iOS does. I can definitely see having one of these around the house to hack on but it's got flaws.

<comment><USER11> _"My reservations: it had a weak speaker, it felt a bit bendy, and it didn't seem to rotate the screen too often when I switched from horizontal to vertical orientation."_

The speaker is positioned in the rear and it pushes sound away. I'm sure they did that for aesthetic (decluttered front bezel) and functional (no worrying about getting schmutz in the speaker grill) reasons. But, yeah, that causes distant, disembodied sound.

I find my Nook Color solidly built for the price. The nice glass screen (I use an anti-glare screen protector to use it outside) is super-responsive almost to a fault. The plastic bezel is solid and finished well and doesn't seem to flex or pop when I hold it. The back plastic has a really grippy rubber coating that makes it nice to hold in one hand, as well. I think if they were to iterate, they should do away with the front plastic bezel and rock a total glass front, but I give it nice marks. I'd certainly consider paying up to 100 more for it and not be dissatisfied.

About rotation, I think it's Apple's use of transitional animation that makes it _feel_ like it's more responsive and, thus, more "accustomed" to it. The NC has the same accelerometer chip as the Xoom, so I think if you perceive any lag, it could be in the redrawing of the screen.

That said, if you'd ever buy one, forgo all the installed software, root the device, and put a version of Cyanogenmod 7 (2.3 Gingerbread) on it. I use phiredrop 6. Stable as a table, full Android Market (and Amazon, btw), and youtube in fullscreen and flash in the browser.

<comment><USER20> Weird, I have had the opposite experience re: touch screen responsiveness. Difficulty turning pages, multiple "clicks" to get a button to work, etc.

Being the owner of both an iPad and a rooted Nook Color, there's a pretty large quality gap between the two. That's not to say the NC is terrible -- the NC is actually a serious value buy -- but it's a testament to the competitive advantage that Apple has over everyone else in the tablet market.

<comment><USER21> I have the same problems with touch responsiveness. It takes often takes multiple hits on the edge of the screen to get the page to turn.

</comment></comment></comment></comment></comment><comment><USER12> Too bad the original nook is still stuck to an obsolete version for that is the one with paper screen that may compete more with kindle ( i have one of those and I regret buying it btw)

</comment><comment><USER22> I just took a look at the FAQ for Nook Color, and I have to admit I'm a little disappointed at the battery characteristics:

Only 8 hours to a charge.

Takes 3-4 hours to recharge.

No USB Charging.

</comment><comment><USER23> this is great to see. pandora while you read anyone?

</comment><comment><USER24> Yet ANOTHER Android app store? Gimme a break. How many is it now? I've lost count.

<comment><USER25> Its three. Crows can count that much.

<comment><USER24> When you need a count of app stores, don't ask a crow.

Let's see there's ... Amazon, Barnes and Noble, Android Marketplace, GetJar, various device manufacturers (Lenovo, Motorola, General Mobile), and various phone companies around the world. [http://royal.pingdom.com/2010/12/30/the- ongoing-mess-of-andr...](http://royal.pingdom.com/2010/12/30/the-ongoing-mess- of-android%E2%80%99s-app-store-fragmentation/)

There's probably at least a dozen, if not more.

<comment><USER26> How many stores can you purchase Windows or Mac software from? That towers over the Android stores. Why should mobile be different?

<comment><USER24> Actually there's a massive difference. I'm not forced to buy software only from Dell just because I bought a Dell computer, or only from Verizon just because Verizon provides my Internet access. Or join the "HP Developer Program" and download the "HP SDK" just so I can sell my Windows app through the "HP App store" to someone using an HP laptop.

If all the app stores were just stores competing on a level playing field it would be a good thing, but they're obviously not. Most of these are not real "stores", they are schemes for extorting money from users and developers by _removing_ (not enhancing) their ability to choose.

<comment><USER27> Uh you can sideload apps there Paco. Just like on Windows and Mac. All the Android app stores are purely optional.</comment></comment></comment></comment></comment></comment>


Reverse engineering the Intel FSP: A Primer - <AUTHOR> https://puri.sm/posts/primer-to-reverse-engineering-intel-fsp/ <comment><USER2> I found the odd mix of GNU/AT&T and Intel syntax a little disorienting --- especially all the '%', which the author starts out using in the text but then decides to just suddenly stop using halfway through.

The flowchart view is _extremely_ useful, and from my experience of having taught an Asm class before, in which students were required to do both compilation and decompilation, creating such a graphical representation of the program flow really helps to clarify when going from C to Asm and vice-versa. Lacking software to do it automatically, printing out the code and drawing lines works reasonably well.

That "challenge" function should puzzle anyone who knows even the slightest bit of Asm --- not because of its purpose, but because of how it does it. Subtracting one number and then adding another, is entirely equivalent to adding their sum; so that could be simplified to:

        call $+5
        pop eax
        sub eax, 5
        sub eax, [eax-15]
        ret

The "call $+5/pop" idiom for "where am I" is also used a lot in packers, so those who have such experience with unpacking will recognise it too. Look at enough Asm (particularly compiler output, but I doubt that example was generated by one) and you'll start to pick up on small inefficiencies/stupidities like this; it really tends to dampen your belief in how optimising compilers actually are in practice. ;-)

</comment><comment><USER3> Nice but come on, pages and pages about what is a stack but not even a word about what this "Intel FSP" is supposed to be?

[http://www.intel.com/FSP](http://www.intel.com/FSP)

Apparently it's their (closed) cpu initialization code that you are free to take and reuse if you're creating a new device using Intel cpus.

<comment><USER4> Yes that is weird for a technical write up not to mention what FSP stands for. I was expecting it on the first sentence.

<comment><USER5> FSP is a TLA for an API using Intel ISA code implemented on CPU with support for BIOS used in some RTOS systems.

<comment><USER6> Eh. 2/5\. Your sentence is quite comprehensible and doesn't answer the question for reasons completely unrelated to acronyms. ("an interface" and vague ideas about what it runs on don't tell you what something is)

<comment><USER5> Admittedly weak. As other commenters — I have strong distaste for writing that doesn't define widely unknown acronymns on first use.

</comment></comment></comment></comment></comment><comment><USER7> Just for reference, here is what the Hex-Rays decompiler produces for the function in question:

[https://ghostbin.com/paste/jpeh5](https://ghostbin.com/paste/jpeh5)

Not as readable or semantically meaningful as the author's manually decompiled version, but pretty decent.

So if you think x86 assembly sounds really arcane, you should know that you're not strictly required to learn it to start experimenting with reverse engineering: you can start with a decompiler, which is all you need in most cases, and gradually learn how its output corresponds to assembly (which is still necessary to deal with in harder cases). Hex-Rays is the only decompiler I know that doesn't suck, and you _are_ required to fork out high sums to get a legitimate copy of it… but it's easy enough to find a non-legitimate copy to start out with.

Personally, even though I have a fair amount of experience with reverse engineering at the assembly level, I find that using the decompiler lets me understand the "big picture" of a function's purpose much more quickly. Maybe I just need even more experience, and I'd be able to work just as fast from assembly… but I don't think so. I'd rather write my own decompiler to handle the stuff that Hex-Rays doesn't.

<comment><USER8> > _... you should know that you 're not strictly required to learn it to start > experimenting with reverse engineering ..._

+1. The only assembly I ever learned was some 6502 assembly many, many years ago, and I didn't even learn that very well. But that didn't prevent me from later figuring out how to "crack" a bunch of BBS door games (with SoftICE for DOS) as a teenager. Hell, I'm not even a real programmer, and I was successful in bypassing the license protections on a (Linux) binary from Cisco a few years ago (although, ultimately, that was just NOP'ing out a "jump") using IDA Pro. That took me maybe 30 minutes to do. Thanks, +Fravia! [0]

I am very far from an expert on this stuff but I think that getting started is waaaay easier than people believe.

(N.B.: IDA Pro runs on Windows but even works on (Linux) ELF binaries.)

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

<comment><USER9> The newest versions of IDA Pro run on Linux and OS X as well.

<comment><USER10> And its bloody expensive for hobbyist usage [1]. 5.0 is free for non- commercial use but lacks all the features from 6.x and 7.x including Linux and macOS port.

[1] [https://www.hex-rays.com/cgi-bin/quote.cgi](https://www.hex-rays.com/cgi- bin/quote.cgi)

<comment><USER8> Use 5.0 to reverse engineer 7.x and bypass the licensing? :)

</comment></comment></comment></comment></comment><comment><USER11> _because the compiler knows that the structure is located exactly 0x1AB bytes before the current function_

This should be 0xF bytes before the current function, shouldn't it? I liked it.</comment>