Racket v5.3.2 - <AUTHOR> http://blog.racket-lang.org/2013/01/racket-v532.html <comment><USER2> Am I the only one who forgets Racket? Everytime I visit the site and browse through the documentation, I find myself wondering why I'm not using the language. Years ago I used Chicken Scheme but this seems more robust and the standard library is adequate. Who's using this in production? What's your experience?

<comment><USER3> Well, I haven't used it _in production_ , but I used it for a research project last semester. It was actually pretty good, and there are definitely some very nice features. The standard library was pretty good except it missed some functional features I wanted like immutable vectors (or even just functional operations on mutable vectors).

The language is extremely flexible, and you can take advantage of this to write some really elegant and maintainable code. It's one of the more productive languages I've used--of the languages I've used extensively, it's better than JavaScript, Java or Python.

So I liked it quite a bit over all. However, it doesn't quite clear the threshold where I would use the language voluntarily. I thought it had lackluster support for functional programming, especially from what is supposed to be a functional language. This was evident in the library (e.g. the lack of immutable vectors and the like) and also in the way certain pretty fundamental structures (like ports) worked.

Also, for a dynamically typed language, I thought it had too many different types. It was too easy to get mixed up between bytestrings and strings, for example. It was also not obvious when you should use or expect nil vs #f. That said, the features for creating your own types (mostly structs) were very good --I found they were very lightweight but still flexible enough to be useful.

I am actually a big fan of the syntax. Not just the s-expressions (although, with paredit, they are pretty awesome) but also the reader macros. That said, I'm also rather partial to infix operators, which are obviously not present.

So over all, it's a great language. However, I would still choose Haskell or OCaml over it for virtually any project. The main exception would be projects very heavy on metaprogramming, where Racket really shines.

<comment><USER4> _However, I would still choose Haskell or OCaml over it for virtually any project_

This might be off-topic, but I've been thinking about learning one of these two. Can you give me any advice on which to learn first (or which to use for what)?

<comment><USER3> Well, I'm a little biased, but I would learn Haskell. It's the one I learned first--in fact, I learned it during my very first college CS course. (The course, coincidentally, was in Scheme.) If I managed it as a freshman, it can't be all that difficult :P.

Haskell has a couple of very good freely available books: _Learn You a Haskell_ [1] and _Real World Haskell_ [2]. I also found _Write Yourself a Scheme in 48 Hours_ [3] very helpful. When I was learning OCaml, I could not find any terribly good resources. That said, it wasn't much of an issue, so I didn't look too hard--learning OCaml after knowing Haskell is very easy. There _is_ going to be a _Real World OCaml_ book at some point, but I think it's still a work in progress.

[1]: <http://learnyouahaskell.com/>

[2]: <http://book.realworldhaskell.org/>

[3]: [http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_H...](http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours)

I also think Haskell is good because it's more of a departure from languages you're probably used to. You can't sink back into your old habits, because everything is done completely differently. Of course, some people find it helpful to have less of a departure from what they're used to, so perhaps you might prefer OCaml because it's less different from normal languages.

I use Haskell for my own projects (and, this semester, for research), and I used OCaml for an internship this summer. I think that for most tasks, they're roughly equally suited. If you want to do multicore concurrent or parallel code, I think Haskell has the edge, but I have not really done much of that in either language.

OCaml has a very good JavaScript compiler called js_of_ocaml[4]. While Haskell does have some options for JavaScript as well like Fay[5] or UHC[6], I don't think it's quite as nice. I used js_of_ocaml during my internship and was very happy with it. So for web stuff, I'd probably go for OCaml. Both OCaml and Haskell have good backend web frameworks, but I haven't really used any of them.

[4]: <http://ocsigen.org/js_of_ocaml/>

[5]: <http://fay-lang.org/>

[6]: <http://www.cs.uu.nl/wiki/UHC>

If you happen to be on windows, installing OCaml is a pain. Haskell, with the Haskell Platform[7] should be much easier, but I haven't tried it myself.

[7]: <http://www.haskell.org/platform/>

OCaml has a really good Emacs mode called typerex[8]. Haskell has some alternatives like ghc-mod[9] and scion[10], but I've never been able to get them to work. Admittedly, typerex was not easy to install either.

[8]: <http://typerex.org/>

[9]: <http://www.mew.org/~kazu/proj/ghc-mod/en/>

[10]: <https://github.com/nominolo/scion>

Ultimately, you wouldn't go wrong with either one. Moreover, the core ideas are fairly transferable between the two: you'll find that learning OCaml after Haskell or Haskell after OCaml is relatively easy. I would lean towards Haskell, but it's not a big deal.

I just realized that I've written a whole bunch of paragraphs to say very little: either language is a great choice and I just happen to like Haskell more. Hopefully this is not too much of a deluge of information :P.

<comment><USER5> For Windows developers I would advice to use F# instead.

Being a Microsoft language helps smuggle it into the work environment of the enterprise.

It has become my scripting language for Windows tasks.

<comment><USER6> OK, I'm curious now. Wikipedia says[1] the reference implementation is open- source and cross-platform, which is great, but I never hear of anyone talking about F# outside the Microsoft world.

The compiler has to be compiled from source[2] on Ubuntu, which seems to suggest hardly anyone is using it.

Would there be any compelling reason to use F# if you're _not_ working in a primarily Microsoft environment? What does the language itself offer over Ocaml or Haskell?

[1]: [https://en.wikipedia.org/wiki/F_Sharp_%28programming_languag...](https://en.wikipedia.org/wiki/F_Sharp_%28programming_language%29)

[2]: <https://fsxplat.codeplex.com/wikipage?title=FSharpLinux>

<comment><USER7> From what I understand F# works on mono and the F# MS team actually puts in effort to make sure it does. Though for whatever reason mono just isn't that good at running F# code. Maybe it is a weak GC or lack of ability to optimize the code patterns F# produces, I don't know. It is slower than F# on CLR.

Given that, library access and ability to thread are the two big things it is going to have over Ocaml. Cleaner syntax when compared to Ocaml too. Haskell, not much.

<comment><USER5> The GC was not that great, but the new S-Gen is quite comparable to the CLR one.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> [https://class.coursera.org/proglang-2012-001/wiki/view?page=...](https://class.coursera.org/proglang-2012-001/wiki/view?page=syllabus) is going to cover Racket (the first part, now in progress, uses ML).

Never having done anything non-trivial in a Lisp or Scheme, I'm looking forward to filling in a tiny bit of this huge gap in my knowledge. But like some other posters, I'll be surprised if I end up liking it better than Haskell.

</comment><comment><USER9> I am curious, is there someone with experience with Racket and Clojure? What are the advantages of Racket over Clojure?</comment>


Ask HN: What are the simplest ways to pay your engineers outside of US? - sahin-boydas I am looking for robust payment solution which has nearly no fees.
Transferwise - I am pulling my hair with transferwise. - Their bank of america integration is super buggy - They have weird limits. 5000 USD daily limit etc etc.
- Very unstable UI. I cannot count how many time I had to reenter receipt info. - Horrible non US base support
Bank of America 45 USD wire transfer. WTF.
Citibank 27 USD wire transfer
What are you guys using? <comment><AUTHOR> I have almost always received payments via bank wire transfer. While it costs $20-$50 (depending on which bank, exact figures may vary). If you are billing for $5000.00, that's 1%. If $10,000, then it's 0.5%.

For smaller amounts, PayPal was painless enough. Even though their % is relatively high, for small invoices the total fee is less than a bank wire transfer.

There are no no-fee options. Transferring money costs money. The quicker you come to terms with this, the easier you will sleep. It's a cost of doing business. Raise your fees to cover the transfer cost.

For people thinking BitCoin, please keep in mind that the price is volatile and this means that what you invoice is significantly different from what you will end up with in your currency. Also, it will be tough convincing most companies to send you payments via BitCoin.

</comment><comment><USER2> I set up a US bank account on a visit to the US that my employer pays into. I then use OzForex to transfer to my Australian savings account.

Remember, it's not just the wire transfer fee that you pay when you use a bank. You are always going to be charged for the actual exchange rate conversion too.

I believe Transferwise / OzForex are the lowest rates you can get.

</comment><comment><USER3> I used to use XE when I needed to transfer money from the US to my UK accounts. I never had any problems with it, but I only ever used it to transfer money between my own accounts and never to other peoples', so my experience might not apply to your situation.

<comment><AUTHOR> From what I recall, you need to wire money to XE, and then pay XE for another wire to the destination account. I did this once a long time ago. While the wire fees were on the low side, it is not a cheap way to transfer money.

XE does offer the advantage of doing the forex conversion from USD to your currency. However, I don't think the OP was asking about changing currency.

</comment></comment><comment><USER4> You might want to look at HSBC. Some accounts provide for free international wires. Last I researched, their business accounts allowed you to send free international wires. You had to be a brick & mortar business (the type that might sign up for a SBA loan).

[https://www.us.hsbc.com/1/2/home/personal-banking/global- ban...](https://www.us.hsbc.com/1/2/home/personal-banking/global- banking/global-transfers)

<comment> sahin-boydas this looks really cool.

</comment></comment><comment><USER5> [https://transferwise.com/](https://transferwise.com/)

I don't know what payers are using but as a payee, I'm pretty happy with transferwise.

Btw, 15-50 bucks is standard for wire transfers. Wire transfers are meant to be used for large amounts of money so those fees are usually considered "nominal".

When a paycheck for 10k comes in i really dont care that someone deducted 15 bucks. Its less than forex.

<comment><USER6> Whoa the receiver pays the fee? Seems like the sender should pay the fee. Same as mailing a check out, the sender should pay for the stamp.

<comment><USER5> The sender pays the fee. But if I had to pay the fee I wouldn't care.

Because seriously, 15 bucks?

<comment><USER6> Its the principle of the thing.

If my employee says I get $2000 per paycheck. I should get $2000 per paycheck. Not $2000 - $15 processing fee - $12 HR fee - $1 stamp fee - $7 tax filing fee...

<comment><USER5> when you're going to die, I'm sure your kids will appreciate all those pointless principles you wasted all that time on. ask my dad how well thats working out for him.

</comment></comment></comment></comment></comment><comment><USER7> Bitcoin? Depends on their country though for how hard that is to turn into their local currency.

<comment><USER8> That's terrible. I wouldn't accept getting paid in BTC.

How is the payee going to cash out? One needs to send BTC to an exchange, pray the rate will remain at least equal to the day he received payment and accept a substantial cut for the bank transfer.

By all means, it's a bad idea.</comment></comment>


Your body wasn't built to last: a lesson from human mortality rates - <AUTHOR> http://gravityandlevity.wordpress.com/2009/07/08/your-body-wasnt-built-to-last-a-lesson-from-human-mortality-rates/ <comment><USER2> The body can be considered as a system of many redundant components, with aging as the result of progressive unrepaired damage to those components. This is a model that works very well. For further reading, you might look at the application of reliability theory to aging:

[http://www.fightaging.org/archives/2010/05/applying- reliabil...](http://www.fightaging.org/archives/2010/05/applying-reliability- theory-to-aging.php)

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

Once you start to think along the lines of damage and repair, you inevitably end up in the SENS camp. It's the logical place to be.

[http://www.fightaging.org/archives/2006/11/the-engineers- vie...](http://www.fightaging.org/archives/2006/11/the-engineers-viewpoint- treat-change-as-damage.php)

Bodies are complex systems and all complex systems can be prolonged in their period of prime operation by sufficiently diligent incremental repair. Developing a toolkit to do that for humans is the point of SENS the research program, with the point of SENS the advocacy program being to help people understand that the scientific community well understands in detail what needs repairing.

For more on the biochemistry of damage-that-causes-aging, explained for laypeople, you might look here:

<http://www.sens.org/sens-research/research-themes>

<comment><USER3> We need to "gamify" this research. Farmville carrot-growers could be solving humanity's greatest problem!

(I'm totally serious)

<comment><USER4> I'm a computational biochemistry student, and I don't think this is possible. We can gamify protein folding because this is a well-understood, well- characterized problem. What we don't have the slightest clue about is how to restore original cell state, eg. rid cells of aggregate intracellular waste, repair non-trivial DNA damage, restore the extracellular metabolome, etc.

I think we should stop funding/granting scholarships to liberal arts majors. Let them become STEM majors.

<comment><USER5> There are really intelligent people out there who could never pass a calculus class, much less thermodynamics. Do you want them in your program taking up all the time of the teacher, stopping those proficient in math from getting the education they deserve?

<comment><USER6> No there aren't; that's daft. What are you basing that on?

Sure, it might be less easy for some than others, and less motivating, but if they can learn A, they can learn B and vice versa.

<comment><USER5> I'm basing it on both my time as a math tutor for Pima Community College and on people I have known.

People like my mother who, if she can quantify the data she can effectively do algebra, but as soon as X and Y appear she shuts down. She cannot make the jump to the abstract thinking of math, and it curtailed her ability to go back to college. It didn't help that her math teacher in 9th grade told her that she would never be good at math, much like many women from poor backgrounds. (I have no study, only the experience in tutoring on how many women said that a teacher told them not to bother, and could never make it over that hump.) Now you say that it's merely psychological for them and that they could. I'm telling you that for as much work as some of these people I tutored put in, they had a mental block that they simply could not overcome, fighting their way to a C in college algebra so they could get to where they're going.

I can give as an example my boyfriend, who can speak and teach two languages better than most people here can in their native language, and is a promising Ph.D candidate in his program. He worked for a month straight (with my help) to raise his GRE math to a minimum score. His limit may be calculus, but certainly not higher math, and not upper level sciences. Yet I have seen this man wake up, read, write, sleep, and repeat for weeks straight.

He's a gifted writer and academic, but even if he could muddle through (say...) managed information systems, he'd never be more than mediocre because his brain simply does not work that way. (He still asks for help with his Mac.) Square peg, round hole.

It doesn't benefit those who have a passion for the sciences to put him and dozens of others in the same class, wearing down the professor because they struggle to grasp concepts that future scientists understood in fifth grade.

<comment><USER6> 1\. I worked for a few years in the remedial math centre for mature students in my university, and one of my best friends did his doctorate in teaching mature students mathematics. Based on my experience, had I taken your attitude then I would have just not shown up for work.

2\. I disagree that it doesn't benefit the stronger students. It was awfully hard for me to learn to teach mathematics, because I had never really had to learn it in a step by step way myself. However, when I did learn to teach an area, my understanding was orders of magnitude higher because I had the understanding of somebody gifted in the area but the method and the attention to detail of somebody who has learned it the hard way. If you mix classes with high and low skilled students, you just have to make sure you rely on the high skilled students as a teaching resource.

<comment><USER5> 1\. Just because I didn't believe they could do differential equations doesn't mean that I didn't believe they could learn college-leve. algebra with some coaching. I had more faith in them than they did of themselves, in many cases.

2\. There have been many studies that have tried what you say. The problem is that the class must go slower to accommodate the slower students. Engineering degrees already have so much packed into them that they often can't take classes of interest -- are we going to make it even longer?

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> You can find the original, less ad-encrusted version of this article at [http://gravityandlevity.wordpress.com/2009/07/08/your- body-w...](http://gravityandlevity.wordpress.com/2009/07/08/your-body-wasnt- built-to-last-a-lesson-from-human-mortality-rates/).

</comment><comment><USER8> > Anyone who paid attention during introductory statistics will recognize that > your probability of survival to age t would follow a Poisson distribution, > which means exponential decay (and not super-exponential decay).

Small correction: survival to time t under the lightning bolt scenario follows an exponential distribution. A Poisson distribution, besides for being discrete, has factorial decay, not exponential decay.

</comment><comment><USER9> The longevity of the body is one thing, it is debatable whether or not it can be extended by a lot or a little (or at perhaps until the MTBF of a freak accident).

What I rarely see discussion of, however, are philosophical and psychological implications of "living indefinitely".

Even if the body is says relatively youthful, what about diseases of the mind? In other words, I am saying that in the same way that increasing life-span has uncovered a plethora of diseases that were previously unknown like cancer, is it possible that further increasing life span may uncover conditions (perhaps purely psychological) that we can't even imagine. Will people _want_ to live 100's of years?

<comment><USER10> To the extent we find bugs that cause the brain to stop working properly over time, we'll need to find and fix those. That falls under "problems we'd love to have".

As for the question of whether people want to live for hundreds of years: if you don't want to live longer, you can easily stop. A surprisingly large number of people seem to rationalize the lack of immortality by claiming people won't want to live forever, which strikes me as sour grapes. Given an actual solution that allows people to live forever, the question becomes "do you want to die?", and I seriously doubt many people will say "yes".

(Also, if you think of immortality as "hundreds of years", I think you need to recalibrate your scale. I'd like a lifetime measured on a cosmological time scale, and I have no problem conceiving of ways to spend that time.)

<comment><USER11> As someone who does have difficulty conceiving of ways to spend a cosmological-scale lifespan, how might you spend it?

<comment><USER10> Mostly, I'd never stop learning, and I'd apply everything I learned.

Consider the sum total of human knowledge today. Consider how small a fraction of it any one person knows.

Within the next month, I'll have completed a PhD in computer science. It took me years to learn the fundamentals of _one_ field, plus years more to get practical experience by tinkering in numerous areas, plus years more to become an expert in one narrow area (scalable concurrent data structures) and advance the state of the art in that area. Take a look at <http://matt.might.net/articles/phd-school-in-pictures/> to get a clearer picture of scale; now consider what a few million or billion lifetimes could produce, between research, practical work, exploration, and just good old- fashioned tinkering.

How many of those narrow areas exist in one field alone? How many more fields exist to explore? How many more will exist by that point? What happens when someone with expert-level knowledge in a pile of those fields starts applying them to each other? And most importantly, do you really think it ever stops?

Apart from that, I'd have plenty of time between learning everything and creating new things to enjoy the enormous amount of available entertainment created over the aeons, in all its various forms.

I think the future sounds awesome, and I want to see _all_ of it. :)

</comment></comment></comment></comment><comment><USER12> My dad used to joke that if he made it to 80 he was going to take up smoking again. Alas, he only made it to 79.

<comment><USER13> A friend used to say that most things he was warned about started with "Men over the age of 35..." and so once he hit 35 he would stop smoking, drinking, eating horribly etc. We would usually discuss such things on a smokey patio with beers.

He's just shy of 35 now, so we'll see ;) Sounds like your dad had a good sense of humor :)

</comment></comment><comment><USER14> The chance-of-death plots should be logarithmic, so we can tell if this exponential is really a good fit. On linear plots, it's hard to distinguish exponential decays from 1/x^n decays.

</comment><comment><USER15> That graph showing survival probability as near 1 for age 0 can't be correct, since mortality is significantly higher in birth and immediately after, then drops for a long time, then shoots up again in old age. This is at least true in westernized countries that have medical care available.

<comment><USER16> Obviously, this is a simplification. Infants die for other reasons that you can think of to be different from the reasons for which old people die (e.g. cancer), and these reasons are being factored out of the graph.

<comment><USER17> I thought the point of the graph was that it didn't matter how or why the people died though? Isn't that part of why it's so surprising?

<comment><USER18> The point of the graph is that it doesn't matter how or why people die, after a certain age. This is clear from context, though not explicitly stated.

</comment></comment></comment></comment><comment><USER19> Evolutionary theory would also suggest that we have some mechanism to ensure our deaths. Longer lifespans cause fewer generations per time period, resulting in less adaptability as a species.

<comment><USER20> Why would evolution need that? If grandpa is badly adapted, he'll starve/get eaten/etc; no need for a built-in kill switch. In fact, if there were a kill switch getting rid of it would be highly adaptive, if only because you could be around to defend your great-grandchildren.

(Of course, we do die. But the explanation looks more like "growing and reproducing quicker beats longevity" than like "planned obsolescence".)

<comment><USER21> Grandpa wears out, yet competes for resources. Kill him off, more for the healthy youngsters. Certainly its selective, at the family/community level, choosing to keep more-efficient members.

I also think, making grandparents less mobile means they are around the campfire teaching the youngsters. It makes sense it would be selected for in a race of communicators.

<comment><USER22> Mice and rabbits also age.

<comment><USER21> Sure. But rats quickly die when they become less mobile or arthritic.

Humans can live for decades beyond their most-productive years. Their has to be a Darwinist reason for this.

<comment><USER22> The Darwinist reasoning behind rates of aging goes something like this. A adult mouse has a high chance of being killed in a random year (above 20%) a Parrot has a low chance (below 3%). Maintaining a body into old age has a cost that reduces reproductive capability in a given year and a benefit of increasing the number of years of reproductive capability. There are also minimums of capability in the wild where vision and mobility link to survival rates such that there are thresholds below which rates of survival dramatically decrease.

Thus, the number of healthy years in the wild relates to both the probability of an external death AND internal heath issues. For a mouse this suggests a minimum of internal maintenance for maximum reproduction where a parrot can make significant trade-offs in reproduction in order to live 10x as long and have more long term reproductive chances.

 _However_ , that's in the natural setting. A pet (mouse, cat, parrot) can live slightly longer in captivity by surviving pat the point where it can find food for it's self. If you look a human vision decline people are significantly less capable of surviving on their own before they lose reproductive capability. And in that "unnatural" old age it's not uncommon for various species to have increasing reproductive issues.

</comment></comment></comment></comment></comment></comment><comment><USER23> One of the sharpest changes (I guess a "point of inflection" it looks like?) seems to be at about 65, or the most common retirement age (here in the states at least). I wonder if there's a connection?

In hunter-gatherer societies, elders older than 60 have been observed as 1) looking healthy and 2) still being able to hunt, fish, trap, build, and pretty much everything else along with their younger counterparts. Perhaps at a slower pace, but they're generally far more fit than the modern world's old.

 _Pampered bodies grow sluggish through sloth, movement and their own weight exhausts them._ \- Seneca

<comment><USER24> _In hunter-gatherer societies, elders older than 60 have been observed as 1) looking healthy and 2) still being able to hunt, fish, trap, build, and pretty much everything else along with their younger counterparts. Perhaps at a slower pace, but they're generally far more fit than the modern world's old._

Survivorship bias.

</comment></comment><comment><USER25> Silly question: If I'm understanding this correctly, doesn't this essentially mean that statistically it's possible to live forever? Or is there a point when you statistically have 100% probability of dying?

<comment><USER26> Sort of, depending on the model. For most models, if you take your "probability of dying in year X", and sum that over all the years from 0 to infinity, you'll get a 100% probability of dying at some point. The interesting thing is that there's no individual year with a 100% probability of dying - the certainty of death is just because "forever" is a _really long time_.

There are hypothetical distributions, though, where the sum total of probabilities is less than 100% - where some proportion of the population will, statistically, never die.

Of course this brings us to the _real_ issue, which is that what the model says doesn't really matter - if the model disagrees with reality in extreme cases, reality wins.

<comment><USER27> On high ends it definitely is. It predicts no one could have ever lived past 116, but clearly some have:

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

</comment></comment></comment><comment><USER28> Fun and interesting read. Personally though I think by only examining mortality rates then half the story has been missed. ie. life expectancy.

While intuitively we can see that the probability of dying in any given year increases with the more years you live, perhaps slightly more counter intuitively the longer you live then the longer your life expectancy is (rolling average obviously).

Would love to see the two put together somehow and charted.

</comment><comment><USER29> Are there any other scenarios that lead to Gompertz Law like distribution?</comment>


Zynga to buy Peak Games for $1.8B - <AUTHOR> https://www.businessinsider.com/zynga-acquires-peak-gaming-1-8-billion-2020-6 <comment><USER2> I'm not familiar with casual gaming. How is Zynga doing these days?

I remember them from the Farmville days when Facebook billed itself as an "application platform" and Farmville was the poster child of that.

Facebook hasn't talked about "application platform" for years now and I don't know anyone still playing games on Facebook. So how is Zynga still a thing?

<comment><USER3> They transitioned their games to mobile.

Ignoring today's jump due to the acquisition news, their stock has been pretty strong over the last year. I think they moved past the world domination phase of the company to be a solid game studio.

</comment></comment><comment><USER4> "Both companies share a common vision — to bring people together through games."

sure

<comment><USER5> Well, it doesn't say _where_ they bring people - in a dark alley shooting addictive substances up their veins.

</comment></comment><comment><USER6> Wow completely forgot that zynga exists. They have that kind of money still?

<comment><USER7> Last year they did $1.2 billion and have been profitable the last couple of years.

</comment></comment><comment><USER8> In other news, Zynga apparently has $1.8B to blow.

<comment><USER3> No, only $900M

> Zynga stated that the deal comprised $900 million in cash, and $900 million > in Zynga stock

<comment><USER8> That's still $800m more than I figured Zynga had at this point.

</comment></comment></comment><comment><USER9> > US casual gaming giant Zynga is buying Turkish mobile game developer Peak > for $1.8 billion, the company confirmed Monday.

"casual gaming giant"—I did actually lol at that description of Zynga.

</comment><comment><USER10> I suggest everyone downloads words with friends 2, video ads between every move. I would avoid their brand like the plague.

<comment><USER11> Don't they offer to remove ads or something like that?

</comment></comment><comment><USER12> I thought Zynga already bought Peak Games. Was that something else?

<comment><USER13> I think it was kind of some department of it. not all of it.</comment></comment>


LinkedIn AI Interview Questions – Acing the AI Interview - <AUTHOR> https://medium.com/acing-ai/linkedin-ai-interview-questions-acing-the-ai-interview-41028c4b0704 <comment><AUTHOR> Happy to take suggestions if any.</comment>


Ask HN: How to "fire" an app co-developer? - <AUTHOR>

I just launched a technical e-book, and I have been in talks for a month with a developer in the space to put together an app.  Recently, I was approached by another - better - app developer in the field, who has a more powerful platform, better design prowess, and better rapport with me.
I haven't done much work with the first developer, but he knows the second - I don't want to cause a stink, but I know the second developer will help me make a much better product. Any advice for how to do this? <comment><USER2> Pay the first developer fairly. Then move on

</comment><comment><USER3> Uh, you quit?</comment>


How I Lost to the World Chess Champion in 32 Moves - <AUTHOR> http://wexnotes.com/how-i-lost-to-the-world-chess-champion-in-32-moves/

<comment><USER2> _" I had an even position on move 19"_

I'm not a good player, but I would not call that even. Black's bishops and one of his rooks are tied up, the other rook is locked on row 8 behind his own pieces, and you do not need to be Carlsen to spot white's "knight takes g5" in move 19.</comment>


VC: "Saying No Sucks…" - <AUTHOR> http://www.highway12ventures.com/2010/02/01/saying-no-sucks/

<comment><USER2> _This doesn't mean that these aren't great companies or worthy investments, just that they aren't right for us right now._

This is the very example of dishonesty he talks about. A company is either going to make them a ton of money, or it is not. If a VC thinks it is going to make them a ton of money, there is no such thing as "isn't right for us right now". If Larry and Sergei came to a VC firm that only invests in space exploration and offered to take their money in exchange for stock, they'd do it in a heartbeat. If a VC thinks it isn't going to make them a ton of money, it can be the most right company in the world, and they still won't invest. The hardest part of being honest is being honest with yourself.

<comment><USER3> Just because you don't understand something doesn't mean they're lying.

If you are presented with 500 investment opportunities a year, and only have enough capital to fund 5 of them, you are going to pass on a lot of +PV opportunities.

Maybe they appear positive to you, but don't cross your hurdle rate. Maybe they're overly correlated with other existing investments, so despite being positive, they're not ideal for your portfolio. Maybe you want to avoid certain risks because you already have that risk in your portfolio. Maybe you're running a double or triple bottom line company, and it works financially, but is inferior to another investment in another way. Maybe it has more vol than you can fade. Maybe it's fantastic, but you have another investment that's _really_ fantastic.

There are almost countless reasons that a company could be great and a worthy investment, without being right for a particular investor at that moment.

<comment><USER2> Look, I agree with you in theory, but in practice these reasons are an exception rather than the rule. 99 times out of 100 that's _not_ why a company gets rejected (and in the one case when it does get rejected for that reason and that reason only, the founders know it).

VC business is too binary and too cutthroat for these things to matter in any other than exceptionally odd cases. Since nine out of ten investments fail, they need to fund companies that have a chance of giving a 10x return _just to break even_. Considering that the limited partners could put their money into treasuries instead, they probably need to double the fund's worth to justify a high risk investment. That means that other than breaking even, they need a company that has absolutely _massive_ returns. A google, basically.

There is no "ok", "good", "fantastic" and "really fantastic". It's either a google or they're out of businesses. So if a company like that comes along, unless it's a _really_ edge case, all other reasons get swept under the rug. And if a company isn't a google, well then, it wasn't a good investment for a VC business model anyway.

<comment><USER3> Not every VC firm expects 90% failures.

As a very public counter example, Fred Wilson has stated that his lifetime failure rate is 20%. To get it that low, he most definitely had to pass a lot of profitable but high volatility opportunities.

Highway 12 Ventures has 20 companies listed in it's portfolio, and 5 of them are already successful exits. Their portfolio is not large enough to allow for very low success rates, and their past experience seems to re-confirm that they do not generally invest in super-high-risk activities.

Further, VCs are not interchangeable. They have different areas of expertise. This will lead to them investing in markets they understand, and often passing on opportunities in markets where they're less familiar, even if everything seems perfectly reasonable.

Accusing them of being dishonest for noting that they routinely pass on good investments is absurd. I'm certain that they do so on a _very_ regular basis.

</comment></comment></comment></comment><comment><USER4> A good chunk of the time, the "no" is because of things the investor cannot articulate.

The other problem with saying "no" is that you get rapidly trained not to give advice or further details, as there is a class of entrepreneur who will make the suggested changes, come right back, and ask for the money.

I've thought a lot, lately, about becoming a professional investor. This is the part that stops me.</comment>


Object-Oriented Programming – The Trillion Dollar Disaster - <AUTHOR> https://medium.com/better-programming/object-oriented-programming-the-trillion-dollar-disaster-92a4b666c7c7 <comment><USER2> I think it helps to know of ways to model problems beyond "arrangements of objects in patterns" which is the thing that CS education has dropped the ball on the most: you get the algorithms, you get some exposure to practical systems, but then there's no checklist of approaches to try, no nmemonics to learn. Just a faint hope that slathering objects on a problem does something helpful, propped up in turn by the large body of articles and blogposts that advertise silver bullet patterns(lately dominated by "ECS", which isn't really OOP specific but fits in the usual pattern of the hype cycle).

And that is in some ways related to the consumer nature of the programming stacks in use: If there isn't a named-and-documented "feature" for it, and it's not in the hype cycle, it's a less legitimate, more hyptothetical technique.

But what are those other ways? Where's the starting place? My own WIP answer is:

* Data modelling techniques(beyond algorithmic complexity concerns: data lifecycles, persistence, schema design, and so forth)

* Formal models of finite state(decision tables, statecharts, behavior trees, and so on)

* Constraint solver techniques and their many applications(type checking, physics steps, pathfinding, depedency checking, UI automation).

* Dataflow modelling, with static routes and bounded buffers.

* DSP techniques used to do analysis and filtering of digital events at scale.

There's still an overarching tendency to let execution flow get out of hand, and our current trend for asynchronous concurrency is an antidote only in the sense that it motivates the existence of rigor by blowing up easily.

<comment><USER3> Like the thought. And list.

</comment></comment><comment><USER4> That's an interesting topic, but I think the article fails to address it and instead resorts to enumerating the long list of well known cliches. I'd be more interested to learn about the evolution of complexity in software projects in general, what role OOP plays there and functional programming is different.

<comment><USER5> Somewhat obligatory:

[https://m.youtube.com/watch?v=QM1iUe6IofM](https://m.youtube.com/watch?v=QM1iUe6IofM)

</comment></comment><comment><USER6> The problem I found with OOP, is that it requires you to leave huge swaths of your code open and accessible, while you continue to develop and build out your code. This requires a larger cognitive load to understand, internalize, and remember the mechanics of your code and all its relevant business logic.

In C++ and Java, you have these member variables, that act as global variables within the Object. Any member variable can be accessed at any time, either read or written to, by internal functions that are allowed to modify it.

This appears to work ok, while you write out your toy code for your CS 101 class, but it doesn't seem to scale too well when developing real-world production code.

What I find better about Functional Style development, is that my functions are much smaller, and all inputs to the function, are validated, and its outputs fall within a narrow band that is acceptable. And by forcing the validation of all inputs, this tends to stop defects during development, very quickly, and very visibly.

The unit testing of pure functions becomes simpler, and it allows you to systematically perform rigorous validation of your code.

The added benefit, is that once I build out my functions, then all that complexity, is hidden behind a one-liner function call. And I just pass data containers from one function to the next, until I get my final desired result.

This helps to minimize the footprint of the codebase, that I must remember and internalize.

And since most of the parts are just dumb components, now, I can focus on remembering the core parts of the business logic instead.

Nothing is absolutely perfect of course, but this is as close to a programming silver bullet as I can get.

<comment><USER7> I've worked on projects with a more iterative pipe and filters approach, and it can lead to situations where it's difficult to maintain or test anything. The problem that frequently occurs is that there's a new configuration parameter, but it needs to pass through a dozen different levels to get to the place that it's used. That and structs on top of structs as parameters gets very complex fast.

</comment></comment><comment><USER8> OOP of the '90s is the Async Programming of the '10s.

Looking forward to reading about the Quadrillion Dollar Disaster in 10 years.

</comment><comment><USER9> I used to use Turbo Pascal, then Delphi long ago... both object oriented, and useful as heck. These days I'm getting warmed up to Lazarus/FreePascal, as the Delphi price hikes killed it as an option. I have no idea what a "factory" is... and hope I never find out. C++, C#, etc all are too darned fixated on proving how clever the programmers and language designers are.... meanwhile we just get stuff done in the Pascal world. It's the C that's the problem.

</comment><comment><USER10> Medium again.

OOP, functional, generic, data-oriented, reactive, whatever. It's all just programming. The mistake is trying to be "pure": different jobs, and different parts of any job, call for different methods. Everything has a place.

Add to your toolbox, but don't lose what you have.

</comment><comment><USER3> (Repost & from 2019).

</comment><comment><USER11> Here we go.</comment>


Clause for Personal IP as an Employee? - <AUTHOR>

Where would one go for a template clause to include in an employment contract to protect the employee's personal intellectual property. As in, OSS contributions or personal projects? <comment><USER2> I'd be happy to chip in $1k to help the legal fees of creating such a standard clause. In CA, there's the protection of [http://www.leginfo.ca.gov/cgi- bin/displaycode?section=lab...](http://www.leginfo.ca.gov/cgi- bin/displaycode?section=lab&group=02001-03000&file=2870-2872) , but the burden of proof is on the employee.

I'd love to see a way to make this more employee-favoring.

<comment><AUTHOR> Thanks for this. It is actually in Canada where I live so this applies to me.

<comment><USER3> To clarify, the grandparent's link refers to California, not Canada.

Official California Legislative Information

<http://www.leginfo.ca.gov/>

<comment><AUTHOR> So I figured out much later. _slaps hand to head_. But, thanks because it does give an idea towards a clause.</comment></comment></comment></comment>


The Great China Ponzi–-An Economic Trainwreck Which Will Rattle the World - <AUTHOR> http://davidstockmanscontracorner.com/the-great-china-ponzi-an-economic-and-financial-trainwreck-which-will-rattle-the-world/?utm_source=wysija&utm_medium=email&utm_campaign=Mailing+List+Saturday+9+AM

<comment><USER2> Ok, don't invest in chinese real estate. Got it!

<comment><AUTHOR> If you think that insulates you (and me) entirely, you may want to read the article again. In particular: "The resulting deflationary spiral will suck the global economy into its vortex. And Wall Street will go down for the count because this time the Fed will be utterly powerless to reverse the tide."</comment></comment>


Endurance experiment kills six consumer SSDs over 18 months - <AUTHOR> http://techreport.com/review/27909/the-ssd-endurance-experiment-theyre-all-dead <comment><USER2> I'm impressed with how long they lasted.

I am NOT impressed with the behavior at end of life. In fact it makes it wary of using any SSD.

A bad SSD should go read only, and stay that way. Not self-brick, and make the data unrecoverable.

<comment><USER3> It sounds easy but it's not: imagine you're the software controling the SSD. Before you do write you don't know if the write will succeed. Once you've written, exactly the information that gives the pointers to the valid data could be the one that is destroyed. Then the "raw" data you can access can be "out of order" but that would still be better than nothing. I can imagine that there would have to be some special "recovery mode" which would allow ythe user to rescue the data blocks even with the uncertain order, in case you are willing to piece some of them together. But almost certainly there aren't much people willing to pay for that.

"Read only" after some fixed number of writes would be safer. But then the complaints would be "why can't they just allow me to write as much as I can, I have the backup somewhere anyway." Which is also a valid wish. So it would be the best to be able if user could select the mode.

<comment><USER4> And what about the drive that went into read-only mode, and then on reboot bricked itself? By design?

I can easily see someone having their computer lock up / etc, restarting, and losing their data. As restarting is often one of the first debugging steps for so many things.

<comment><USER3> You know, the drives have their own CPU and RAM, and execute their own software. The software keeps the copy of some table needed to do the proper _reads_ in RAM and tries to update it to the flash as the response of the normal data write. The flash fails and the software gets the notification about that. The software can provide the reads from the info in RAM as long as the info remains in RAM so it enters the read-only mode. After the reboot there are only the bad bits on the flash, the RAM content is fully wiped away by the reboot.

<comment><USER4> So have a small area of flash that's only used to dump the RAM to at EOL. I, for one, would much rather have a little bit less space available, with a better chance of not bricking at EOL, than the current situation.

<comment><USER3> Looks like a good idea to me, the question is how small the area would be. I think I've read somewhere that writing that data takes some 40 seconds on some Samsung given the write speeds around 400 MB/s which is approx 16 GB reserved for the feature of user being able to read the failed drive which notified the user long before that the declared number of counts was already spent. Somebody who actually has better (industry insider) info is welcome to correct me.

</comment></comment></comment></comment></comment></comment><comment><USER5> That title seriously misrepresents the findings. These drives lasted orders of magnitude longer than they were rated for. For 99% of people on the internet, you could write all your daily traffic to any one of these drives for the rest of your life (assuming it stayed constant).

</comment><comment><USER6> This headline is misleading. This experiment put something like 18 _years_ worth of wear or more on those SSDs.

<comment><USER7> Headline is accurate. A cursory glance at the article gives you a clear picture of what the drives were put through. I'm happy to know that SSDs can handle as much r/w as they can.

<comment><USER8> I would argue while the headline is _technically_ accurate, it's easily misunderstood.

</comment></comment></comment><comment><USER9> really impressive showing from all drives involved. I would have liked to see at least one of the drives fail to read only, but its nice to know that at the rate I use SSD sectors I should be ok for a pretty good while. While there is not great way to test this other than wait and see, I wonder if age AND total writes has an appreciable difference vs. marathon testing like this.

</comment><comment><USER10> Interesting report. What I got from this is that in production you should swap out an SSD as soon as it starts reallocating sectors.

</comment><comment><USER11> Disappointed that the Crucial MX100 / MX200 wasn't included on this. We've been using Crucial exclusively for just over 5 years with customer laptops. We swap the hard drives out for Crucial SSDs when setting them up for the first time. In 5 years, with average use, we've only ever had a single failure... out of literally hundreds of laptops we setup per year.

</comment><comment><USER12> I bought a 1TB Samsung 840 Pro for my new rig in December. Glad to see my research paid off in making the best choice!

<comment><USER3> Apparently that 840 Pro from the article endured more than 2PB. However the new 1TB 850 Pro is declared to endure just 300 TB written:

[http://www.samsung.com/global/business/semiconductor/minisit...](http://www.samsung.com/global/business/semiconductor/minisite/SSD/downloads/document/Samsung_SSD_850_PRO_Data_Sheet_rev_2_0.pdf)

<comment><USER13> The 840 Pro that lasted more than 2 PBW was rated for 73TBW.

>With twice the endurance of the previous model _, the 850 PRO will keep working as long as you do. Samsung 's V-NAND technology is built to handle 300 Terabytes Written (TBW)_* which equates to a 40 GB daily read/write workload over a 10-year period. Plus, it comes with the industry's top-level ten-year limited warranty. * 840 PRO: 73 TBW < 850 PRO: 150 TBW __850 PRO 120 /250 GB : 150 TBW, 500/1TB(1,024 GB) : 300 TBW

<comment><USER3> The drive has 400 MB/s on the interface. That means that it's possible to deliver 34 TB per day to the disk and the rated 300 TB are achieved in less than 9 days. But the scariest effect is the "write multiplication:" the possibility to deliver the small chunks of the data through the 400 MB/s interface which can result in much more data actually overwritten on the flash (as the atomic size of the writes on the flash is quite big).

Of course an average consumer can't produce that. A lot of the data I write to any medium at home is never overwritten. But not every use is the use of an average consumer, knowing the actual limits is important.

<comment><USER14> That's why enterprise SSDs are rated at number of full writes per day rather than GB per day. If you are going to write at 400 MB/s for 24 hours a day then you need an enterprise SSD and not a consumer one.

<comment><USER3> So Samsung 850 PRO is not an enterprise SSD?

<comment><USER6> No, it's not: [http://www.samsung.com/global/business/semiconductor/minisit...](http://www.samsung.com/global/business/semiconductor/minisite/SSD/global/index.html)

(Also, drive writes per day and GB per day are the same metric.)

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> Very impressive - I've been following the story since the start with quite a vested interest - I'm currently building mixed tier SSD only SANs, one tier consisting of high end PCIe NVMe SSDs, the other consisting of Sandisk Extreme Pro III 'consumer - available' drives.

</comment><comment><USER16> I vote for wierd al to sing the song at the end

[http://techreport.com/review/27909/the-ssd-endurance- experim...](http://techreport.com/review/27909/the-ssd-endurance-experiment- theyre-all-dead/4)

</comment><comment><USER17> Inspired by some of their earlier articles, we did a similar test in-house on an ssd model we were planning on deploying into production. The goal was to make sure we knew exactly what to look for when our ssds were on their last legs. We actually bought a smaller capacity version of the same model so the test wouldn't take as long.

I feel a lot better about that production hardware now that I have seen first hand what SMART reports as the drive is running out of reallocation sectors.

</comment><comment><USER18> I would love to see how this stacks up to enterprise SSDs. It is my understanding that they will last years under constant full-bus-speed rewriting.

<comment><USER19> >I would love to see how this stacks up to enterprise SSDs.

the difference is number of writes an individual flash cell can take. Consumer - multi-level cell (MLC) - 1000-3000 writes (thus 240GB disks start to fail around 600-700TB written) where is enterprise SSD flash - single-level cell (SLC) - up to 100000 writes.

<comment><USER18> I'm talking eMLC. I don't see many SLCs on the market anymore.

</comment></comment></comment><comment><USER20> 840 pro rocks!

</comment><comment><USER21> Not sure if this would be a problem, if one could easily check the status of a drive without having to grab specialized tools.

</comment><comment><USER22> The great experiment is finally over.

Very proud to exclusively use 840 Pro SSDs in my towers.

</comment><comment><USER23> 2.4 PB of writes to the 840 Pro is pretty nice.

</comment><comment><USER24> Disappointing he didn't test the new Samsung 850 SSD. The old 840 is known to not have such a high endurance so I'm automatically excluding it from my list of choices.

<comment><USER25> Did you even read the article? The 840 Pro was the top performer, reliability- wise.

<comment><USER26> Maybe they got lucky. They only tested one of each of these drives, and there was already a case (with the Kingston drives) where nearly identical models got wildly different lifetimes.

 _The low number of reallocated sectors suggests that the NAND deserves much of the credit. Like all semiconductors, flash memory chips produced by the same process—and even cut from the same wafer—can have slightly different characteristics. Just like some CPUs are particularly comfortable at higher clock speeds and voltages, some NAND is especially resistant to write-induced wear.

The second HyperX got lucky, in other words._

So it's definitely possible that the 840 Pro has reliability problems even though one of them won this test.

<comment><USER27> Thank you for this! Yours is the most astute comment I've seen here. As someone who's worked in flash memory manufacturing, I know how much variation is inherent in the process. It gets evened out somewhat by binning, but there's inevitable variation in dielectric thickness, aspect ratios, corner profiles, dopant diffusion, grain structure of polysilicon, and on and on, even discounting the density of particulate defects and watermarks.

Even if you don't know that, basic stats should tell you that testing a single unit from each manufacturer is going to be meaningless at best, misleading at worst.

<comment><USER28> _testing a single unit from each manufacturer_

Is less expensive than testing a dozen drives of each model, and better than testing no drives at all. It's not meaningless at all; it just has to be read with the right caveats.</comment></comment></comment></comment></comment>


Internet Giants Erect Barriers to Spy Agencies - <AUTHOR> http://www.nytimes.com/2014/06/07/technology/internet-giants-erect-barriers-to-spy-agencies.html

<comment><AUTHOR> [http://www.nytimes.com/2014/06/07/technology/internet- giants...](http://www.nytimes.com/2014/06/07/technology/internet-giants-erect- barriers-to-spy-agencies.html)

Is a perfect dupe to:

[https://news.ycombinator.com/item?id=7860987](https://news.ycombinator.com/item?id=7860987)

[http://www.nytimes.com/2014/06/07/technology/internet- giants...](http://www.nytimes.com/2014/06/07/technology/internet-giants-erect- barriers-to-spy-agencies.html)</comment>


Waterfall Plots in R - <AUTHOR> http://www.jameskeirstead.ca/blog/waterfall-plots-in-r/?utm_campaign=Data_Elixir_24&utm_medium=email&utm_source=Data%2BElixir

<comment><USER2> I always called these waterfall charts - waterfall plots are something else in my mind and are very useful in examining spectra over time: [http://en.wikipedia.org/wiki/Waterfall_plot](http://en.wikipedia.org/wiki/Waterfall_plot)

<comment><AUTHOR> I'm the submitter: yeah, looks like you are right: [http://en.wikipedia.org/wiki/Waterfall_chart](http://en.wikipedia.org/wiki/Waterfall_chart) \- I just copied exactly the same title from the blog entry and I was unaware of the wrong "naming".

</comment></comment><comment><USER3> I didn't know this sort of thing had a name! I made a similar (but now that I look back on it, much less informative) chart using d3 here: [http://neugierig.org/software/datavis/lines- spent/](http://neugierig.org/software/datavis/lines-spent/)

</comment><comment><USER4> maybe its because I'm not interested in the problem domain at hand but I find these unreadable messes.

<comment><USER5> I think it stands up reasonably well to the table (a decent test for a bad graphic). It provides a good overview of the data without obscuring it too much.

</comment></comment><comment><USER6> I wonder if this can be extended to produce candlestick charts [0]? The underlying concept is the same; candlesticks just have additional data points for volatility.

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

</comment><comment><USER7> I work in finance and use waterfall charts quite a bit. They're a great way to create a walk through numbers and explain financial impacts/results. I just wish there was an easier way to implement them in Excel.</comment>


How to Hack the Lottery (from a 2600 Magazine article published in 2004) - <AUTHOR> http://www.docdroppers.org/wiki/index.php?title=How_to_Hack_the_Lottery

<comment><USER2> A "(Hint: You can't)" would have saved me, and everyone else who knows how to calculate probability, 5 minutes of reading in the hopes of finding an actual hack that was unexpected.

<comment><USER3> I read something once where someone (I think some business) made every effort to buy all lottery tickets for a particular payout once the payout amount went high enough to make that a viable (profitable) option. It turned out they actually failed to get every single ticket for some reason, but I think they did get the winning ticket.

<comment><USER4> That is a dangerous thing to do. If there is more than one winning ticket you lose.

<comment><USER3> Yup.</comment></comment></comment></comment>


Ask HN: what careers make $100k/year? $1mil/year? - <AUTHOR>

What career paths will net you these salary figures? What are the drawbacks and sacrifices required to get there?<p>Interested in some personal stories as well. <comment><USER2> $100k a year isn't terribly hard to net in terms of salary. You can earn it right out of school with a good offer in the right location, but even without that, it's not an unreasonable target to hit. If you're a good developer, you can hit it relatively early in life without living in NYC, Boston or the Bay area. If you're a patient developer, you can do the same but it will cost you more time. It certainly doesn't take great career aspirations to hit six- figures.

$1m a year salary, on the other hand, is going to be almost impossible. At compensation approaching that level, you're going to be earning less from your salary and more from bonuses, stock options, and other compensation incentives that don't fall under the term "salary". I don't know of anybody who makes $1m salary as a software developer. To earn that kind of money, you've got to be integral to the business in some way or get it as some kind of a bonus.

</comment><comment><USER3> Finance. Drawbacks have been well-documented.

</comment><comment><USER4> You are much better off starting your own company if you want to get to those levels.</comment>


Ask HN: Any decent html tutorials? - <AUTHOR>

Hopefully, this won't take more than 45 seconds of your time :)
Just wondering firstly whether to start out with html4 or html5. This is for a first programming language (if you could even call it that).
Regarding tutorials, any suggestions? Just looking for the guide that can start someone off with a knowledgebase, and google/irc/cheatsheets/etc will be used from there.
html4. www.htmldog.com, w3schools, or http://articles.sitepoint.com/article/html-css-beginners-guide
html5: W3Schools or www.diveintohtml5.org
What have your experiences been with learning html or using any of these tutorials/resources? <comment><USER2> I've always pointed people to w3schools.

I'd start by learning HTML4, and then you can learn the new features in HTML5 once you are comfortable with the core.

I'd also suggest that you build a buttload of webpages. Reading the tutorials isn't going to help much, if you don't get hands-on.

</comment><comment><USER3> > This is for a first programming language (if you could even call it that).

You really shouldn't... it's a markup language. Not that that's a bad thing.

If you are really new to it and are looking to learn and maybe make something fun to play with, I suggest you start with HTML5. The web is going that way and the browsers are a bit more sane with it so far. There is plenty to learn. Eventually you will get into databases, and server-side concerns and you will probably dip your toes into Javascript (a programming language).

If you want to build something to share with others, HTML 4 is probably more practical. HTML5 is mostly backwards compatible, but you really need to understand what will work for everyone and what won't.

Hope that helps.

</comment><comment><USER4> You mean which of the markup standards to learn?

I'd say it depends on your goal. If you're currently designing and want to support older browsers then I'd stick with HTML4 standards. If you're not bothered about older browser support or learning for the sake of it (or for a personal site) or for a future job then I'd go with 5.

I've been doing web design / dev since about 1996 (on-and-off part-time) and just started doing sites in HTML5 about a month ago. Prior to that I tended to use XHTML-1 transitional doctypes.</comment>