Offer HN: Ask Siri Anything - <AUTHOR>

As an engineer I was curious about how Apple's new iPhone assistant Siri works and what it can and can't do. I upgraded to a 4S and I wanted to offer the chance to play with Siri to anyone on Hacker News.<p>Post a query and I'll ask Siri on your behalf and transcribe the results. I'll also note when the server has issues, or when I have to make corrections. Other questions are fair game as well, and anyone with Siri access is welcome to chime in. I should be around much of this evening (PST). <comment><USER2> Do you worry about a robot invasion?

<comment><AUTHOR> "Do you worry about a robot invasion" Siri: I've never really thought about it.

[I believe this is a generic 'non answer' to various questions]

<comment><USER2> How would you say it compares to something like Eliza? It sounds quite similar, with a number of predefined trigger words.

<comment><USER3> Siri: "Do you know Eliza? She was my first teacher!" [http://1876.voxcdn.com/wp- content/uploads/2011/10/siri_weird...](http://1876.voxcdn.com/wp- content/uploads/2011/10/siri_weird_verge10.jpg) (from [https://thisismynext.com/2011/10/12/siri-weird-things- iphone...](https://thisismynext.com/2011/10/12/siri-weird-things-iphone-4s/))

<comment><AUTHOR> Also apparently: "Who is Eliza" Siri: Eliza is my good friend. She was a brilliant psychiatrist, but she's retired now.

They really appreciate their roots, as seen in "Can you sing a song" Siri: "Daisy, Daisy, give me your answer do..." which is the first song sung by an AI also made famous in the 2001: A Space Odyssey scene. "Do you know HAL 9000" Siri: "Everyopne knows what happened to HAL. I'd rather not talk about it. But if you insist: (Search the web for HAL)"</comment></comment></comment></comment></comment>


Learning from Kaggle masters - <AUTHOR> http://blog.kaggle.com/2014/08/01/learning-from-the-best/ <comment><USER2> I still feel that Kaggle is the 99designs of data science, basically it is a way to get spec work for cheap because fun > money.

In some ways it is devaluing the profession.

I would be shocked to see someone actually making a good living by US standards just from Kaggle.

</comment><comment><USER3> Great read. I would like to see a breakdown of earnings by some of the top Kagglers. Is anyone doing this as a full time job or is it almost entirely supplemental?

</comment><comment><USER4> ...and if you'd like to work with Kaggle Masters: www.kaggle.com/careers

</comment><comment><USER5> With no disrespect intended, I have to say that "Kaggle" reminds me way too much of the name of a certain female exercise.</comment>


Ditch Google Forms: Try This Free Survey Tool - <AUTHOR> http://www.vizir.co/ <comment><USER2> Don't give Google your data, instead give it to us!

But seriously, I'm not seeing what the benefits are of using this? Also their privacy page has no English version so I'm going to pass anyways.</comment>


Kansas-born woman told birth certificate not proof of citizenship for passport - <AUTHOR> https://www.kctv5.com/news/kansas-woman-told-birth-certificate-wasn-t-enough-to-prove/article_144c19aa-b50f-11e8-94f5-6b921312a97a.html <comment><USER3> This appears to be part of the broader effort to make citizenship conditional for many more Americans.

The current state of that effort allows for ethnically disparate impacts ( latino populations were less likely to be born in a hospital, so their birth certificates are more open to challenge ) and due to that disparate impact also serve as a form of vote suppression.

But do not fool yourself into thinking it's not bad. The normalization of stripping citizenship creates a corrupt practice that is very tempting to authoritarians.

<comment><USER4> It does make me wonder if shit like this will be the force driving society away from nation-states to Neal Stephenson-style corporate franchising [1] or phyles [2]. When it happens to one person, it's a tragedy for them. When it happens to a lot of people, it's a very large market opportunity - <USER2> the security, legal, and currency services that the state no longer offers.

This doesn't detract from your point about it being tempting to authoritarians - this is basically recreating feudalism with modern technology. But it is interesting that denying citizenship actually _weakens_ the state, by creating a power & leadership vacuum that some other institution can step into.

[1] [https://en.wikipedia.org/wiki/Snow_Crash#Background](https://en.wikipedia.org/wiki/Snow_Crash#Background)

[2] [https://en.wikipedia.org/wiki/The_Diamond_Age#Phyles](https://en.wikipedia.org/wiki/The_Diamond_Age#Phyles)

<comment><USER5> Phyles primarily based on shared values honestly seem more sensible than nation-states primarily based on geography (although of course these may overlap). The latter often seems to lead to the 51% being the decision makers which leaves the 49% unhappy.

</comment></comment></comment><comment><USER6> Somewhat off-topic, it depresses me that passport requirements are so ingrained. Wikipedia:

        > ...up to World War I, passports were not required, on the whole, for travel
        > within Europe, and crossing a border was a relatively straightforward
        > procedure...
        > During World War I, European governments introduced border passport
        > requirements for security reasons, and to control the emigration of people
        > with useful skills. These controls remained in place after the war, becoming
        > a standard, though controversial, procedure. British tourists of the 1920s
        > complained, especially about attached photographs and physical descriptions,
        > which they considered led to a "nasty dehumanization"

<comment><USER7> Europe for travel within the Schengen Zone has at least been moving back in the right direction of no papers required for travel. Meanwhile, in North America and the Caribbean it was perfectly normal to be able to travel around with no passport up until just a decade or so ago.

I remember being able to go to visit Canada from the USA with nothing more than someone asking if you if you are a US citizen.

That freedom to travel is yet another right that was thrown out the door because of 9/11 via the "Western Hemisphere Travel Initiative" [1] which would be more aptly named the "Western Hemisphere Restriction of Travel Initiative"

Sad.

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

<comment><USER8> Just because you don't need a passport doesn't mean you can travel without unambiguously identifying yourself in Schengen. It amounts to the same thing. It doesn't matter what identity paperwork you show if it includes your full name, dob, and a biometric photo.

Try boarding a plane for a domestic flight even inside of one Schengen country without these things and see how far you get.

<comment><USER9> I traveled a few time within the Schengen space. I was never asked to show any identity document.

</comment></comment></comment></comment><comment><USER10> As someone who was born in the US at home and had a delayed birth certificate, stuff like this worries me. I live overseas at the moment, and if the US one day decides to not grant me a passport renewal, what happens? Am I not allowed to return home?

I understand not allowing things like baptism certificates or non-government recognized birth certificates, but a certificate issued by the state should never be able to be revoked.

<comment><USER11> You already have the passport. You are right to worry about aggressive misapplication of policy and an unabashedly nativist administration enabling it potentially causing some bureaucratic problem. Even a very unpleasant problem. You're not going to end up in a situation where you are 'not allowed to return home', though.

<comment><USER12> _You already have the passport._

Unless I'm misreading, the person you replied to said, "if the US one day decides to not grant me a passport renewal".

<comment><USER11> Any country that's not actually trying to arrest you or otherwise detain you and where your residence and travel documents have expired will happily put you in touch with a US Consulate and have you shipped home. Edward Snowden (just as a really extreme example) can probably be on plane to the US in 24 hours, should he choose to, revoked passport and all.

Your passport is not your citizenship status. It's the latter that grants you rights and those rights are very difficult to lose. And you can be repatriated with an expired passport (or no passport).

</comment></comment></comment></comment><comment><USER13> This seems like government working well. An overzealous governmental employee denies a valid document, for whatever confused or malicious reason. Denied person contacts their congress representative. The congress rep gets the issue fixed.

You can't stop random things going wrong in the government bureaucracy, especially due to the human factor. If this is, however, indicative of a general trend of decertification, that is a problem.

<comment><USER14> >>This seems like government working well. An overzealous governmental employee denies a valid document, for whatever confused or malicious reason. Denied person contacts their congress representative. The congress rep gets the issue fixed.<<

Not really. Seems a bit overkill to have to contact your congress representative to fix a problem like this that never should've been an issue. In fact, it seems that the government is starting to become a bit overzealous.

Without knowing the statistics of how often stuff like this happens over the years it is hard to tell. Although I did read an article stating that the government was ramping up this sort of thing [1]. To me it looks like a very dangerous trend. Start with just a few cases like this and then ramp it up little by little. Somebody seems to be boiling the frog slowly.

[1] [https://www.washingtonpost.com/world/the_americas/us-is- deny...](https://www.washingtonpost.com/world/the_americas/us-is-denying- passports-to-americans-along-the-border-throwing-their-citizenship-into- question/2018/08/29/1d630e84-a0da-11e8-a3dd-2a1991f075d5_story.html?noredirect=on&utm_term=.30b7c1dadc85)

<comment><USER15> It's kind of like needing to have your post to Hacker News be sufficiently upvoted to get you Google account reinstated, no?

</comment></comment></comment><comment><USER16> This reminds me of bureaucracy in India. As a foreign-born Indian I tried to get an OCI (Overseas Citizen of India) which is akin to a lifetime visa nowadays.

As part of the documentation they eventually required my father's birth certificate (since he surrendered his original passport). The city did manage to find his records even though he was born near the time of the partition/independence.

However, they required a letter from his birth parents who were long since deceased. They just didn't have the logic in their system to understand this was a possibility and know what to do.

</comment><comment><USER17> This has been a requirement for some years now.

"Local" birth certificates, or for example baptismal certificates cannot be used as I.D. for some years. Their authenticity cannot be verified.

<comment><USER18> According to the article there is no stated policy or rule about that, do you have a source?

<comment><USER19> OT: I followed the link to the rules given in the article. While there I ended up on the page that gives rules for passport photos, since I need to get around to getting one to renew my passport.

One of the rules (added in late 2016) is that you cannot wear glasses in the photo. However, if "[...] you cannot remove your glasses for medical reasons, please include a signed note from your doctor with application".

I've never heard of nor can can hypothesize a medical condition that would not let you remove your glasses while sitting or standing still for a photo. Anyone have some examples?

<comment><USER20> If you needed them {temporarily,permanently} for some medical condition that rendered your eyes extremely sensitive to certain kinds of light, including, say, a flashbulb.

I was trying to think of any other reason than photosensitivity, but that's all that comes to mind.

</comment></comment></comment></comment><comment><USER21> Content unavailable due to GDPR. Any mirrors are welcome.

<comment><USER22> From outline: [https://outline.com/RP7Kaw](https://outline.com/RP7Kaw)

</comment></comment><comment><USER23> The problems of decertification are only beginning to be seen & felt. This is a slumbering monster.

<comment><USER24> F'n Miller

<comment><USER23> ???</comment></comment></comment>


Microservices – Check Size Before Ordering - <AUTHOR> http://blog.jenkster.com/2018/07/microservices-check-size.html <comment><USER2> Our shop adopted microservices, and it's just about the biggest time-sink I've ever seen: about 4x more code than necessary. There was no identifiable organizational need for them; our team is both too small, and the authority flow here is not well-suited for cross-sharing of services. Don't ignore Conway's Law. Technology alone can't force groups to coordinate/share, they have to accept it first.

The newbies and Pointy-Haired Bosses fell for it because big vendors are pushing for it. I suspect they want you to get used to them so they can rent you every little service they can dream up. So, they sell it as Magic Legos, hoping each Lego block becomes a billable block. Instead, we have Legos glued to pasta.

Don't be a sucker, tread with care.</comment>


OpenVim: Learn Vim in Your Browser - <AUTHOR> http://www.openvim.com/ <comment><USER2> vimtutor was all it took for me and didn't take that long. Yes, it takes about 30 minutes to get through, but I used it off and on as a refresher as I was getting more accustomed to using vim. Here I am half a year later I do almost all of my text editing using GVim. My advice would be to gradually ease into the advanced commands and plugins and not to immediately try and fix every problem you come across where vim doesn't behave like you would expect coming from other editors.

<comment><USER3> I found that vimemu's graphical tutorial cheatsheets were a great, incremental way to get accustomed vim bindings. I can't speak to how accurate they are to the "real" vi/vim, but they've helped me get used to Sublime's vintage mode.

There are 7 "lessons". I just printed them out and stuck a new one in front of my keyboard every week or so.

[http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial...](http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html)

<comment><USER4> Okay, that is immensely helpful. It would be useful if there was an on-screen keyboard that looked like that for OpenVim.

</comment></comment></comment><comment><USER5> How is this supposed to help anyone exactly? Many commands simply don't work (^ or $ to name just two). People: skip this and use vim's :help.

<comment><USER6> Author here. Sorry about that. I didn't mean that this should get into the wild this fast.

I fixed the link (I had renamed Bitbucket repository).

Also, it is not supposed to cover the whole of Vim. Just enough to get you started without getting scared away immediately.

Also, thanks for the $ (it should work mostly but I haven't covered all the different browsers; try alt-gr+4)

<comment><USER7> ^ is also a handy shortcut, and usually more useful for programmers than 0. It goes to the first non-whitespace character in a line.

<comment><USER8> I use _ for that. It's easier to type (at least in spanish keyboards).

</comment></comment></comment></comment><comment><USER9> I love the concept but have two gripes.

1) the text "line in" for reading comes in too slow. I want the whole text up on the screen in a flash so I can concentrate on reading. I usually either find I'm faster than the "line in" animation _OR_ the line in is too distracting to read around.

2) with respect to the tutorials, at the end of each section I should have all the new commands "unlocked" so I can `h` `j` `k` `l` until I'm 100% comfortable with what each key does.

<comment><USER6> Thanks for the feedback.

1) you can press any key to show rest of the text quickly. (not exactly on a flash always)

2) I considered adding a sandbox view on the same page so that user could make herself comfortable but decided against it, as I wanted to keep things simple. So this kind of restricted command set in the actual tutorial might be a nice solution; I haven't done it yet since it makes the flow non-linear; I might make the tutorial more interactive in other aspects, but it needs still thinking. Good point, anyway.

</comment></comment><comment><USER10> Nice, despite all the nay saying, it's a good and low barrier intro to what always had me wondering, what's so special about vim and the two modes?

Good job.

<comment><USER11> You mean, why is modal special? Vim has multiple modes to make it easier to perform certain sets of operations. The commands for insertion of text are separated from the command for manipulating the text. It's been years since I've used vim but it certainly does make aspects of a keyboard driven editor easier on the hands than emacs does.

</comment></comment><comment><USER12> For those who would like to try emacs in their browser, there is ymacs, a emacs like editor implemented in javascript. It's not specifically a tutorial, but it's good enough to try out the basics.

<http://www.ymacs.org/demo/>

<comment><USER13> IMO this is only justified if downloading the 40mb of emacs is taking a long time :)

</comment></comment><comment><USER14> The "vim hero" idea you mentioned - similar to this? <http://vimgolf.com/>

<comment><USER6> Not exactly but it's one thing that was on the todo list; so now I don't need to implement that :)

vimhero would be a single player game for practicing constantly progressing challenges; of course, the idea might just not work.

</comment></comment><comment><USER15> I am now near ten years of daily vim usage, maybe I am not like the others but I still _do not use_ hjkl to move around. I do not think hjkl should be in a first place of an introduction to Vim for coders. Instead, I would explain about / ? * # > < and :s, which are the basic for editing code.

<comment><USER6> Thanks for the list of commands you find valuable. * and # are supported but not in the tutorial yet.

</comment></comment><comment><USER16> Not everything does work properly with non qwerty keyboards: for instance '0' doesn't work in the sandbox for an be-latin keyboard (tough it works in the tutorial), tough I suppose it doesn't work for every keyboard that need press the maj key to produce a number.

</comment><comment><USER17> I had to turn of Firefox's Find As You Type to make it work, but well worth it!

I have gone so far as to FTP files to myself to edit on a more familiar editor, then FTP'd them back to the target machine rather than use vi, so it's high time I internalized the basics.

</comment><comment><USER18> I keep triggering vimium (Chrome) commands.. :)

But yeah this is nice. I consider myself proficient with vim and use it daily for a year but I'd like to try such a tool for other editors. Say TextMate in Ruby mode or emacs..

</comment><comment><USER19> It's not working for me on Chrome Stable 14.0.835.186 m. The report bug link gives me a 404.

Looks like it works fine on Firefox 6.0.2, though.

<comment><USER6> I fixed the report bug link. Thanks!

</comment></comment><comment><USER20> I was just looking for something like this the other day. Good timing.

<comment><USER21> Same here, I am finally forcing my head into vim. I always knew that it was a good investment, but always stopped on the hjkl lesson.

<comment><USER6> This is heartening to hear. This kind of reception makes it all worthwhile.

</comment></comment></comment><comment><USER22> I found it great, except part 2 of the tutorial is kinda missing.

</comment><comment><USER23> Wow. This is really helpful. I have always wanted to learn vim.

</comment><comment><USER24> Does anyone else have problems with Vim on AZERTY keyboards? It's really annoying that I have to hold shift to enter numbers.

</comment><comment><USER25> This is a great start point for anyone wanting to learn vim!</comment>


Show HN: Leviathan, a Clojure IDE for MacOS - <AUTHOR> https://github.com/sdegutis/Leviathan <comment><USER2> 4 years since last commit and at version 0.0 - not likely to be relevant to that many.

<comment><AUTHOR> It may not necessarily be in active development, but it's a project I'm very proud of. It's a legitimate text editor built from the ground-up in Objective-C including its own parser and lexer, and the ability to read theme configuration files. I'm very happy with it and I think it stands on its own as an interesting project.</comment></comment>


In A Down Economy, Startups Rise From Coworking  - <AUTHOR> http://mediabullseye.com/mb/2009/01/in-a-down-economy-startups-ris.html

<comment><AUTHOR> Has anyone worked from another coworking environment in a different city? I wrote about betahouse, as it's the only one I know here in the Boston area, but if there are others, I'd love to hear about what people have thought of them. Thanks.

</comment><comment><USER2> There are also a lot of weekend Hackers who have full time jobs during the work week. Does anyone know if there are weekend cowork programs out there?</comment>


Where can I buy custom motherboard size with custom specs? - <AUTHOR> Is there any place where you can order a custom size motherboard with custom specs (number of USB ports etc)? I am willing to build a custom PC where size matters (~25x10x25 cm, somewhat related to the size of a Nintendo Wii 1st generation). Thanks in advanced! <comment><USER2> If you volume is large enough (probably 10s of thousands) you can get an ODM to design and ship something for you..

Please note redesigning a motherboard is a MAJOR task costing many man-months of time..

If you don't want to buy thousands of boards, then probably no. (p.s. I do not work in the industry but am an avid amateur so I have some graps of the associated work)..

</comment><comment><USER3> There is standard stuff for this. When you search the internet, be sure to include "embedded" in your search terms.

Personally, I've worked with PC/104 sized systems. These are stackable. We needed a Linux box running on Intel for a project, with up to 16 serial ports. This is all possible with PC/104 based systems.

<comment><AUTHOR> Thanks. I tried this, must most embedded boards I find are usually weak in specs. I am looking for something capable of running 16-32GB of RAM, a powerful processor >= 2.8-3.2GHZ which I believe this is not the idea of a embedded board. Or am I wrong? Also, I would like something that I can easily, say, swap RAM when needed, and etc.

</comment></comment><comment><USER4> 25x10x25 doesn't sound like you'd need a custom size board for that - miniITX- based PCs fit in cases that size. Or canibalize a NUC or other mini-PC, depending on your needs.

<comment><AUTHOR> Aren't miniITX-based PCs low on specs? Say, not currently supporting say up to 16GB of ram and so on?

<comment><USER4> No, that's not true.

<comment><AUTHOR> Thanks. Will do some research on it.</comment></comment></comment></comment>


World's Largest Space Telescope Is Complete, Expected to Launch in 2018 - <AUTHOR> http://www.space.com/34593-james-webb-space-telescope-complete-2018-launch.html?utm_source=notification <comment><USER2> _Then, it will be moved to Texas, where its focus will be tested, and then to California for some final assembly. The testing is particularly high-stakes, because unlike Hubble, which was repaired and refocused in orbit by astronauts, this telescope is not intended to be repaired by humans._

Glad they learned something from the Hubble debacle, where it was not ground correctly and they didn't bother to do an end to end test before launch. "Refocused" also really doesn't described the fix, it was more like adding eyeglasses to the optical path to mitigate the problem.</comment>


Ask HN: Those of you with HFA, what helped you master everyday life? - <AUTHOR> <comment> chupa-chups HFA = High-functioning autism

[https://en.wikipedia.org/wiki/High- functioning_autism](https://en.wikipedia.org/wiki/High-functioning_autism)

<comment><AUTHOR> Which (for me) also includes asperger and PDD-NOS</comment></comment>


The myth of the Lisp genius - <AUTHOR> http://www.johndcook.com/blog/2011/04/26/the-myth-of-the-lisp-genius/ <comment><USER2> The myth is also bolstered by some of greatest book on the craft of programming ever written:

      * The Structure and Interpretation of Computer Programs
      * Paradigms of Artificial Intelligence
      * Art of the Metaobject Protocol
      * The Schemer Series (Little, Seasoned, Reasoned)
      * Essentials of Programming Languages
      * Lisp in Small Pieces

Few programming languages have such an abundance of truly deep gems. One has to wonder if there's a reason.

<comment><USER3> I don't think this argument stands. There are just as many great C books out there:

      * C Programming Language - by K&R
      * The Indispensable Guide to C with Engineering Applications - by Paul Davies
      * C Interfaces and Implementations - by David Hanson
      * A Retargetable C Compiler: Design and Implementation - by David Hanson
      * Graphics Programming Black Book - by Abrash with lots of Quake goodies

<comment><USER4> I don't understand why people keep citing K&R as a great book. It's a fairly mediocre introduction to C programming. Harbison and Steele is much more useful IMO.

<comment><USER5> I found K&R a difficult slog. It could have had twice as much explanation text.

</comment></comment></comment></comment><comment><USER6> [Meta] What is it about Lisp that makes it the subject of so many blog posts by people who almost certainly don't use it on a day to day basis? Is it some sort of insecurity about their current environment? Is it just a go to topic when you can't think of anything better? Why don't Haskell and Erlang attract the same attention, though both make big claims too (e.g. the type system makes programs correct, the actor model solves concurrency...)

Lisp has some unique features. Some people like them, and feel more productive using them. Other people don't, and prefer other languages. Can we move on now?

<comment><USER7> Have you noticed how many articles are about C around here? As I said in another thread, there's too many benefits to discussing C/Lisp/Git: strong opinions (thus, traffic), karma, and illusory in-group status.

If we want to fix Hacker News, we need a way to stop these sorts of karmic feedback loops from setting themselves up, because they are echo chambers.

(Also, it'd be nice if bloggers didn't measure post success by traffic, but we all know that isn't going to change.)

<comment><USER8> How would you prefer bloggers to measure success? I assume that most writers would measure success in readership, influence, or money. Traffic seems pretty close to readership. Influence is harder to measure, but generally the more readers, the more influence. And money from a website is generally proportional to traffic.

<comment><USER7> Well, I'd wish they'd measure it by the quality of their writing and the discussion it generates instead of hits. But it's up to them how to measure success.

I'm only concerned with how that perception of success affects HN. Presently, it's too easy for bloggers to choose to discuss A Most Excellent Technology in the hopes of making the front page. The actual writing may not make any points beyond, "vim changed my life!" but, still, it's put on the front page by the bikeshedding committee, thus perpetuating the feedback loop. You may argue that certain tools have a favored status within certain groups, and that is fine -- I'd prefer if people were picky about their tools. But the standard must be raised on bikeshedding articles beyond mere sentiments of "I like this technology." There needs to be an intellectual gain made from the blog post, not simply an opinion being expressed.

Otherwise, HN risks becoming like every other social news site, where people upvote the articles they want to see to the point of creating more noise than signal. We are still have quite a ways to go before we're there, but the recurrence of topics is a bit troubling.

</comment></comment></comment></comment><comment><USER9> > _If one person does a job in half the time of another, maybe it can be > attributed to their choice of programming languages. If one does it in 1% of > the time of another, it's probably a matter of talent._

This has been discussed many times (recently, somebody attributed a significant difference in productivity among programmers to... the ability to touch type).

Anyway, why different tools could _in principle_ not be able to generate wildly different productivity outcomes?

"If you only have a hammer" can be reversed: _if you don't have a hammer_ , then planting nails becomes incredibly difficult and takes a great amount of time (and ingenuity). A (not too practical-oriented) friend of mine once called me because he had spent an hour and a half trying to screw together a simple Ikea bookshelf (where the documentation said it could be done in less than 10 minutes). Turned out he was trying to screw the big bolts with pliers, and that's really hard.

<comment><USER10> This kind of argument irks me slightly. I think it's partly the "Lisp is awesome, only a genius can really understand. btw, did you know I use lisp?" attitude, and partly because, well, for all you geniuses who are so awesome and productive, there's not a hell of a lot to show for it.

You've had fifty years, ffs, and what have you got to show for it. Some furry guy who wrote emacs 40 years ago? Why is it that the web was built with php and perl? Why my desktop apps are still mostly written in C? You've had you're arse handed to you on a platter by every language (just about) since fortran. Stop waxing lyrical about how great lisp it, and get out there and prove it, dammit.

Lisp may be a great language, but it's proponents don't seem all that great at getting stuff done

<comment><USER11> Do not undermine network effects. C/C++ have had unbeatable network effects going on for them for a very long time now. Most systems are shipped with C based drivers and apis (Opengl, posix etc). Writing code in Lisp (Or any other HLL) means that you have to first write a binding for said library which is lispy, then build a system on top of that. Also then data has to be marshalled / unmarshalled from the C data structures into your language specific data constructs - this has a penalty in terms of speed. And finally you have to wrap the unmanaged c/c++ code so that it has an idiomatic (in lisp) garbage collection and exception handling story. In short - to write systems level lisp code requires you to be a jedi in C, api design, lisp and sheer code writing (because you have to essentially recreate the convenient wrappers that intel/ nvidia etc write in C).

Put another way - in 10 years if HTTP/Javascript continue on the same path people could arguably say the same thing - "some furry guy wrote Linux in C, but what has C done for the world recently? All the cool apps being built recently are in Javascript/HTML on the frontend and Python/Ruby on the backend"

<comment><USER12> But Lisp is older than C by 15 years and _still_ lost out?

<comment><USER13> It did not really compete that much. The target audiences and target domains are really different.

C was invented as a replacement for assembler to portably write operating systems and applications in a slightly higher-level notation.

Lisp was invented as a tool for computing with symbols (computer algebra, theorem prover, game playing, natural language processing, expert systems, knowledge representation, ...).

<comment><USER12> Then what about the Symbolics and Lisp Machine guys?

<comment><USER13> when the Lisp Machines were invented in the mid 70s (as personal workstations for research programmers mainly in AI) and commercialized in the early 80s there was nothing to compete with. When alternatives were available, there was no longer the need to have those (and they were not competitive), so they died away.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> I learned C and Lisp at exactly the same time, during a six month internship in 1988. I wrote a program to interpret hand sketched input on a tablet and turn it into a CAD model.

Before I started I only knew Basic and a little Fortran but the project I worked on required me to learn these two new languages, C for the low-level code that interfaced to a graphics tablet and the display driver, Lisp for the code that did some analysis on the lines and geometric shape drawn by the user.

I remember that on days I was working on the Lisp code I was happy and things seemed in harmony. On C days I often ended the day worried and headachy.

However, I couldn't have written the C portion in Lisp and writing the Lisp portion in C seemed unreasonable at the time as well.

What I take from the experience is that, to some extent, Lisp seems so much more productive is that it's typically chosen for programming tasks that don't deal with the ugliness and "hardness" of things like drivers or other low- level code. Not sure about GUIs but that's another area where programming becomes tedious and unfun, at least for me.

So, I don't think that Lisp is chosen for easier tasks but definitely for tasks where a solid grounding in CS and an ability to think abstractly is more important and there's some level of self-selection going on in those areas.

<comment><USER15> > Not sure about GUIs but that's another area where programming becomes > tedious and unfun, at least for me.

When I have problems with UIs it's because there's a lack of separation in structure, design, and scripting that you get with HTML+JS or MXML+ActionScript which both make UI dev really easy and fun. In contrast, I think Swing, AWT, WxWidgets, Tkinter, GTK, Windows API, .NET, and even Qt make graphics programming a pain in the neck (some more than others). But once you get toward a more web-approach of UI, s-expressions are a perfectly fine way of representing XML too. Tags are functions, Perl realized that as well.

My own experience with writing low level software is that without a good support library you're going to be doing assembly that may be painful depending on the microcontroller and what you're interfacing with. (ARM stuff is pretty good.) If there are good bindings for higher languages like Lisp, programming in Lisp becomes nice again. PyGame is a great example of porting a (in my view) somewhat ugly C library that is SDL and making it nice and neat to use in the higher level Python. I know a team in Colorado who are using Flex to build a multi-touch application on a USB tablet.

In the face of no good library though, C is definitely a great choice and it's useful for augmenting assembly. If I want to worry about memory and pointers, C's my goto language.

<comment><USER14> Very true. 99% of my work is C on small, embedded ARMs now and we don't have a display so no need to worry about GUI directly. However, we do have web servers and the GUI work has become more pleasurable with HTML+JS and/or (gasp!) PHP.

</comment></comment></comment><comment><USER16> I terribly dislike the hypothetical Lisp creature described by the Bipolar Lisp Programmer. It has little basis in reality and is probably the greatest straw-man argument I've seen. Though calling it an argument on my part is a kindness; it's more of a soap-box.

There are just genius programmers.

Lisp just happens to be a pretty good language.

The two are quite orthogonal to one another.

<comment><USER17> I wouldn't expect a genius programmer to end up with a random choice of language, especially after a few years and exposure to a variety of languages.

If you agree (as I do) that there are differences in "power" of language, I would expect that genius programmers would be far more likely than average to choose a language of above-average power.

Thought experiment: How many genius programmers do you know that use VB6 by choice?

<comment><USER16> I'm not sure I know any genius people let alone programmers.

And I definitely do not know of anyone who programs in VB6.

However, I am some what familiar with John Carmack. I would consider him a genius programmer. Yet he uses C++ almost exclusively. You would have to ask him if he thinks it's the most powerful language available to him. However, I would hazard a guess that his choice of C++ was incidental (<http://rome.ro/smf/index.php?topic=3086.0>) -- it just happened to be the de facto lingua franca for developing graphics intensive video games.

By _orhtogonality_ I mean to imply that attributes of one are not affected by the other. Lisp is and will continue to be a powerful language with or without genius programmers using it. In fact, if genius programmers are exceptional and rare as we say then I would imagine Lisp has developed over the last fifty years almost exclusively without the help of geniuses. Similarily, not all geniuses will think to use Lisp; yet they will still be exceptional programmers and produce exceptional software.

 _Update_ : Included link to thread about an alleged response from Carmack to an email asking about C++. Apparently he uses it and has used it since Doom3.

<comment><USER18> EDIT: I stand corrected: It looks like John Carmack has indeed been using C++ since Doom 3. I sheepishly admit to having based my believe that he still used C on having looked at the Quake 3 source code many many years ago. What next, Carmack decides that he prefers Direct3D?

Point taken about the orthogonality of language choice and programming ability. There are great programmers who use Lisp, there are great programmers (like Mr Carmack) who use C and then there are great programmers like Richard Stallman who can write Emacs in Lisp and then write GCC in C (albeit with a Lispy flavour).

<comment><USER19> "I actually think Direct3D is a rather better API today. [For example], Direct3D handles multi-threading better, [while] newer versions manage state better," Carmack told Custom PC.

<http://www.google.com/search?q=carmack+prefers+direct3d>

:)

</comment></comment></comment></comment></comment><comment><USER20> There definitely is something psychological as well as practical.

First, it is an issue of social dynamics. Very intelligent people frequently develop means by which they congregate without the less intelligent. Elite academic institutions facilitate this. The corporate world does not. As far as I can tell, lisp was the anti-blub when there was only blub, which allowed people to distinguish themselves from their peers -- a bit like going to Mensa meetings. This need seems to be less pronounced in the younger generation since there are other distinguishing languages in fairly common use.

Second, there is current research in neurobiology that indicates that the evolution of the brain (perhaps responding to its environment) has a naturally recursive structure and there is a growing field in the study of religion and philosophy that indicates that the growth of many systems has a fractal structure. In fact, Mandelbrot commented on this himself in response to Lovejoy's Great Chain of Being, although he never applied it to the correlative systems of the East, nor the syncretist projects of the Renaissance. These are frequently associated with genius for good reason. I suspect Lisp is popular because of how it "clicks" with something mentally.

Third, it is not quite clear how any of this relates back to programming as a craft. Philosophers can create their own discrete systems. Mathematicians, even if they don't deal well with other people, are, at least ostensibly, dealing with reality. Lispers, on the other hand, frequently must deal with real products for real people. Realistically this means that products must have significant scope, which almost invariably means more than one person working on them (actually products are rarely brilliant, though inventions may be). Which is to say, the "inventive" aspect, which may be contained and individual, is likely distinct from the practical aspect, which is collective. Obviously certain features (e.g. static typing, immediate comprehensibility when viewing method/class names, etc.) would seem to be preferable for large collaborative projects.

In conclusion, although it is said "real artists ship," it is often the case (e.g. Van Gogh, Schopenhauer) that real artists languish unacknowledged, their brilliance unappreciated in their own time. Art, when pursued for its own sake, rarely can deal with practical considerations -- which may good for the increase of knowledge generally or the field of computer science, but bad for business (insofar as business is making money right now).

</comment><comment><USER21> I think a lot of the Lisp hype stems from the development environment. I was too tired on a cross country flight last night to do customer work, but I did work on two of my own projects: one using Java, IntelliJ, and the excellent Play! framework (dynamically compiles code while editing - fairly agile environment) and later another project in Common Lisp. Using Emacs + Slime + Common Lisp, at least for what I was working on (NLP stuff), just felt great. Two nice environments, but the Lisp environment was just more comfortable.

</comment><comment><USER22> I'll take this up a few notches and proclaim that almost all commonly used languages offer "high impedance" when it comes to the jump from thought to the expression of that thought for a machine to execute. This does not mean that they are not useful. It does mean that they are very primitive in many ways.

My life as a programmer and hardware designer started when I hand-built (wire wrapped) my first 8080-based computer way-back-when. Coding was done typing in hex codes into a hexadecimal keypad. Pretty amazing what you could write that way. Wanting more, I wrote a simple version of Forth. Wow! The productivity gain was impressive. Meanwhile, in College, we had to take FORTRAN. I hated it for some reason. Then my Physics professor offered an alternative: If you signed-up for his APL class you could get equivalent credit. Out went FORTRAN, in with APL. I would not learn C until three years later.

The fact that my real programming life started with exposure to the extremes represented by hand-coded hex, Forth and APL probably made me think very differently once I got to C and other languages. APL allows you to think and translate those thoughts and ideas to computer instructions with very little to distract you. The process of programming in C-like languages can be very mechanism oriented rather than problem oriented. By this I mean that you spend a log of time working on how to get the mechanics of the thing to work rather than focusing on the problem domain.

I learned and programmed in Lisp extensively later in life. It was the AutoCAD version of Lisp. I wrote all sort of tools and utilities for AutoCAD and can say that I enjoyed using the language. In terms of productivity and the ability to quickly express ideas, I think it did pretty well. Is it the realm of geniuses? Nothing is.

</comment><comment><USER23> How about shouting up about the lisp this or that and just think of it as a normal programming language with some features that most programmers dont understand because the never learned them in school job.

These lisp geniuses are just programmer that grew up in a time where lisp was often used. So the are "just" programming geniuses.

Lisp does not make medicore programmers 10x better. Its just a very good programming language.

P.S. Back then it did make you much more productive because all other languages where way behind not like knowdays.

<comment><USER24> > Lisp does not make medicore programmers 10x better.

No language will. OTOH, no mediocre programmer will grok Lisp.

<comment><USER25> Depends on what you mean by "grokking Lisp". If it means a full exploitation of all the language's possibility, I agree, but it seems a bit obvious that a mediocre programmer would be unable to do that. If it merely means being able to program in the language, that's not true.

</comment></comment></comment><comment><USER26> This article scares me. My mediocre programming skills will never be able to handle Lisp. Damn.

<comment><USER27> Never give up on goals you still care about. Get a beer and some notepaper. Write down some notes about how you can be a better programmer. Think about topics slightly out of the domain - how you represent ideas, how you explain ideas to people, how you try to understand ideas that are explained to you, how you read code. Think about how you can improve. Think about some deliberate practice exercises. Take what's useful from doubters and ignore the rest. You'll get there.

<comment><USER28> Also you can watch the lectures by Abelson and Sussman themselves[1], also on MIT OpenCourseWare.

[1] [http://groups.csail.mit.edu/mac/classes/6.001/abelson- sussma...](http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman- lectures/)

[2] [http://ocw.mit.edu/courses/electrical-engineering-and- comput...](http://ocw.mit.edu/courses/electrical-engineering-and-computer- science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/)

</comment></comment></comment><comment><USER29> Others (e.g., PG) have written more elegantly about this topic, but I really do think the key is the complete malleability that Lisp gives you: you're free to recast the problem in your own terms, using whatever DSL makes the most sense, and program in those higher-level forms.

Other languages force you into specific toolsets (objects, functions, etc.) and thwart pure expression of the problem.

<comment><USER30>
      > Other languages force you into specific toolsets
      > (objects, functions, etc.) and thwart pure expression of
      > the problem.

Pure expression and complete malleability are decidedly non-intrinsic goods. Sure, you're free to reshape your language according to the requirements of the task at hand, but that process takes tremendous amounts of experience and care and foresight. If you lack these qualities, Lisp isn't going to get you anywhere. Even worse: it may end up being counterproductive.

Graham made such successful use of Lisp because he was a highly competent engineer, and thoroughly familiar with CLisp. Firing up SBCL doesn't grant you these abilities qua choice of language. So I'm glad that some people still offer counterpoints to the Lisp cargo cult around here.

<comment><USER29> I think you've just restated his "Blub" position exactly.

<comment><USER30> Possible, but irrelevant given that I'm not arguing against Graham's stance. I'm sure he's right about "blub" and so on: Lisp is a tremendously useful tool in the right hands. What I find increasingly annoying are the countless acolytes that ignore the actual point and simply repeat "MACROS! MALLEABILITY! DSL!" like a vacuous mantra.

</comment></comment></comment></comment><comment><USER31> "I think of Donald Knuth writing TeX in Pascal, and a very conservative least- common-denominator subset of Pascal at that. He may have been able to develop TeX faster using a more powerful language, but perhaps not much faster."

Knuth himself said he didn't think he could have written TeX without his literate programming tools, right? Which fits the pattern of Lispers extolling metaprogramming, though without their built-in support.

(Despite which, I don't in fact think Lisp makes you a genius, or even significantly better than with other popular languages -- though it was a different story back in the 80s when I learned it.)

</comment><comment><USER32> _Lisp imposes almost no structure,_

I'm a lisp novice, but doesn't it impose functional composition? And isn't that some mighty structure?

<comment><USER33> CLisp, for example, is not a functional language in the sense of ML language or Haskell.

CLisp is a multi-paradigm language. You can use it in a OOP or a functional style. You can even use its OO features in a functional way and viceversa. E.g Objects are poor's people closures. [1]

[1] <http://c2.com/cgi/wiki?ClosuresAndObjectsAreEquivalent>

<comment><USER34> Hate to be pedantic, but there is no such language as CLisp. There is Common Lisp language, commonly abbreviated to CL, and CLisp is the name of one of its implementations -- the other popular ones are SBCL, Clozure CL, Allegro CL, to name a few. One should not identify Common Lisp the language with CLisp the implementation, especially since it is not the fastest or the most pleasant one.

</comment></comment></comment><comment><USER35> Even if you are not a superprogrammer, if you work your way through SCIP you'll have greatly improved your skills. Maybe you can still become a superprogrammer.

I doubt it would be possible to become a superprogrammer by coding Java because you would be too busy trying to comply with all the specifications.

</comment><comment><USER36> I suspect there may be something to the idea of Lisp supporting multiple paradigms of development. If (and this is a big if) you had enough exposure to the virtues of imperative, functional, and declarative programming styles and (second big if) enough "taste" to apply them in tandem with each other, that Lisp may have been one of the few places to leverage that as a skill.

But maybe a better question would be how often you would be better mixing those types of development in a single program.

</comment><comment><USER37> [http://rondam.blogspot.com/2011/04/is-it-lisp-or-is-it- me.ht...](http://rondam.blogspot.com/2011/04/is-it-lisp-or-is-it-me.html)

</comment><comment><USER38> Lisp is good, and every good programmer needs to be familiar with it-- if nothing else, in order to know what she's missing in other languages-- but I find that a lot of Lisp people start using Lisp (in a humorous reversal) as their own Blub. To them, it's Lisp-versus-Shit. I find this mentality incredibly short-sighted.

Strong, static typing is really great. It may not be appropriate to every problem, but it saves a lot of time in the long run. Just as every programmer ought to spend a year in Lisp, every programmer should spend a year in a Hindley-Milner static-typing language.

My feeling about dynamic typing is that it test-drives really well, but it's not great for a 6,000-mile road trip. Lisp definitely beats Haskell and Ocaml in the former regard, and for small projects, I don't think there's any language that can be faster. On the other hand, for a large project with 5 developers, experience has led me to conclude that I'd much rather be using a statically-typed language.

<comment><USER39> If you're right about Lisp's suitability for small projects and Haskell and Ocaml's suitability for long projects, then that answer's oconnore's question about why the strongly-typed academic (as of 2011; not inherently academic) languages don't attract the same mythology: Seeing something get done in half an hour that you expect to take all day leaves a much stronger impression than seeing something get done in a month that you expect to take six months.

<comment><USER38> Correct.

Another problem languages like Ocaml and Haskell have is this: most programmers have a very predictable trajectory through increasingly more powerful languages: C++, then Java (garbage collection), then Python or Ruby (more abstraction and power), then Lisp, which has the aura of being the pinnacle of languages, one that removes all the accidental complexity and leaves programmers able to tackle the intrinsic complexity of the problem. Strong, static typing seems like a step backward-- some seatbelt that was thrown away at the Java-to-Python transition. It's not, and Hindley-Milner type inference ensures that the static typing doesn't even eat up much developer time, but the benefits of static typing don't appear until you work on a larger project where debugging and testing become major concerns. The difference between a 40% and an 80% debug/test overhead is enormous, but aren't going to show up on a 500-line project.

Strong static typing is an awesome tool that the language forces you to use. Lispers don't like being "forced" to do anything. However, on a project of sufficient size, the relatively minor drawbacks of static typing are more than paid off by the reduced test/debug overhead.

<comment><USER40> _most programmers have a very predictable trajectory through increasingly more powerful languages: C++, then Java (garbage collection), then Python or Ruby (more abstraction and power), then Lisp_

I've seen virtually no one take this trajectory. Half of the Lisp programmers I know had Lisp as one of their first languages (MIT or Berkeley alum). Most C++ devs that went on to Java or C# did NOT go to Ruby or Python. Most C# devs would consider that a step backwards unless you were using a specific framework for a specific task, e.g., Rails.

The only thing I do tend to agree with is that Ruby/Python devs seem to have Lisp envy. But very few others classes of developers do.

<comment><USER5> "Half of the Lisp programmers I know had Lisp as one of their first languages (MIT or Berkeley alum)."

We also learn Scheme as our first language at Indiana University computer science@

</comment></comment></comment></comment></comment><comment><USER41> I would like to say one thing to anyone who considers using Lisp:

 __It's perfectly okay to use Lisp just like you would use any other language. __

It's better designed and more consistent than most others, and has good implementations. It makes sense to use Lisp as just a regular language without any wizardry.</comment>


Ask HN: Why css frameworks? - Pi-ena Over the last couple of months I have seen an influx of new CSS frameworks.<p>My question is why: why? Why go through the effort of learning and implementing a framework when vanilla CSS works so well. I see that a lot of developers are pushing for sites to load faster, be simpler, and be smaller. Yet at the same time we are bloating pages with these frameworks for stuff that could be achieved quite easily with "normal" CSS. What are some of the benefits of using a framework and why do so many people choose to use one? <comment><AUTHOR> A framework is useful especially if you're not a visual designer. Most will make some basic decisions for you about relative sizing and spacing, and also help maintain visual consistency.</comment>


Adobe's HTML5 animation app - <AUTHOR> http://labs.adobe.com/technologies/edge/ <comment><USER2> The fact that the preview is flash just shows that they arent serious.

<comment><USER3> There are probably more browsers with Flash installed than that are fully HTML5 capable.</comment></comment>


How to Read a Book [pdf] - <AUTHOR> http://pne.people.si.umich.edu/PDF/howtoread.pdf <comment><USER2> What bugs me with some books is that they have excellent content but are written redundantly. This leaves me reading 300 pages instead of 120.

Why can't this:

> We cannot talk to the designer, so we rely upon whatever information is > available to us: what the device looks like, what we know from using similar > things in the past, what was told to us in the sales literature, by > salespeople and advertisements, by articles we may have read, by the product > website and instruction manuals.

be written like that:

> Unable to contact the designer, we rely on preexisting information from > sales material, salespeople, ads, articles or the device appearance.

or even:

> Unable to contact the designer, we rely on preexisting information.

Not every book should feel like Harry Potter, no matter how great the content.

<comment><USER3> So, a dirty secret in the publishing industry is that publishers often make book deals based on the number of words you write, not how effective and quickly you can convey your ideas.

This results in them rather taking a 300 page book vs 100 page book because they sell the 300 page book for more than the 100 page book and thus make more profit.

I personally have a friend who has authored many big name publisher books and he is always telling me how many words he has to have done by X date. The emphasis is on how many words, like 60,000 words.

Even though he can write a book that says the same shit in 20,000 words, the book publishers don't want this, because they won't make as much money.

That really sucks for the tech industry, maybe for fiction it is fine, since people just want more time outside reality anyways, but when you are trying to gain knowledge, a 300 page book is not usually as good as a 100 page book.

:sigh:

<comment><USER4> This is a huge reason I preferred to self-publish. I have a math book that is 12-chapters (~90 pages total), written in a compact, friendly style I prefer. There are too many incentives to pad out your writing when you are trying to fill physical shelf space ("look impressive" vs "be useful"). Instead of a page count, how about an idea count?

(I get the occasional feedback that people wish that the book was longer, they want more topics, but never any individual chapter being longer...)

<comment><USER5> What book? I'm on the lookout for a good math book.

<comment><USER4> Math, Better Explained

[https://www.amazon.com/Math-Better-Explained-Unlock- Intuitio...](https://www.amazon.com/Math-Better-Explained-Unlock-Intuition- ebook/dp/B006J5L3VU)

Check out a few articles on [https://betterexplained.com/cheatsheet](https://betterexplained.com/cheatsheet) and see if they fit your style.

<comment><USER6> Oh Kalid it's you! I haven't bought your book (and I'll remediate to that right now), but I've followed all your posts, they're fantastic.

Go buy this guy's book :)

<comment><USER4> Thanks Jerome =).

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Somebody here once recommended when doing any kind of text with exercises to open to a random chapter and attempt the first exercise. If you can't do it research through the index/book where the information to help you solve it is likely to be found and repeat for all exercises. I've been doing this ever since, finished my library of unread books I had collected over the years but never had the time to read.

<comment><USER8> What kind of books did you read using this technique?

Also, did you end up reading most of the text?

I'm a bit surprised that your techinque is more efficient than reading the chapter and then doing the exercises, because most of the chapter's content is on your short term memory and you know exactly where to find the information if you need to review a concept to solve the exercise.

<comment><USER9> It's not about efficiency, it's about effectiveness.

Sequential reading may be more efficient, but it's infinitely less effective if you never pick up the book to read the next chapter.

It's a workaround for the 'I started this useful, interesting book, read 50% of it, then never touched it again, for no good reason' bug. You solve the problem by nerd-sniping yourself with an exercise.

If you don't experience this bug perhaps it's not good advice for you.

My 'technique', if I want to read a particular book, is to carry it, and no other book, in my backpack. I'll inevitably read it in my down times.

<comment><USER10> Yeah I have the problem of reading too many books at a time. I am in the last few chapters of an awesome but technically dense book, but I keep putting it off because it's more fun to spend an hour reading "The Two Towers".

</comment></comment></comment></comment><comment><USER11> >> It's satisfying to start at the beginning and read straight through to the end. Some books, such as novels, have to be read this way, since a basic principle of fiction is to hold the reader in suspense. Your whole purpose in readingfiction is to follow the writer's lead, allowing him or her to spin a story bit by bit.

Depends.

Here's how my (much) younger self used to read novels:

a) Start at the begining

b) Read a few pages until you're reasonably sure all major characters have been introduced.

c) Skip to the end to find out if they're all alive and well at the end.

d) Skip back, approximately to where you were before (c)

e) Read a few more pages until something major happens

f) Skip a few chapters ahead to see how the major happening pans out

g) Repeat from (d) until it all goes quiet again

h) Skip a random number of pages ahead (but no more than the size of the book; duh)

i) If that makes no sense, return to where you were before (approximately)

j) Repeat from (h) until you've read the whole book.

I read about all of Jules Verne, Hector Malot, Enid Blyton and A. J. Cronin like that (I know, right?).

On the other hand I remember a particularly tedious passage in _20,000 Leagues Under the Sea_ where several pages passed describing various molluscs found at the bottom of the sea. I actually read it all very carefully because I was curious to see how much it would last for and whether there was some bit of plot hidden in between the discussions of various species' chiralities etc. Jules Verne could eat Stephen King for breakfast when he got into his stride.

I only stopped doing that sort of thing to books when our lord Umberto Eco decided to write Foucault's Pendulum to punish me for the mistreatment of literary works. That hurt.

<comment><USER12> > On the other hand I remember a particularly tedious passage in 20,000 > Leagues Under the Sea where several pages passed describing various molluscs > found at the bottom of the sea.

This reminds me of the passage in The Picture of Dorian Gray which amounted to some detailed description of gemstones or worse, the chapter in The Great Gatsby that was essentially a list of names.

I usually aim to read a text in its entirety out of respect for the author, but I had no qualms fast-forwarding through those sections.

<comment><USER13> I still laugh about the chapter in the middle of Les Miserables where the author spends something like 20-30 pages talking about the battle of Waterloo. It was interesting, and very detailed, but had nearly no connection to the plot of the story (other that one of the people there left an heirloom for a character, or something?). Later, he did the same thing for the sewers of Paris, and I believe I skipped that. ;)

<comment><USER14> Similarly, Moby Dick has tens of pages describing the particulars of the whaling industry.

<comment><USER15> And Michael Crichton's Airframe has tens of pages describing airplane parts and their inspection processes.

I love it when books do that -- fortunately, it's easy to distinguish between technical passages and drivel.

</comment></comment></comment></comment></comment><comment><USER16> This is basically a modernized, summary version of Mortimer Adler's classic of the same name which changed my life. Beforehand, I was reading much too quickly, letting information, and more importantly understanding, pass through me. It's better to be well-read than widely-read.

<comment><USER17> That's kind of funny because there's a major trend now following people like Elon Musk who promote skimming through engineering texts. The idea being that you're not going to learn rocket science reading a dissertation on rocket fuel, but you will become aware of things you hadn't done before, and retain random knowledge that could be useful and will be useful as you continue skimming more and more technical books.

<comment><USER18> Musk is a CEO, not an engineer.

<comment><USER19> He is a CEO _and_ an engineer, one known in particular for going from zero to rocket scientist level impressively quickly.

<comment><USER20> Are you claiming that Musk does engineering work for SpaceX?

<comment><USER19> From what I heard yes, he does, if you count his nanomanagement. Moreover, he most definitely did initially - SpaceX didn't start with full complement of trained aerospace engineers on board. He learned his rocket science before starting the company.

</comment></comment></comment></comment></comment></comment><comment><USER21> If you want to be a friendly explanatory writer:

1\. Adopt the inverted pyramid structure. This means to front-load your conclusion, to put the summary sentence first. In other words, if the reader stops reading at any point, they know the answer, at least in outline. Continued reading just results in more and more detail, more and more zoom-in.

2\. Read _The Elements of Style_ (100 pages) or _On Writing Well_ (just need to read the first four chapters) or both. Both are short. These will help you word things efficiently. This doesn't mean you're leaving things out. But mysteriously human language is like computer languages in this: there are infinite ways to write something, and some ways are shorter than others --- shorter by several times!

</comment><comment><USER22> My rant from when I was reading "getting things done" by David Allen: on about 250 pages, the first 80-100 pages are about how good is the GTD system.

I ALREADY GAVE YOU MY MONEY, I DON'T NEED TO BE CONVINCED, I'M ALREADY SOLD, JUST TEACH ME THE GODDAMN THINGS.

<comment><USER23> I have similar complaints about most YouTube "how to" videos. The first few minutes are typically spent providing context which I usually don't need, especially if I'm rewatching. All digital content should have a "jump to point X if you don't need background" option.

<comment><USER19> This is actually recognized as the Wadsworth constant[0]. It used to be the case, though it doesn't seem to work anymore, that you could add "&wadsworth=1" to the YouTube video URL to immediately jump to 30%.

[0] - [http://knowyourmeme.com/memes/the-wadsworth- constant](http://knowyourmeme.com/memes/the-wadsworth-constant)

The original comment by /u/Wadsworth that coined it: "For EVERY youtube video, I always open the video and then immediately punch the slider bar to about 30 percent. For example, in this video, it should have just started at :40. Everything before :40 was a waste. This holds true for nearly every video in the universe."

<comment><USER23> Fascinating, thanks!

</comment></comment></comment></comment><comment><USER24> Ezra Pound's ~ABC of Reading~ changed the way I read poetry and literary fiction. When, much later, I started to be interested in technical things I don't think I found it too hard to adapt, but I still focus on style, allusion, irony and so on in the things I read. That's generally a recipe for disappointment of course but when you come across technical writers with a voice of their own it's a lovely surprise. Wilfrid Hodges, for instance, is a great writer who becomes a friend as you work through his books.

</comment><comment><USER25> > Know the intellectual context

This is often what I am most left wondering about. I guess nowadays I end up trying to wikipedia the heck out of the topic, or look for similar books.

What do you do?

Also I was confused by

> Read the whole thing!

Which makes me think of careful reading, but they mean "read straight through, not stopping for details."

I had been unable to do this for years. Eventually I was able to just plow through a book and it turns out to be more helpful than I imagined. It is often better to proceed than to be stuck, putting it aside forever.

<comment><USER19> For now my "hack" is to "just read the damn book". I don't care anymore if I get 100% out of it, because I keep finding myself surprised what I can suddenly recall as needed anyway. But you won't have anything to recall if you don't read the book.

</comment></comment><comment><USER26> Has anyone here tried PhotoReading?

It's the same principle of reading the same text several times, along with an additional preparation by "photo reading": taking in the whole book with a relaxed gaze, one page at a time (about 1 second per page).

This makes it easier to find relevant information later, as you instantly familiarize yourself with the high level structure of the material: the relationship between the layout of the page and the information contained.

Highly recommended!

</comment><comment><USER27> I literally just wrote a book review on this goddamn thing with a summary for hackers. This book is way too wordy and redundant. [https://medium.com/@seanaubin/book-review-how-to-read-a- book...](https://medium.com/@seanaubin/book-review-how-to-read-a-book- cb10ed8c2d13#.b1ytcobcz)

<comment><USER28> Did you click the link? This isn't "How to Read a Book" by Adler.

</comment></comment><comment><USER29> I have seen the following happen to me while reading books.

Event driven - you go back to a book based on thinking around a problem and look for information around it. I have found this very effective to understand the content, especially something not so trivial and those that you may not get by passive reading. However, this requires more time and effort from you in terms of self-thinking around problems.

The second way is passive reading - just read because you got interested in the topic. You don't understand a lot of it immediately, and so either your interest may carry on and you may get more than where you began or you may give up.

But if you give up, in the interim you may encounter some things related to what you read and you go into the first mode. Or you find that what you started is not your cup of tea at least for the moment. You iterate over other topics of interest.

</comment><comment><USER30> Does anyone use the citation advice he gives? If so, what tool do you use? It sounds like it might be a good way to store the important parts of books, especially when you get 100s-1000s of books in.

</comment><comment><USER31> May I offer this as an alternative?

[https://www.farnamstreetblog.com/how-to-read-a- book/](https://www.farnamstreetblog.com/how-to-read-a-book/)

</comment><comment><USER32> ...and when you're ready to write your own book, here's a helpful text that can guide you through the lumber selection process, before you start producing the pulp that will go into the paper for your book:

[https://www.amazon.com/Identifying-Wood-Accurate-Results- Sim...](https://www.amazon.com/Identifying-Wood-Accurate-Results- Simple/dp/0942391047/161-4038110-1441338)

</comment><comment><USER33> I have to say this is contrary to my experience. For example, whenever I try to do what this tells, and jump ahead and skip around the text to try and grasp the general points I invariably get confused and lost because some detail from further back is need to understand the text further ahead. It's only when I invariably need to start over and read it properly that I understand and assimilate the knowledge.

</comment><comment><USER34> I thought he was referring to this [0] which is a more detailed plan of attack along similar lines.

[0] [http://www.evergladeshs.org/ourpages/auto/2015/5/28/58122395...](http://www.evergladeshs.org/ourpages/auto/2015/5/28/58122395/Adler%20Mortimer%20-%20How%20To%20Read%20A%20Book.pdf)

</comment><comment><USER35> I am afraid to skip a book, because I am afraid to miss some important things that I just skipped.

I can't easily get over this feeling, when I'm reading a book, so I keep reading every detail of the books I read.

I also think that taking notes will take too much time, so I'm always reluctant to take notes when I am reading something.

After reading this directive, I will try the steps it says.

<comment><USER36> I got over that attitude when I walked into my uni library the first time. Seven million volumes. No way I was going to read them all.

I focused on specific interests, though also sampled other areas.

</comment></comment><comment><USER37> > 1-3 pages of notes per 100 pages of text is a good goal to shoot for; more > than that is often too much. I often used a technique of transforming a book > into a mindmap, it's much more visual and readable than a simple plain text > with notes.

</comment><comment><USER38> Is this a good technique for reading programming and technical books as well?

<comment><USER39> I have the same question.

I recently read a programming book on Go [1] and this book reminded me of the pleasure of reading a programming book cover to cover. For a reader whose purpose is not to just get through the coursework (as in a graduate school), a well written programming book can be as pleasurable a read (if not more) than the most gripping novel. The author's style of writing has a lot to do with the readability of a programming book. I think.

[1]: [https://www.amazon.com/Programming-Language-Addison- Wesley-P...](https://www.amazon.com/Programming-Language-Addison-Wesley- Professional-Computing-ebook/dp/B0184N7WWS)

<comment><USER40> It sounds like you had the good fortune of reading a well-written book. Any well-written book, regardless of subject matter, will be a pleasure to read cover to cover.

</comment></comment></comment><comment><USER3> Fantastic read, I have been reading technical books cover to cover, slowly. I am going to try this new technique out over the next year, it will take time but I am game.

</comment><comment><USER41> I like reading physical books, but don't like writing directly on the pages. Does anyone have a good alternative?

<comment><USER42> I don't mean to be flippant, but can I suggest trying really hard to get over that hangup? I used to feel terrible for marring them, now I feel like it's not mine if it doesn't have my writing all over it. Writing in the books has been an amazing boost for my relationship with the ideas contained therein.

</comment></comment><comment><USER43> read without any purpose is more valuable, sometime. Without valuable, you can meet some interesting valuable things in unexceptional way. Somethings like other world view, life view...

</comment><comment><USER44> Has anyone found an epub/text version of the same content?

<comment><USER45> I was able to save it as RTF and it preserved formatting quite well. (Used DEVONthink, FWIW.)

</comment></comment><comment><USER46> And, if it's a math (or math-ish) book that works through example problems: try to work the example problems yourself, based on the material preceding it, _before_ reading the author's worked-out solution. Then you'll be able to make a lot more sense of the presented answer. (I wish I had figured that out as an undergraduate).

</comment><comment><USER47> I love the fact that "How to Read a Book" and "How to Write a Novel" are back- to-back on the front page.

</comment><comment><USER48> A book about how to read a book ? Hmmmm

<comment><USER49> If you actually read and follow it, it's only 30 pages.

</comment></comment><comment><USER50> Aren't You supposed to learn that shit at school? Like when you're ten? Man, Silicon Valley engineers are so uneducated :)</comment>


PHP7 Gains Scalar Type Hints - <AUTHOR> https://wiki.php.net/rfc/scalar_type_hints_v5#vote <comment><USER2> To explain the slightly horrible fact that there are two modes, strict and weak with strict mode being enabled on a per file basis; people just couldn't agree on whether the types should be strict or if they should use PHP's existing coercion rules. (Or even a 3rd new set of conversion rules, but lets ignore them).

Having an optional mode per file allows:

People who want to write code with strict types can do so. People who want to write code with weak types can do so. People who want to write code without these new fangled types can continue to do so.

All without any issues of compatibility between running code on the current version of PHP and what will be the next one, and without any compatibility issues for libraries that are solely written in one mode, being used in applications that are written in the other mode.

\o/

To be honest, I'm completely in the strict camp - but it's awesome that we've gotten a solution that should allow everyone to use the mode they want, without splitting the PHP ecosystem.

<comment><USER3> > To be honest, I'm completely in the strict camp

Can you explain why? Are you using PHP in a web context? Because everything from the web is a string.

So wouldn't it make the most sense to let the functions using the web data coerce to integer, and just work?

How does putting (int) before the arguments to function help anything?

I actually liked Ze'ev's proposal because it let you be weak while making sure you did not coerce obviously bad data.

Anyway, as a member of the strong camp, can you explain?

<comment><USER4> > _Because everything from the web is a string._

I would start by saying that everything, regardless of domain, is just a stream of bits. Which is completely useless, just like your assertion.

And I know what you meant, but you're also wrong. A JSON object is only a string before being interpreted. An x-www-form-urlencoded is actually a map in which values can be arrays instead of primitives. Such forms often correspond to domain models with a clear definition.

There's also no such thing as " _obviously bad data_ ". All data is good in the proper context, therefore automatic conversions that try to make this distinction do not make sense. I don't necessarily know how PHP behaves, but in another popular language there's a world of difference between " _077_ " and " _77_ ". There's also a world of difference between integer, floating point and fixed point and the details are never irrelevant.

<comment><USER3> > therefore automatic conversions that try to make this distinction do not > make sense.

You have to convert it _somewhere_. I don't see how the caller converting it is any better than the recipient doing it. Having the caller do it seems quite pointless when the recipient is anyway doing it.

Your answer about how everything is bits was quite useless since you completely missed the point. Your input is a string, you have to convert it someplace. Weak mode has the recipient do it. Strict mode you have to do it yourself, and then the recipient double checks.

I see no value in the second option - the actual conversion in both cases is identical.

But Danack disagrees, so I asked him to explain. Your answer was not helpful at all.

<comment><USER4> @ars, you completely missed my point. Lets go over it again. Tell me how should the following things convert:

         77
         077
         77.0

<comment><USER3> I GOT your point. I don't care about your point because it is not the question I am asking.

Why are you answering something I did not ask?

I am asking why does Danack prefer strict mode. There is absolutely nothing in my question that cares about the specific details how you convert bits to types, other than that you do.

My question is entirely about WHO does the conversion. NOT about the conversion itself.

(Oh, and the thing about bad-data has a defined meaning that went over your head because you are not familiar with the debate here. In this context bad- data means data loss on conversion. So "1" to 1 is fine, but "1 a" to 1 is not.)

<comment><USER4> The conversion itself is very relevant because you cannot establish a default conversion that should happen, therefore the conversions should be explicit, answering the WHO. This is why I asked you about what should the conversion produce in those examples.

And also in the conversion from "1.1" to 1.1 there is loss of information, because the two representations are not isomorphic. Care to guess why?

<comment><USER5> This is the point that ars is making. He is saying that it has to be a runtime check and/or conversion because it is coming over the wire, as a string, at runtime.

So the question he is asking is, if you have to do the check at runtime anyway, what is the benefit of the type hinting? Isn't it just belt and braces?

It seems like a perfectly legitimate question to me.

And by the way, to those downvoters who don't seem to be able to tell the difference between a comment you disagree with and spam, can you please contribute to the conversation by hitting the reply button or alternatively get lost? Only you're ruining it for the rest of us. Thanks

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> I love PHP.

I think of it as the English language of programming. Picking and choosing all of the best bits from every other language, and bastardizing them into it's own everyday use.

<comment><USER7> If I cut off the limbs of a bunch of athletes and glue them together, it doesn't make a better athlete.

<comment><USER8> I hope you don't find analogies like that. It doesn't make sense to compare athletes to programming languages; that analogy makes no sense at all.

Also +1 to what @Padding says.

<comment><USER7> It's obviously not a precise analogy :)

However, it gets the point across; taking a bunch of bits from disparate well- functioning systems and smashing them together doesn't guarantee that you'll get another well-functioning system.

</comment></comment></comment></comment><comment><USER9> Finally! I had a lot of concerns about this, but I think they're mostly answered by the discussion. I do like the way union types work (at least nullable types) in Hack, but I think they existing `foo(int $param = null)` approach is fine for 99% of cases, and those that it doesn't work for can go back to type-checking at the top of the function (ie do what we have to do for all scalar types right now).

While I understand the optional strict mode, I do find it quite confusing: it looks similar to javascript's 'use strict';, and at first glance it sounds like it should be similar to `error_reporting(E_STRICT)`, yet somehow scoped to the <?php ?>. Personally I like the `strict namespace` approach they proposed the most. The argument against is that it will read like everything in that namespace is strict, when it's actually limited to the file, but I think it's pretty clear if I read in a.php `strict namespace Qaribou;` and in b.php `namespace Qaribou;`, that a.php is strict and b.php is not. I really don't see the ambiguity there.

</comment><comment><USER10> That's right, the PHP community _votes_ on language features.

<comment><USER11> Though there is a lot of controversy about who is allowed to vote. Currently it's anyone with a php.net account, which is:

* People who have commit access to git/svn

* Documentation contributors

* Documentation translators

* PEAR package maintainers

* PECL package maintainers

* _Very_ few "community representatives"

<comment><USER12> While I won't go even close to the PHP internals list, deciding on the community representatives will be... interesting. Drupal, which [http://w3techs.com/technologies/details/cm- drupal/all/all](http://w3techs.com/technologies/details/cm-drupal/all/all) powers 2% of the web has an army of subsystem [http://cgit.drupalcode.org/drupal/tree/core/MAINTAINERS.txt](http://cgit.drupalcode.org/drupal/tree/core/MAINTAINERS.txt) maintainers. If you open the gates, whom of them will be allowed to and who won't? Fascinating.

<comment><USER11> Generally the idea is to give the head of the project a vote.

</comment></comment></comment></comment><comment><USER13> Hooray! \o/

I haven't had a use for this yet, but I'm always amazed by how PHP manages to move forward without breaking BC.

<comment><USER14> > I haven't had a use for this yet, but I'm always amazed by how PHP manages > to move forward without breaking BC.

This. If I were a Python developer (of the language itself), I would be paying very close attention to how PHP has handled deprecation and breaking changes.

<comment><USER11> There's been an effort with PHP 7 to try and avoid a Python 2/3-style situation. The PHP 5 to 7 jump should be much smaller than from 4 to 5.

<comment><USER2> >The PHP 5 to 7 jump should be much smaller than from 4 to 5.

And also the jump from 5.4+ to 7 is probably smaller than the jump from 5.2 to 5.3.

Although I think the PHP project does need to support versions for longer, the adoption rate of 7 is going to be quite rapid due to the low barrier of doing it, and the massive performance and language gains.

</comment></comment></comment></comment><comment><USER8> Yay! <3 PHP.

Also, the moment I read _declare(strict_types..._ , for some reason _" use strict";_ from ECMAScript flashed in front of me :D

<comment><USER15> Same idea, except `use \Foo\Bar\Baz as SomeAlias` is already reserved for namespaces.

<comment><USER11> Also, we already have use strict; as an easter egg ;)

<comment><USER16> Exactly how do you trigger the easter egg, and what does it do?

<comment><USER17> $ php -a

php > use strict;

PHP Fatal error: You seem to be trying to use a different language... in php shell code on line 1

<comment><USER18> There are some similar gems to be found in Python:

        >>> from __future__ import braces
          File "<stdin>", line 1
        SyntaxError: not a chance

<comment><USER8> Also try doing `import antigravity` from the Python repl ;)

</comment></comment></comment></comment></comment></comment></comment><comment><USER19> Wow, interesting:

"Whether or not the function being called was declared in a file that uses strict or weak type checking is irrelevant. The type checking mode depends on the file where the function is called."

That means that my function can have a parameter defined as an int in its strict file, but if it's called from outside of it, anything can still be passed to that parameter, right?

I'm not sure how I like that. What if you're passing input from class A into class BStrict then using BStrict to call a function in CStrict? BStrict and CStrict are defined as strict, where A is not. Would BStrict then be the one throwing the error because the "caller" is the issue?

From the description it seems that the parameters are effectively ignored in BStrict when A calls it.

Am I missing something or does this sound iffy?

Edit: Link for quote - [https://wiki.php.net/rfc/scalar_type_hints_v5#parameter_type...](https://wiki.php.net/rfc/scalar_type_hints_v5#parameter_type_declarations)

<comment><USER11> > That means that my function can have a parameter defined as an int in its > strict file, but if it's called from outside of it, anything can still be > passed to that parameter, right?

Not at all. It's "weak" typing, not no typing.

A small set of convertible values can be passed and will be converted to the type you asked for, while other values error as usual.

See the rest of the RFC.

<comment><USER19> You're right, I see that now. That's why they went into describing type conversions too. Thanks for the insight!

</comment></comment></comment><comment><USER20> Why do we need to duplicate the effort that people (some _very smart_ people, btw!) have put into Hack ([http://hacklang.org/](http://hacklang.org/)), a sane strictly typed PHP successor with many other good stuff added?!

(imho, not only _good_ , but _awesome_ stuff, like _XHP_ [https://www.facebook.com/notes/facebook-engineering/xhp-a- ne...](https://www.facebook.com/notes/facebook-engineering/xhp-a-new-way-to- write-php/294003943919) and _async /await_ [http://docs.hhvm.com/manual/en/hack.async.php](http://docs.hhvm.com/manual/en/hack.async.php))

And as a bonus, both HHVM.PHP and Hack and are well optimized to run at Facebook's scale... seriously, let's just leave Zend.PHP rot away in the trashcan of history and move the f on!

<comment><USER5> Well an obvious reason is all the PHP site that have already been written, are crucial components in many businesses, and cannot be upgraded to Hack. Those sites' authors may still want access to all that good stuff.

In fact, this kind of feature may make it easier to convert those applications to Hack in the future.

<comment><USER20> You can freely mix Hack code and PHP code on the HHVM, calling functions and classes defined in any PHP file inside you Hack app. Then you can slowly evolve the codebase to contain more and more Hack and less and less PHP.

That's the _huge point that nobody seems to see._

But then again, considering how many other huge points PHP developers seem to miss in general, maybe it's better to just let Node.js eat the world :)

<comment><USER5> In that case I take it all back! Sorry, I hadn't realised HHVM was so far along.

</comment></comment></comment></comment><comment><USER21> Interesting that Rasmus voted a No for this.

<comment><USER22> Not really, I think. It was exactly as I expected.

I once attended a mini-conference where he did a talk about PHP history. After the talk, someone asked a question about strict typing. Rasmus really hold on to the web not having types (just passing strings, as have been pointed out in other comments here). I remember him saying something like "when the web have strict types, PHP will have it too".

<comment><USER2> This is actually quite revealing. Some people think that PHP is just used for the same small web pages it was used for 15 years ago.

Other people would like to use PHP more as a general computing language.

Having optional types takes nothing away from using PHP for simple web pages, but does make it easier to right analyzably correct programs.

The fact that the founder of a language doesn't want to see it grow is quite depressing.

<comment><USER5> He doesn't want this particular feature. Considering the amount that PHP has grown, he obviously does want it to grow.

</comment></comment></comment></comment><comment><USER23> Good. Now I just need to wait for PHPStorm to support them ;)

<comment><USER11> Submit a feature request! ;)

</comment></comment><comment><USER24> So how do you go about using this in both PHP5 and PHP7 at the same time?

Do you need to run a pre-processor to strip them out of the code that runs on PHP5, while getting the benefit for testing on PHP7?

Trying it naively, PHP5 thinks you want to use a class called "int". And doesn't like the : for the return value.

<comment><AUTHOR> A pre-processor for PHP is a nice idea... like all the ES6 ones for JavaScript.

</comment></comment><comment><USER25> speaking of phpng, it now scores 1s better on the wordpress unit tests than just 3 month ago: [https://wiki.php.net/phpng](https://wiki.php.net/phpng)

</comment><comment><USER26> Can somebody explain this to a non-phper? So PHP got strict types, but only for Scalars (Ints and floats) and they can be enabled on a per-file basis. Right?

<comment><USER2> PHP has had type-hints for parameters for several version, but they could only be used for classes. The new types-hints cover the 'scalar' values (aka not object) and are int, float, string and bool. They allow a function to declare what they types of the variables it receives should be like:

function foo(int $x) { // x is guaranteed to be an int. }

The type-hinting for scalars has two modes:

* strict - the parameter passed to the function must be of the exact* type. * weak - the parameter passed to the function will be converted to the correct type.

The strictness depends on what mode PHP was in when the function was called. This is the right choice as it:

* Allows library authors to write their code in either strict or weak mode.

* End-users to write their code in either strict or weak mode. Or even without using scalar type-hints.

* End-user to be able to choose when they are writing their code do they want their variables to be converted to the type expected by the library automatically, or do they want PHP to give them an error if they accidentally pass the wrong type of variable to a function that is expecting an int.

*except for some widening rules, e.g. you can pass an int where a float is expected, as ints can be converted into float without data loss (for ints less than 2^53).

<comment><USER17> they could have been interfaces, or arrays too.

</comment></comment></comment><comment><USER27> Is this compatible with what Facebook has done with Hack?

<comment><USER11> There's no fundamental incompatibility. Hack files don't use <?php tags, they use <?hh tags. I'm sure Facebook will make HHVM handle PHP type declarations alongside Hack type declarations, though exactly how they'll interact remains to be seen.

</comment></comment><comment><USER28> I can't find it anywhere in the document - are these statically checked types or just run time checks (contracts)?

<comment><USER11> Runtime (like PHP's existing type hints), but they could be checked statically by IDEs and such. One benefit of strict mode is that it enables much better static checking than weak mode, because validity is determined by type and never value.

</comment></comment><comment><USER29> What happened to PHP6?

<comment><USER11> PHP6 was supposed to be this all-singing all-dancing Unicode support release. It dragged on for years but didn't get finished due to various issues, and in 2008 they decided to just scrap it and roll what they could salvage into 5.3

Since PHP6 died, it made sense to avoid confusion and not name the new major version 6, since we'd then have two different PHP 6es.

This is not unlike what happened with ECMAScript 4.

<comment><USER30> That's funny; I used nearly the exact same phrasing to describe PHP 6 a few months ago:

[https://www.reddit.com/comments/2qyuhc/new_rfc_for_scalar_ty...](https://www.reddit.com/comments/2qyuhc/new_rfc_for_scalar_types_in_php_7/cnavjpe)

<comment><USER11> Ah, I may have subconsciously copied the way you said it, I think I've read your comment before. Sorry about that!</comment></comment></comment></comment>


Why hashed Personally identifiable information (PII) on the blockchain is fine - <AUTHOR> https://medium.com/meeco/why-hashed-personally-identifiable-information-pii-on-the-blockchain-can-be-safe-b842357b9663 <comment><USER2> This repeats a different misconception, that quantum computers provide "infinite computational resources".</comment>