Paul Graham reviews Structure and Interpretation of Computer Programs (2000) - <AUTHOR> http://www.amazon.com/review/R3G05B1TQ5XGZP/ref=cm_cr_dp_title?ie=UTF8&ASIN=0262510871&nodeID=283155&store=books <comment><USER2> The thing that really turned me off of this book is that the exercises are way more complicated than the material itself. They made me feel like an idiot and like I wasn't learning. To put it in terms of Kathy Sierra, this book didn't make me feel like "I'm awesome"[1]. Here's a satirical example:

> Now that you've learned how to sum an arbitrary list of numbers together, > use this knowledge to prove Einstein's general field of relativity.

How about instead of proving physics theories, we use our new knowledge to add together apples and oranges? That is easier for me to comprehend.

I'm not saying this to troll. I know this book is supposed to be great and I plan to read it again. But I'd like to hear why my complaint didn't bother the people here that did finish and love this book. Should I just ignore the exercises?

\---

Edit: I want to clarify something. It wasn't that the exercises were too hard to answer. My complaint is that I couldn't even comprehend what some were asking me to do. To me, it was like the exercises were written in French, a language I don't speak. If I could understand what the exercises were asking for, then I could have realized I'm missing something and re-read the section. But as they were written, it made me feel like I should temporarily put the book down and re-take physics and calculus.

[1] [http://www.youtube.com/watch?feature=player_detailpage&v=eSl...](http://www.youtube.com/watch?feature=player_detailpage&v=eSlRd6MnDv8&t=479)

<comment><USER3> Take this with a grain of salt, but IMO the reason some people who try to learn programming end up with this type of mindset is because they have a wrong mindset to begin with: they believe learning to program should be relatively easy and have an obvious and relatively simple path to mastery. From my experience, this is not the case at all. If you read any math textbook, generally the last problems in a section are the most difficult to understand and answer, unless you've mastered all the concepts in that section. Pure Computer Science is harder than pure math in many ways; 1) because unless you master all the concepts in a section, you won't get too far, and 2) computer science in general, but specifically this textbook is geared toward people who have already somewhat mastered mathematics, so all or most of the problems will be like the last problems of a section in a math textbook.

"If it comes easy, then you're not doing it right."

<comment><USER4> > they have a wrong mindset to begin with: they believe learning to program > should be relatively easy and have an obvious and relatively simple path to > mastery

The masters of every subject say stuff like this, and it's really just a type of myopia of the craftsman. I work in manufacturing and people tell you shit like this all the time.

Imagine a 19th Century Car Driver:

"People who think learning to drive should be relatively easy are missing the mastery required for match-rev shifts, air-fuel mixture, spark management - not to mention the intricacies of debugging your carburetor on the side of the road."

Programming will continue to be made more accessible, as is the apparent trend. Nearly no developers know what's really going on under the hood except people who specialize in assembly, CMOS, etc.

<comment><USER3> > Programming will continue to be made more accessible, as is the apparent > trend

Of course it will become easier over time...just like everything. Consider John Carmack and what he did when writing Doom, Wolfenstein, etc...I can almost guarantee you when he was programming, programming was A LOT harder than what it is today. But the difference there is nothing more than time. Even if it's getting easier over time, my main point still stands.

<comment><USER5> I'm not sure I agree... While it's certainly true that to create the same thing that Carmack did would be a lot easier today. Working on Carmack level code remains very difficult to this day. It's just that the bar has moved.

Sure, a simple ray-caster isn't going to need a lot of optimization today. But when you are dealing with the sort of data that is now common. Optimization can be just as important.

While languages have have improved for the better, other things have created other challenges. Consider the PS3 Cell architecture. Considered to be a much more difficult architecture to program for than the processors of Doom's day.

</comment></comment></comment></comment></comment><comment><USER6> Peter Norvig (Director of Research at Google, among other things) also left a review, with his explanation of all the negative reviews:

[http://www.amazon.com/review/R403HR4VL71K8/ref=cm_cr_dp_titl...](http://www.amazon.com/review/R403HR4VL71K8/ref=cm_cr_dp_title?ie=UTF8&ASIN=0262510871&channel=detail- glance&nodeID=283155&store=books)

<comment><USER7> It seems to me that Peter Norvig is attacking personally the readers who didn't like SICP (in the lines of "if you didn't like SICP, you're just not a creative person").

Also, he is flawed when saying that only about 1 person out of 50 should like this book (the proportion of people who have "this strange way of thinking that makes a programmer"), since the largest part of the people exposed to SICP are programmers, or at the very least interested in computer science.

Disclaimer: I have lots of respect for Norvig and think his PAIP is awesome.

<comment><USER6> His analogy is that some people want to know exactly how their car works, but most people just want to drive. I don't think that's an attack on everybody who's not an automotive engineer.

 _Also, he is flawed when saying that only about 1 person out of 50 should like this book ... since the largest part of the people exposed to SICP are programmers_

He acknowledges that by saying "a big part of the explanation is that the audience is self-selected." But he also seems to be acknowledging that not every programmer needs or wants the depth that SICP provides.

<comment><USER8> The passage in question, as neither of you seem to have read it closely:

> Donald Knuth says he wrote his books for "the one person in 50 who has this > strange way of thinking that makes a programmer". I think the most amazing > thing about SICP is that there are so FEW people who hate it: if Knuth were > right, then only 1 out of 50 people would be giving this 5 stars, instead of > about 25 out of 50. Now, a big part of the explanation is that the audience > is self-selected, and is not a representative sample. But I think part of it > is because Sussman and Abelson have succeeded grandly in communicating "this > strange way of thinking" to (some but not all) people who otherwise would > never get there.

<comment><USER6> I read it closely the first time, thanks. If you'd like to directly address something I said, feel free.

Although, I only said two things, (1) he acknowledges the audience is self- selected (direct quote from the review), and (2) some people aren't willing to put in the work to gain that level of familiarity with the subject (directly supported by his analogy in the second paragraph).

Does that contradict anything in the review? You seem to be fixated on something else there that S4M and I aren't discussing. If you'd like to draw attention to that, again feel free.

</comment></comment></comment></comment></comment><comment><USER9> May be it's time to create annotated version of SICP.

My favorite annotated works:

Annotated Turing: [http://www.charlespetzold.com/annotatedturing/](http://www.charlespetzold.com/annotatedturing/)

Newton's Principia, The Central Argument: [http://www.amazon.com/Newtons- Principia-The-Central-Argument...](http://www.amazon.com/Newtons-Principia- The-Central-Argument/dp/1888009233)

That reminds me one of the argument Newton made in his Principia. He said something of the essense that he has intentionally written his Principia in non-friendly dry manner because he wanted readers to have certain degree of discipline and patience and also he wanted to eliminate readers who would just naively attack his works with shallow arguments.

But that was than. Today readers have came to expect certain level of accessibility. But still no one should tell authors how they need to write books. If you think SICP is not accessible enough, go annotate it with your insights and expanded arguments filled with analogies and examples.

<comment><USER10> I think the web definitively needs a good tool for delivering annotated texts. It's been on my 'list of startups to make' for a least half a decade.

</comment></comment><comment><USER11> This is a good time to remind everyone of a decent eBook PDF version of SICP: [http://sicpebook.wordpress.com/](http://sicpebook.wordpress.com/)

</comment><comment><USER12> > An optimistic professor somewhere has been feeding SICP to undergrads who > are not ready for it.

In my very fist undergrad class, this was the course textbook. I generally think that I and some others taking the class at that time didnt value it so much, but going forward (especially after the class) I feel like what it talked about is a lot more important than I initially thought. I think that the professors made the right decision, though, giving us the book that early because even though I didnt appreciate the book so much then, I think that I absorbed a lot of its ideas into the way that I code.

<comment><USER13> +1 same here.

</comment></comment><comment><USER14> Also look at the "most helpful" negative review: [http://www.amazon.com/review/R3P3KHD7WHGNBM/ref=cm_cr_rdp_pe...](http://www.amazon.com/review/R3P3KHD7WHGNBM/ref=cm_cr_rdp_perm?ie=UTF8&ASIN=0070004846&linkCode=&nodeID=&tag=)

The reviewer accuses the 5-star reviewers (not PG and Peter Norvig directly, since that review seems to predate theirs, but that hardly matters) of elitism, and the book itself of "dreadful writing", "advocacy of a language that can be really quite a horror for beginning programmers", and "a terrible job explaining fairly simple ideas".

I'm tempted to say "Yeah, well, that's just, like, your opinion, man."

</comment><comment><USER15> Ah, pg, assigning homework to… everyone.

</comment><comment><USER16> I'm curious... when is one "ready" for SICP?

<comment><USER17> According to Paul's writing here, when you are ready to give it a 5 star review on amazon.

Now, when will it and _The Art of Computer Programming_ be available in an electronic format?

<comment><USER18> The full text has been available online _for years_.

[http://mitpress.mit.edu/sicp/sicp.html](http://mitpress.mit.edu/sicp/sicp.html)

<comment><USER17> Thanks. When it wasn't available in kindle on amazon, and TAoCP having not made the jump from paper (pdfs don't count. They are a terrible format for books), I assumed that it was likewise unavailable.

</comment></comment></comment></comment><comment><USER19> > 6\. Who is al? Why is his name in lowercase?

Anybody?

<comment><USER20> Al would be "others", and appears in lower case because it is not a proper noun.

Strictly speaking, al. is actually an abbreviation that could mean any of the Latin words alii, aliae or alia. Which one is appropriate would depend on the gender(s) of said others.

<comment><USER21> ah..as seen in literature reference 'et al'

<comment><USER20> Exactly. With et meaning "and".

</comment></comment></comment></comment><comment><USER22> I used SICP as a template for writing a Scheme interpreter in c++. For that, it was awesome. Once you implement an immutable list and an immutable map in c++ you can write nearly homologous code to that of the scheme in SICP. Name how many programming books teach you a language, a mindset, a bunch of usable algorithmic constructs and to top it all a recipe to create an interpreter for the said language in any computational substrate.

</comment><comment><USER23> Brian Harvey's video lectures on Scheme using SICP:

[http://webcast.berkeley.edu/playlist#c,s,Spring_2011,EC3E890...](http://webcast.berkeley.edu/playlist#c,s,Spring_2011,EC3E89002AA9B9879E)

along with the home page for the class:

[http://inst.eecs.berkeley.edu/~cs61a/sp11/](http://inst.eecs.berkeley.edu/~cs61a/sp11/)

I'm going to use it to complement the PDF version of SICP posted above in this thread.

</comment><comment><USER24> Lots of big hints there for forward thinking developers to pick up on. Haskell for a large simulation project, GPGPU shared memory datastructures, 120 hz clock with physics interpolation, benefits of functions without side effects, performance benefits from elegant design rather than complicated optimization kludges.

<comment><USER24> oops I totally posted this to the wrong thread

</comment></comment><comment><USER25> Thanks for posting this, it convinced me to finally crack this book. I've done a little bit of toying around with Racket and Clojure, but I don't feel like I understand how these languages work deeply enough on a conceptual level yet.

</comment><comment><USER26> The negative reviews comfort me. They make it more possible for me to believe that my negative reviews are signs of misunderstood genius. :-)

</comment><comment><USER27> Who is al?

<comment><USER28> Author lists often end with "et al" which is Latin for "and others."

<comment><USER29> I'm going to name my kid "al Arthur Alexander", so he can claim authorship credit for thousands of writings, and also for millions of highscores in arcade cabinets everywhere.</comment></comment></comment>


Show HN: From Google Sheet to Full Blown Tech Conferences and Events Website - <AUTHOR> https://www.techconfs.com/ <comment><AUTHOR> TechConfs was developed to solve a problem I had ... too many technology conferences I wanted to attend but didn't have an easy way to categorize, search and browse them.

This project started as a simple Google Spreadsheet but it was missing something.

Enter my "72 hours or less" launch challenge I gave myself ... over a month ago.

Let me know your thoughts and I'll keep this thread updated as I go through all the comments.

Also if I'm missing any event or conferences, just leave it in the comments and I'll them added ASAP.

Right now doing this all manually makes it difficult to scale, but I do think this can become a very valuable resource.</comment>


Go Game Guru – Learn all about the board game Go - <AUTHOR> https://gogameguru.com/ <comment><USER2> For the English speaking Go community, GoGameGuru is without question the most reliable online resource for great commentary on the most important matches between the world's top players (and of course more recently AlphaGo vs. Lee Sedol). They also do translations of the best content from Korea's BadukTV - lessons, game commentary, famous problem sets, and more. GoGameGuru is a treasure trove, no question.

That said, GoGameGuru is just another sign of an explosion of amazing Go content, tools, and communities for an English speaking audience. There's really never been a better time to get into the game. You have Lee Hajin's (Korean 3p) YouTube channel [https://www.youtube.com/channel/UCTji1kQNoWIH85dB_Vxka9g](https://www.youtube.com/channel/UCTji1kQNoWIH85dB_Vxka9g) where she plays games live on Tygem (one of the largest and strongest online Go communities, many top pros play there). You have online sophisticated pattern searching over _hundreds of years_ of games [http://ps.waltheri.net](http://ps.waltheri.net). You can get free online commentary on games you played [https://gokibitz.com](https://gokibitz.com). And you can easily find an opponent online without leaving the comfort of your browser [http://online-go.com](http://online-go.com).

I wrote a post in January summarizing all the great content now available as well as possible paths to deepening your understanding of the game - [http://swannodette.github.io/baduk//baduk/2016/01/08/hello-b...](http://swannodette.github.io/baduk//baduk/2016/01/08/hello- baduk.html).

<comment><USER3> This is a great post. I do think it should mention OGS (online-go.com) as an alternative to KGS. Some people may really not like installing a Java app for KGS.

<comment><USER4> I'd also mention the turn-based (async) Go system, Dragon Go Server: [http://www.dragongoserver.net/](http://www.dragongoserver.net/)

Many people find the more relaxed environment useful for playing human games. You don't need to commit to a block of uninterrupted time, and you can take your time and play out ideas. There's a great Android client: [https://play.google.com/store/apps/details?id=mco.prj.app.bw...](https://play.google.com/store/apps/details?id=mco.prj.app.bwgofree&hl=en) and DGS plugin: [https://play.google.com/store/apps/details?id=mco.prj.srv.bw...](https://play.google.com/store/apps/details?id=mco.prj.srv.bwdgs&hl=en)

</comment></comment></comment><comment><USER5> I just started playing Go this January. The game was fairly overwhelming at first.

The path I followed to get a decent understanding of the game (I'm about 13kyu now) was this:

1\. Start by playing a few games, doesn't really matter the size of the board, or whatever, it's just for context and to get a general feel for the game. But not enough games to get dejected or fall into bad habits.

2\. Read an introductory Go book. I personally first read "Go; More Than a Game" by Peter Shotwell. It explains the game from the very beginning and also has a lot of historical context which most Go books do not. My roommate had this book which was very convenient for me. An online resource that is fairly good is Sensei's Library, especially [http://senseis.xmp.net/?HaengMaTutorialForBeginners](http://senseis.xmp.net/?HaengMaTutorialForBeginners). You can also find the definition and exampels of all Go terms here.

3\. Play more games, try to apply things you learned from the book. Also start watching Nick Sibicky's YouTube lecture series. Just start at #1 and keep watching when you have time. I'm only on lecture ~30 but I find they have been very helpful.

4\. Get a Tsumego (like chess problems, but Go problems) app or something for your phone and do a Go problem every so often. (Try to do at least 10 problems a day. Try reading it out rather than firing shots blindly. If you just brute force the solution you won't learn nearly as much as if you spend a long time just trying to read it out.)

5\. At this point, you should be playing a few 19x19 games every week. Keep in mind that 9x9 is fairly different, so play it if you like it but keep in mind it is not 19x19 at all. Try to review after each game, or have your games reviewed by stronger players. There are a lot of friendly, helpful, and knowledgeable players in the chat rooms on online-go.com and the review tool is pretty cool. The site actually uses a pretty modern stack, too, using node.js and Angular, if I recall correctly... the devs hang out in chat too and are fairly open to questions)

6\. At this stage, you should be somewhere around 20-15k on online-go.com. (Essentially, past the most basic novice level. You understand atari, ko, etc. You recognize some of the obvious mistakes.) Now it's time to buy a more serious Go book. I highly recommend "The Fundamentals of Go" by Toshiro Kageyama 7p and "Graded Go Problems for Beginners" (Volume 2) by Kano Yoshinori 9p. Kageyama's writing style is pretty entertaining and he stresses the fundamentals which are very important. The Go Problems book covers a lot more than life and death, it has opening, end game, etc problems, with explanations attached to all the answers.

7\. Keep playing games, doing tsumego, watching youtube videos, and re-reading the books if relevant. It should be a straight and steady climb to single digit kyu-dom from here on out. At least that's my hope. :)

\-----

NOTE: Do not play against Go computer programs if you can help it... they play bizarre moves that sometimes work out and sometimes are meaningless... You can learn much more from a human opponent who will help you learn the obvious mistakes by punishing you for them directly.

</comment><comment><USER6> I've started playing Go against a computer (SmartGo iOS on a 9x9 board) but I find the hard part is determining where you're making mistakes, what is a better move, why the computer did what it did etc. For instance the computer may ignore a capture to play elsewhere and it can be hard to work out why. I learnt to play Chess when I was young so I can't make a fair comparison but it feels like Chess is much easier to self diagnose.

<comment><USER7> I took up Go about six months ago, after many false starts over the years. The secret for me was to stop playing computers and start playing humans online (I like online-go.com). Computers at lower difficulty settings make a combination of very strong moves and very weird moves, which are difficult for beginners to interpret. And the game is just a lot more fun when playing against people of similar skill level or a bit stronger, so you win about 50% of games and can understand your opponents' moves more easily.

<comment><USER8> The 12k bots on pandanet are good for learning how to make large groups live against a relatively good opponent, large group deaths are usually the most damaging thing to a beginner's results.

<comment><USER9> Large group death meaning that the opponent invades before you have created eyes among your large-looking territory?

<comment><USER10> In your large-looking territory, the territory would be the eyes.

Large group death just basically mean a large group of stones, it could either be an invasion group, an attack and run group that grows, or even the used-to- be-territory-but-now-not group

</comment></comment></comment></comment></comment><comment><USER11> The biggest most canonical English resource is [http://senseis.xmp.net](http://senseis.xmp.net). You can get lost there for days.

</comment><comment><USER12> I, and I suspect a lot of other people, was introduced to Go by the tv show Hikaru No Go.

> While exploring his grandfather's shed, Hikaru stumbles across a Go board > haunted by the spirit of Fujiwara-no-Sai, a Go player from the Heian era. > Sai wishes to play Go again, having not been able to since the late Edo > period, when his ghost appeared to Honinbo Shusaku, a top Go player of that > period. Sai's greatest desire is to attain the Kami no Itte (神の一手?, "Divine > Move") – a perfect move. Because Hikaru is apparently the only person who > can perceive him, Sai inhabits a part of Hikaru's mind as a separate > personality, coexisting, although not always comfortably, with the young > boy.

> Urged by Sai, Hikaru begins playing Go despite an initial lack of interest > in the game. He begins by simply executing the moves Sai dictates to him, > but Sai tells him to try to understand each move.

It's a fun series, especially if you have a fast-forward button and don't have to fumble around with discs

<comment><USER13> What would you ever fast forward besides the intro/"last time on.." and the outro? ;)

I would add a recommendation to watch the Japanese dub. I accidentally stumbled upon the English dub on Youtube recently, I didn't even know there was one, it was terrible...

<comment><USER12> > What would you ever fast forward besides the intro/"last time on.." and the > outro?

5 minute long freeze-frame shots where the camera slowly pans over shocked faces having a massive emotional reaction to every single clever move.

Just like I'd fast forward Dragon Ball Z every time Goku needs to use 3 episodes of grunting to charge up an energy ball attack.

<comment><USER14> That's why reading the manga is almost always the superior experience compared to watching the anime adaptation.

The adaptations usually insert so much unnecessary filler because they'd otherwise catch up to the latest manga chapter much more quickly. Your typical half-hour episode usually covers 2-3 chapters' worth of material. Without the filler, a year's worth of manga might be covered in half a season of anime.

Regarding HnG specifically, reading the manga has the additional advantages of not bothering with intros/outros/spoilery-previews and allowing you to avoid messing with pause buttons to get a better view of game boards. The art is also absolutely gorgeous, especially in the latter half of the series.

</comment></comment></comment></comment><comment><USER15> Here is another list of useful go resources : [https://forums.online- go.com/t/free-resources-for-beginners/...](https://forums.online- go.com/t/free-resources-for-beginners/6700)

Another useful site which has interactive tutorials : [https://online- go.com/learn-to-play-go](https://online-go.com/learn-to-play-go)

[https://online-go.com](https://online-go.com) is also good for playing games online.

</comment><comment><USER16> The best introduction to the game that I've ever found is "The Interactive Way to Go"

[http://playgo.to/iwtg/en/](http://playgo.to/iwtg/en/)

<comment><USER3> Seconded. The only downside is that it's using Flash.

<comment><USER16> Yeah, it would be awesome if someone would modernize it. Or do something like Chesscademy for Go.

</comment></comment></comment><comment><USER17> Learning:

\- I personally like this guide: [http://playgo.to/iwtg/en/](http://playgo.to/iwtg/en/)

\- If you use Windows or Mac, there's a very good software called SmartGo. On Linux you might want to try "Kigo", from KDE.

\- Eidogo.com and Josekipedia.com are good for learning joseki.

\- For Android there's a really good app for exercises called "Magic Baduk Go".

Some mini review of different servers:

\- online-go.com (OGS) is excellent, but is very new and not as active as other servers. Still recommended.

\- KGS if you are western is the thing. There are usually bots that are 24 kyu that you can play against if you are new to the game.

\- IGS might be good as well.

\- Tygem and WBaduk are very hostile to new players because of the high number of sandbaggers (dans that pretend to be 18 kyu). You can get it running on Windows or Wine.

Books:

\- "In the beginning", "38 basic joseki" and "attack and defense" are probably the best books for starting on go. SmartGo has them, and this will save you the effort of reading complex diagrams. Instead you can have interactive embedded go boards.

Equipment and playing offline:

\- If you don't want to commit to buy equipment, drop by a go club and try the game. Usually people there are very friendly to newcomers.

\- If you just want to commit to the real thing you can look for go boards and stones on Amazon. My personal favourite stones are the "Yangstone go stones", korean made durable glass stones. Other stones like Yunzi can be really fragile and shatter. Stones are the most important thing to start.

\- You can start off a printable 9x9 board for practicing, then play on 13x13 then 19x19. Starting directly on 19x19 is a bit difficult.

Watching professional go games:

\- You can subscribe to Baduk TV, or watch their Youtube channel for free: [https://www.youtube.com/user/onbaduktv](https://www.youtube.com/user/onbaduktv)

\- You can see latest game records (kifu) uploaded to gokifu.com

Lessons:

\- Some people on KGS offer lessons. While this can be a bit expensive and they might be hard to find, it's a possibility. I did this for a couple of years and I went from 20 kyu to around 5 kyu.

</comment><comment><USER18> If you're shopping for a Go set, I would recommend looking at [http://www.thegamesupply.com/go-game-sets/](http://www.thegamesupply.com/go- game-sets/)

There are a few medium quality boards on there. There is a $70 set with free shipping that includes:

• 1 full size (17"x18") wooden board with wooden feet

• 320 Bi-convex glass stones with plastic containers

</comment><comment><USER19> While we're here, does anyone know a good Go app for Android? A lot of them look like spyware, judging by permissions.

<comment><USER20> I use "Go Free." It has permissions to USB storage and network access. The unpaid version allows a 13x13 board (19x19 requires upgrading). It has 10 levels of difficulty, of which I can only beat up to level 3. The ads are a little annoying, but no worse than any other free games I have for android:

[https://play.google.com/store/apps/details?id=uk.co.aifactor...](https://play.google.com/store/apps/details?id=uk.co.aifactory.gofree)

<comment><USER13> They recently upgraded their engine to a stronger one, so are you still at 3? Also the full app is available for free on Amazon Underground, I use that for playing 19x19 games.

The big lacking feature of the app for me is that it doesn't let you save your game as an SGF. At least [https://play.google.com/store/apps/details?id=mco.prj.app.bw...](https://play.google.com/store/apps/details?id=mco.prj.app.bwgofree) lets you do that.

<comment><USER20> I just got the notice about the upgrade. I'm probably going to do worse at 3 now since my wins there were tenuous. Go has been an easy game for me to learn, but a very difficult game for me to get any good at. I just don't know how to think about it the way I think about chess.

<comment><USER13> Yeah, I haven't upgraded my copy from Amazon since I'm still working on beating it at level 5. Still pretty weak. I've gone through the first two Janice Kim books which I think made me stronger, but I still don't handle fights very well. Finally starting to take tsumego practice more seriously, so I'm cautiously optimistic about a noticeable skill bump over the next couple months. I think my prior Chess experience helps with raw reading ability (and even just the concept of reading) but I read way too optimistically in Go, and just don't read enough in longer 19x19 games.

</comment></comment></comment></comment></comment><comment><USER21> This YouTube channel has very useful and informative content. A caveat: the presenter there has a very thick Chinese accent. I personally have no problem with it but some people have commented that they can't understand what he's saying.

[https://www.youtube.com/user/gocommentary/videos](https://www.youtube.com/user/gocommentary/videos)

This is one of the best game commentaries in my opinion. It has subtitles to help with the accent.

[https://www.youtube.com/watch?v=3O-lwNzN0G0](https://www.youtube.com/watch?v=3O-lwNzN0G0)

</comment><comment><USER22> It's been a joy to watch all of the excitement around Lee Sedol and AlphaGo's incredible machine performance translate into _increasing_ interest in Go, rather than a disappointed turn away from another domain that we seem to be preempted from. Maybe this speaks to something deeply encouraging about the definition of actual human intelligence.

It's sure makes me feel better about all the time I've spent playing Go during the workday these past few weeks, anyway.

</comment><comment><USER23> Slightly off topic perhaps, but I've been looking to buy a Go game. Dutch sites don't seem to have it for a reasonable price; this site sells it for $9.99 but with $18 shipping. Any Europeans here who can tell me how to get it to either a German, Belgian or Dutch address for about €20 or less?

<comment><USER24> There are many go clubs in the Netherlands. Find one, go and play with people! While you are at it, you can ask them about buying a go board and will probably be able to buy one without having to pay for shipping at all.

<comment><USER23> If I remember correctly, my girlfriend looked for one near south Limburg but the closest one was Utrecht.. I know there is an index for chess clubs, do you know of one for go clubs?

<comment><USER25> The Nederlandse Go Bond has a list of affiliated clubs. If you speak French or German, I might also suggest looking for clubs across the border.

[https://www.gobond.nl/verenigingen](https://www.gobond.nl/verenigingen) [http://www.eurogofed.org/members/](http://www.eurogofed.org/members/)

</comment></comment></comment></comment><comment><USER26> "Despite recent advances, computer programs are still a long way off being able to compete with the top human players." They might want to update this ;)

</comment><comment><USER27> What's the point? The computers can already beat everyone. :-P</comment>


It's Impossible to Validate an Email Address - <AUTHOR> https://elliot.land/validating-an-email-address <comment><USER2> What I'm about to say is more general than regex, but can online services _please_ stop trying to validate my email address?

If I gave you an email address that you think is invalid, rest assured I did it for a reason. I'm not an imbecile: I know how to type my address correctly (especially when you make me type it twice). For all the imbeciles who don't know how to type their address correctly, the phone system still works fine.

I may have given you my real email address with a plus-sign for a filter. Don't tell me it's invalid.

I may have given you a fake email address, because I know you're just going to spam me. If you tell me it's invalid, I'll either spend an extra few minutes cooking up a _better_ fake email address, or I'll leave your site.

<comment><USER3> Agreed. I find things like "firstname.lastname@example.com" usually work, and then if they ever bother to read what's in their database they may get a hint.

<comment><USER4> email@example.com_ is nice, and actually works for that one activation link you have to click.

</comment></comment></comment><comment><USER5> If you happen to control the web page where the user is entering the email, this little piece of code has been a godsend for us:

[https://github.com/mailcheck/mailcheck](https://github.com/mailcheck/mailcheck)

I agree with the idea that it's impossible to validate. But, mailcheck takes the approach of seeing if the email is potentially wrong, then prompting the user with what it thinks they meant. It's usually right, but if not, it allows whatever the user wants.

For example, if your user types in "email@example.com", it will suggest "email@example.com".

<comment><USER6> This kind of stuff is great - make suggestions, but allow it to go through even if you think it's wrong. For the last email validation I worked on, there were only 2 absolute blockers - there must be an @ sign, and the domain must have MX records (emails that are technically valid remain useless if we can't send them anything).

There were a number of other checks (being close to yahoo.com or gmail.com or other common email hosts, containing surprising characters, etc) that would trigger warnings, but still allow the check to pass if the user assured us it was correct.

<comment><USER5> >>domain must have MX records

Technically, the RFC(5321) says MX records aren't required. You may be throwing out some small number of valid emails.

 _" If an empty list of MXs is returned, the address is treated as if it was associated with an implicit MX RR with a preference of 0"_

</comment></comment></comment><comment><USER3> This advice should probably extend to a variety of form elements.

Like DRM and a lot of other efforts to "control" things, aggressive validators invariably punish people who are just trying to do legitimate things. Don't piss off your real customers.

I used to live in a town with a 12-letter name, and more than once a form decided that it knew the Universal Sensible Maximum Length of Town Names and wouldn't let me type the last couple characters. And it usually doesn't stop there, because once a site is incapable of storing things sensibly it invariably starts to have trouble _matching_ things, giving errors that are just plain stupid (e.g. "this other thing doesn't match what you entered", well no shit...).

There is also too much thought put into what constitutes a person's "name". Generally, to work across all possible cultures, use a single, _very long_ text field that can contain whatever the person decides to type. After accepting their input as-is, feel free to internally perform parsing logic to try to allow additional database queries but under no circumstances should your page make any assumptions.

The real "you should be fired as database administrator" mistake though is to store modified data _without telling the user_. This usually happens with passwords; I use a site for months and then one day accidentally hit Return too soon _and my password works anyway_ , meaning they just CLIPPED whatever strong password I entered and stored whatever they felt like (usually 8 characters). NEVER do things like that without telling the user.

<comment><USER4> It is 2016. We should know better by now than to clip passwords _at all_. Sure, place a limit of 512 characters on it to prevent abuse, and for security reasons there can be a number of _minimal_ requirements for length and complexity, but please let me be the one to decide if 32 characters is sensible or not.

</comment></comment><comment><USER7> > One more interesting tidbit is if you use unique sub-addresses for each of > the sites you sign up to you will be able to see when someone, or rather > who, sells your email to someone else... Busted!

Can't the spammers simply strip the subaddress/label after '+' ?

<comment><USER8> They can.

They don't.

It's extra effort for them for nearly zero marginal gain.

<comment><USER9> Some sites however will just ban + on registration. I've seen registration allow + but login disallow (also different password lengths occasionally, wtf?), though I can't think of any offhand.

</comment></comment></comment><comment><USER10> I once heard the story of a man who helped Aruba set up their DNS (.aw) in the late 90's. In exchange, as part of his compensation, he asked for an email address at the top-level domain, and received something like js@aw, which is a perfectly functional email address, but trips up a lot of validators.

<comment><USER11> It isn't a valid address. TLDs must not resolve, so it should be impossible to make a server handle it (yet, it is mostly possible, because most DNS servers do not completely implement the RFCs - still, there's no guarantee it will work on every network).

<comment><USER12> The first one I found that does resolve: [http://ai./](http://ai./)

It has an MX record too. There is nothing wrong with this.

<comment><USER13> It is most definitely wrong, if your definition of wrong includes disallowed / not recommended by ICANN and IAB.

What is wrong with it is, amongst other things, the real-world possibility of colliding with internal hostnames.

</comment></comment></comment></comment><comment><USER14> If you were to ask me for a regex, I'd say /.+@.+/.

That's the easiest and most accurate way to do it by regex. Sure, some invalid addresses may still get accepted, but that is unavoidable. Even the most thorough validation[0] is going to accept nonexistent addresses.

[0] Except those that validate by sending a mail to it. Sending an email is the only way to be sure.

<comment><USER15>
        # get email addresses
        grep -EiEio '\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b'

        # censor email addresses
        sed -r 's/(<)[[:alpha:][:digit:]\._%\+-]+@[[:alpha:][:digit:]\.-]+\.[[:alpha:]]{2,4}(>)/\1--removed--\2/g'

If email doesn't meet those, I drop them on the floor. Then again, I drop email on the floor for lesser reasons.

<comment><USER12> So you're blocking email from your local .museum, from anyone who has an Irish name like O'Connor, all international TLDs, and most newer TLDs.

<comment><USER15> Yes.

</comment></comment></comment></comment><comment><USER16> Let's remind the famous quote from Jamie Zawinski: "Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems."

I was neglecting this quote for a long time, until I started using regular expressions in real projects...

<comment><USER17> I never really learned how to write regex. I can write simple ones with the use of a tool to help me figure out what I need to write (and a cheatsheet to explain the terms).

I realize they could save me some future potential grief, but I'm usually more concerned with the present actual grief they cause me.

I feel like I'm letting down the side.

<comment><USER18> If you start writing a lot of Unix pipelines or use Vim extensively you start to get a very strong working knowledge of regular expressions (awk can solve basically any problem, but it creates at least twice as many as it solves :P).

</comment></comment></comment><comment><USER19> This checks whether or not an email address follows RFC 5322 via parsing vs via regex: [https://github.com/jackbowman/email- addresses](https://github.com/jackbowman/email-addresses)

<comment><USER20> Yes! The title is misleading; it's not at all difficult to syntactically validate an email address; it's just not possible _using regular expressions_ (HE COMES).

</comment></comment><comment><USER21> Title on article would be more complete if said by Regex.

<comment><USER22> That's what the article describes, but it's hard to validate an email address by sending to it too if you want time bounds. My mail server implements greylisting and its frequently difficult for me to verify my email address on services that send me tokens that expire. Greylisting typically delays by only 10 minutes or so but there are plenty of times that mail servers can be down for extended periods, or a quota/disc is full, or an intermediate mail router is down, or any number of other problems

</comment></comment><comment><USER23> It seems there are weird things you can use in an email address that nobody does, as a result what is used and considered to be an email address has matured. If you create an email address that is weird, in practice you'll be less capable of using it.

The weirder it is the fewer web forms or software you'll successfully put it into.

I think we can just say no, functionally, you cannot put comments or additional @ symbols into your email address. It hasn't worked for long enough, people know you just aren't supposed to do it. I'd be surprised if you were allowed to create such a thing signing up for bing for example. You probably need to be the administrator of some chaotic UNIX server with full DNS, in order to force it to happen at this point.

Even Google Chrome's built in email field validation doesn't allow you to do it.

I shouldn't be expected to jump through the hoops necessary in order to allow "technically valid" email addresses that someone went out of their way to make, when I could more easily suggest they use a normal one.

<comment><USER24> > I shouldn't be expected to jump through the hoops necessary in order to > allow "technically valid" email addresses that someone went out of their way > to make, when I could more easily suggest they use a normal one.

I really hope you don't work on anything important if your stance is, "I shouldn't be expected to implement specifications correctly because it's easier to only implement part of it."

Why are we even having this discussion? Implement it correctly once, put it in a library and never worry about it again. You don't have to jump through any hoops, you're only making more work for yourself by implementing the standard incorrectly and then having to deal with customers that think that the ITEF standard is more valid than _your personal definition_ of what an email address should be.

If your code is passed down the line and eventually hits someone who writes unit tests for actual valid email addresses then your name is going to come up on the git blame when it fails.

<comment><USER23> Even Gmail, what I would consider a gold standard, only allows letters, numbers, and periods. So when you're done accusing me of not being someone viable for a position anywhere important maybe you should send a message outlining the same argument to Google.

<comment><USER24> Huh, Gmail completely implements RFC5321 and you can send and receive email from any valid address, even from their web client, _and_ they validate the email address.

I stand by my position, failing to implement the spec correctly should be considered an error even when Google does it.

If you want a compromise, how about printing "we don't support email addresses with X" if you want to be picky for SPAM detection, simplicity, or something rather than "this email address isn't valid." Google does this for some valid- but-not-accepted addresses on their signup page but it's not sophisticated enough to catch everything.

</comment></comment></comment></comment><comment><USER25> It's easy to validate that the syntax is correct. The problem lies in what you're trying to do with those addresses. If you're importing a mailing list archive, chances are a syntactical check is the only one you can do, because half the domains for older lists don't exist anymore, and most of the mailboxes won't.

If you want to send email to that address, you're probably going to want something that can suggest gmail as a replacement for gmial. You can also check that the domain exists and has a MX record. If you run your own mail server you can probably even check that the mailbox exists...

If you want emails to be unique, you'll need to apply per-site logic like gmails optional .'s and strip the + segments. That's important if you're combining multiple lists of emails, or importing an existing mailing list for a user.

The gist is the real world is complicated, but you can pretty easily set up something that handles 90% of it.

</comment><comment><USER26> Wouldn't it be reasonable to have a sanity check that can be bypassed by the user? It is very likely to be a mistake if there's no full stop in the address, but there are exceptions [0]. I would like to see a warning if I accidentally type vostok@examplecom instead of email@example.com.

[0] [https://mail.gnome.org/archives/evolution- list/2002-January/...](https://mail.gnome.org/archives/evolution- list/2002-January/msg00466.html)

<comment><USER27> your first example is a valid email

</comment></comment><comment><USER28> I remember reading the opinion that one need only verify that an email address is an email address by answering, "Does it have an '@'?". Yes? Email address. No? Try again.

Perhaps it is nice to ask a question one step above the email verification: How much responsibility does//should the user have, how much responsibility does//should the designer have, in ensuring the user's email address as valid?

</comment><comment><USER29> With a regex/parser maybe -- but it's very easy to require "activation" from said email address as a verification.

</comment><comment><USER30> I added a comment to the authors article. You can construct a regex to process every valid email address except those with nested comments (a feature no one in the real world ever used): [https://github.com/dhoerl/EmailAddressFinder](https://github.com/dhoerl/EmailAddressFinder)

</comment><comment><USER31> I've been using Mailguns validator [0] for a while now and have been quite pleased. It catches common typos and validates DNS on the host name.

[0] [https://documentation.mailgun.com/api-email- validation.html](https://documentation.mailgun.com/api-email-validation.html)

</comment><comment><USER32> For anyone who would like to test their email address validation code, I wrote a fuzzer which can generate syntactically valid addresses (among other things).

[https://github.com/nradov/abnffuzzer](https://github.com/nradov/abnffuzzer)

<comment><USER33> Is there ABNF for email addresses in an RFC?

<comment><USER32> Yes RFC 2822. Look for the addr-spec rule.

[https://tools.ietf.org/html/rfc2822#section-3.4.1](https://tools.ietf.org/html/rfc2822#section-3.4.1)

</comment></comment></comment><comment><USER34> This brought me back to how Postfix has been handling this all these years.

[http://www.postfix.org/ADDRESS_VERIFICATION_README.html](http://www.postfix.org/ADDRESS_VERIFICATION_README.html)

</comment><comment><USER35> I think that spaces are also valid in email addresses. So, even <bilbo email@example.com> would be a valid email address in that case...

<comment><USER11> They are valid within quotes, so that <"b b"@example.com> is valid, but <b firstname.lastname@example.com> isn't.

Almost anything is valid within quotes, but quotes can not appear everywhere.</comment></comment>


Netflix announces $100M relief fund after TV and film production halted - <AUTHOR> https://techcrunch.com/2020/03/20/netflix-100-million-fund <comment><USER2> Duplicate of: [https://news.ycombinator.com/item?id=22644096](https://news.ycombinator.com/item?id=22644096)

</comment><comment><USER3> Good for Netflix. I'd like to see our biggest companies meaningfully pitch in.</comment>


One-Stop Shopping Tool For Startups - <AUTHOR> http://techcrunch.com/2013/06/12/wave-partners-with-box-mailchimp-general-assembly-and-more-to-launch-one-stop-shopping-tool-for-startups/?utm_source=issam-hakimi&utm_medium=twitter&utm_campaign=Feed%3A+francaistechcrunch+%28TechCrunch+en+Francais%29

<comment><USER2> Glad to see that a lot of the tools used defacto in most startups will be available for free for a few months. Definitely makes bootstrapping a just little bit easier.

</comment><comment><USER3> Hopefully a bundle like this will help the little guys get over some of the early bumps in the road</comment>


CERN and APS Announce Partnership for Open Access - <AUTHOR> https://journals.aps.org/prl/edannounce/cern-and-aps-announce-partnership-for-open-access <comment><USER2> I don't know about APS, but during a recent visit to CERN, I was pleased to see just how _open_ everything is at CERN. There are no secrets, all the data is shared, free software is encouraged at all levels, as is free hardware (e.g. their KiCad involvement). This is due to CERN's mandate to disseminate knowledge to all constituent states, which I understand roughly means the entire world. You want to go and download CERN's data and see if you can find particles on your own, go right ahead:

[http://opendata.cern.ch/](http://opendata.cern.ch/)

I'm glad to see a little more sharing and openness.

<comment><USER3> If you are interested in Open Hardware, it is worth to take a look at the CERN's Open Hardware repository:

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

</comment></comment><comment><USER4> I don't think that the link is pointing to the right press release. It should probably point to [https://www.aps.org/publications/apsnews/updates/scoap3.cfm](https://www.aps.org/publications/apsnews/updates/scoap3.cfm), which announces that APS will in fact join the SCOAP3 initiative.

(Another telltale sign is the fact that the link refers to Rolf Heuer as the Director General, but in fact he is the former Director General, while the current one is Fabiola Gianotti.)

<comment><USER5> There are also the scoap3[1] and CERN[2] press releases.

[1] [https://scoap3.org/aps_joins_scoap3/](https://scoap3.org/aps_joins_scoap3/)

[2] [https://press.cern/press-releases/2017/04/cern-and- american-...](https://press.cern/press-releases/2017/04/cern-and-american- physical-society-sign-open-access-agreement-scoap3)

</comment></comment><comment><USER6> This isn't just open access (free redistribution) but, much more importantly in my opinion, free reuse and adaptation (with attribution), i.e., CC-BY.

[https://creativecommons.org/licenses/by/4.0/](https://creativecommons.org/licenses/by/4.0/)</comment>


Car key immobiliser hack revelations blocked by UK court - <AUTHOR> http://www.bbc.co.uk/news/technology-23487928

<comment><USER2> Surprising, since this technology is pretty much at the root of any new car remote starting product.

<comment><USER3> Not surprising at all. In fact, this is pseudoscience and has nothing to do with research.

There have been custom built electronics available for years, some disguised as simple mp3 players.</comment></comment>


Show HN: Partitions, a threaded instant messaging platform for engineering teams - <AUTHOR> https://www.partitions.io <comment><USER2> Neat; but how does one try it out?

<comment><AUTHOR> If you type your name (it can be fake) on [https://www.partitions.io/video- tour](https://www.partitions.io/video-tour) it will let you try out all of the functionality without needing to provide an email/password</comment></comment>


Ask HN: Light, powerful, 15" Full HD refurbished laptop for design/programming? - <AUTHOR> Also requirement: Great matte display. Windows. Powerful video card is not needed.
I don't want to spend 1,5K $ on a new one, as this laptop will be for traveling, so it can break, scratch or get stolen.
That is why I'm looking for an older premium class model.
Do you know a good model? <comment><USER2> I would highly recommend getting something with very high resolution.

I bought a refurbished XPS 13" (top of the line, insanely high resolution) for a $950, when it would have been over $2k new. The seller was the.laptop.shop[1]. I had an issue with the screen, but they gave me a warranty with the laptop, so the next day I had a Dell repairman come to my house and repair the screen right in my kitchen. I didn't spend a dime.

All in all, my best experience buying a computer in my life.

1\. [http://www.ebay.com/usr/the.laptop.shop](http://www.ebay.com/usr/the.laptop.shop)

</comment><comment><USER3> In the US, I'd recommend browsing the Dell Outlet. Same three year NBD onsite warranty as new for professional products. Substantial discounts.</comment>


BMW: autonomous driving is 'many, many years away' - <AUTHOR> http://www.autocar.co.uk/car-news/industry/bmw-autonomous-driving-many-many-years-away <comment><USER2> I suspect BWM _hopes_ it is. BMW sells to a lot of auto enthusiasts, i.e. people who willingly pay a premium above and beyond what is strictly needed for transportation. These people want _their_ car, and BMW provides these people with that.

Meanwhile, a growing group of people recognize that the average car sits parked, taking up land and depreciating, 95% of the time, and are turning to services such as Lyft, Uber, and Car2go. Once the self-driving car is ready, these fleets will use that convenience to utilize their capital assets at a rate greater than 5%. They, and the consumers who no longer are forced to buy 95% more car than they need, will split the efficiency gains. That 95% under- utilization is the transportation provider's opportunity frontier.

On the flip side, the manufacturers are forced into another kind of game. That same opportunity frontier for Lyft-Autonomous is roughly related to the contraction in manufacturing that auto manufacturers will see. My guess is that every auto manufacturer is dreading the autonomous car, while simultaneously investing to have one.

So of course BMW wants to cast autonomous cars as far future sci-fi. My guess is that their estimation of their own autonomous capabilities is presented much more optimistically to shareholders.</comment>


The pitfalls of jargon and the damage it does to mathematics - <AUTHOR> http://scienceblogs.com/evolutionblog/2011/05/monday_math_a_rant_about_jargo.php

<comment><USER2> Some thoughts, as an academic mathematician who got his Ph.D. three years ago:

First of all, the author is right in one aspect, in that bad writing -- and also bad speaking -- are too widely tolerated in mathematics. Most departments have a regular colloquium, where the entire _point_ is to listen to a talk to mathematicians outside your specialty. Many speakers do a good job, but there are some who will start out with "Let M be a symplectic manifold, let omega be the associated bilinear form, let X be the ring of differentials, ..." [ugh.]

And yet I think there is more pressure to write and speak well than there is to do so poorly. Certainly as a graduate student I was pressured by my advisor to explain things clearly, to add examples and exposition to my papers, to omit technical details from talks, and in general to keep in mind the perspective of the non-expert. The author complains, "Submit a paper with two consecutive sentences of exposition and watch how quickly the referee gets on you for it." But I have not experienced this myself, nor heard this complaint from anyone until this article.

Moreover I can think of lots of well-known books that are loaded with exposition. _Representation Theory_ by Fulton and Harris comes particularly to mind. Of course, there are many books which are notoriously terse as well. (Any HN'ers tried to hack their way through Baby Rudin?)

Indeed, there are many mathematicians who make quite an effort to write and speak well, and largely succeed, and the author seems unable to identify any mathematical writing which he does approve of. If we are doing a bad job, please give us _specific examples_ of what you would like to see instead.

The fact is that learning new math is just _damn hard_ , even from well- written papers. I think that we could do a much better job of explaining our work to others. But, IMHO, this article overstates the problem, and omits to propose any practical solutions.

<comment><USER3> Hehe, who here got through Rudin's _Real and Complex Analysis_?

<comment><USER4> I've had no interest in the complex half, but I can claim to have done well enough with the real half. I like it.

He does especially well with Fourier things, which is not surprising considering some of his other work,

He gives the von Neumann proof of the Radon-Nikodym theorem. I prefer the approaches with more steps with each step smaller, but it's great to see the von Neumann masterstroke.

Rudin's chapter on Banach space knocks off the main results quickly and cleanly.

His construction of Lebesgue measure early on is a bit long but surprising and, net, shorter than the other ways to do it.

Curiously he has a nice chapter with more general results on change of variable in multiple integration.

He does well with the various duality results, which are surprising and important.

A good competitor, of course, is Royden, 'Real Analysis'.

</comment></comment></comment><comment><USER5> The article by William P. Thurston (a Fields medalist) called "On Progress and Proof in Mathematics

[http://www.ams.org/journals/bull/1994-30-02/S0273-0979-1994-...](http://www.ams.org/journals/bull/1994-30-02/S0273-0979-1994-00502-6/S0273-0979-1994-00502-6.pdf)

(which I learned about from a comment here on HN, thanks) does a good job of demonstrating how a mathematician who makes new discoveries has to invent a new language for describing those discoveries. Then the mathematician has to relentlessly practice communicating those results first to other professional mathematicians, helping them to see the connections between their research and the new research results. Mathematicians who work hard at communicating with other mathematicians, Thurston says, can help greatly with the progress of mathematical research.

After edit: Paul Halmos, quite a well regarded mathematician who by his own self-evaluation was not in the same league as Fields medalists, wrote in his "automathography"

[http://www.amazon.com/I-Want-Be-Mathematician- Automathograph...](http://www.amazon.com/I-Want-Be-Mathematician- Automathography/dp/0387960783/)

that he learned a lot of mathematics as he continued his career after his Ph.D. degree by "reading the first ten pages of a lot of mathematics books." Sometimes he could only get ten pages into a book by another mathematician before he was lost, but by reading dozens and dozens of books, ten pages each, he gained more conceptual foundations in more areas of mathematical research and could gradually apply what he self-learned to advance his own research. I strongly encourage students I know to follow that same strategy of reading at least the introductory portion of many books on subjects they desire to know. Don't just read what your professor assigns you to read. Go to the library and read widely. Read as far as you can before you get stuck, and then find another book and start reading it from the beginning until you get stuck again. Eventually, you will find that you can read harder books, and go farther before getting stuck.

<comment><USER6> About Halmos, that is quite scary. I happened to be reading "Finite- Dimensional Vector Spaces" the last few days and while the material is pretty elementary, Halmos is obviously _very_ good, and the idea that there are people leagues ahead of him is amazing...

<comment><USER4> Well, Halmos wrote the first version of 'Finite Dimensional Vector Spaces' while he was working as an assistant to von Neumann at the Institute for Advanced Study. So the book is doing finite dimensional linear algebra over the real and complex numbers using the techniques of Hilbert space theory, a von Neumann speciality. Once von Neumann had to explain what he meant by 'Hilbert space' to Hilbert!

But that Halmos was a good writer is no joke: He was one of the best of the 20th century.

<comment><USER6> This is slightly off-topic, but I noticed that you did work on stochastic optimal control. Do you have any books you would recommend on the subject (either optimal control or stochastic optimal control)? Ideally as good as Halmos. :)

I come from a physics/cs background, and find that standard treatments of control are very much intended for EE folks. But this seems like a historical accident-- the techniques would seem to be very broadly useful in other fields.

<comment><USER4> If you want something written as well as Halmos, then start writing, and good luck!

"Historical accident": Well, sure, in part nearly all the pure math departments pushed out any such topics!

You are correct: Optimal control has been mostly in advanced parts of electrical engineering.

So, optimal control in EE was an example doing math outside math departments. Of math done outside math departments, control theory is relatively good mathematically.

And, yes, there should be applications elsewhere.

For physics, yes, the deterministic theory of optimal control has been seen as replacing the older calculus of variations which goes back to Newton.

My references are old.

More recent work on stochastic optimal control has been by R. T. Rockafellar at University of Washington.

For

Stuart E. Dreyfus and Averill M. Law, 'The Art and Theory of Dynamic Programming', ISBN 0-12-221860-4, Academic Press, New York.

'dynamic programming' is a big part of the discrete time versions of optimal control. It can be stochastic or deterministic. The linear-quadratic-Gaussian (linear 'plant' or system, quadratic cost to be minimized, and Gaussian exogenous random variables) has 'deterministic equivalence' -- nice -- and this book treats it. The book is a good, elementary start. Apparently Dreyfus was a R. Bellman student.

For

L. S. Pontryagin, V. G. Boltyanskii, R. V. Gamkrelidze, and E. F. Mischenko, 'The Mathematical Theory of Optimal Processes', ISBN 0-470-69381-9, Interscience Publishers, John Wiley & Sons, New York.

it was, of course, the main source of the Pontryagin maximum principle, and, thus, a swift kick in the back side for parts of US aerospace in the 1960s.

For

Michael Athans and Peter L. Falb, 'Optimal Control: An Introduction to the Theory and Its Applications', McGraw-Hill Book Company, New York.

Athans was long in EE at MIT and did some military work, e.g., on parts of the C5A airplane. Falb was at Brown's Division of Applied Mathematics.

One Athans story was the 'control' for least time to climb to, say, 100,000 feet for an F-4: Go up to a few thousand feet, go into a dive, get supersonic, get the lower drag of a few hundred knots above Mach 1, and then with the lower drag continue supersonic to the final altitude. I was not able to know if that 'control' idea was just intuitive or directly from computation and the Pontryagin maximum principle which is, after all, just a necessary condition, i.e., local optimality.

Also in that division at Brown, see the papers of Harold Kushner. As I recall, he wrote out a stochastic version of the Pontryagin maximum principle.

For

E. B. Dynkin and A. A. Yushkevich, 'Controlled Markov Processes', ISBN 0-387-90387-9, Springer-Verlag, Berlin.

there are connections with economic planning.

For

Dimitri P. Bertsekas and Steven E. Shreve, 'Stochastic Optimal Control: The Discrete Time Case', ISBN 0-12-093260-1, Academic Press, New York.

the math is done carefully. So there is a lot of attention to measurability. Part of the reason is the issue of 'measurable selection': This can be a deep subject, but often a relatively simple way out is via regular conditional probabilities as in

Leo Breiman, 'Probability', ISBN 0-89871-296-3, SIAM, Philadelphia.

For

David G. Luenberger, 'Optimization by Vector Space Methods', John Wiley and Sons, Inc., New York.

this has likely the easiest mathematical treatment of deterministic optimal control and also Kalman filtering and also the math needed for 'least action' in physics.

For

E. B. Lee and L. Markus, 'Foundations of Optimal Control Theory', ISBN 0471-52263-5, John Wiley & Sons, New York.

this tried to be clean mathematically when it was written. At the beginning, should know some relatively advanced results in ordinary differential equations, e.g., as in

Earl A. Coddington and Norman Levinson, 'Theory of Ordinary Differential Equations', McGraw-Hill, New York.

For more, you can consider non-linear filtering and connections with mathematical finance.

The above is just from my bookshelf. Likely now a better bibliography could be assembled via the Internet which actually is at least a little larger than my bookshelf!

<comment><USER6> Thank you thank you thank you!

</comment></comment></comment></comment></comment></comment><comment><USER7> Jargon is a _necessity_ in all fields. Otherwise we would have to use only existing words to explain all of our new concepts.. Math - and some physics - necessarily deal with things that we don't have an intuition for. I think that those subjects are going to be inherently less approachable for people outside of those sub-disciplines because their prior knowledge is much less help.

Now, with that said, it's probably true that some math papers could be improved with more exposition. But I think that excluding the layman from new math research is probably an inherent problem, not an accidental one. Improved exposition would be to help other mathematicians who are not in that sub- discipline to understand the broader field.

</comment><comment><USER8> While it is true that there are many examples of bad writing in mathematics, it is not true that unclear writing is glorified over clear exposition. To the contrary, authors like Paul Halmos are rightly celebrated as great expositors, e.g. see his books like Naive Set Theory, Finite Dimensional Vector Spaces, Measure Theory etc. and his expository writing such as "How to Write Mathematics" and "How to Talk Mathematics":

[PDF] [http://www.math.uh.edu/~tomforde/Books/Halmos-How-To- Write.p...](http://www.math.uh.edu/~tomforde/Books/Halmos-How-To-Write.pdf)

<http://www.math.northwestern.edu/graduate/Forum/HALMOS.html>

collected in his Selecta of expository writing.

Some other books I like are Sheldon Axler's Linear Algebra Done Right, Real Mathematical Analysis by Charles Pugh, and the three books on manifolds (Topological Manifolds, Smooth Manifolds and Reimannian Manifodls) by John Lee, but there are many other well-known books that are clear in their exposition.

Edit: Part of the issue is also the approach of the reader, i.e. is s/he there to learn mathematics, where the goal is to explore the mathematical world, or is s/he there to use the mathematics to explore the physical world? That should guide questions like "What is the point of studying vector spaces?" The motivation to study vectors spaces (and other mathematical topics) may need to come from other courses, e.g. on mechanics, and the course/book on vector spaces would serve to give in-depth knowledge of the particular topic.

</comment><comment><USER9> Classic: Simon says how to write a paper and give a talk:

Overview page: [http://research.microsoft.com/en- us/um/people/simonpj/papers...](http://research.microsoft.com/en- us/um/people/simonpj/papers/giving-a-talk/giving-a-talk.htm)

PDF slideshow: [http://research.microsoft.com/en- us/um/people/simonpj/papers...](http://research.microsoft.com/en- us/um/people/simonpj/papers/giving-a-talk/writing-a-paper-slides.pdf)

<comment><USER10> This is pure gold. There's a reason why so many people like reading Simon Peyton-Jones's papers: he's _really_ good at writing them.

</comment></comment><comment><USER11> For me, at least, once I understand it, the notation makes perfect sense and I find it far more expeditious and precise to express my idea in the domain language of the field. The problem is that getting to the point of becoming proficient in the formalism of a field can take an extremely long time (for me), and has the unfortunate side effect of making me feel like a total idiot for not understanding it sooner, once I understand it.

The fact is, mathematics deals with constructs with extremely specific properties. These properties can be completely and soundly stated without ambiguity quite succinctly in the formalism of the field. Once I'm comfortable with the formalism, trying to express it in English is awkward, imprecise, and generally just extremely verbose. It can then be a frustrating experience going back and convey the idea to colleagues or others in prose.

When I come across some academic mathematics paper, even if I'm somewhat familiar with the field, I generally find other things far more interesting, like the coffee stain on the floor. Effectively reading a mathematics paper requires a print out and a pencil to work through some of the definitions and take notes for yourself, and maintaining laser-like focus for a sustained period of time (more intense than programming a rather difficult problem, imo).

</comment><comment><USER12> That paper referenced is WAY beyond most people, as the article noted. To understand what the person is going to say, you had better already know what those terms mean, and be able to explain them. If you can't, then you have no basis for the rest of the paper anyhow.

Why on Earth would a common joe want to read that paper anyhow? What could it possibly do for them?

<comment><USER13> I don't see toning down the jargon as being advantageous to the common Joe, but it could be advantageous to mathematicians outside the extremely immediate field. For instance I'm guessing that any mathematician will understand "immersed surfaces in 4-manifolds" and maybe even "homology cylinder" even if the layman won't. However, how many mathematicians know "Whitney move" and "Whitney tower" and "Arf invariant" and "Milnor invariant" and "Sato-Levine invariant" and so forth? Some tiny fraction. A little less jargon could make your paper accessible to ten or a hundred times as many people.

Of course, quoting the abstract is a little unfair. The abstract needs to be short so there's no time to explain what the hell a Sato-Levine invariant is. Perhaps the actual paper is a lot clearer.

<comment><USER14> _I am guessing that any mathematician will understand "immersed surfaces in 4-manifolds"_?

I think you are guessing wrong. A 4-manifold, that I can more or less understand (and that is about as far as one can get, as there are several slightly different definitions in common use), but immersed surfaces in manifolds? And I do not think that is because I haven't done abstract math since graduating. One can graduate in mathematics without encountering any manifold, for example by focussing more on applied fields such as discrete math, analysis, or statistics.

I do not think that that abstract is necessarily bad, though. It seems to mention sufficiently many terms to sell it to the target audience of, say, 100 people world-wide. If you do not know any of these, you should read something more basic.

</comment></comment></comment><comment><USER15> I wish the author had, as a PoC, taken one of the papers in his career as a maths PhD, and rewritten it so that a non-mathematician (say, one with only a CS or physics degree) can immediately understand it.

I don't say it's impossible, but it should make visible all the difficulties on the way.

<comment><USER16> i wrote a few 'transl(iter)ation' from math/physics papers to be understandable by a CS degree, and yes, the jargon is in the way for a CS student. The biggest leap is to associate a greek letter with a definition. a CS student, in my experience, wants the letter (short variable name) to be a meaningful word (longer descriptive variable names). i am not a mathematician. physicists, in my experience, had no problem though.

</comment></comment><comment><USER17> I'm of two minds about this. On the one hand, I think it's a misconception to think that a nothing-but-the-proofs-and-definitions approach makes it any harder to understand math. Math is just freakin' hard. Making it fluffier only makes it seem easier if you confuse page rate with learning rate. On the other hand, knowing the motivation and context for a piece of mathematics is very pleasant, makes it easier to focus and work hard on the math itself, and occasionally can be as important as knowing the math itself. My ideal math text would contain a lot of exposition at the beginning of each chapter and then the traditional dry presentation of the mathematics itself. I wouldn't want the exposition and the mathematics mixed too finely.

<comment><USER18> Couldn't they spend a little more time and write an expository background on papers? Certainly it would be the easiest part for an expert to write.

I was reading several papers in the EE field the other day. Most of them all spend the first page restating the problem in practical terms and then have a substantial section reviewing the prior techniques. I found this darned helpful, especially since the primary material was often not online.

Are they worried about wasting paper, or do they actually want to be uninviting?

</comment></comment><comment><USER19> As long as mathematicians are dependent upon finding a small clique to work with, there are no pressures to make themselves understood by more than a small number of people who have a lot of common knowledge. Thus jargon will proliferate.

See <http://bentilly.blogspot.com/2009/11/why-i-left-math.html> for more.

</comment><comment><USER20> One of the reasons that I prefer the reprints of much older texts by the great mathematicians is that in most cases (all?) the writing meets the conditions that are listed as desired. The previous sentence clearly doesn't---sorry! The books from Chelsea and for that matter Dover may be old, but they are accessible.

<comment><USER9> I had a stint where I bought and tried to read a few dozen cheap $8-$14 Dover math books. There is a reason most of these books were not revised and republished before their copyright expired and they became Doverable, and it is not because they were perfect originally. Poor 1940s typesetting, only the barest sketches of images, and linguistic quirks that are not present in modern language. The recommended booms from my high school and college courses were much better. Of course, 90% of everything is crap, so there logged be a few gems in there.

The $3 copies of Plato et al were better than the math books.

</comment></comment><comment><USER21> Without jargon, it would be roughly impossible to talk about compound mathematical structures. But I certainly agree that more exposition and a greater number of worked-out examples are a great help when trying to understand abstract math.

It would also be great to have papers written in a hyperlinked format (after so many years of the web...) so that when you click on a jargon term, you get something like a Wikipedia article about that concept with a few examples and some exposition. Wikipedia itself would be fine with me, though academics might want more official peer review (see Scholarpedia).

</comment><comment><USER22> Often the jargon is unavoidable because "common sense" definitions are actually subtly incorrect. This does not mean that examples and motivation have no place, but there is definitely a chicken/egg problem and starting by stating definitions is an easy and expedient way to overcome it.

Also, the best examples usually link seemingly disparate fields. If you can't assume the reader has a background in these fields, it can be difficult to even state the link. I sometimes find myself writing "readers unfamiliar with X can think of it as [intuitive but imprecise definition]".

<comment><USER23> That should be the point where to, once and for all, clearly state the differences between analogy and the subject matter at hand.

</comment></comment><comment><USER24> The saddest thing is that computer science looks up to math and emulates the worst of it, such as cryptic, short variable names.

<comment><USER25> What you're describing is actually bad practice. Not saying it's not a problem, but that's not an intentional emulation.

<comment><USER26> It depends. Variable name length is mainly related to two things:

* Scope the variable resides over

* Generality of the variable

If the scope is large (the variable is global and exposed to a lot of code), the variable name has to be longer, so that far away readers can make sense of it. A variable that scopes over 2 lines is allowed to be much shorter, especially if its definition is as clear or clearer than an arbitrary name.

As for the generality, if you write a function addEmployeeSalaries, of course that is a better name than some arbitrary short name (e.g: "addEm").

But when writing (very very) general code, it is hard to avoid situations where the variable denotes only structure. It is just too general to find a useful long (and specific) name.

For example, consider:

        flip f x y = f y x

        sequence :: Monad m => [m a] -> m [a]

Single-letter variable (and type variable) names, but considered perfectly good practice.

</comment></comment></comment><comment><USER27> I can't stand technical jargon or people who use without regard for their audience.

The only purpose of jargon is to make a conversation exclusive to only those who know the language. If your purpose is to educate or collaborate or truly communicate, then jargon is harmful.

Legal jargon is probably the worst example.

<comment><USER28> Jargon is just a time-saving and precision measure. Try doing without it sometime - it's painful.

It is totally unavoidable as long as people keep communicating with words. The better solution is not to complain about it, but to ask for definitions (recursively) - and then you can reap the time-saving and precision benefits of the terminology, too.

</comment></comment><comment><USER29> >Sadly, the rot extends to math textbooks as well, which, with very few exceptions, are simply horrible. I mean really, really bad. It is commonly considered a great faux pas to actually explain what you're doing. You will be accused of being overly wordy if you do anything other than produce an endless sequence of definition-theorem-proof. Mathematicians too often seem to take absolute delight in being as opaque as possible. I can't tell you how many times I have heard friends and colleagues praise for their concision textbooks which, to my mind, are better described as harbingers of the apocalypse. If, as a textbook author, you place yourself in the student's shoes and try to anticipate the sorts of questions he is likely to have approaching the material for the first time, a great many of your colleagues will say that you have done it wrong.

As someone who only ever encounters math as a tool rather than a a great passion or source of intellectual stimulation, it makes me really happy to see this said out loud.

<comment><USER30> Ugh, I had a physical chemistry textbook like that. All math, very little explanation of why or how to _apply_ the math. I remember reading one chapter over and over again, desperately attempting to glean what shreds of meaning I could from the bare minimum of information presented. It was like trying to solve a puzzle.

Please, please don't write textbooks like that.

</comment></comment><comment><USER4> In an overwhelmingly important sense, pure math has the least 'jargon' of any field. The reason is, math exposition has an absolute requirement: Each use of a word not the same as just its dictionary meaning becomes a 'term' and just MUST be defined, and 'well-defined', before it is used. So, what the article is calling 'jargon' is just such terms, but in well written pure math they all have rock solid definitions, and math is the unique field where this precision is true.

For the rest of the complaints about 'jargon', these are essentially just necessary given that math, due to its precision and age, is now by far the deepest field of study. So, there are a LOT of terms defined.

If the article wanted to claim that for each math result or paper there is a 10,000 foot intuitive view that can be explained in 90 seconds to just anyone on a street, then okay, but the article did not do this. This claim is not quite true, but it is close enough so that some such explanations, maybe with some pictures, and some connections with more elementary topics, can be useful, even in research papers. But the article didn't make this claim, either.</comment>


Ask HN: Best strategy for preventing lunar issues from office chairs? - <AUTHOR> I'm curious if anyone recommends kneeling chairs vs stools vs yoga balls. <comment><USER2> I recommend setting a timer that alerts you that you have been in the same position for too long and going for a walk or some other exercise. I don't think you have to buy something "new"\---you already have the equipment required---your own two feet. I know from experience that it is far too easy to over-focus and concentrate and forget to move around.</comment>


VCs are generalists, and other lies - <AUTHOR> http://venturehacks.com/articles/vc-generalists <comment><USER2> This is ideal! VC generalists may be successful businessmen in the general sense, but investors who don't know your industry are inherently dumb money regardless of how much they swear up and down that they bring value to the table.

</comment><comment><USER3> It depends on your definition of 'generalist' and 'specialist'. To an engineer working on the low level details of a product that matches the specifics of the market to the specifics of the technology, a V.C. claiming to be a specialist b/c their rolodex is predominately in their industry will cause a lot of eye-rolling. It's all relative.

<comment><USER2> Sure - but the VC isn't going to come write code for you, whereas if he can connect your sales team with the right customers, that beats the pants off someone who just flat doesn't know your space.</comment></comment>


Show HN: kutty, jQuery-free intercooler.js - <AUTHOR> https://kutty.org/posts/2020-5-15-kutty-0.0.1-is-released/ <comment><USER2> Big intercooler fan here, I'll definitely be checking this out.

For others interested in this field of "graceful enhancement" see also unpoly: [https://unpoly.com/](https://unpoly.com/)

OP may also want to look into integrating some features/ideas from there as it is very similar to intercooler.

<comment><USER3> Another vote for unpoly, it's jquery free as well.

I'm currently using it in a project that's a PWA and its been a pleasure to work with.

<comment><USER4> Well, it's the same size as intercooler plus jQuery, so not a lot of savings here. :)

<comment><USER3> Size aside, there was a considerable increase in performance after jquery was removed.

[https://blog.makandra.com/2019/01/performance-impact-of- remo...](https://blog.makandra.com/2019/01/performance-impact-of-removing- jquery/)

</comment></comment></comment></comment><comment><AUTHOR> this is my covid project: a ground up, jQuery (and all other dependencies)-free rewrite of intercooler.js

<comment><USER5> I've been really interested in Intercooler.js, but the jQuery dependency bummed me out. This is a very cool project, and I highly appreciate you putting in the work here!

I do have one question. Is there a specific reason why you chose not to follow the standardized specification[0] of using data-* prefixes for HTML attributes? I realize it's pedantic, but I'd like to see this project receive wide support and usage. I'm concerned many potential users will criticize this.

[0]: [https://html.spec.whatwg.org/multipage/dom.html#embedding- cu...](https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non- visible-data-with-the-data-%2a-attributes)

Edit: Nevermind, I just looked through the docs from the start. You do support it!

<comment><AUTHOR> :) Yep, do it the way you like.

Btw, check out the kt-classes attribute if you want to do some slick CSS transitions w/o javascript:

[https://kutty.org/attributes/kt-classes/](https://kutty.org/attributes/kt- classes/)

</comment></comment></comment><comment><USER6> I got in so many arguments at work defending intercooler.js, eventually I caved and started using angular. I'm still regretting it.

<comment><USER7> One of you is definitely wrong, but it depends on the scope of the project. I would never build an SPA with intercooler and I would never build a static website with Angular/React.

<comment><USER8> > I would never build a SPA with intercooler

and why is that? Though mithril.js fan here, but intercooler, kitty, unpoly - they look fantastic kit for SPA. These libraries just look like what Golang is against C++ and Java.

<comment><USER7> For the same reason I use React instead of jQuery. Kutty/Intercooler handle simple AJAX very cleanly but as the volume of data and scope of interactivity increases it becomes difficult to manage.

</comment></comment></comment></comment><comment><USER9> YSK that in Dutch the name kutty resembles the popular term for the female reproductive organs.

<comment><USER10> I genuinly LOL'ed seeing this name. I would definitely consider changing it.

<comment><AUTHOR> nah, it's all good:

[https://www.urbandictionary.com/define.php?term=kutty](https://www.urbandictionary.com/define.php?term=kutty)

Maybe in dutch it can be called mutty.

</comment></comment></comment><comment><USER11> I was amazed that this page preserved HTML and scroll even for dynamic content. I'm thinking about how to do the same in Vue, and my crazy idea is using a store/controller for each path and storing and retrieving it from an LRU cache on history events.

[https://kutty.org/examples/click-to-load/](https://kutty.org/examples/click- to-load/)

</comment><comment><USER12> This reminds me a lot of rails-ujs. I built a jquery-based alternative to intercooler (didn't know it existed) back in the day that used the rails-ujs events to do its thing.

A few days ago, instead of going this route, I just used a `.js` view in Rails to replace the necessary elements in the DOM. This is even easier than having to load something like kutty and specifying in attributes what it needs to do:

Taken from the Rails guides:

      $("<%= escape_javascript(render @user) %>").appendTo("#users");

This uses jQuery, but you can all imagine how to do this with vanilla js and it works so well.

</comment><comment><USER13> Congrats on the launch! As a big user of Intercooler, I'm curious about which features you considered mistakes, or which ideas didn't work out as well as you expected. My own library Hyperview is heavily inspired by Intercooler, so I'm hoping to learn from your experience!

<comment><AUTHOR> heya adam

Here are some off the top of my head:

\- the dependency mechanism (too magical)

\- the ic-action attribute (sometimes it's OK to write some javascript)

Generally I'm trying to reduce the number of attributes and add a bit of syntax if necessary, e.g. kt-trigger="every 1s" vs. a separate ic-poll attribute.

Also I'm trying to make it pluggable so that people can add their own functionality rather than pressuring me to add a new attribute or feature. :)

Hyperview is an awesome library btw, everyone check it out:

[https://hyperview.org/](https://hyperview.org/)

Hypertext: the once and future king.

</comment></comment><comment><USER14> To all users of unpoly, intercooler / kutty: which one would you recommend for a new e-commerce project? I'm especially concerned by maintainability issues, as well as possible SEO implications.

</comment><comment><USER15> Would this work with an html table element? I am building online pivot tables and I like the idea of building the entire table on the server and swapping it with a div on user click.

<comment><AUTHOR> Yep. Here's an example showing a table that updates and flashes a color depending on the operation:

[https://kutty.org/examples/bulk-update/](https://kutty.org/examples/bulk- update/)

<comment><USER2> Hey just some feedback. The UX there is wrong because there is instant feedback in the toggling of the activate/deactivate button but a slight delay in the reaction time for the selected row (due to the round trip). I believe the correct paradigm here is for the button to not toggle state until the response is received/acted upon (to indicate a short "hang").

</comment></comment></comment><comment><USER16> Intercooler/Kutty is truly a remedy to modern web development's accidental complexity.

Love it, thank you for putting so much effort into it!

</comment><comment><USER17> This make me think how related are intercooler and knockout, functionality is quite similar

</comment><comment><USER18> Super nice! Feels a lot like a manual version of Phoenix LiveView. That's a good thing!

</comment><comment><USER19> FYI, Kutty or കുട്ടി means child in the language of malayalam :)

<comment><AUTHOR> I like that a lot more than what it means in Dutch!

</comment></comment><comment><USER20> awesome, we use intercooler.js, would explore this for future projects.</comment>


Show HN: Duck as a Service - <AUTHOR> http://duckasaservice.com <comment><USER2> I'm actually a little bit sad because I thought booking a duck would start some two-way WebRTC session between me and a live stream of an actual rubber duck...

<comment><USER3> yup - this is exactly what I thought! But I guess someone who can actually help with the problem is ok too.

</comment></comment><comment><USER4> #1- I've found that rubber ducky problems get solved fairly quickly.. but I can't schedule a duck until 3 days out as of 9/1 2:15 PM CST.

#2- If you won't sign a custom NDA, I would certainly feel better if you presented me with a stock NDA that all of your ducks have agreed to.

Edit: #3- To protect yourself and your customers I'd suggest that you make sure you have a no-PHI and no-real-payment-info (PCI) requirement :)

</comment><comment><USER5> Interesting project, but I feel like it's asking too many things upfront. I'd rather just put my email, the description of problem I need help with, and hit send.

</comment><comment><USER6> You may have been looking for this?

[http://rubberduckasaservice.codebyjeff.com/](http://rubberduckasaservice.codebyjeff.com/)

</comment><comment><USER7> Dissapointed you don't get actual rubber ducks. I wish there was a rubberduckasaservice.com

</comment><comment><USER8> Looks interesting. Can you explain in a little more detail how your pricing works please? Thanks!

</comment><comment><USER9> So it's CodeMentor.io / HackHands? Without NDAs or live chat or ....?

<comment><USER10> Well, have you tried using Codementor or Hackhands? It's so horrible I think this will hardly be worse or even equal.

<comment><USER9> Yes, I have used both, though as mentor, not a mentee. I think there's a set of features that each offers that I'd consider minimal features in a similar product offering, and I'm not seeing those in Duck.

</comment></comment></comment><comment><USER11> the link on [https://en.wikipedia.org/wiki/Rubber_duck_debugging](https://en.wikipedia.org/wiki/Rubber_duck_debugging) is broken. fix it

<comment><AUTHOR> Thank you!

</comment></comment><comment><USER12> How many ducks do you currently have?

<comment><AUTHOR> The duck pool auto-scales to meet the demand, of course.

<comment><USER13> Had a similar idea a while ago but correct me if I'm wrong, this service sets you up on a call with a rubber duck (an image I suppose) for x time? Are you using Google Hangouts API?

<comment><AUTHOR> Thanks for the comment, sounds like I should revise the text. You actually get a real human ( _ahem, duck_ ), even one that can code and ask questions about what you are doing, and potentially help debug the problem.

<comment><USER14> Now I'm disappointed, I was hoping for actual rubber ducks as a service. Find a nice pond or interior fountain. Fill it with rubber ducks. Add tracking cameras to track a random one for the length of a call. Soothing, random bobbing.</comment></comment></comment></comment></comment>


Ask HN: Any book recommendations to learn sound engineering/editing? - <AUTHOR>

I'm interested in learning sound engineering. To be more specific I want to learn how sound editing softwares like audacity works and theoretical things like what is compression, equalization etc.<p>Any recommendations for books that teaches both theoretical and practical aspects of sound editing? <comment><USER2> The definitive reference book is "Modern Recording Techniques" by Huber and Runstein, which covers all areas of recording, editing and mixing in a rigorous manner. Plausible alternatives would include Paul White's "The Producer's Manual", or if you have no interest in recording techniques, Mike Senior's "Mixing Secrets for the Small Studio".

You should also take a look at the archives of Sound on Sound magazine, which are freely available via their website. SoS is a superb resource and they have serialised some really substantial tutorial pieces, most notably "Synth Secrets" by Gordon Reid, which is by far the best introduction to synthesis.

You'll want to abandon Audacity ASAP, because it's basically awful. The Digital Audio Workstation software du jour is Cockos Reaper, which costs just $60 and has a completely unrestricted trial version available. Comparable alternatives to Reaper are available, some of which are better suited to specific use-cases, but they're all vastly more expensive. I highly recommend reading the user guide of whichever software you choose, as all modern DAW software is extremely complex.

<comment><USER3> I second the recommendation for Reaper. For the technically inclined user it's extremely powerful, but it (and the included powerful, but even more abstract plugins) often lacks useful defaults. I use and like it a lot.

It should be said that a Reaper-License costs $250 if you use it for commercial work (which is still _nothing_ compared to the established DAW vendors).

</comment></comment><comment><USER4> I was thinking about developing something a bit similar,but was more focused on chip-tunes (8-bit)music and beats creation.A sort of Amateurish fruity- loops clone.Any pointers on sample code and tutorials would be much appreciated.</comment>


FireQuery: Firebug enhancements for jQuery - <AUTHOR> http://firequery.binaryage.com

<comment><USER2> The FireQuery add-on ends up disabling Firebug on my machine. Too bad because this looks useful. Is anyone able to get it to work?

<comment><USER3> The notes on the page says that it "works with Firebug 1.4" which is the current beta of Firebug. I can't tell if that means it works with it or requires it, but perhaps that's your issue.

<comment><USER2> That did it, thanks a lot!

This is going to be really useful, especially being able to see the stored data right in the DOM tree.

</comment></comment></comment><comment><USER4> Yeah, this is a very useful plugin. Highly recommended for all jquery developers.

I especially like being able to "jquerify" pages as I like to use jquery for ad-hoc data-mining of pages. It's easy to write up little scripts to pull out information I need.</comment>