Britney Spears at 8-1 to be next celeb to have a hoax death story - <AUTHOR> http://www.mirror.co.uk/celebs/news/2010/01/28/depp-charge-goes-down-like-a-bomb-115875-22000475/

<comment><AUTHOR> I suspect the Bookmakers in question are going to learn an expensive lesson about how the internet works.</comment>


What Dropbox dropping Linux support says - <AUTHOR> https://www.techrepublic.com/article/what-dropbox-dropping-linux-support-says/ <comment><USER2> > ...it never ceases to amaze me that Linux has yet to take hold on the > desktop market.

If you don't get this you should probably just admit you don't understand the desktop market and refrain from commenting.

<comment><USER3> I understand the desktop market, but I don't understand why a Linux distribution hasn't taken hold on the desktop market.

A vast number of users use their computers to check email, look up things on the web, and type up an occasional document. There are several Linux distributions that can do these things quite easily out of the box. Meanwhile, Microsoft has been steadily sabotaging Windows. And Apple is simply too expensive for the average user.

That doesn't seem too controversial. You'll have to explain why I should 'refrain from commenting'.

<comment><USER4> > A vast number of users use their computers to check email, look up things on > the web, and type up an occasional document.

This kind of condescension towards users and what they use a computer for is precisely why Linux doesn't have a foothold on the Desktop. Linux Desktop people design for some imagined person who, to the extent that they even exist, doesn't care at all about their operating system. They try so hard to make it easy by automating what they think the user wants to do that they make the system incredibly complicated and inflexible so everything falls to pieces the moment the user tries to color outside the lines.

This is sorta what parent meant, I think. If you don't understand why Linux is a failure on the desktop, you don't understand why people use desktops.

<comment><USER3> You would have more success convincing people if you were a little more charitable. It is very difficult to have a reasonable conversation when it starts with an insult.

That is not condescension as I am not condescending towards users. Rather, it's reality. I volunteer with an association of retired people and 100% of our executive and every single member I have ever spoken to fits in in that group. They don't do more than that because frankly, they don't particularly like their computers. I also briefly sold computers when I was in University. Over that 18 months, I'd say that 85% of people who needed my help were looking for machines that could do exactly that.

Finally, I really question what kind of Linux distrust you use. With a half decent, consumer focused distribution, I can't imagine how anything could fall to pieces the moment someone colours outside the lines.

<comment><USER5> If we're trading anecdotes about a really specific subset of users here, I know a bunch of "retired people" who also almost exclusively do email, but you know they also like things to be easy, intuitive, familiar, functional and still kind of pretty like they're actually part of the future. They absolutely can not have it break. And you know what? They do want more features that they can use, it isn't that they only want email because it is all they can use, it's just the rest is not easy/intuitive/familiar or is providing no greater value to their now limited time. What value does linux desktop bring to them? It's a liability with no advantages.

So now a bunch have started using things like amazon photos which has encouraged them to become more interested in their android devices, branching out into other fun photo apps and home IoT crap. Another bunch (quite the dividing line here) has gotten more involved in iCloud shared albums and thus again more interested in the Apple ecosystem. They went from cheap "PC" buyers to MBP because they thought the UX was that much better, because facetime and iMessage and other cool things.

Linux Desktop can't compete even in that easiest of user segments.

<comment><USER6> > Linux Desktop can't compete even in that easiest of user segments.

This is amusing, because I had to use a MBP for work a year ago, and I still have flashbacks of how painful it was to use in general usage. I mean, for heaven's sake, copy and paste was always, constantly broken. I'm not actually sure how you manage to break something that's been a mainstay of the computer UI for 37 years, but they managed it. And that's not to talk about the window focusing problems, and all of the other crap I experienced. Have you ever seen a (very skilled) senior developer lose all of their windows? I have. It was a regular occurrence because the MBP was unable to cope properly with a second monitor of varying sizes.

Alas, I will leave it there. /rant

<comment><USER5> I've never heard of these complaints? This sounds much more like typical Linux Desktop issues in my mind.

Though at this point Windows 10 constantly loses windows on monitors that no longer exist...sometimes even the password prompt on my work laptop lock screen ceases to exist but I found plugging it into an external monitor brings it back on the laptop monitor...

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> I think the challenge in all this is the office suite and stable/native device drivers.

Firstly, the "Deciders" in the medium and large enterprises most often simply go with Microsoft's Office products. Regardless if libreoffice (and similar open source office suite offerings) provide the same functionality, these Deciders are already won over; so they simply "go with the flow". In order for there to be some sort of universal linux, there has to be an easy way to run Microsoft's Office products. That takes care of a huge number of typical office worker use-cases. (I'm leaving out surfing on the web, because that is already proven on any linux machine.)

Secondly, there is a need for native device drivers. If the Deciders can choose computers for their office workers that "just work", then their choice is easier. For this, computer manufacturers have to really help in crafting native device drivers that support linux.

I firmly believe that once the above 2 conditions are attended to, linux will then become something the Deciders can consider for the enterprise...then - with that many large numbers of users around the world - linux will have its day on the desktop.

<comment><USER8> I think you've got a critical detail wrong here: You're attributing way too much deciding power to the "decider".

The head of IT (or whoever) is not someone who gets to just make decisions by fiat. It's someone whose job is fundamentally to respond to the needs and demands of others. Until a significant number of the staff start demanding a Linux desktop environment, a Linux desktop environment is not realistically an option for the "decider". Not if they want to keep their job, anyway.

And, when it comes to the non-techie business members, I just don't see Linux having anything to attract them. What can it do _better_ than Windows, from the perspective of Bob from accounting? _Not_ abstract political stuff, mind -- he's just interested in being able to get his job done more easily so he can go home at 5 and kick a ball around with his kid before dinner.

</comment></comment><comment><USER9> Misleading title. They don't drop linux-support, they drop support for certain filesystems and defined which filesystems they will continue to support.

</comment><comment><USER10> The whole point of filesystems is they present the same interface. ZFS and ext4 should just work the same for Dropbox.

<comment><USER11> > _The whole point of filesystems is they present the same interface. ZFS and > ext4 should just work the same for Dropbox._

This is unfortunately not true, especially with ZFS and ext4 that you mentioned. ZFS is different enough that you can't even use tools like `df` and `du`. You need to use the ZFS tools.

<comment><USER12> _ZFS is different enough that you can 't even use tools like `df` and `du`._

I'm not as sure about df, but I've written a du or at least something approaching one before --- how does it not break every other application that relies on stat() and the file size that it returns?

<comment><USER13> One reason for du/df problems with ZFS is ZFS compression.

</comment></comment></comment></comment><comment><USER14> > UPDATE: Although Dropbox will not support ext4 filesystems that have been > encrypted with ecryptfs, it will continue to support ext4 filesystems that > have been encrypted with LUKS.

So, this entire article is complaining about something that isn't even true

<comment><USER15> No, just that it was originally under specified. It supports _some_ encryption (i.e. the type it can't tell is there anyway.) It doesn't support one of the common ways of doing home directory encryption. So the article is definitely true, just more accurate with that update included. That also isn't the crux of the article's point anyway.

</comment></comment><comment><USER16> While I use ext4 on my home Linux machine, so not hit there. However on my office Windows machine my Dropbox folder resides on a Veracrypt (née Truecrypt) partition, which Dropbox has started complaining about.

So far SyncThing is looking pretty good in general. Two things I would really like to see:

* Support for non-trusted servers[1]

* Android app that is able to view and pull files down as desired (and possibly with the option to flag individual files to always be cached locally). You usually don't want your phone to hold local copies of everything in the shared folder(s) as it is usually space constrained.

[1] [https://github.com/syncthing/syncthing/issues/109](https://github.com/syncthing/syncthing/issues/109)

<comment><USER17> syncthing-lite [1] is already supposed to do what you want for your second point. But it's not really there yet. I haven't managed to get it to work reliably (unlike the original app, which is great).

[1] [https://github.com/syncthing/syncthing- lite](https://github.com/syncthing/syncthing-lite)

</comment></comment><comment><USER18> Developing software for Linux is like painting a moving train. I can understand their problem.

</comment><comment><USER19> >Outside of this being a big mistake on the part of Dropbox

Why is it a big mistake? Most likely they're not seeing enough revenue to keep supporting the other filesystems, otherwise why would they cancel support for them?

>Given the disaster that has been Windows over the last few years

Only if you don't come out of your bubble.

<comment><USER20> > Why is it a big mistake? Most likely they're not seeing enough revenue to > keep supporting the other filesystems, otherwise why would they cancel > support for them?

Dropbox is in a viral business, and they were the only ones who supported Linux.

Starting with Linux support, Dropbox's competition essentially completely ignores Linux. Box, Google Drive, One Drive etc all have no official Linux client. That makes it fair to say that some of Dropbox's customers are there because of the Linux support (I'm one of them). Note that a customer doesn't wholly have to be on Linux, but if for example 10% of the people at a customer could be on Linux, so using Dropbox for all of them makes sense, because of the Linux minority.

This is a viral business in that you use similar tools to collaborate with others. Dropbox did their spread not via marketing, but by word of mouth and minor storage bonuses as rewards for the spread. (Been there, done that.) But now there is going to be limiting of that spread by Linux folk affected by this.

Dropbox is now going to lose $1k+ per year because I'm dropping them as a paid personal and work customer. A tiny drop in the bucket indeed, but this will all add up. I think they are idiotic to take a unique selling point, and throw that away. I can't think of a single thing that makes them competitive with the alternatives now. The technical solution I would adopt is a more minimal sync mode when operating on non-optimal filesystems, and standard sync on supported filesystems.

This is all like compound interest. They have narrowed their customer base and made that rate a little lower. In the long term it could just turn out to be a terrible decision - my expectation.

</comment></comment><comment><USER21> _Finally, it never ceases to amaze me that Linux has yet to take hold on the desktop market. Given the disaster that has been Windows over the last few years_

No, not even close to being a given. In fact, it's just not true and he loses a bunch of credibility by saying that.

</comment><comment><USER22> This is a very interesting article and to be fair while I agree with the author's conclusions that it would be great to have a standard Linux distro to refer to, I thought we had already hit that point with Ubuntu.

Nowadays, I have seen quite a few download software pages that simply list Ubuntu rather than Linux.

Anyways, for those complaining about how difficult it is to get anything to work with linux those days were 10 years ago, I invite you to spin up a Ubuntu VM and give it a test drive :)

(Happy linux user since 13 years)

<comment><USER4> Ubuntu almost succeeded in that respect, but at some point Canonical seemed to have gone insane with NIH duplication and then failed attempts at monitization that seem to have totally killed their momentum.

</comment></comment><comment><USER23> Huh. That was the only reason I used it. What has the most space now, Amazon Drive?

<comment><USER24> I switched to Syncthing a while back and haven't looked back. It's self- hosted, so there are no storage limits, and if you care to put in the work (setup is a tad more complex), it's also pretty easy to hook it up to a cloud server, which nets you an off-site backup.

Syncthing doesn't quite have the "Just Works" factor that Dropbox's offering has, but I don't need that; the ability to synchronize several terrabytes of my personal archives (I have a lot of data) was more than worth the effort.

[https://syncthing.net/](https://syncthing.net/)

<comment><USER11> I wouldn't recommend having syncthing be your _only_ backup, at least for important files (like photos/videos of your kids). It was a couple years ago, but a syncthing bug was eating large files.

Take this anecdotal report with a dash of salt. It didn't happen to me. Happened to a friend of mine. That said, I wouldn't make Google Drive or Dropbox your only backup either.

<comment><USER25> More generally: sync is not backup. Backups need to have versioning (like Time Machine) or manual syncing (like rsync to external/remote drive).

</comment></comment></comment></comment><comment><USER26> What I'm having trouble understanding about the whole thing, and the author really misses the point by talking about Snap and Flatpak, is that the technical reason Dropbox are only supporting ext4 is apparently the use of extended attributes.

Now, correct me if I'm wrong, but a filesystem is supposed to abstract these concepts. All current major Linux filesystems (ext2+, btrfs, XFS etc.) support extended attributes. The implementation is irrelevant. It should be exposed to the application in exactly the same way because that's what the filesystem is /for/. Dropbox shouldn't need to worry about this whole thing because they should just be able to call the system API to deal with it.

Or have I fundamentally misunderstood the issue?

</comment><comment><USER27> They should just publish the API and let the Linux dev-crowd come up with suitable solutions.

<comment><USER28> We have an API and you can indeed create your own client (as some have done with ExpanDrive etc.)... Also there are some good open source copy/clone/backup solutions that work well with Dropbox, like rclone.org

</comment></comment><comment><USER29> I want to address a point that many here have replied to:

> Given the disaster that has been Windows over the last few years

Just because Windows has become stable and somewhat secure doesn't mean it hasn't been a disaster.

Windows 8 upset everything with a pointless new interface requiring user retraining on even the most basic things like how to log on or log off. How to print. Etc. There are now dual built in apps (preferences) for multiple things, in both the new UI, and the conventional UI.

Microsoft even tried to force the new interface onto server desktops.

Developers had to write apps a new way. And then there was the store for the new apps. The legacy apps were to become just that -- legacy.

Then Microsoft went back to having a start menu and a desktop again. Later, even as the primary interface -- but keeping some of the visual appearance of the "new" interface.

And the Windows store. And Windows S.

And the market confusion of Windows RT for ARM processors that cannot run legacy applications. But anyone could have (and I did) foresee that consumers would not understand this. Why won't my legacy x86 app run on Windows RT? The entire value proposition of Windows is that it runs legacy apps -- take that away and Windows has little value. Without the apps, it has less software than Linux or Mac. Developers were not going to port their apps to ARM for free. So if you bought Windows RT, be prepared to re-buy your apps. Consumers returned them in droves. For better or worse, Windows is deeply tied to Intel architecture.

Much of this upset was changes just to prop up the failing (and now definitely failed) Windows 7, then Windows 8 phone. (Both of which caused the previous efforts of developers to be obsolete and abandoned.)

And then redesigning the desktop UI yet again, for no good reason.

I think one could be fair in calling this a disaster. Just sayin'

</comment><comment><USER30> Say, what are the non self hosted alternatives to Dropbox that are still alive? Same ease of use please, i.e. no Backblaze. I don't mind if it costs a bit.

<comment><USER31> Owncloud get mentioned from time to time, I've heard it's pretty good.

<comment><USER30> Isn't it self hosted?

<comment><USER31> You're correct - I read your original comment as "What self hosted alternatives exist?". My bad.

</comment></comment></comment></comment><comment><USER32> Context: [https://news.ycombinator.com/item?id=17732912](https://news.ycombinator.com/item?id=17732912)

</comment><comment><USER33> So how do we make POSIX II happen?

</comment><comment><USER34> it says two things:

\- using their own APIs is so painful that any internal client has a high cost

\- they are betting more on walled garden platforms, which means they will pivot to ad-based soon.

</comment><comment><USER35> would linus torvolds please stand up? he uses fedora; could fedora be The One? (in the article, author argues for a "standard desktop distribution" to rule them all)

</comment><comment><USER36> > I am certainly not saying that Linux needs fewer choices. However, I've said > this before, and I think it could use repeating. There needs to be a > standard, a sort of "universal Linux" that companies (such as Microsoft or > Adobe) can support. This is very complicated. Which distribution would serve > as the "universal"? Or should a brand new distribution be created? Which > desktop? Which init system? Which filesystem? Those questions continue to > haunt Linux and prevent it from gaining widespread acceptance on the > desktop.

[obligatory xkcd link here]

<comment><USER24> I knew which XKCD you were referring to without you even needing to link it, but if you _must_ obligatorily link xkcd comics, do remember to actually post the link.

[https://xkcd.com/927/](https://xkcd.com/927/)

As for Linux standards, at least in the datacenter I work in, by FAR the two most popular distributions are Ubuntu and RedHat. For home users RedHat would translate to Fedora (which is roughly RedHat's upstream), and for businesses not wanting to deal with RedHat licensing, CentOS.

Everything else seems to be fringe, at least as far as servers go. If companies all agreed to target Fedora / Ubuntu, and the Gnome Desktop as our sort of casual starting point? That would work. It would have lots of room for improvement (Gnome's UI is... strongly opinionated), but I still think it might work.

<comment><USER37> I thought about this one:

[https://xkcd.com/456/](https://xkcd.com/456/)

</comment></comment></comment><comment><USER38> Deeply disappointing. My primary machines are Linux and this is a step backward.

I really think Linux will finally win the desktop (someday. Clearly not today.)

<comment><USER39> > I really think Linux will finally win the desktop (someday. Clearly not > today.)

Not to get too off topic, but why do you think this? (Genuine question, no snark). I love linux, but from my perspective, Linux desktop seems only marginally more mainstream than 5 years ago.

ChromeOS is doing ok I guess, but if that is how linux wins the desktop, it's a very pyrrhic victory. ChromeOS is Linux, but not any of the parts I like about it.

<comment><USER40> The Dell XPS laptop comes with ubuntu and is the best laptop I've ever had.

<comment><USER11> Agreed, the Dell is amazing. First laptop that I thought legitimately beat the look, feel, and build quality of a Macbook. Pricey tho.

<comment><USER41> Pricey? Maybe in comparison to a budget laptop but as you're comparing it to a Macbook, it's not even close to the price of a similar configuration there. My local Costco has Dell XPS 13s and Lenovo X1s for ~$1400.

<comment><USER11> Pricey compared to an equivalent Lenovo, for example. But yes, compared to a Macbook it's quite cheap.

The base models don't have a lot in the way of RAM, CPU, and disk space. Bumping those specs up to acceptable levels adds quite a bit to the cost, sometimes $1,000 or more.

</comment></comment></comment></comment></comment></comment><comment><USER42> > Given the disaster that has been Windows over the last few years, and that > Apple hardware is often out of the price range of the average user, Linux > should be primed to take over the market.

I feel similarly. I'm a big Mac fan, but I'm confused why Linux isn't the obvious alternative. I'm guessing the issues are the following:

1) PCs/Laptops to consumers ship with Windows installed by default, likely a distribution partnership w/ Microsoft

2) Popular games run best on Windows

Problem (1) is difficult because of Microsoft's deep pockets. But it feels like it's possible to attack problem (2).

The gaming industry has huge sway on the market. For example, many serious gamers build their own rigs. If gaming companies introduce an open standard that Windows OS's need to abide by to build games, then.... maybe Linux can benefit as well?

I suspect this hugely benefits gaming companies too, because they would be able to develop on open source technology and not have to test their builds on proprietary technology. Honestly, that workflow sounds miserable AND expensive.

<comment><USER43> I think you maybe don't use Linux or Windows 10? Windows 10 is still far and away more friendly and presents a much better user experience than Linux.

Linux will be the "obvious alternative" when the software actually works with off the shelf consumer hardware, compiling your own drivers based off of something you've downloaded from github is a non-starter, and getting things like waking from standby to work isn't a series of frustrating googles.

If you're into computers, not using them as tools just into them in general Linux is fine. But Linux is not ready for someone who is uninterested in how computers work.

<comment><USER44> Clearly a matter of perspective. Happily living in Xfce-land on my various Arch-boxes, my rare excursions into the world of Windows are always occasions for disbelief: 'Do people actually _live_ with this, day in and day out?'. The prescribed choices, the licensing popups, the installation and upgrade rigmarole, the opaque policy management, the dependency hell, the anti-virus idiocy, and the Mickey Mouse conventions of the file system. Please, take me home to sanity. But as I said - perspective. I must assume it all somehow makes a kind of sense if you're really into it, and that pacman -Syu could equally freak you out if you came visiting to my side. Windows users rarely do, though.

<comment><USER45> Um the dependency hell is not something I have seen in Windows, but quiet often in Linux.

For my desktops I just want for the system to work and not try to figure out why the new kernel broke my video drivers again.

<comment><USER46> If you stick to the distro package manager you should never see dependency hell on linux, in 15+ years of using it I've seen it three times. Once was when I was being too clever for my own good with the package manager, once was from using third part package managers (ruby gems) and once is from co-workers essentially creating their own distro + package manager on top of red hat ( a story in it's own right). The root cause of each of those was ignoring or screwing with the package manager. And the last two started out as deficiencies (non-existence) in windows package management.

On windows I've come across it much more. Installing different versions of Visual Studio, installing some random program that doesn't package it's binaries, various installers including sub-installers, trying to run a program that requires the .net framework and having to install that first.

I spent most of this morning dealing with a windows app that was missing a dll and had to google my way through with lot's of trial and error to find the missing package.

I've also had docker for windows screw up my cygwin install, but I guess that's a point in each column.

<comment><USER4> > If you stick to the distro package manager you should never see dependency > hell on linux

You'll also probably never see up to date applications or anything not present in the repo.</comment></comment></comment></comment></comment></comment>


ThinkTutorial.com: Incredible Growth - <AUTHOR> http://news.prestancegroup.com/thinktutorial-incredible-growth/ As a fellow entrepreneur, I am sharing some data on the recent growth ThinkTutorial.com has been experiencing. <comment><AUTHOR> You know when they say "They had almost nothing and they made it from scratch"? They are most likely talking about people like me (and you). Funding your dream with whatever you have (or have left..). No Serie A, B, etc. Just choosing to invest in your dream instead of buying that new suit.

Sometimes it works, sometimes it fails. I've got my shares of failures before this and will probably still have failures in the future. That's part of the risk you take when you try to make it happen on your own.

I know it's still way too early to declare victory.

ThinkTutorial.com's growth is for now only numbers and traffic volume increases. I however know that if I was able to help someone out there answering a question they had through our tutorials, then I am fully satisfied, and thus: Successful. It's sometimes just a matter of perspective.

Thank you all for spreading the word around. It's much appreciated!

</comment><comment><AUTHOR> clickable link to <http://ThinkTutorial.com></comment>


Which phone for Android development? - <AUTHOR> Which phone do you  for Android development? Should I choose the latest and greatest or most popular? <comment><USER2> I have nothing but praise for the LG Nexus 5. It's rocking a stock Android (already got the Android 6.0 upgrade) and is an awesome phone all around.

Besides the Nexus 5, I think you should also try and invest in some other phones that will give you the range from low-end, cheap, shitty Androids to mid and large-screen devices. Just to cover your bases and find out any platform/device/resolution-specific bugs.

Also, the new Nexus 5X seems nice, but I haven't got a chance to try it out yet.

<comment><AUTHOR> Thanks!</comment></comment>


The Superbook: Turn your smartphone into a laptop for $99 - <AUTHOR> https://www.kickstarter.com/projects/andromium/the-superbook-turn-your-smartphone-into-a-laptop-f <comment><USER2> So...it's a screen, a keyboard, and a battery? Am I getting that right?

I find it interesting that they went from a phone dock to the exact opposite of a phone dock. Like, a 100% pivot. There isn't even an optional way to attach the phone to the thing. It just has to be on a firm surface. Maybe one of the backer tiers should include duct tape. So, for example, if you wanted to leave a secondary phone permanently attached to this, you'd still have to disconnect it to move the thing or put it in a backpack or anything like that. Not sure how to refer to it. I'm not calling it a superbook since it's literally not a *book. It's some kind of combined peripheral.

Do people understand that this isn't going to do anything when a phone isn't connected to it?

</comment><comment><USER3> 125 comments yesterday: [https://news.ycombinator.com/item?id=12143790](https://news.ycombinator.com/item?id=12143790)

</comment><comment><USER4> Looks neat. Any odds this is feasible with an iPhone as well?</comment>


As a musician's memory faded, his family saved the music still in his head - <AUTHOR> http://www.oregonlive.com/living/index.ssf/page/family_struggles_to_save_music.html <comment><USER2> TL;DR: an amateur composer who never learned to write down his music is developing Alzheimer's, and slowly forgetting how to play the songs he wrote. His daughter recruits her friend, a musician who can learn by ear, to record him playing the fragments he still has left and to work with him to fill in the gaps. In the end, she produces a CD of his work and plays his songs at a concert, so that the songs he wrote will live on even as they disappear from his head.

</comment><comment><USER3> I understand that at this stage he needed another musician to pull the music out of him interactively. But before it got that bad, a simple analog recording would have done. A MIDI recording even better.

I've been composing all my life. I know how to write music notation, but absolutely can't stand the tedium. I don't write code in calligraphy, and for the same reason, I play my music into a MIDI keyboard. From there, I can fuss with either the raw data, or actual music notation if I like, in software.

</comment><comment><USER4> Btw, Lionel Bart, composer and lyricist of the musical _Oliver!_ , also did not do musical notation. He hummed the tunes to a fellow musician who transcribed them. I've no idea how much 'filling in' the other musician did in terms of harmony, arrangement and so on. But here's another question: if Bart had formally learnt to read music, or Goodwin had written his songs down, would they still have been able to compose them?

</comment><comment><USER5> If you liked this, you might also be interested in this project by The Caretaker. He has been diagnosed with dementia, and is producing music over several months to try to capture the progression of the disease. I recommend giving it a listen:

[https://thecaretaker.bandcamp.com/album/everywhere-at-the- en...](https://thecaretaker.bandcamp.com/album/everywhere-at-the-end-of-time)

</comment><comment><USER6> Before reading it I assumed it was about John Mann from 'Spirit of the West' a Canadian band from BC he has early onset alzheimer's.

[http://www.ctvnews.ca/health/intimate-documentary- explores-s...](http://www.ctvnews.ca/health/intimate-documentary-explores- spirit-of-the-west-singer-s-journey-with-alzheimer-s-1.2966002)

</comment><comment><USER7> I highly recommend the documentary "Alive Inside" which deals with giving dementia and Alzheimer's patients the music they loved all their life and the profound effects it can have on quality of life.

[https://www.youtube.com/watch?v=IaB5Egej0TQ](https://www.youtube.com/watch?v=IaB5Egej0TQ)

</comment><comment><USER8> Glen Campbell, American country singer, was diagnosed a few years back, after having trouble remembering the lyrics during performances.

      http://www.imdb.com/title/tt2049586</comment>


The Most Famous Finish in Ironman History: Julie Moss Takes You Through Her Race - <AUTHOR> http://m.ironman.com/triathlon-news/articles/2003/02/the-most-famous-finish-in-ironman-history-julie-moss-takes-you-through-her-race.aspx <comment><AUTHOR> Video of the finish.

[https://www.youtube.com/watch?v=VbWsQMabczM](https://www.youtube.com/watch?v=VbWsQMabczM)</comment>


The Art of Community Now Available For Free Download - <AUTHOR> http://www.artofcommunityonline.org/2009/09/18/the-art-of-community-now-available-for-free-download/

<comment><USER2> Every time I've spoken with Jono I've found it well worth my time. I want to thank him for taking the time to pull this together and making it available to the widest possible audience.

</comment><comment><USER3> After a quick look through this seems like a good resource. The most important things are simply to 1) be part of the community, 2) listen to the community, 3) give the community responsibility.

</comment><comment><USER4> There are some very similar fundamentals here to a lot of what "Gandhian economics" teaches.</comment>


Follow dead people on twitter: Tweeji - <AUTHOR> http://tweeji.com/

<comment><USER2> Kind of annoying -- I understand people are crazy for SEO, but not linking back to twitter directly to view the stream is not the behavior I care for.

</comment><comment><USER3> I expected this to be some kind of sick morbid dead pool kind of site, but it's actually kind of interesting...

</comment><comment><USER4> Do the dead celebrities follow you back? I have a sudden urge to recruit an undead Twitter army.</comment>


Bread, How Did They Make It? - <AUTHOR> https://acoup.blog/2020/07/24/collections-bread-how-did-they-make-it-part-i-farmers/ <comment><USER2> Warning: this specific post is not about how bread was made. It's about the economics of the average farm in ancient society.

Was on a road trip with my girlfriend and thought she might like to learn about how bread was made. 30 min of reading later, not much to say on that topic specifically. Very interesting nonetheless.

</comment><comment><USER3> I always love to see anything by Brett Devereux on here. His articles are one of the highlights of the week for me. Always interesting, always entertaining, and I always learn something. His blog doesn't have an obviously visible RSS feed, but if you point your reader to it it'll find it. I think it's at /feed.atom or some such.

<comment><USER4> Me too! I really enjoyed his collections on the "Fremen Mirage"[1] investigating the "hard times make hard men" trope and "Practical Polytheism"[2]. Brett's articles are mainly social histories which are very accessible and interesting reads. While we're all human, we can easily misunderstand the people of the past in fundamental ways if we assume that they had our identical beliefs and values.

[1] [https://acoup.blog/2020/01/17/collections-the-fremen- mirage-...](https://acoup.blog/2020/01/17/collections-the-fremen-mirage-part- i-war-at-the-dawn-of-civilization/)

[2] [https://acoup.blog/2019/10/25/collections-practical- polythei...](https://acoup.blog/2019/10/25/collections-practical-polytheism- part-i-knowledge/)

</comment></comment><comment><USER5> Relevant: [https://www.youtube.com/channel/UCfIqCzQJXvYj9ssCoHq327g](https://www.youtube.com/channel/UCfIqCzQJXvYj9ssCoHq327g) , How To Make Everything, a guy trying to replicate (IIRC) a steam engine starting from nothing; i.e. making stone tools first, making pots from clay, using those tools to collect copper ore, making better tools, and so on. Very interesting. He make various kinds of bread over the years too.

</comment><comment><USER6> The implied lack of an incentive to be taxed was good writing in this. Regrettably, for Roman occupied lands, the tax had been precomputed and sold on as a derivative. This kind of CFD doesn't play well when you can take what you want as the tax farmer.

Also led to 1789 in France. Post roman market economy didn't help.

Subsisting is only partly viable as a tax avoidance mechanism. Ultimately, you need a surplus for a lot of reasons

<comment><USER7> For readers jumping to the comments: Any surplus went into the social capital (dowry etc), distributing it inside the countryside as non-fungible untaxable wealth. Putting a year's saving or even surplus into easily transportable goods like money would be a really dumb thing to do, as it was incredibly risky (dumb) thing to do. The author links to a talk on how this still plays a role in poor communities today: [https://www.youtube.com/watch?v=AchISJUKfH4](https://www.youtube.com/watch?v=AchISJUKfH4)

<comment><USER6> TBF and respect this response, I nitpicked a minor side note of an otherwise fascinating and great read which made me think, and I appreciate being made to think.

</comment></comment></comment><comment><USER8> The discussion of risk is interesting. It is not uncommon for small farms with one or a few crops or animal species to have an annual net income which varies considerably from year to year depending on weather, disease, pests, market prices, and the cost of inputs such as fuel, fertilizer, etc. Small farmers have to tolerate variations in income greater than most salaried city dwellers.

The risks and consequent variations can be reduced by increasing scale, diversifying crops and animal husbandry, and by using financial tools, such as futures.

The history of economic development follows this trend even more so over the centuries. Business units become larger, technological processes more diverse and complex, and financial tools are created to smooth out variations in growth.

Thus, short term risks are reduced and mild adversities are avoided, but this comes at the cost of increasing long term risks and great catastrophes. Ultimately, global warming may put an end to this strategy.

<comment><USER9> I'm not sure it's right to see this as a cost. Natural famines were themselves long-term risks and great catastrophes - every premodern state lived with the knowledge that, if the weather turned bad, they might suddenly run out of food and lose a tenth or more of their population. As far as I know, none of modern farming's tail risks approach that scale of disaster.

</comment></comment><comment><USER10> > a meal ... consisted mostly of bread

This might be pendantic, but wasn't gruel ([1]) consumed more often than bread?

[1] - [https://en.wikipedia.org/wiki/Gruel](https://en.wikipedia.org/wiki/Gruel)

<comment><USER11> The hard answer is that the historic record does not allow for a comparison between staples in absolute numbers. What we can establish from archaeological finds and historic sources is that bread has been a staple food throughout history. That doesn't exclude anything else: Quotidian Roman cuisine, for instance, is quite rich and diverse. Gruel was definitely something that people ate, depending on the context (demographic, location, time).

Within historical research, uncovering old or ancient recipes and meals, and trying to remake them today is a proper niche. There are a number of good cookbooks that allow you to try it for yourself. Alternatively, you'll find plenty of inspiration on YouTube.

<comment><USER7> It is also becoming clear that bread has come after beer, which has come after gruel.

The theory is that gruel from wild grains came first, where soaking them helped to soften them up for consumption. Leaving gruel sit there in certain conditions starts fermentation, so beer making probably followed closely after. There is evidence that larger scale cultivation of grains precedes bread, so it is an interesting thought that we owe the switch to (semi-)sedentary lifestyles to beer ;) It takes quite a bit of grains to produce bread, so it makes sense that bread was only developed once there was a large amount or surplus of grains available.

</comment></comment></comment><comment><USER12> Great article, really nice style of writing. I found many points on farming strategy and risk mitigation to be the ones frequently brought up by Nassim Taleb in his blog posts and book: hedging trough diversity and avoiding optimization

</comment><comment><USER13> You know you are in too deep when you thought this was about a specific app.</comment>


Mark Hamill Became the Most Sought-After Villainous Voice in Hollywood - <AUTHOR> https://www.theringer.com/movies/2019/6/21/18692782/mark-hamill-childs-play-chucky-voice-actor-batman-joker-animated-series <comment><USER2> I love this man! I only wish he and Kevin Conroy would work together more!</comment>


Ask HN: Rideshare's obligations to notify passengers of C-19 affected drivers - <AUTHOR> <comment><AUTHOR> Lyft: If we are notified of a rider or driver testing positive for COVID-19, they will be temporarily suspended from using Lyft until they are medically cleared. In this event, we will also follow guidance from the CDC and local health officials to identify other individuals who may have been impacted. [https://www.lyft.com/safety/coronavirus#faq](https://www.lyft.com/safety/coronavirus#faq)

Uber: We have a team available 24/7 to support public health authorities in their response to the epidemic. Working with them, we may temporarily suspend the accounts of riders or drivers confirmed to have contracted or been exposed to COVID‑19. We're also consulting with an epidemiologist to make sure our efforts as a company are grounded in medical advice [https://www.uber.com/us/en/coronavirus/](https://www.uber.com/us/en/coronavirus/)

One is not like the other</comment>


Show HN: Bitterness – Personalized Pranks Delivered - <AUTHOR> http://www.sweetnessapp.com/bitterness

<comment><AUTHOR> Would love to hear any feedback.

We want to help folks have some fun in SF this April Fools' Day. Give it a shot - it's totally free. Happy to answer any questions as well.

<comment><USER2> april fools! check your hawaii image

<comment><AUTHOR> Good catch...working on the edit!

<comment><USER2> also how do i get to your normal gifts or are the bitterness ones all that you're running now

 _edit nvm i saw your reply below. i think i ordered a product? is there a confirmation somewhere?

_ edit edit i got the email awesome! you guys should do some sort of order history list in the app

<comment><AUTHOR> You should have received a confirmation email. We would have sent the recipient an email asking them to setup their gift delivery (i.e., let us know the place and time they want their gift delivered). If you didn't get a confirm email, just shoot us a note at firstname.lastname@example.com and we'll take care of it.

Normal gifts will be back in play on Wednesday!

</comment></comment></comment></comment></comment><comment><USER3> It's hard not to laugh when making the video. I can't wait until I get the results.

<comment><AUTHOR> Gotta keep a straight face :)

</comment></comment><comment><USER4> I think this is a great idea and have some folks that I am going to try this on.

<comment><AUTHOR> Awesome. Yea, give it a shot. Would love to hear your thoughts and learn about how your recipient reacted.

Super pumped for 4/1.

</comment></comment><comment><USER5> Hmm this could be neat. What's the limit of things you'd deliver?

<comment><AUTHOR> Right now for 4/1, we're just doing the 3 pranks. Everything is pretty much a gift box + cookie + envelope containing the custom photoshopped eTicket/reservation.

But this is for fun. After this week, we'll get back to building Sweetness [http://www.sweetnessapp.com](http://www.sweetnessapp.com)

Nonetheless, would love to hear any ideas for how we can take this to the next level for 4/1/2016.

</comment></comment><comment><USER6> this has the potential for some awesome april fools jokes. how does it get personalized though?

<comment><AUTHOR> A couple ways.

First, you get to record a video greeting card as part of the flow. This allows you to really sell your recipient/victim on the prank.

Second, we make sure that all the info is customized and specific to the recipient. If you order the airline ticket prank for example, we'll email you to get your frequent flyer numbers and stuff and make sure that we get the right legal names on the fake eTicket.

We tested it out on our wives last week. It...was...hilarious.

<comment><USER7> Your wives must be angels. #startupspouse

<comment><USER8> I tried this on my wife last week when we were testing the idea. She definitely fell for it, so she's not too happy with me at the moment. Had to beta test it on someone...</comment></comment></comment></comment>


Do notation considered harmful - jim-jim-jim https://wiki.haskell.org/Do_notation_considered_harmful <comment><AUTHOR> This is a very old opinion, and one I don't think has aged terribly well. How old? Partway down the page there's a link called "new developments" that cites GHC 6.12, a version that came out in 2009!

Some thing it cites are still reasonably true, but others are complaints that reflect the Haskell of a different era. For example, it says, "Even more unfortunate, the applicative functors were introduced to Haskell's standard libraries only after monads and arrows, thus many types are instances of Monad and Arrow classes, but not as many are instances of Applicative." This has not been true for about half a decade, when Applicative was made a superclass of Monad. The article follows with: "There is no special syntax for applicative functors because it is hardly necessary." This is also no longer true, since the introduction of ApplicativeDo: even if you don't like it (and I confess I'm not a huge fan of ApplicativeDo myself!) it turns out that many people do find that sugar easier to write.

However, I think the key point I'd make is: all the advantages listed here of using monad without do-notation are real in some cases, but there's nothing stopping you from _not_ using do-notation sporadically! Occasionally a snippet that uses do-notation can be made much clearer by using >>= or some other monadic function, and occasionally a snippet that uses >>= can be made much clearer by using do-notation, and I don't think there's anything inherently wrong with Haskell keeping both. To make a Python analogy: sometimes you can express a given construct more clearly with a loop than with a list comprehension, but I don't think that list comprehensions should be considered harmful: just use those tools when you need them, and don't use them when you don't need them!

<comment><USER2> > [https://gitlab.haskell.org/ghc/ghc/-/wikis/applicative- > do](https://gitlab.haskell.org/ghc/ghc/-/wikis/applicative-do)

can't help but chuckle at the accomplishment of 40 years of research in functional PL, ending up with almost C-like syntax once again.

<comment><USER3> I think there's other way of looking into this: in Haskell we have well defined semantics (when you look at function you have explicit information about what is happening) and we managed to get to familiar syntax. In C we have very messy semantics: "everything can happen everywhere". Java stays somewhere in between (though closer to C side): when you have a method in some class it most likely touches only visible methods/fields of its arguments and fields of this class (obviously there are some escape hatches like unsafePerformIO, but most of your codebase will not use this).

I believe being able to understand code on high level quickly is a good thing in engineering. Wouldn't it be nice if looking at some part of code you could say that it actually is calling microservices X, Y and Z and no other microsevices? In Haskell you could have that. I don't see any fundamental reason why such functionality couldn't be brought into an imperative language at some point (but maybe I'm ignorant about PL theory). (FWIW I don't believe in Haskell going mainstream at any point).

<comment><USER4> The do notation allows the reader to _misunderstand_ code quite deeply, contorting sound, standard and relatively simple functional programming techniques and idioms into an obfuscated and deceptive syntax that looks like something it is not.

<comment><USER5> It's just syntactic sugar for Monad functions >>= and >> How can that be deeply misunderstood?

<comment><USER6> Because it looks imperative.

<comment><USER7> Do notation is jokingly called a programmable semicolon. True, it is often used to model imperative computations with it, so that is the association people have with it. Also people come mostly from imperative backgrounds and look, we can bind something to a value. Finally something I get! And that is fine, let them play around with it like that.

But if they look closer, they find out it is not really imperative. Why is there a difference between let and bind? Why can't I reassign values. And they start to use more exotic and also more interesting monads and boom the imperative feel goes away.

For example with the interesting LogicT[1] monad. Or what about the probability monad[2]? Or the continuation monad[3]? Or the reverse state monad[4]? How imperative are those really? It really depends how you use it. And I think it adds more to the magic, that you think it is just imperative code at first, because suddenly you can create code that behave very different under various monads that represent computation models. I think that is a cool thing about this confusion.

I understand that if you are a professional that needs to get work done, it can be annoying.

[1][https://hackage.haskell.org/package/logict](https://hackage.haskell.org/package/logict) [2][https://hackage.haskell.org/package/probability](https://hackage.haskell.org/package/probability) [3][https://hackage.haskell.org/package/mtl-2.2.2/docs/Control-M...](https://hackage.haskell.org/package/mtl-2.2.2/docs/Control- Monad-Cont.html) [4][https://lukepalmer.wordpress.com/2008/08/10/mindfuck-the- rev...](https://lukepalmer.wordpress.com/2008/08/10/mindfuck-the-reverse- state-monad/)

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> In terms of pedagogy I think there's a valid argument that we shouldn't teach beginners about the do notation until they're comfortable with monads. Coming from an OO background they can grok typeclasses as interfaces quite easily, and the bind and return operations as special methods. It's probably better to use pure instead of return but that's another debate.

In the same way I never tell python beginners about list comprehensions, we just do pedestrian loops.

In both cases, as you get comfortable and learn more you'll naturally stumble across these features and a myriad of others. Once you can happily read and write both variants, it doesn't matter too much, it's really just a matter of taste. I sometimes combine both in a single expression doing stuff like this

do x <\- a >>= b ...

for x in (f(t) for t in ts if g(t)): h(x)

<comment><USER9> > do x <\- a >>= b ...

Please at least keep everything flowing in the same direction!

do x <\- b =<< a ...

</comment></comment><comment><USER10> I like that Haskell exists, but stuff like this article demonstrates why it isn't adopted widely.

Imperative programming is the most natural thing for people. "Do this, then that, then that, in that order."

Some languages take that model and run with it, and add features that are not "pure" but let people get work done. We all know which ones those are. If you work in industry they are the ones you use.

Haskell rejects the imperative model, yet it attempts to appear imperative to be palatable to more people while retaining a pure functional model under the hood. But that causes it to be criticized by the pure-minded. So who is it for?

<comment><USER11> > Imperative programming is the most natural thing for people. "Do this, then > that, then that, in that order."

No way. Have you ever mentored technical people who aren't specifically trained programmers by education?

These kinds of people will have no problem writing huge SQL queries with joins nested four levels deep, or pages and pages of declarative Pandas or R code using weird transformation and filter logic, but they'll have humongous problems understanding simple loops or variable assignment.

Another data point to consider: Excel is the most popular programming environment in the world, and it's also declarative, not imperative.

<comment><USER12> Yes, Excel and SQL are widely used by non-programmers due to some engineering quality. But whatever that quality is, Haskell (very narrowly used even by programmers) doesn't seem to share it.

<comment><USER11> I'm trying to say that whatever makes Haskell unpopular, it's not its declarative nature.

Whoever manages to make a purely declarative general-purpose programming language will be a technological superstar, because for normal non-programmer folks it would be the ideal gateway to programming.

(That said, I don't think it's possible. 'General purpose' implies some sort of Turing completeness, i.e., recursion or loops, which immediately makes it impossible to reason about in normal declarative terms.)

<comment><USER13> I think we can be a little more optimistic than that. I agree that it's probably a white whale to try to build a language which is fully declarative 100% of the time, but if we can make something that is simple and declarative 80% of the time, but falls back to something as graceful as Python for the other 20%, that may be enough to have a really big impact.

</comment></comment></comment></comment></comment><comment><USER14> > There is no special syntax for applicative functors because it is hardly > necessary. You just write

> readHeader = liftA3 Header get get get

Seeing Haskell code peppered with liftM_ and similar things is one of the main problems I have with the language. Monads (and applicatives etc.) solve a problem, one might even say that they solve it well, but I've never found that they solve it _ergonomically_.

<comment><USER15> Yes, I think you have a key point there. Using the same-ish syntax for effects as for pure code is a tricky problem of ergonomics: get it too similar/implicit, and people will be confused about when effects happen and when pure code runs. Get it too dissimilar/explicit, and it gets cumbersome to write.

I actually think do notation hits a great middle point, where it's obvious you're in effectful code, yet familiar and similar enough to pure expressions to be convenient.

</comment></comment><comment><USER16> Do-notation papers over map and bind in the same way that for-loops paper over cmp and jmp.

I do not want to go back to map and bind.

</comment><comment><USER17> Not a very compelling article.

None of the drawbacks stated are really serious issues, or issues at all. Everyone with a bit of experience will be aware of the possible drawbacks and knows how to avoid this.

Newcomers probably have other things on their mind. Their app is not going to break, because their code is somewhat clumsy.

And more importantly: do-notation is really awesome!

</comment><comment><USER18> > These misunderstandings let people write clumsy code like do putStrLn "text"

Is it really a problem that newcomers write things like that? It doesn't make the program any slower or more buggy. It's trivial for a code-reviewer to fix. If the new haskellers have hlint installed, they'll get a hint to simplify it and eventually they'll learn the idiomatic way. (And the readFile/writeFile example was just fine before being "fixed".)

<comment><USER19> For me, that's similar to writing

      if(var == true) {

      }

It's more verbose than necessary, but not wrong.

<comment> iso-8859-1 In Python and JavaScript it is also asserting the type of the thing being compared, which, I argue is better code style. It is a mess having to think about all those things being truish.

</comment></comment></comment><comment><USER20> Article says that this:

        readFile "foo" >>= writeFile "bar"

is preferable to this:

        do
          text <- readFile "foo"
          writeFile "bar" text

I don't agree. Even if a working knowledge of the monadic bind is required, the second expression is more readable to beginners and can be extended more easily to do other things.

Of course, the first expression is written in "pointfree" style, where the code is described as a composition of functions. Even if I like pointfree one liners that are clear (so depending on context), I hate pointfree style applied to entire codebases and I think it's one barrier for Haskell's adoption.

\---

Article also says: " _Newcomers might think that the order of statements determines the order of execution._ "

But that's good, because the order of statements in a "do" expression _does determine_ the order of execution. That's the whole point with monads and the "do" expression. That you can get away with applicatives instead, that's another point entirely.

Note that GHC nowadays has a language extension called "ApplicativeDo". So to take an example from the article:

        do x <- Just (3+5)
           y <- Just (5*7)
           return (x-y)

In this case you just enable " _ApplicativeDo_ " and it will magically use applicatives without changing the code.

The order of execution on the other hand will NOT matter, so you can still pretend that there's an order to it, because such code will be pure and it will not be repurposed to run in parallel or anything crazy like that, the only thing the compiler can do in such cases is to eliminate unused expressions.

Funny thing about Applicative being a super class of Monad, but "ap" / "map2" operations need to remain consistent with "bind" by law otherwise the implementation isn't valid. So it doesn't matter if the code above uses applicatives or monads, that's just an optimization, as for all practical purposes the result should be the same, order of execution included.

Of course, code using Applicative instead of Monad is more generic, since you have less restrictions, you can work with more types and the function signatures become more clear in what they do (the more abstract they are, the less they can do), so that's the primary reason for why Applicative is recommended whenever you can get away with it. No reason to bring the Monad chainsaw to the party when not needed.

<comment><USER9> > the order of statements in a "do" expression does determine the order of > execution

Not really, unless you take a very specific definition for "order of execution". There are plenty of monads where order of statements is unrelated to the order of execution, Identity, for example!

<comment><USER20> I don't agree. Bind creates a data dependence that forces an evaluation order.

        do
           x <- f
           y <- g x

No matter what Monad you're speaking of, in this expression "x" is going to be evaluated before "y", what we sometimes call a happens before relationship, because evaluating "y" depends on evaluating "x".

<comment><USER9> What are you basing your disagreement on? Can you explain to me in which sense "x" is evaluated before "y" in this example?

        {-# LANGUAGE BangPatterns #-}

        import Data.Functor.Identity
        import Debug.Trace

        f = let !_ = trace "Evaluating f" ()
            in return 1

        g x = let !_ = trace "Evaluating g" ()
              in return (x + 1)

        example :: Int
        example = runIdentity $ do
          x <- f
          y <- g x

          return y

        > example
        Evaluating g
        Evaluating f
        2

</comment></comment></comment></comment><comment><USER21> The do-notation is one of the best features of Haskell.

</comment><comment><USER22> I feel like there's so much self owning by Haskell and Lisps in making multiline statements such a chore.

Why does introducing let add indentation? I know why but it's not useful! I'm just trying to provide a name for an expression, and my pseudo code wouldn't have an indentation

Do notation is an out, but it's its own special thing. So you get people writing nomadic interfaces because it's the most syntactically convenient.

<comment><USER9> Then use {} around your binders. This sets x to 11, for example.

        x =

            let { y
                             =

           5

                ;

          z =

            6 }

                           in y

          + z

</comment></comment><comment><USER23> isn't IO inherently not functional? it's a side effect

<comment><USER24> To add to lgas' point:

The distinction between functions with side effects and descriptions of what IO will be done at run-time has many practical consequences. For example, if you execute the Haskell code

      greet name = do
        putStrLn ("Hello, " ++ name)
      repeat3 action = do
        putStrLn "Doing it thrice."
        action
        action
        action
        putStrLn "Done it thrice."
      main =
        repeat3 (greet "themagicalcake")

you get the following output:

      Doing it thrice.
      Hello, themagicalcake
      Hello, themagicalcake
      Hello, themagicalcake
      Done it thrice.

But if you execute the similar-looking Python script

      def greet(name):
        print ('Hello %s' % name)
      def repeat3(action):
        print ('Doing it thrice.')
        action()
        action()
        action()
        print ('Done it thrice.')
      if __name__ == "__main__":
        repeat3(greet('themagicalcake'))

you get

      Hello themagicalcake
      Doing it thrice.
      Traceback (most recent call last):
        File "test.py", line 10, in <module>
          repeat3(greet('themagicalcake'))
        File "test.py", line 5, in repeat3
          action()
      TypeError: 'NoneType' object is not callable

instead. The Haskell value `greet "themagicalcake"` has type `IO ()`: it is a value that describes IO to be done at runtime. In contrast, the Python value returned by the call `greet('themagicalcake')` has type `NoneType`, and this value does not describe anything. Calling `greet` itself had the side-effect of printing "Hello themagicalcake".

<comment><USER25> would this work on python?

repeat3(lambda: greet('themagicalcake'))

<comment><USER24> It would work in the sense that it would not throw an exception, but it wouldn't work the same way in every situation. Haskell's `greet "themagicalcake"` does not correspond to Python's `greet('themagicalcake')`, nor does it correspond to Python's `lambda: greet('themagicalcake')` in every situation. E.g. you can write

      main = greet "themagicalcake"

in Haskell to get a program that just prints

      Hello themagicalcake

but the Python program

      if __name__ == "__main__":
        lambda: repeat3(greet('themagicalcake'))

prints nothing.

</comment></comment></comment></comment><comment><USER26> The article is obsolete and should be deleted, there is ApplicativeDo these days.

</comment><comment><USER27> "Get" functions, too.

And type names with "state" or "metadata" in.</comment>


Tesla hit by insider saboteur who changed code, exfiltrated data - <AUTHOR> https://www.scmagazine.com/tesla-hit-by-insider-saboteur-who-changed-code-exfiltrated-data/article/774472/ <comment><USER2> Is it safe to assume that if this story is true, there will be a very public investigation and arrest? Hard to imagine a story involving corporate sabotage against a prominent American company would start and end with a leaked email to employees.</comment>


Facebook viral marketing: When and why do apps "jump the shark?" - <AUTHOR> http://andrewchen.typepad.com/andrew_chens_blog/2008/03/facebook-viral.html <comment><USER2> Great post! I think there's a lot of interesting math here that applies to a lot of businesses.

Maybe Andrew is purposefully focusing entirely on the mathematical part of the viral loop-- but I think a key missing point is user value (or the lack of it).

A great viral loop can bring in the eyeballs. Facebook apps are a great example. Ning is a great example. If a friend is using something or seemingly is advocating that I use it, I'll take a look. In the case of Facebook, I'll probably install it (as that's really the only way to take a look).

At the end of the day, the viral loop gets you sales leads (nicely qualified due to the "recommendation" implicit in the viral loop), but you have to provide value/fun to make the sale (convert the "looker" into a sustained user).

IMO, best way to pursue a business is:

1) Create something people really freakin' LOVE to use and/or something that solves a painful and pervasive problem.

2) Start honing your viral loop. Hopefully, this loop is already in your product. It's not just adding a "tell a friend" feature, so early thinking on this is critical. Andrew's previous post on this is fabulous. ([http://andrewchen.typepad.com/andrew_chens_blog/2007/09/fund...](http://andrewchen.typepad.com/andrew_chens_blog/2007/09/fundamentally-v.html))

Skip the first step (or make something that people kinda like) and you'll be left scratching your head. The only reason so many crappy FB apps have done so well is that FB stacked the cards very heavily in favor of the app makers-- it let 'em cheat. FB is rapidly closing the loopholes and making it pretty hard to succeed without having an actual product that you WANT to tell your friends about (imagine that!). In short, the party's over.

</comment><comment><USER3> Make something people want, and then keep wanting :)</comment>


Merlin Mann on Doing Creative Work - <AUTHOR> http://www.maximumfun.org/sound-young-america/maxfuncon-merlin-mann-doing-creative-work-sound-young-america <comment><USER2> I used to go see Merlin's old band "Bacon Ray" when he lived in Tallahassee. Now he's a famous productivity guru.</comment>