LLVM Patches Confirm Google Has Its Own In-House Processor - <AUTHOR> http://www.phoronix.com/scan.php?page=news_item&px=Google-Lanai-Architecture <comment><USER2> Now, would it even make sense to merge into the mainline codebase of LLVM backend code targeting a platform that noone else can test or use?

Is Google planning on eventually releasing this architecture publicly or maybe licensing it to third party manufacturers, a-la ARM?

<comment><USER3> No, I don't think it really makes sense for LLVM to mainline an architecture no one can use. I doubt they'll be on board with this.

<comment><USER4> It's not exactly unprecedented. GCC supports mmix, which hardware doesn't even exist for. (An educational platform from TAOCP.)

[https://gcc.gnu.org/backends.html](https://gcc.gnu.org/backends.html)

<comment><USER5> "Only has simulators" is _very_ different from "nobody can use". MMIX has value.

</comment></comment></comment></comment><comment><USER6> This story has a little more info, including the chip's origin from Myricom:

[http://www.theregister.co.uk/2016/02/09/google_processor/](http://www.theregister.co.uk/2016/02/09/google_processor/)

<comment><USER7> This LANai v11 RISC chip seems to be the successor of the LANai v7 and LANai v9 chips described here: [https://www.myricom.com/scs/myrinet/...ogramming.html](https://www.myricom.com/scs/myrinet/...ogramming.html) for which the gcc toolchain already exists: [https://github.com/myri](https://github.com/myri) Porting this to LLVM makes more sense.

Nothing too interesting, as it doesn't use IBM's 7nm or Intel's 10nm chip tech. Just a simple but parallel high-speed network chip, as used in the Myrinet network cards. The old ones ran with 33MHz but very low latency.

Really exciting would be the Power8 based on IBM's new 7nm, which would finally blow away Intel advantages on an fully open (and unbackdoored) design.

<comment><USER5> Nothing about the POWER8 or IBM's process technology implies unbackdoored. I can't inspect the factories, or their supply chain, or the HDL they used, or the tools that processed the HDL. The only thing more "open" about POWER8 is firmware in some deployments, and maybe licensing the ISA (if you have enough clout/money to join the foundation, I can't find any licensing information at all). RISC-V is more interesting in every way, with respect to openness.

</comment></comment></comment><comment><USER8> _Lanai is a simple in-order 32-bit processor with 32 x 32-bit registers, two registers with fixed values, four used for program state tracking, and two reserved for explicit usage by user, and no floating point support._

Might as well be a MIPS. The fact that Google has suppoedly developed its own CPU is interesting, but the architecture itself seems quite mundane.

Edit: comments on the article suggest it's the Myricom LANai, a NIC embedded processor. Google may just happen have these NICs in their machines and want to write firmware for them.

<comment><USER9> [http://www.phoronix.com/forums/forum/phoronix/latest- phoroni...](http://www.phoronix.com/forums/forum/phoronix/latest-phoronix- articles/851180-llvm-patches-confirm-google-has-its-own-in-house- processor?p=851195#post851195)

It could be lanAI too...

<comment><USER10> OT(?): reverse(Lanai) // todo: see if copying XXX cpu is OK

</comment></comment></comment><comment><USER11> Must be funny working at Google and knowing the inside scoop (watching people speculate). So, here is my wild speculation about a similar secret project. There was a talk given by Dick Sites (from Google) [1, 2], where he talks about performance monitoring across the Google fleet. Very technical and useful if you are into monitoring (highly recommend it). A large part of his talk is dedicated to issues and limitations with off-the-shelf CPUs. Given that AWS has custom chips (talked about at Invent a few years back), why wouldn't Google solve this issue too, they have the talent and money.

[1] [http://www.pdl.cmu.edu/SDI/2015/slides/DatacenterComputers.p...](http://www.pdl.cmu.edu/SDI/2015/slides/DatacenterComputers.pdf)

[2] [https://vimeo.com/121396406](https://vimeo.com/121396406)

<comment><USER12> It's already been posted in this thread that it's just a smart NIC evolved from existing Myricom NICs. (Of course, my coworker was just telling me a story about how John Cocke hid his RISC processor in a printer project.)

And Amazon's "custom" CPUs are 100 MHz faster Xeons.

</comment></comment><comment> at-fates-hands _but at least for Lanai it looks like a CPU used just internally and isn 't something that is going to power the next generation of Android devices;_

How many times have we seen a huge corporation do something in house, then release it for public consumption several years later? At this time, it will probably stay in house, but if there is a revenue opportunity, trust me, they'll release it.

</comment><comment><USER13> perhaps folks will now take 'intelligent' NICs more seriously than "we tried offloading once and it went poorly so thanks but no thanks"

</comment><comment><USER14> I wonder if they'll be using RISC-V for the same purposes in the near future.

[http://www.eetimes.com/document.asp?doc_id=1328561](http://www.eetimes.com/document.asp?doc_id=1328561)

<comment><USER15> Seeing as Google partially sponsored RISC-V[1], it wouldn't really surprise me.

1\. Indirectly, via ASPIRE Lab.

<comment><USER5> Google is also a member of the OpenPOWER Foundation (though they've done much more with that). I don't think sponsorship is necessarily endorsement or deployment plans -- it'd be nice if that were the case though!

</comment></comment></comment><comment><USER16> If you are serious about your software...

</comment><comment><USER17> Hurray, no floating points!

</comment><comment><USER18> Maybe there is no chip, could be they are implementing on FPGA or virtual machines.

</comment><comment><USER18> First part is lan second part is ai. It could be something to do with artificial intelligence.</comment>


Geekbench: iPhone 7 faster than all Macbook Airs in single thread - <AUTHOR> https://daringfireball.net/linked/2016/09/14/geekbench-android-a10 <comment><USER2> Perhaps relevant. Linus Torvalds' opinion on GeekBench:

[http://www.realworldtech.com/forum/?threadid=136526&curposti...](http://www.realworldtech.com/forum/?threadid=136526&curpostid=136666)

> So basically a quarter to a third of the "integer" workloads are just utter > BS. They are not comparable across architectures due to the crypto units, > and even within one architecture the numbers just don't mean much of > anything.

>And quite frankly, it's not even just the crypto ones. Looking at the other GB3 "benchmarks", they are mainly small kernels: not really much different from dhrystone. I suspect most of them have a code footprint that basically fits in a L1I cache.

It's a few years out of date, and maybe Geekbench has improved since then, but I wouldn't put a lot of stock into these kinds of numbers until I knew that those kinds of issues had been addressed.

<comment><USER3> If these phone processors are that amazing why don't we see them being used outside phones and tablets? I mean take the A10 Fusion give it four cores instead of two and put it on a server mainboard with all the usual things like PCIe, Gigabit Ethernet and SATA. Basically do what AMD did with their A1100 except with a good processors and actually sell more than a dev kit. The lack of total raw processing power per server could be easily offset by the density and lower price of the ARM server. Why isn't this happening? I don't think lack of software is an explanation for that. Things like AWS Lambda could probably be immediately ported to run on ARM servers.

<comment><USER4> After Apple left the server space when they shuttered the Xserve, I don't think they are really interested into getting involved into that space. I think they view themselves as a consumer goods company that makes good products and uses technological innovation to serve those goals, rather then create that innovation and figure out how to productise it later.

<comment><USER5> They don't need to sell them to enterprise. They can be their own customer. They have some of the bigger datacenters after all.

ARM for data storage pools seems like a good fit.

<comment><USER6> Is because the cost of an CPU, within the server, And the cost of Server within the whole DC, and then the cost of Running the DC. In the grand scheme of things CPU cost is pretty small. Not to mention we are getting another round of CPU upgrade with Intel Broadwell-E. And then some price competition from AMD's Zen.

And Intel Xeon isn't just about the CPU, it is the enterprise grade QA and testing, Network Controller, SATA controller etc. And the Xeon-D is a very Decent offering.

Then there is scale, even though Apple's Cloud is huge, it is still no where near Amazon AWS scale, not Google and Microsoft Azure either. And even if you add all these three Cloud Giant Combined, I will bet their annual buying CPU core doesn't even come close to Apple's annual iPhone sales.

So to finalize, there just isn't any financial incentive of switching.

</comment></comment></comment></comment></comment><comment><USER7> This shows both the amazing progress of iPhone and disheartening progress of the Mac line simultaneously.

<comment><USER8> Yeah, Macbook air really feels abandoned

Would love a 16GB model.

For the last 4 years of me saying that, everyone and their brother, and the Apple reps all say "oh you can configure that on the site", because they have have access to the parallel darknet version of the Apple site where Macbook airs ship with 16gb RAM

I really like the air, but I can like the Macbook Pro its not really a big deal. JUST WISH THEY WOULD YA KNOW

<comment><USER9> > Yeah, Macbook air really feels abandoned

The Macbook-with-no-suffix line is the implicit replacement for the Air anyway.

<comment><USER10> Lighter, better screen, cheaper. I'm not sure why you'd buy an Air these days.

<comment><USER11> Keyboard doesn't feel like a keyboard, trackpad is fake, speed is that of a tablet, and has almost no ports.

I wanted the 11'' MBA with retina and an updated CPU, not a bastardized laptop. I want to feel keys pressing.

<comment><USER12> >Keyboard doesn't feel like a keyboard, trackpad is fake, speed is that of a tablet, and has almost no ports.

All valid points, bar the trackpad. The force touch trackpad is a pleasure to use and I much prefer it to previous Apple trackpads (which are still excellent).

</comment></comment></comment></comment></comment></comment><comment><USER13> The day that apple flips switch in opt and ships OS X in Arms means Intel could be in trouble. They did it before with PowerPC->Intel.

<comment><USER14> Intel will be ok, Apple don't sell that many chips. And it is not going to affect anyone else.

And Intel are looking at helping Apple out with the next versions of their chips, possibly fabbing them.

<comment><USER15> It would be a powerful statement that Intel is not the given choice for the CPU in a "real" computers (as opposed to smartphone/tablet) anymore.

<comment><USER16> It would send a signal that Intel isn't the given choice if you've made a vast investment developing your own CPU line over the years.

<comment><USER17> The rest of the ARM ecosystem is trailing behind Apple, but it is following. If Apple switched, 2-3 years later the rest of the laptop/desktop space would be in the same position.

</comment></comment></comment></comment></comment><comment><USER18> Cool, does that mean we can scale down the processor performance by half and still have a phone that is competitive, but has twice the battery life? OK, I know speed and power consumption are not linear. I'd really love if one phone would skip a year of increasing CPU speed and thinness, but would keep the advances in battery tech.

<comment><USER19> No. CPU's in a phone are probably idling 99% of the time. The power usage for the full-performance and half-performance cpu when idling will be close to equal.

The full-performance phone might even have better battery life because it can finish cpu intensive tasks twice as fast, returning to idle power draw faster than the half-performance phone.

</comment></comment><comment><USER20> I imagine in near future, we will use smartphones as our personal computer in every situation. In the office, one can then interact with a Bluetooth keyboard, mouse/touch pad and use a big monitor. Probably, one of the next iOS will come with a macOS UI as well (under the hood the iOS is based on macOS anyway) - so if you connect it to a huge monitor, you have the desktop UI of macOS, and otherwise the iOS UI. The same will happen with Android/ChromeOS/Google Fuchsia, Ubuntu and MS has some ideas too (but they cannot execute it, forcing mobile UI on desktop failed big, now they bet on Win32 again to fill their empty AppStore).

<comment><USER21> The TDP limits of smartphones (no more than ~10W) make them unuseable for heavier workstation loads, and there will always be demand for a lot of local computational power.

<comment><USER22> I feel (hope :-)) that in the future, network bandwidth will be large enough that large, high-power general computation services can be used to offload intense processing tasks from personal devices to work around things like this.

So, if you're on your phone and need to crunch a massive data-set, this gets offloaded to the big-datacruncher-in-the-cloud, and the result sent back to your device.

<comment><USER21> Bandwidth is only one part of the problem. Latency is another one, and it seems to be insurmountable with the modern network media.

</comment></comment></comment></comment><comment><USER23> Does this have implications for game consoles too? Is the iPhone the most powerful gaming device?

<comment><USER24> It's quite possibly faster in the CPU department than the PS4/Xbox One, though those both have 8 (slower) cores.

But the PS4, Xbox One and possibly even the Wii U will have much faster GPUs.

<comment><USER25> The PS4 and XBox One also have four times as much RAM as the iPhone 7. In fact I was kind of shocked when they announced it would only have 2GB, considering you can get a Nexus or OnePlus with 6GB this year.

<comment><USER26> Why in the world you would need 6GB in a phone today? And the nexus can have all the ram in the world but will always be painfully slow. I am really surprised that I didn't throw my Nexus 5 against the wall out of frustration in the end. The real surprise was when my friend bought the nexus 6x or whatever is called and it was even slower than the nexus 5. Just to sum up, RAM is the most useless thing if all the rest sucks.

<comment><USER25> I have an iPad mini, and my major complaint is that applications crash due to lack of memory all the time. Things like a page full of animated gifs will crash the browser. I got a OnePlus 3 a couple of weeks ago and I haven't even remembered to charge the iPad since. I'm pretty sure it (the iPad) is going to end up in my drawer of misfit PDAs.

</comment></comment></comment></comment></comment><comment><USER27> Almost every mobile Ax SoC has pushed the contemporary boundaries of per-core performance.

But Apple won't sell these amazing chips to other manufacturers. For now, i think the openness of the Android ecosystem is still worth more than extra CPU performance.

</comment><comment><USER28> the source also claims that the iPhone 7 is of a comparable speed to the macbook pro 13-inch from 2013, which is a computer I use daily for my programming. I'd love to see a way of using an iphone as highly mobile work station.

</comment><comment><USER29> It's just a matter of time before we see ARM's in Macbooks.

I wonder if we'll see Rosetta make an appearance for binary backward- compatibility again.

<comment><USER30> Rosetta worked, because the Intel chips were much faster than the PowerPcs back then. I doubt that the ARMs would have a sufficient large lead in performance. And there are plenty of reasons to run x86 code on Macs, be it older programs which might not be ported to ARM, or all the Windows and Linux stuff running in VMs. As much as I would like an ARM based laptop, it would be much less practical than an x86 one.

<comment><USER31> > As much as I would like an ARM based laptop, it would be much less practical > than an x86 one.

We don't need to guess here. Look at the failure of Surface RT.

<comment><USER32> The RT didn't have an X86 translation layer like is being discussed in this thread.</comment></comment></comment></comment>


Private jet start-ups trending? PrivateFly raises £2 million - <AUTHOR> http://eu.techcrunch.com/2011/09/28/private-jet-booking-network-privatefly-com-raises-2-million/

<comment><USER2> This may be in part due to the prices of private jets going through the floor and owners are unable to continue trading up or selling them. I know someone with a Citation II that went from 3 million to less than 1 million in just two years. Jets don't typically drop that much that quickly. I imagine that the owners may want to begin chartering them to help pay for the dead weight?</comment>


What architects don't get about Steve Jobs' spaceship - <AUTHOR> http://fortune.com/2014/08/05/what-architects-dont-get-about-steve-jobs-spaceship/

<comment><USER2> What I don't understand, though, is that if the goal is to increase spontaneous interaction and collaboration, the donut shape of the new Apple headquarters seems like one of the worst ways to do it. It places people further apart than is necessary, and it introduces a shortcut (walking through what is likely to be an empty courtyard most of the time) that minimizes interaction with co-workers.</comment>


There Is No Handbook for Being a Writer - <AUTHOR> http://www.themillions.com/2016/06/there-is-no-handbook-for-being-a-writer.html <comment><USER2> I know folks are trying to be helpful by listing all the handbooks on the mechanics of writing, or on the creative process (closer), but it's off topic. The author is talking about 'being a writer', as in the title. As in:

      "What do you do?"
      "Oh, I'm a writer"

Not like:

       "Should one _ever_ begin a sentence with 'but'?"
       "No, you should _never_ do that.  I'm a prig!"

It seems that sitting down to write every day and telling people you're doing it brings with it a wrath of psychological goop that sane people need to cope with if they're going to keep remain sane. That's more what this essay is about.

All that finger-waggingly-said, some great books recommended. Thank you for that!

<comment><USER3> Rather. Grasp on that seems lacking here.

By comparison, there are many schools which teach (or claim to teach) _programming_ , but few which cover the details _of being a programmer_ : addressing employment contracts, valuing stock or equity options, non- competes, project management, vendor management, operating as an independent contractor, client (or boss) management, etc., etc.

There are similar observations made of the medical profession, law, engineering (particularly where independent / small firm work is common), etc. The nuts-and-bolts of the business.

Much of what's discussed (in the context of startups) on HN, for example.

That said: there are some guides, several mentioned below. _The Writers ' Handbook_ is the long-time classic. I'm looking at a few of these now based on their mentions here.

</comment></comment><comment><USER4> It's interesting that the author pursued a degree in literature and that's what ultimately pushed her away from that career path. It seems to be a common theme where a formal education in creative arts makes people want to do something else in life, anything else.

I've had acquaintances with a musical background and eventually they went to do something else, including IT. From what an old buddy told me once, most graduates of a musical school learn to hate music and quit that vocation past graduation.

In the opposite fashion, I've never had a literary education and I'm feeling more and more drawn to this line of work. I'm not sure if I want to make a complete switch though, software engineering and startups are just too exciting to give it all up. Somehow it feels I can accomplish more and make a better contribution to the society with my honed programming skills than with words, but I might be wrong about it. For now, I'm just writing essays every now and then, publishing them on my blog and that seems to be enough.

One word of advice in relation to all of this. Don't shy away from reading foreign literature. I know that for many native English speakers other languages simply don't exist in their world, but you're missing out on an incredible body of thoughts and ideas that might expand your vision borders. Don't be stuck in your English silo, learn some foreign language and go exploring. And no, a translation is not the same, it's devoid of the original energy. That's why people are often unimpressed by what before a translation was a profound piece of work. You can't translation energy.

<comment><USER5> > but you're missing out on an incredible body of thoughts and ideas that > might expand your vision borders.

Have to disagree here. Yes there is a lot of good stuff especially written in the past but looking at today I see high caliber English writers and books in every category I do not see in that quality and quantity in any other language. Ok I do not know how it's about Chinese but that's my perception regarding other in particular European languages.

Always when I look for something, literature, fiction or non-fiction I switcch after seconds to Amazon.com from my local Amazon and find way better and more stuff. Frankly, the local selection feels like written by amateurs comapred to the US, I know this might sound bold and is probably too generalizing but the general perception is that you do not miss out anything if you stick to English based literate, rather the opposite. Of course therr are exception and genious writes not from the US like Unberto Eco and others but still nothing to the vast majority English based literature offers. Heck, even my Kindle account is US only.

If one country produces excellent media it's the US.

<comment><USER6> Spoken like somebody who's never read Journey to The End of The Night. In my opinion (and many others') it's one of the best novels ever written.

Tastes may vary but to dismiss foreign literature outright betrays a lack of experience as a reader. This is where I complain, as an old guy, about the poor state of liberal arts education.

Do yourself a favor and pick up some Dostoevsky. Or Gunter Grass. Or Murakami. Or Knut Hamsen. Or oh hell, there are far too many to list, those just come to the forefront in my head.

<comment><USER7> Here's a few more: Or Homer, or Sophocles, or Ovid, or Rumi, or Rilke, or Proust, or Cicero, or Molière, ...

</comment></comment></comment></comment><comment><USER8> But there is a game! It's called Write On Par. It teaches concise writing, playfully.

Because no writer has the patience to sit through a grammar class...and no reader wants to read wordy, confusing writing no matter what the topic.

[http://writeonpar.com](http://writeonpar.com)

/shameless plug

Beautiful article though. I've met a couple recently-turned full-time authors and have nothing but the utmost respect and admiration for the author/artist life. It's such a lifestyle sacrifice that their love for the craft must be incredibly deep.

<comment><USER9> Writing is a craft, and it's a freaking hard one that takes combining a lot of skills plus a lot of discipline and hard work. If you don't have the patience to sit through something as simple as as a semester-long grammar class at your local community college as one aspect of learning the fundamentals you need to succeed, then most likely writing isn't the career path for you.

<comment><USER10> Hm, dunno. I'd say writing is about having something to say. Especially something other people want or (more importantly) need to read. I don't think that Charles Bukowski was particularly disciplined or educated for example.

<comment><USER11> Everyone has something to say. The achievement of writers is being able to suitably express their thoughts to their audience.

Regarding Bukowski, you should check out his Wikipedia page. I'll snip some highlights, and draw some conclusions.

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

> poet, novelist, and short story writer

> Bukowski wrote thousands of poems, hundreds of short stories and six novels, > eventually publishing over 60 books

You don't write thousands of poems without understanding language. He may not have had a complete collegiate education, but you can be sure he ended up studying language on his own.

</comment></comment></comment></comment><comment><USER12> The best advice on writing I've come across in 40 years of reading about writing is a "pithy maxim" from Cato the Elder: Rem tene, verba sequentur. (Grasp the thing, the words will follow.)

The best advice on being a writer is mostly reading how others did it and then avoiding their mistakes. Thus, I hope I don't end up kicking a can up a lonely road in Idaho or showing up drunk for an interview by Buckley or marrying my too-young cousin or winning any kind of prize.

Edit: I forgot to say what I came here to say: "Being a writer" is socially awkward and a little embarrassing, especially in this society. I've had feelings similar to the author's and had to learn to deal with them. Almost no one talks about that part of writing.

<comment><USER13> Thanks for the "pithy maxim" \- I have never seen it before, but the idea has always been my key to giving a decent presentation. It goes straight into my quotes-file!

</comment></comment><comment><USER14> People mean different things when they say "writer," and it's worthwhile untangling a few different types.

* Writers who make a living writing

* Writers who don't (yet)

* Fiction writers: Novelists and short-story writers

* Poets

* Journalists: reporters, war correspondents, editors

* Bloggers

* Corporate: Technical writers, Marketing copy writers, etc.

* Academics all stripes

These categories aren't mutually exclusive, but they each represent a different type of writing, which itself requires a different practice, approach or method.

There are, in fact, many handbooks for being a writer, and almost all of them are written to serve a particular type of writer and not others.

The creative writing departments of America have produced piles of writing about writing (about writing -- gaah ... self-referential recursion! No one escapes a medium describing itself.).

Some of the classics are:

* The Elements of Style - Strunk and White

* Politics and the English Language - Orwell [https://www.mtholyoke.edu/acad/intrel/orwell46.htm](https://www.mtholyoke.edu/acad/intrel/orwell46.htm)

* Hemingway on Writing [https://www.scribd.com/doc/156100470/Ernest-Hemingway-on-Wri...](https://www.scribd.com/doc/156100470/Ernest-Hemingway-on-Writing)

* Copia: Foundations of the Abundant Style - Erasmus (the opposite of Strunk...)

* And so on...

The best handbook of all, though is simply the study of great writers whose work you love, as the author points out. Anyone serious about fiction or prose should dive into the 19th-century Russian and French novelists, Virginia Woolf, an annotated Shakespeare, etc. It's all there just waiting for us. In that sense, every piece of good writing is a handbook on writing.

(Fwiw, I made a living as a reporter and editor for about 10 years.)

<comment><USER15> Not that Strunk and White is _bad_ , but it's a peculiar choice to list first because it is mediocre and there are so many other options which are better. At the very minimum, Strunk and White is a very contentious entry, and people (like me) will come out of the woodwork to attack it.

* _Style: Lessons in Clarity and Grace_ , Joseph Bizup

* _The Chicago Manual of Style_ (depending on what kind of writer you are, a different guide may suit you better)

* _Bird by Bird_ , Anne Lamott

* _On Writing_ , Stephen King

<comment><USER16>
        ...in On Writing, Stephen King writes: "There is little or no detectable bullshit in that book. (Of course, its short; at eighty-five pages it's much shorter than this one.) I'll tell you right now that every aspiring writer should read The Elements of Style. Rule 17 in the chapter titled Principles of Composition is "Omit needless words." I will try to do that here".

[https://en.wikipedia.org/wiki/The_Elements_of_Style#Receptio...](https://en.wikipedia.org/wiki/The_Elements_of_Style#Reception)

<comment><USER15> From the linked section:

> The book's toxic mix of purism, atavism, and personal eccentricity is not > underpinned by a proper grounding in English grammar. It is often so > misguided that the authors appear not to notice their own egregious flouting > of its own rules ... It's sad.

> aging zombie of a book ... a hodgepodge, its now-antiquated pet peeves > jostling for space with 1970s taboos and 1990s computer advice

I'm not saying that this book is terrible, just that it is mediocre, spits out good advice but not couched in good practice, is a bit old-fashioned, et cetera. There are better books out there. Stephen King's book _On Writing_ is better _in spite of the fact_ that Stephen King recommends Strunk and White.

I think that the reason people like the book is because it says things that you would agree with. "Omit needless words." How can you dislike a book that says such good things? But it doesn't surround the advice with solid examples the way _Style: Lessons in Clarity and Grace_ does, and it doesn't go into depth the way a proper style guide like Chicago does, and it doesn't have the more down-to-earth "how to be a writer" advice like King's or Lamott's works do.

So I don't recommend it.

(It's also quite curious that you quoted a tertiary source such as Wikipedia rather than King.)

</comment></comment></comment></comment><comment><USER17> A time honored classic: _If You Want to Write_ by Brenda Ueland.

[https://books.google.com/books/about/If_You_Want_to_Write.ht...](https://books.google.com/books/about/If_You_Want_to_Write.html?id=8WjsAgAAQBAJ)

Another nice one is _Stein on Writing_

[https://books.google.com/books/about/Stein_On_Writing.html?i...](https://books.google.com/books/about/Stein_On_Writing.html?id=MQVlAgAAQBAJ)

Of course, what most writers will advise is that you just write a lot, and get good writers to critique your work. Writing, like most arts, takes years and years.

Today, there are various web sites that will "crowd-source" critiques of your writing, in exchange for your critiquing other people's work (also good practice). I've used critters.org quite a bit but there are several other big ones these days.

</comment><comment><USER15> The title is a bit more precise than commenters in this thread are giving credit for. There is no handbook for "being a writer", but there are many handbooks for writing.

You could translate this to another field. I've read lots of books on programming, but very few on "how to be a programmer". Mostly a few short blog posts with contradictory information.

</comment><comment><USER18> The War of Art by Steven Pressfield is a good start

<comment><USER19> Seconded. Fantastic.

And I'd also recommend "On Writing" by Stephen King.

<comment><USER20> I was just telling a friend how important this book is in highlighting the nuts and bolts of writing in that it's a lot like building stuff. We tend to romanticize the writer as having ideas come to them with hot cocoa and a NYT bestseller literally pouring from their fingertips, but the reality is a lot closer to grinding at an especially punishing task. Mr. King highlights it wonderfully, and even if you're not a fan of his work (huh?), I highly recommend you read it.

<comment><USER21> It also contains a chapter he wrote pre-edit, then post-edit, and why things were kept, reduced, taken out, etc. One of the most helpful things I've seen from a professional writer.

</comment></comment></comment></comment><comment><USER22> Too many people want writing 'hacks' and 'tips', without understanding that writing is a market, which means that for writing to be read, it typically has to meet some sort of demand. Famous people can create their own markets, but unknowns have to latch onto existing ones.

Long-form seems to be very popular online these days. Anyone can hammer out a 500-word essay, but a it takes a 5,000 word one to stand out. Long-form may be the best approach right now for writers hoping to gain visibility.

Also, I think IQ plays a role, too. You need to be smart to make a career at writing (assuming you're not a celebrity), and few are sufficiently smart enough, sorry to say.

</comment><comment><USER23> it's pretty funny that the author takes so long to get to their point :P, given the title

Anyone want to post a tldr?

as a paid author, given the title, i was hoping for an article that touched on drinking, lallygagging, and partying --- then getting all your work done in one day at the end of the month.

<comment><USER24> The article's also evidence of the temptation to write about yourself, as I suppose that's what you know best. I have seen a lot of successful authors who inject themselves into the narrative.

For example, this successful author (David Wilcock) who failed to make a documentary, and wrote about it and turned it into a NYTimes bestseller. It's sub-par book with silly claims but he has an audience and it provided a story structure with interesting ideas and alleged facts. Eat Love Pray is another example.

And I suppose if you can write about outrageous things you do, it probably makes people all the more motivated to read you.

<comment><USER23> > The article's also evidence of the temptation to write about yourself, as I > suppose that's what you know best. I have seen a lot of successful authors > who inject themselves into the narrative.

Great point.

Searching for sentences that include "I", "Me", etc. in your writing is an excellent exercise.

> And I suppose if you can write about outrageous things you do, it probably > makes people all the more motivated to read you.

Personally, I think this is just human nature. That is, most people are fascinated (and likely, long to do so themselves) with living an "outrageous" lifestyles

</comment></comment></comment><comment><USER6> Hey, I'm a second career writer too! That's a fantastic piece.

My background is in software and I still freelance to pay the bills. I have been writing on and off since I was old enough to hold a pen. Little fits and starts here and there, but by the time I was in my early twenties I focused on making a living instead of learning how to write. I dreamed of one day making enough money to retire and maybe write a few books.

Three years ago I realized that was crazy. I wanted to write, putting it off until the end of my life not only increases the chance I'd never get to do it, but also means that I'd miss out on years and years of practice. I decided to do with writing what I did with programming—set aside nearly half my time to learn how to do it, then keep doing it until I could make a living.

I'm not making a living anytime soon, but after three years I've written a couple novel manuscripts, published a short story collection, and am due to publish a novel at the end of the year. But I'm still hesitant to answer, "I'm a writer" when someone at a cocktail party asks what I do.

</comment><comment><USER25> My litmus test for being a writer is fairly simple. How many completed items do you have lying around. I don't care if they are published but they need to be finished (as in a cohesive and typed out whole).

It's basically the same as being a programmer except programmers tend to self publish their work rather quickly. I feel like writers should generally do the same (and solicit feedback).

</comment><comment><USER26> The Writer's Handbook [0]

0 - [http://amzn.to/28Z2K9e](http://amzn.to/28Z2K9e)

</comment><comment><USER27> I would say most jobs or careers have no handbook. The ones that SEEM to have handbook are the same jobs where they'll tell you that the handbook means little in the real world. Think policing, firefighting, paramedic. Jobs with certifications such as medicine or specific highly regulated trades such as electrician, HVAC. These jobs have large ramping up periods, apprenticeships because the 'handbook' is guided experience.

What I don't understand is did the author think that most people new to writing expected it to be more straightforward? Because I would have thought people like writing because the career is what you make of it, where you hustle and for what.

</comment><comment><USER28> Him sitting next to author reminded me how I always think you are a writer when you pay your bills through writing, same with art etc. I find so many that say they are an "artist" yet thats not how they pay their bills. Sure you may make fantastic art but you are not an artist.

You never here someone say I am a basketball player just because they play basketball as a hobby. Doing something that pays your bills is totally different than it being a hobby or even being great at it.

<comment><USER29> Not everyone defines themselves by what pays the bills, plenty of artists do menial jobs to make ends meet. How they pay their bills is a bad measure of who/what they are, you shouldn't reject someone's self definition because you want to judge them by how they make money. You are not your job.

<comment><USER4> >> You are not your job.

Very true. I hold the same liberal view as to what people truly are.

An interesting idea just struck me. If a seasoned software developer quits his full-time job to work on a startup of his dream, while taking a part time job at a bar to be able to pay his bills, who is he then? Is he no longer a professional software engineer? Is he now a bar tender? An entrepreneur? What is he truly then during this period?

By the same token, if say an economist has been getting frustrated at his job and starts learning web programming, building simple personal sites for himself and friends, is it insufficient to call him a programmer, even if we would all agree he is only a junior one?

Where do we draw a line?

If someone is serious about a new vocation and invests a lot of time and energy into mastering it, then by all rights he's already in part what he aspires to become.

</comment></comment></comment><comment><USER30> Not really that interesting if main point is that there is no easy "follow the instructions" way to become a writer. It is true for everything like there is no "follow the instructions" way to have a good life, build muscles, etc. It is all about showing up doing mistakes, learning not to make same mistakes _poof_ after quite long time maybe you achieved your goal, but you are never certain.

</comment><comment><USER31> I agree to the topic's message...but...who is a writer? Realeasing a book (and especially in that travel genre) - in my opinion - does not make you a (good/belletristic) writer.

But if it is just about writing for living / journalism and similar stuff, then yes, handbooks exists and do work.

ps: worked as journalist and studied literature, but don't feel like i could write books that come close to what i like to read.

</comment><comment><USER32> Just don't be the d _\_ * whom people are wary about meeting in person for the fear of being used as a (usually unpleasant) character in any of the future writings.

</comment><comment><USER33> There most certainly is: < [http://www.earwolf.com/show/hollywood- handbook/](http://www.earwolf.com/show/hollywood-handbook/) >.

</comment><comment><USER34> Being a writer is easy: (1) hire a good editor, (2) remix existing stories (3) be famous.

<comment><USER35> the first question isn't how to be a writer, but whether you have anything to say.

<comment><USER4> Right to the point.

</comment></comment></comment><comment><USER34> Use "The Elements Style" by Strunk & White.

<comment><USER36> [http://www.lel.ed.ac.uk/~gpullum/LandOfTheFree.pdf](http://www.lel.ed.ac.uk/~gpullum/LandOfTheFree.pdf)

[http://chronicle.com/article/50-Years-of-Stupid- Grammar/2549...](http://chronicle.com/article/50-Years-of-Stupid- Grammar/25497)

<comment><USER37> That article for the Chronicle of Higher Education is so wrongheaded it's hilarious.

""Keep related words together" is further explained in these terms: "The subject of a sentence and the principal verb should not, as a rule, be separated by a phrase or clause that can be transferred to the beginning." That is a negative passive, containing an adjective, with the subject separated from the principal verb by a phrase ("as a rule") that could easily have been transferred to the beginning."

Yes. That's the joke, dear Geoffrey. They are showing the violation to demonstrate its effect on a sentence. You have to be truly humorless if not willfully obtuse to read this as Strunk & White having no idea what they're talking about.

Strunk & White is self-critiquing, which is part of what makes it great—it's not nearly so prescriptive as the author seems to think.</comment></comment></comment>


DIY: Recurring crypto purchasing so you can dollar-cost average into positions - <AUTHOR> https://github.com/jeffreyiacono/recrypto <comment><USER2> Doesn't coinbase have something like this?

Edit: oh nvm. It's cheaper

<comment><AUTHOR> Exactly. For example it would be 99x cheaper if you were going to buy $10.00 / day vs the Coinbase feature (don't get too excited, it's $0.99 in fees for Coinbase's out of the box feature vs $0.01-$0.03 in fees you'll hit by using the Coinbase Pro API). Definitely requires more set up and maintenance, but that's half the fun of it :)</comment></comment>


Show HN: A tiny (400B) client-side module for tracking with Google Analytics - <AUTHOR> https://github.com/lukeed/ganalytics <comment><AUTHOR> Main takeaways:

\- 0.4kb vs 12kb for official client (gzip)

\- Respects visitors' `doNotTrack` settings

\- Does not ship internal XHR library

\- Correlates to the Google docs

\- API is 99% familiar, haha

\- Well-documented

\- Cacheable

It isn't exactly a drop-in replacement, but the tweaks needed are incredibly minor.

The GET requests are made via `new Image()`, which is a low priority network request, so your critical requests won't be blocked or delayed because of a trivial `pageview` analytic.

Internet Explorer is not supported by default; however, it's VERY easy to regain compatibility. `Object.assign` is the only roadblock, which has a Babel quick-fix.

Hope you enjoy! And feel free to ask questions. Thanks!</comment>


Lilith and the Draconcopes - <AUTHOR> http://riowang.blogspot.com/2020/06/lilith-and-the-draconcopes.html <comment><USER2> If anyone is interested in delving more into this topic, the most authoritative (and surprisingly quite readable) treatment is "Lilith: Die Erste Eva: Eine Studie uber dunkle Aspekte des Weiblichen" by Siegmund Hurwitz (one of Carl Jung's students), translated into English as "Lilith the First Eve: Historical and Psychological Aspects of the Dark Feminine."

</comment><comment><USER3> I loved this podcast/audio-play about Lilith [0], from J. Daniel Sawyer [1]. Apparently he also wrote a book about the story [2]. I love everything he made so far, so probably good ;)

[0] [https://pca.st/episode/37ff5250-ab4c-0132-307f-0b39892d38e0](https://pca.st/episode/37ff5250-ab4c-0132-307f-0b39892d38e0)

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

[2] [https://www.goodreads.com/book/show/9822058-lilith](https://www.goodreads.com/book/show/9822058-lilith)

</comment><comment><USER4> TIL the snake in the Avedon photo had been Kinski's idea: [https://www.anothermag.com/art-photography/10549/when- avedon...](https://www.anothermag.com/art-photography/10549/when-avedon-shot- nastassja-kinski-and-a-boa-constrictor)

</comment><comment><USER5> This is a very long article on a religious/mythological subject, and I am not sure why Hacker News needs to read it.

A summary would be much appreciated.

<comment><USER6> To be fair, its now that long. It is <2500 words, similar size to common news article. As for religious/myth subject - if its interesting what's the issue?

<comment><USER5> There are a lot of people writing on the subject and not all have particularly high standards. What sets this apart?

<comment><USER6> There are people writing on the subject of programming languages/software engineering and not everyone has high standards too. However, everyone can share their different takes and views, discuss issues. If its not interesting for anyone and nobody upvotes - thread will sink to the bottom of HN</comment></comment></comment></comment>


Ask HN: Which areas of math are practical to programming/algorithms and why? - <AUTHOR> <comment><USER2> I've been recently trying to make my way though Elements of Programming ([https://www.amazon.com/Elements-Programming-Alexander- Stepan...](https://www.amazon.com/Elements-Programming-Alexander- Stepanov/dp/032163537X)) by Alexander Stepanov and Paul McJones and it makes me say abstract algebra. It's the first and only rigorous foundation of software engineering that I've seen. It basically maps abstract algebra to this somewhat simple subset of C++, introduces new algebraic objects (such as memory) and then shows this really nice correspondence between the the C++-- and the abstract algebra.

If you are not familiar with the author, Alexander Stepanov is the guy who basically figured out generic programming, was instrumental in the design of C++ templates and the C++ STL. C++ gets a lot of flak but templates are very powerful (if you disregard the complexity). I think that they are actually one of the main reasons why C++ is still relevant. Also I'm starting to think that generic programming might actually be the most powerful paradigm out there (this is just a hunch). This book doesn't take the middle road, only the low level (C++) and extreme high level (abstract algebra) and totally cuts out the middle part (aka boiler plate).

Funnily enough, this C++-like language actually translates very nicely to the modern C++ successors like Swift and Rust (or it seems, I'm in the progress of exploring this).

Has anyone here tried to explore the contents of this book in either Swift or Rust?

But remember that this is not an easy book, I've met very smart people who told me they read only a part of this and are still wrapping their heads around that.

<comment><USER3> I just picked this up after having finished 'From Mathematics to Generic Programming' which is a ride in the park compared to what you're reading now. Looking forward to the task of slowly working my way through it.

[Edit] Interested in Rust for the same reason, but I'm not attracted to Swift. It looks so much like Kotlin, I am not sure I understand the fuss over it other than it gives Apple devs a way out of ObjC.

Anyway, I am going full on Android now, not in the hopes of app money, but the sheer numbers of devices out there, Google's backing, and it is more of a hacker's platform than iOS. I will most likely try Kotlin again, and this will prepare me for any possible switch to Swift.

<comment><USER4> Giving devs a way out of ObjC is a pretty big draw :).

</comment></comment></comment><comment><USER5> Discrete math first comes to mind first: lists, trees, graphs, etc. Used in basic algorithms 101, but you need some more serious probability theory for probabilistic algorithms.

Linear algebra is useful for computer graphics, but also for general "system thinking" concepts like inputs spaces, output spaces, transformations, and properties of transformations.

Basic differential calculus, meeeh, but multivariable calculus—specifically optimization—is really important in many programming contexts (e.g. machine learning).

Of course, the most important and most basic of all is the notion of a function f(x), its definition, inputs, outputs, properties, etc.

<comment><USER5> Rather than thinking just of how math ideas are used in CS, we should think of the relation as a two-way street: computing can help us better understand math too. Here is a short tutorial on basic math for programmers: [https://minireference.com/static/tutorials/sympy_tutorial.pd...](https://minireference.com/static/tutorials/sympy_tutorial.pdf)

It serves to review basic high school math, calculus, and even a bit of linear algebra. SymPy is very powerful stuff...

</comment></comment><comment><USER6> Math is rarely necessary for software development. However, math is one way great engineers distinguish themselves from okay engineers.

I work primarily on audio software. Linear algebra is most important, followed closely by signal processing. Those are sufficient to write good software. Great software requires statistics, calculus (mostly for optimization but also modeling), and discrete math (again mostly for optimization). Other specialties probably require more discrete math and less linear algebra and signal processing.

<comment><USER7> > _Math is rarely necessary for software development. However, math is one way > great engineers distinguish themselves from okay engineers._

I recently realized that math is not necessary for programming... if you want to be stuck doing boring stuff like webdev or CRUD apps.

<comment><USER8> Abstract reasoning is necessary for programming. We typically develop those skills doing and applying math, but it is an open question if abstract reasoning is math.

Also, there are many kind of maths, the Europeans even get this right over the Americans by making it plural. Math is necessary is like saying things are necessary...which thing? It really depends on what you are doing, and experience with a known field of math might not be useful for some problems (beyond the abstract reasoning you need to write code at all).

</comment></comment></comment><comment><USER9> I want to stress before answering that everything you learn is useful if your mind is limber and willing to make connections. Some of the most valuable lessons in programming I learned from editing a philosophy journal in graduate school. I'll answer in terms of mathematical areas/concepts I've found immediately applicable in my programming career (format: what | why):

linear algebra | graphics, scientific computation, mostly graphics.

discrete probability | a whole shitload of perf solutions, understanding risk while planning

number theory, particularly factorization | modular arithmetic for crypto, a lot of very clever hacks for compressed representation of state spaces

predicate logic, basic set theory | I cannot count the number of times someone I work with has expressed something that required one elegant logical operation in a horribly convoluted way.

ammortized analysis | just learn it

statistics | operational reasoning using performance metrics, how to test/alarm rationally, how to reason about your customers

calculus | marginal returns (important when managing a team and optimizing where to spend resources). also if you ever end up doing any kind of convex optimization, which you might, maybe. (I do, but I don't think that's super normal outside datascience).

TL;DR: there's a reason CSCI curricula look like they do.

<comment><USER8> > I want to stress before answering that everything you learn is useful if > your mind is limber and willing to make connections

There are some things you don't want to learn, and there is also an oppurtunity cost to learning/practicing A instead of B.

<comment><USER9> Of course. As I said, there's a reason most CSCI curricula look similar. That said though, most applied programming work does not require hard/deep math with a steep learning cost. It requires good instincts and precise logical reasoning.

Good instincts require a breadth of knowledge, moreso than a depth in any particular domain. Precise logical reasoning requires practice and patience in any of a very wide range of fields, not exclusive to mathematics. In both cases, I think developing a careful knowledge of history or neuroscience or any rigorous intellectual discipline is effective practice, although I think a foundation in logic is irreplaceable.

Being an excellent programmer in some specific domains requires deep domain specific knowledge in applied math, which does have a steep opportunity cost. Absolutely. But I did not believe that was the question at hand.

</comment></comment></comment><comment><USER10> I'd recommend reading Knuth's The Art of Computer Programming for his perspective. Very math intensive and things you won't find in other textbooks.

Definitely a lot of discrete math (e.g. combinatorics), some calculus, number theory (esp. for cryptography), coding theory (e.g. for error correction), information theory, computational complexity theory. The border between theoretical computer science and math in general is very blurry, pretty much anything that is CS pretty quickly touches on more "traditional" mathematics.

A lot depends on your area of programming, things like machine learning will definitely involve more linear algebra, calculus, statistics. If you're programming a 3d engine then again algebra, geometry, etc. Things like finite state machines have a mathematical underpinning.

EDIT: From what I've seen at a university level CS program, Calculus, Linear Algebra, Discrete Math, Group Theory, Logic and Statistics were (IIRC) the core required math courses. Doesn't mean everything you learn there is applicable to any kind of program you might write but at least that's what someone thought was important...

<comment><USER11> Important to note that the maths used in AOCP is briefly covered at the start of Vol I. This was expanded upon in the form of Concrete Mathematics.

If you want just the maths and at a slightly slower pace, go with Concrete Mathematics. If that's a struggle, I found the first part of Discrete Mathematics and its applications by Kenneth Rosen was enough for me to make progress in Concrete Mathematics.

I also found learning a bit of linear algebra and calculus was a mind changer. I expect more fruits by my continuing of those studies.

</comment></comment><comment><USER12> This seems like a good read on the topic:

[http://steve-yegge.blogspot.cz/2006/03/math-for- programmers....](http://steve-yegge.blogspot.cz/2006/03/math-for- programmers.html)

Disclaimer: I know nothing about math but have been researching it recently as I want to go to university next year to study CS so I have about 8 months to 'learn' math (45 year old street programmer here :).

I would appreciate any feedback on if this post has any merit, and will be following this thread as it's relevant to my interests :)

<comment><USER13> First I would recommend Cal Newport's blog about using time wisely. [http://calnewport.com/blog/2008/11/25/case-study-how-i- got-t...](http://calnewport.com/blog/2008/11/25/case-study-how-i-got-the- highest-grade-in-my-discrete-math-class/) Plenty more great info in the archive: [http://calnewport.com/blog/archive/](http://calnewport.com/blog/archive/) Obviously the best way would be to go through your school's course syllabus for whatever classes you want to take and look at the material you will be doing, but these are good for a general preparedness:

Axler - Precalculus 2nd version [http://precalculus.axler.net/](http://precalculus.axler.net/) He works through every odd exercise solution, in full. Also gives you a good intro to sets and series, summation notation, binomial theorem, all this will come up later in discrete math. He assumes the reader knows nothing about Trig as well.

Gilbert Strang's videos "Highlights of Calculus" [https://ocw.mit.edu/resources/res-18-005-highlights-of- calcu...](https://ocw.mit.edu/resources/res-18-005-highlights-of-calculus- spring-2010/highlights_of_calculus/) just to get an overview of what calculus really is since I assume your university will throw you into an applied single variable class first year. MIT Open Courseware has their calculus (18.01/18.02) course lectures up if you want to watch them too to get an idea of what you'll run into.

"Elements of Mathematics: From Euclid to Gödel" gives quite a good explanation of Mathematics as a whole, like why we learn elementary math the way we do and how it applies to more advanced concepts, explains Rings/Fields and has a really good introduction to Logic. I wish this book existed 5 years ago when I started [http://press.princeton.edu/titles/10697.html](http://press.princeton.edu/titles/10697.html)

"An Introduction to Mathematical Reasoning" by Eccles is short and excellent. You can also download the lecture notes here from CMU's course on proofs [http://math.cmu.edu/~svasey/concepts- summer-1-2014/](http://math.cmu.edu/~svasey/concepts-summer-1-2014/) and try some of the homework if you want but you probably won't see any of this until second year judging by most university calendars and recommended program course list I've seen.

CLRS [https://en.wikipedia.org/wiki/Introduction_to_Algorithms](https://en.wikipedia.org/wiki/Introduction_to_Algorithms) which has a great first chapter "Foundations" that compliments Knuth's 'Mathematical Preliminaries' chapter in TAOCP vol 1. Knuth's book you can really drill yourself in these concepts though with the many, many exercises writing proofs. The skills I learned doing these exercises paid in full years later when I started more advanced math and even at work.

<comment><USER12> Thanks for the info. Do you think I will be able to use the Elements of Mathematics to kind of build a "Tech Tree" of math? One of the hardest things for me to find so far is what should be my order of acquisition for math. I did find this:

[http://forums.xkcd.com/download/file.php?id=29015&sid=060c11...](http://forums.xkcd.com/download/file.php?id=29015&sid=060c117ded1ee4db51154ce87f0f6aa7&mode=view)

But I have no others to go on to compare.

<comment><USER14> This is a common complaint with a simple solution.

Just look at the curricula for various undergrad math programs at some number of decent universities. They have a set of required courses and the course descriptions usually list the prerequisites, and sometimes this is even accompanied with a diagram of the DAG as a flowchart.

For any given course, there's usually a canonical text or set of roughly equivalent in quality texts.

You can do the same thing for basically any area of study that can be found as an undergrad major at most universities.

</comment></comment></comment></comment><comment><USER15> Matrix multiplication is a must-have for any graphics programming and knowledge of them is very useful for learning neural networks.

And on the more esoteric side of things, in Quantum Computing every logic gate is actually a Matrix Multiplication

</comment><comment><USER16> Category theory!

It's cool to learn recognize how simpler math concepts apply to computing. Ie, associativity allows for map/reduce

</comment><comment><USER17> Set theory is useful, as well as category theory (although I never formally studied category theory myself...maybe eventually I will).

Basic logic is also important - understanding symbolic logic, and methods of proof (direct inference, proof by contradiction, induction, etc.) also prove important.

I have had to use basic trigonometry in the past as well, and linear algebra (for CSS rotations/translations driven by JS).

Algorithmic number theory, closely related to algebraic number theory, drives cryptography.

Harmonic analysis drives audio.

Algebraic geometry powers facial recognition software.

The list goes far deeper, but I have been away from the math world for 6 years & have forgotten much.

</comment><comment><USER18> Lots of areas are important. Every job I have worked has had a specific math specializations that were important. Reed-Solomon codes are used in storage and communication systems. They make use of abstract algebra (finite/Galois fields). Linear systems theory is essential for signal processing and control systems. Quaternions are important in aerospace and graphics.

<comment><USER19> About 40 years ago the company I was working for bought a big videotape recorder, and procured a custom controller for it to use it as a large random access storage device. The controller used a large Reed-Solomon code to detect and correct fairly large multi-bit errors. It worked quite well, storing images for Boeing, Lockheed, and McDonnel-Douglas aircraft maintenance manuals.

</comment></comment><comment><USER20> It's a bit strange that nobody mentioned Boolean algebra: [https://en.wikipedia.org/wiki/Boolean_algebra](https://en.wikipedia.org/wiki/Boolean_algebra)

<comment><USER21> Could you perhaps be a little more specific? Sure, we use OR, AND, and even XOR to deal with conditionals that map to T and F, but this seems like kind of a surface level use of booleans. When do we invoke the algebraic properties of the structure when coding?

<comment><USER22> De Morgan's laws! I am sure people use it routinely to simplify complicated boolean expressions while writing code or mentally simplify complicated boolean expressions while reading code.

<comment><USER23> And then you can probably reduce it with a Karnaugh map. It's pretty neat.

</comment></comment></comment></comment><comment><USER24> Lambda Calculus since it's a computer science field of study that makes math, in my opinion, useful for most situations in our field.

Math isn't majorly needed and you can learn what you need on the fly. For instance, if you want to get into game development you need to understand some fairly complex math concepts but nothing is stopping you from attacking the problem and either a) working around it with your understanding of the computing devices you are using or b) by learning what you need on the fly.

If you want to practice in a field that operates on computers, don't learn another field. That's like saying "what kind of philosophy most correctly correlates to learning about horticulture?" Just start to learn horticulture and as you need philosophy it will be tied in.

<comment><USER25> >Math isn't majorly needed and you can learn what you need on the fly.

I really, really hope that whatever you are doing does not involve cryptography.

<comment><USER24> Cryptography isn't a computer science field. It is an extension of math. It's the exception to the rule, not the rule itself. Cryptography as a field of study has existed long, long before computer science was a twinkle in anyone's eyes. Modern day cryptography only centers around computer science in the practice of implementation.

<comment><USER26> Getting crypto right is not only about having a strong encryption algorithm. I'd say that what makes crypto hard is that it requires a lot of knowledge on both math and computers, but it might be considered a not-only CS field as the math requirement is higher than usual on CS.

<comment><USER24> As I said, crypto is not CS but CS can be used to implement cryptography.

Crypto is no more CS then it is EE. You can implement cryptographic elements in hardware but you don't see the math people setting up shop in the EE labs at a college so I don't know why you see them setting up shop in computer labs.

</comment></comment></comment></comment></comment><comment><USER27> Type theory. The Curry-Howard-Lambek correspondence shows that type theory, logic, and category theory are equivalent. Even ideas such as set theory can be grounded in type theory (due to the univalence axiom), as type theory can be used as a foundation (via homotopy type theory) for all of mathematics.

There are lots of practical uses. For example, the billion dollar mistake [1] is painfully obvious when viewed through the lens of type theory.

Software such as Coq can be used to write verified (provably correct) software and can be used by mathematicians for proving theorems.

[1] [http://lambda-the-ultimate.org/node/3186](http://lambda-the- ultimate.org/node/3186)

</comment><comment><USER28> It really depends on your domain. Knowing more math is never a bad thing. It provides you tools for you to model and solve problems. That said, two areas that I felt most broadened my horizons are probability and linear algebra. They are pretty ubiquitous topics that come up regularly in more sophisticated and exotic algorithms.

</comment><comment><USER29> Someone asked this a few months ago and the book that was referred was Concrete Mathematics by Knuth ([https://www.amazon.com/Concrete-Mathematics- Foundation-Compu...](https://www.amazon.com/Concrete-Mathematics-Foundation- Computer-Science/dp/0201558025)) which I have since purchased and have enjoyed re-learning from college. Highly recommended, and should cover all you need to know. Very approachable text.

</comment><comment><USER30> The book "Concrete Math" ([https://en.wikipedia.org/wiki/Concrete_Mathematics](https://en.wikipedia.org/wiki/Concrete_Mathematics)) was written as a book-sized expansion of the Mathematical Preliminaries chapter of TAOCP ... so if you want to have a base of knowledge to help you analyze algorithms, it would appear this is a good place to start. I'm working my way through it now.

</comment><comment><USER31> Formal languages[0]. Well, if you want to learn about compilers and programming languages.

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

</comment><comment><USER32> Something I haven't seen anyone mention yet: the part of discrete math where proofs, particular proofs by induction.

It is a huge help to be able to think in terms of recursive algorithms in many applications, and proofs by induction both give you the tools for thinking this way and the framework for demonstrating that recursive algorithms are correct.

</comment><comment><USER33> Maybe this is off topic (but in the spirit of the question), but: High (graduate) level formal logic in a philosophy department.

Understanding (that there is) a relationship between computability theory and just basic _thought_ is one of the (if not _the_ ) most important takeaway from my (disastrous) college career.

Benson Mates [1] is the canonical (succinct) textbook.

[1] [https://www.amazon.com/Elementary-Logic-Benson- Mates/dp/0195...](https://www.amazon.com/Elementary-Logic-Benson- Mates/dp/019501491X)

</comment><comment><USER34> > Which areas of math are practical to programming/algorithms and why?

The basics: + - x /

Generally speaking, any vector or array can be thought of as a matrix (not that it is important).

Some problems and domains involved many operations on [multi dimensional] matrices. Where some math knowledge is advised.

Then there is "graph" both theory and practice. It's usually classified as math but has little to do with mathematics. I'd rather consider that as a unique separate domain with many practical and theoretical applications in other fields.

Forget about "crypto". Nothing of that is needed for programming. You'll use some algorithms but you'll never have to write or invent them.

In a theoretical sense. "Functional [programming]" is a branch of mathematics.

\----

Overall. Math is seriously overrated and has nothing to do with programming.

If you're into programming. Maths are simply not required to be a programmer. Don't worry about that.

There are some domains (maps=graph, 2D/3D=geometry, variousstuff=matrices) in where programming regularly require some maths. The maths part is always a very specific subset that can usually be learnt alone.

If you're into abstract mathematics. There are some theoretical stuff that can be worked on which are very far from practical programming.

</comment><comment><USER35> It is very likely that the most important new algorithms in the next few decades will involve probability theory.

</comment><comment><USER36> Mathematical logic for playing around with conditionals, Principle of counting for understanding complexity

</comment><comment><USER37> Mining Massive data sets kind of things. [http://mmds.org](http://mmds.org)

Algorithms that are giving not exact, but pretty good results on giant data sets.

</comment><comment><USER38> Programming is pretty broad, as others have observed - in part of my world, scene reconstruction for machine vision tends to drag in tensor calculus, but the average enterprise developer is safe with the basics - also, good libraries mean you have the ability to use functions and processes you need, as opposed to getting recurrent nightmares about numerical stability when you have to code the realization of a complex process yourself

</comment><comment><USER39> Proof and problem solving (It's not always taught in its own course). These assumptions about this code lead to these conclusions about its validity. If you can't prove your code works (to a human level of proof, not a machine's), why do you think it won't break? The skills of writing a simple proof (break it down so that each logical component is clear) is the same skill as writing clean and testable code.

</comment><comment><USER40> Category theory.

</comment><comment><USER41> Operations research is 50/50 compsci and maths. Lots of interesting hard problems that require good maths and compsci skills.

We employ some very talented people working on these sorts of problems for rail: [http://biarrirail.com](http://biarrirail.com)

</comment><comment><USER42> Linear algebra for computer graphics, computer games, machine learning, and engineering simulation.

</comment><comment><USER43> The CS departments in universities around the world have worked out good answers for this. Their thinking is summarized in the curricula they outline: which math courses they require as core subjects in the undergraduate CS degree program.

<comment><USER44> False. Decisions like this can be made at a higher level than the department. The mandatory courses in my programme were applied univariate calculus and an introduction to statistical modelling (with examples drawn from biology), imposed by the faculty of science on all science majors - all the while the CS professors were screaming for an introduction to logic and discrete maths to be added to the curriculum.

<comment><USER43> Well, yes; you have to look at the set difference between the CS math courses, and the common ones that all science students have to take.

That said, nobody in a STEM field should go without knowing at least univariate calculus. Without calculus, you can have only a poor intuition for situation involving rates of change, or little deltas being applied in one place resulting in other little deltas elsewhere. It's also necessary for stats, because you're dealing with oh, integrals such as the area under sections of a probability density function.

Part of computer science is numerical analysis, too. Once upon a time, numerical analysis constituted the bulk of "computer science".

CS undergrads arguably need some exposure to numerical analysis, and in such a course, the knowledge from other math courses provides support.

</comment></comment></comment><comment><USER45> I wish I had've learned linear algebra in college because it is essential to machine learning

</comment><comment><USER46> To quote Terminator 2: "Erm... all of them, I think."

</comment><comment><USER37> Tensor math seems to be very important

</comment><comment><USER47> Basic algebra for the substitution model and basic calculus for high order functions and the notion of a transformation in general.

Set theory is, probably, the most fundamental. Everything could be defined as a set or as a function.

Lambda calculus, obviously.

Some combinators. Basics of linear algebra.

No category theory and other bullshit is needed. Sets will do.

It is actually very important skill to avoid wasting time in disconnected from reality obscure academic bullshit, be it philosophy, physics or math. Do not follow other people's hallucinations. Have your own.)

As a rule of thumb - you need just enough math to understand The Wizards Lectures and SICP.

Again, the substitution model, sets (for notion of types and basic collecttions) and high order functions (the "domain and range" mantra) is enough.

For algorithms the notion of being bound by some function and orders of growth.

<comment><USER48> Not to start a math war, but why is set theory okay but category theory bullshit?

While they're both useful, I think category theory encompasses a bit more than set theory and it's only a little more abstract. I also like the more functional approach that a lot of category theory requires you to take; if you're used to imperative programming it's a pretty different and useful way to think about things and it's great for adding to your critical thinking/general problem solving skills.

<comment><USER47> The difference between the set theory and category theory is the same as between the philosophy of Spinoza and Hegel. The first is grounded in reality, while the second one is an abstract metaphysics bullshit. Developing some abstract vocabulary to describe spherical horses in vacuum contribute nothing to programming, which is a discipline of describing and modeling some aspects and processes of reality.

Knowing where to stop in a heuristic-guided search is the most difficult part. In my opinion one should stop after realizing that the subject becomes too abstract and too academic and cease to be a tool of clarification.

Let's say that it has something to do with the pragmatism of Ayn Rand, Quality of Robert Pirsig, and to the general scientific method of removing bullshit, dogmas and nonsense in order to let the truth standing.

<comment><USER49> Abstract algebra is certainly abstract, but it is far from "metaphysical bullshit". Abstract algebra is just the precise articulation of patterns that we see across different mathematical formalisms.

Now, the fact that it is so abstract does mean that your average programmer won't use it on a day to day basis. I'm certainly not going to argue that it is the most important math to understand. However, we are finding that there is uses for it. Not just in a "oh look, I can describe my code using abstract algebra, nifty" sort of way, but in a "knowing this was essential to finding the correct solution" sort of way.

For instance, the folks working on .NET's LINQ knew they were implementing monadic comprehensions; they just had the good taste to not use the word "monad".

Furthermore, it seems that having an understanding of abstract algebra is essential to making a distributed real-time analytics engine[0] [0][https://www.infoq.com/presentations/abstract-algebra- analyti...](https://www.infoq.com/presentations/abstract-algebra- analytics#mainLogin)

<comment><USER47> Oh, monads.. sooner or later they will be mentioned.) Actually it is a canonical example of abstraction for the sake of having an abstraction, which only increases confusion.

Monads make no sense in a non-lazy language.

[http://karma-engineering.com/lab/wiki/Monads2](http://karma- engineering.com/lab/wiki/Monads2)

<comment><USER49> > Oh, monads.. sooner or later they will be mentioned.

Yep, monads :).

> Actually it is a canonical example of abstraction for the sake of having an > abstraction, which only increases confusion.

I intentionally brought them up with a concrete, real-world example where they were useful.

> Monads make no sense in a non-lazy language.

A more accurate statement might be "monads make no sense in a non-lazy _evaluation context_ ". There are plenty of cases when working in an otherwise strict language you will compose a series of computations over a lazy data- source. For example: you want to process a potentially large series of rows coming from a database without blowing through RAM.

You can solve this problem on an ad-hoc basis, but as far as I understand it, the folks working on LINQ wanted to develop a declarative, readable, sql-like syntax for creating/composing such computations in a way that would work generically across data-sources. The question is, what is the pattern of operations and constraints that is common to all of the disparate data-sources that can be used in this way? The monadic functions + monadic laws is a precise (if arcane) description of those operations and constraints.

Using monads is not the only way to structure computation in the context of lazy evaluation, but it is one that is relatively well understood and worked well with the goal of being "sql-like" because SQL queries can be modeled as monadic computations.

</comment></comment></comment></comment></comment></comment><comment><USER22> At my previous job ( [https://www.rsa.com/](https://www.rsa.com/) ), where I worked for 7 years, I've often had to use various mathematical techniques to do my work as a software engineer.

Here are some concrete examples from my career.

* Combinatorics and probability theory - Entropy analysis of authentication schemes, algorithms for enumeration and analysis of related combinations and permutations, etc.

* Calculus and probability theory - Implementation of bloom filter for space-efficient indexing, tests and analysis of false-positive rates, etc.

* Statistics - Adaptive authentication schemes, performance measurements and predictions, network event correlation, etc.

* Discrete mathematics and algorithms - Tree traversals, graph search algorithms, etc. were useful in a variety of situations, e.g. data retrieval in tree-based distributed databases.

* Asymptotic analysis, Big O notation, etc. - Data deduplication in distributed databases.

* Modular arithmetic - I didn't really implement any cryptography algorithms; I only used them. But the understanding of modular arithmetic was essential to understanding some of the limitations of cryptographic algorithms based on modular arithmetic, e.g. why the message size cannot exceed the size of the modulus, as well as for software engineering tasks like decoding certificates found in network traffic.

* Formal language theory, DFAs, etc. - Parser generators for network event parsing, SQL engine development and related query optimizations, etc.

So these are 7 examples from 7 years. There may be more examples but I cannot remember them right now.

I have felt from my personal experience that although most of the work does not involve mathematics, once in a while an interesting problem comes up that can be solved efficiently with the knowledge of mathematics. It is not easy to predict when such a problem would come and it is not always easy to recognize whether the problem at hand can be solved or analyzed efficiently by known mathematical techniques. So it is good to have someone in the team or be the person who has a good breadth of knowledge in mathematics, so that when such problems do come up, they are addressed efficiently. Fortunately for me, I love mathematics and there were people around me who also loved mathematics, so we got a lot of interesting work done.

</comment><comment><USER50> Surprised nobody has mentioned any/all of Alan Turing's work, it is the mathematics which caused the foundation of Computer Science. See Turing Completeness and Universal Turing Machines.

Graph Theory is important for understanding data structures, I would also stress that the math equivalence of idempotency and isomorphism. We use these concepts a LOT in our work - but admittedly, we're a database ( [http://gun.js.org/](http://gun.js.org/) ), which is a very different line of work than building consumer apps.

Other people already mentioned Big-O notation. Combinatorics, etc.

</comment><comment><USER51> Better question: what areas aren't?

<comment><USER52> Good question... Calculus? Of course it has a long history with computing, but I would say that probably less than 10% of programmers outside scientific fields use any calculus. There is calculus in machine learning but I think that counts as less than 10% of programmers, and it will probably become its own specialty separate from programming in the coming decades (to some extent it is already)

From what I know of topology, you use logic and algebra as tools to learn about it, just as you use logic and algebra in computing. But you probably wouldn't use topology to say anything about computing.

Number theory is relevant to crypto, but I would be hard pressed to say it is practical for programmers in general. You could probably have a pretty long and successful career in programming without knowing basic things like what a prime factorization is.

<comment><USER35> Topology is useful in robotics and control to define the set of achievable states in a system and their connectivity.

<comment><USER52> On further reflection, it does seem pretty hard to find a subfield of math which isn't relevant to SOME subfield of computing. I was going to say non- Euclidean geometry, but that's very relevant if you're doing mapping software.

But that's a different thing than saying that a particular subfield of math is "practical to programmers".

I would say that programmers need the foundations of logic, algebra, and probability, and a bit of calculus (less than I was taught). And THEN they can learn topology, number theory, non-Euclidean geometry or advanced calculus if they need to, for their specific domain. You never know what you're going to end up doing 10 years down the road.

And of course that seems to be what happens in a good undergrad CS education, so apparently people better than us have thought about it :) Indeed college is supposed to give you the ability to learn how to learn, when new things come up, as they always do in programming. Quantum computing is basically a ton of linear algebra as far as I can tell.</comment></comment></comment></comment>


TED Refuses to Post Talk of Venture Capitalist Saying Rich Don't Create Jobs - <AUTHOR> http://www.businessinsider.com/this-billionaire-venture-capitalist-gave-a-ted-talk-saying-rich-people-dont-create-jobs--and-ted-is-refusing-to-post-it-2012-5#ixzz1v4NvmZV2

<comment><USER2> Discussion from couple hours ago: <http://news.ycombinator.com/item?id=3983598> (points to nationaljournal.com instead of businessinsider)

</comment><comment><AUTHOR> Transcript via Reddit:

[http://www.reddit.com/r/politics/comments/tqkj3/billionaire_...](http://www.reddit.com/r/politics/comments/tqkj3/billionaire_venture_capitalist_gave_a_ted_talk/c4p03eg)</comment>


Racial discrepancies in police shootings - <AUTHOR> http://obsessionwithregression.blogspot.com/2016/01/racial-discrepancies-in-police-shootings.html <comment><USER2> > To be clear: most people shot by police are armed and are attacking.

Most police reports say the victim is attacking, but they've been caught lying time after time (usually with no repercussions). Talking about all these statistics to even one significant digit seems suspect.

</comment><comment><USER3> These don't seem to be controlling their numbers for actual proportion. They're comparing direct %s without considering the higher proportion of white Americans. If there were no bias then the %s shown should match the relative population sizes.

<comment><AUTHOR> The point is that black + Hispanic Americans are more likely to be unarmed when shot. That has nothing to do with the proportion of Americans who are white.</comment></comment>


Tor is dead - <AUTHOR> http://translate.google.com/translate?sl=auto&tl=en&js=n&prev=_t&hl=en&ie=UTF-8&u=http%3A%2F%2Fblog.fefe.de%2F%3Fts%3Daf0134f5&act=url

<comment><AUTHOR> My take on improving the Google translation:

 _Because the Tor hidden services story is just making the rounds: Tor is dead. Tor is based on the assumption that the opponent is not able to monitor the entire Internet. Then, so the assumption, one can confuse the opponent by passing traffic through a series of servers. To make the opponent unable to follow it, at least one of these servers must be located in a country where the internet is not totally surveilled.

This assumption is, in my opinion, careless up to reckless. That was fairly obvious for a while. But as always: hope is the last to die. Now, in my opinion, the time has come to officially declare this hope dead.

The only imaginable way to get anonymity on the internet is in non-real-time services. But as soon as there is a predictable temporal correlation between the different versions of the routed traffic, it is traceable to a total surveillance system such as the NSA. You would have to ensure that the forwarded traffic correlates neither in time nor in size. Or you would need continuous cover traffic, indistinguishable from the forwarded messages. This, of course, is idea of Tor, that all the other Tor users provide cover traffic for me. Using Tor one can deceive admins of web forums, stalkers and the police, but you cannot hide from the NSA this way.

By the way: I just read the definition of totalitarianism. Can any expert please explain to me how to interpret the literature in such a way that the U.S. does not fall under this definition?_

<comment><USER2> I do not know if there's a word for that (imperialism doesn't seem quite right), but the US are _totalitarian_ in regards to other countries, and they've been so for a long time. Now some of the tricks learned from speaking softly and carrying a big stick are being used domestically.

<comment><USER3> [http://en.wikipedia.org/wiki/Surveillance_state](http://en.wikipedia.org/wiki/Surveillance_state)

</comment></comment></comment><comment><USER4> Such an overly dramatic post. If the NSA can accurately monitor the bandwidth of every device connected to Tor, then why did they go to the trouble of injecting exploit into Freedom Hosting sites? And even if they do have that capability, a protocol that masks bandwidth usage through junk data would be an expensive, but effective counter to it.

</comment><comment><USER3> Wouldn't users navigating to .onion sites within TOR be free from a GPA (global passive adversary)?

Couldn't the TOR protocol model Perfect Dark?[1] Which uses a Mix Network.[2]

[1] [http://en.wikipedia.org/wiki/Perfect_Dark_(P2P)](http://en.wikipedia.org/wiki/Perfect_Dark_\(P2P\))

[2] [http://en.wikipedia.org/wiki/Mix_network](http://en.wikipedia.org/wiki/Mix_network)

<comment><USER5> 1) I don't see why. It's end to end encrypted, but still who visits what is transparent.

2) Perfect Dark is not a general purpose net, but rather a file distribution mechanism, for known hashes. Not for message exchange between peers like tor or i2p.

Tor is a mix network aswell. But a low latency mix. The adversary is a way stronger than assumed, it does not seem to be safe anymore. High latency mixes (like remailers) are unaffected.

Also, Perfect Dark is 1) broken 2) closed source, so not trustworthy to begin with.

</comment></comment><comment><USER6> Please. It's far more likely an alternative related to Tor will arise than a complete collapse of the undernet.

</comment><comment><USER7> Well, back to carrier pigeons...

<comment><USER8> Oddly, it may actually be several orders of magnitude faster for large files :

[http://en.wikipedia.org/wiki/IP_over_Avian_Carriers](http://en.wikipedia.org/wiki/IP_over_Avian_Carriers)

[http://hothardware.com/News/Homing-Pigeon-Faster-Than- Intern...](http://hothardware.com/News/Homing-Pigeon-Faster-Than-Internet-in- Data-Transfer/)</comment></comment>


Why Windows 8 is Fundamentally Flawed - <AUTHOR> http://inqk.net/weblog/2011/719

<comment><USER2> I really don't buy the enterprise v consumer argument when large corporations are buying iPhones and iPads en masse. The iPhone showed that bussinesses are consumers too, so why persist this out-dated dichotomy?

<comment><USER3> If you want to make a split, it would probably be touch and keyboard/mouse.</comment></comment>