David Pogue: Blackberry storm downgraded to a depression - <AUTHOR> http://www.nytimes.com/2008/11/27/technology/personaltech/27pogue.html?_r=2&hp

<comment><USER2> the YC headline is 10x better than the NYT headline

</comment><comment><USER3> This is another example of how hard it is to make a good user interface.

</comment><comment><USER4> i am wondering if Blackberry made the wrong move by positioning itself as a reactor to the iphone?

what i mean is blackberry's position in the market (enterprise market anyway) has been solid and well understood (if not appreciated). for example, people (again atleast in the enterprise world anyway) wanted the keyboard and had gotten used to certain "ways" of using the blackberry..

by trying to create products to compete with the iPhone, blackberry has essentially conceded that their brand is inferior to the iPhone... this i think was unnecessary.. blackberry, with their "me too" products i think has now essentially acknowledged the iPhone as a potential player in the iphone, without actually (as yet) making a dent in the consumer market that iphone enjoys...

this is not new but amazing how it happens again and again by a big player in a certain market reacting to a potential threat..

<comment><USER5> > by trying to create products to compete with the iPhone, blackberry has > essentially conceded that their brand is inferior to the iPhone

Does this mean that Google, by creating GMail to compete with hotmail was conceding that their brand is inferior to hotmail?

<comment><USER6> I think the analogy here would be if Google had GMail, but then also decided to create another mail app that was similar to hotmail.

<comment><USER7> Hotmail's a bad comparison, because they're two products in the same market with similar features. What if Google tried to make a product that was competing with something like MobileMe, which has less features but works much nicer - and at a cost?

I think Blackberry's trying to compete with Apple was inevitable, and I think they've got some good ideas. But they're dealing with a much higher-quality competitor, in a different field. Phone manufacturers are trying to make a competing phone. They need to work on making competing mini-computers. RIM is the top smart-phone maker, but they're competing in a different (albeit overlapping) field now, and their first attempt was a dud. I think if they _didn't_ try, that Apple would (and still very well may) swamp them within a few years. So they're responding. But their first foray has been a dud.

</comment></comment></comment></comment><comment><USER8> "A BlackBerry without a keyboard is like an iPod without a scroll wheel."

Um. <http://www.apple.com/ipodtouch/>

<comment><USER9> The iPod touch isn't exactly a big seller. I don't know a single person who actually likes it. I re-gifted the one I got for Christmas last year.

My theory on the iPod touch is that it's a scheme to further cement in people's minds the association between the iPod and the iPhone. I don't think they ever expected it to be a cash cow. If they did they probably would have killed off the classic iPod. After all, Apple consistently makes products that consumers aren't necessarily clamoring for and then tells us it's exactly what we want. The iPod Touch is kind of an oddball in the iPod line and they treat it like one.

You've got the classic iPod with scroll wheel and hard drive. You've got the smaller one with scroll wheel and flash memory to compete in that market. Then there's this touch screen thing that's basically an iPhone without the phone and it's called an iPod. The capacity is low. The battery life is abysmal. It's just as big and expensive as the iPod classic. I don't have a clue what's compelling about that. But people see the iPhone and think "it's just like the new iPod only it's a phone too."

<comment><USER10> So you're a RE-GIFTER!

<comment><USER9> It's not as bad as it sounds. A friend's iPod broke and I told her she could have the Touch since I didn't like it. I went back to my old one. The best part is that a few weeks later she was like, "I really appreciate you giving me the iPod but this thing sucks." She doesn't use it anymore so I don't have a clue what happened with it. It's probably still getting passed around like it's radioactive. It's pretty bad when people won't use your product for free. :)

</comment></comment></comment></comment><comment><USER11> "Maybe R.I.M. is just overextended. After all, it has just introduced three major new phones — Flip, Bold, Storm — in two months, each with a different software edition. Quality-control problems are bound to result; the iPhone 3G went through something similar."

The simple explanation is that the consumer market is more than willing to tolerate bad quality for the latest and greatest. As everyone will remember iphone OS 2.0 shipped with many similar problems yet Apple still sold many millions of iPhone 3Gs. RIM is obviously well-aware of the issues people are having, but that won't change the fact they too will sell huge number of these this holiday season.

<comment><USER3> I don't think that the iPhone 2.0 software had "many similar problems." It had some minor ones, but nothing like what Mr. Pogue described in this article.

I have not used a Blackberry Storm, but it the article makes it clear that there are a number of fundamental problems with the user interface.

There were a few hickups, crashing, etc. with the iPhone 2.0 software, but nothing significant has changed about the UI design (only the underlying system).

<comment><USER11> What he mentions isn't fundamental, but half-baked, like not having bouncy scrolling or flicks or being laggy. Something can't be fundamentally broken if it can be fixed with a simple update in a few months. Other things he mentions are personal opinion (ie he doesn't like suretype very much) or are things present on the iPhone, for example:

"It can take two full seconds for the screen image to change when you turn it 90 degrees, three seconds for a program to appear, five seconds for a button- tap to register"

Take your iphone, open up contacts and count how many seconds it takes from the tap to being able to scroll or click. ~5s on mine, and I remember it being worse with OS 2.0. And what about switching orientations in ipod? At least a second unless it happens to get stuck and not rotate at all.

<comment><USER7> The difference here is one of perception. Apple loads their program IMAGE instantly, so it looks like things are going smoothly even when it's taking time. It was a smart move on their part.

Does rotating really have lag? It's pretty much instantaneous for me on a Touch running 2.1.

</comment></comment></comment></comment><comment><USER12> Hate to be a hater, but I don't take anything David Pogue writes too seriously. He pretends to write impartially, but he's definitely very very pro-Apple. Aside from his article about the Mobile Me fiasco, I don't think I've ever seen him write anything bad about Apple or anything nice about its competitors.

<comment><USER13> Not trying to sound like a fanboy but perhaps that's because -- aside from Apple's minor faults that any armchair critic can pick out in retrospect -- they are truly one of the few consumer technology companies driving the market forward aggressively.

<comment><USER14> Maybe it's because Jobs has a firm policy of shutting off access to anyone who reports anything bad about them. Combine that with their continuously releasing hot new products and using a humongous (and well-spent) marketing budget to whip America into a fever over them, and you've got a situation where reporters have financial incentive to be biased toward Apple. People tend to follow their incentives, and Pogue is one of them.

<comment><USER7> I know we've had this argument before, but you know, it's possible that Pogue just really likes Apple products.

For what it's worth, I've never read a review of his that didn't make good points on both sides. If Pogue's in Apple's pocket, he's doing a very good job of being fair to both sides.

<comment><USER14> I won't disagree that Pogue likes Apple products. I just disagree that it's reasonable to expect Jobs's perverse incentives to not impact journalists, or to not be suspicious of anyone that tight with them.

Any reporter given the sort of access he has is in a feedback loop where bias begets access which in turn begets bias. To pass it off as "Apple just rocks and Pogue knows it" is naive.

<comment><USER7> Suspicion is one thing. But Pogue has never played the part of the Apple fanboy. He's pretty thorough with his reviews, no matter what the product's for, and he's good at spotting the good and the bad with everything. He was the first reviewer to say he didn't like the iPhone keyboard, for instance, in his original review.

With the Storm, he's being much more dismissive than usual, hence the suspicion - but he's dealing with a product that's visually and feature-wise a direct face-off with the iPhone, only with added layers of abstraction and difficulty inherent in using the device. Pogue's very clear about all of that. To read this review and say that Pogue's being negative because of the messed- up incentives is missing that Pogue is in fact reviewing an inferior product.

I mean, I suppose there's some bias in my statement, since I _do_ trust Apple and its products, and therefore I tend to see straight in this only with people who are in a similar place. So in my mind, Pogue is only doing the logical thing when he slams down this phone as being a cheap Blackberry knock- off.

The Apple journalist deal is one that gets a bit argumentative. I think that Apple fully has the right to only give products to journalists that like Apple, and I don't think that there's a bribe inherent in that. And I know I'm in the vast minority for people that think that, too. In my mind, though, Apple gives those devices as a favor, not as a responsibility, and they are sensible when they only hand out to people that happen to like Apple. That's my inherent bias in this discussion: I think that Apple's in the clear for this.</comment></comment></comment></comment></comment></comment>


Imperial College London have released their Covid-19 epidemic simulation - <AUTHOR> https://github.com/mrc-ide/covid-sim <comment><USER2> This code is great fun. Start here to explore the horror: [https://github.com/mrc-ide/covid- sim/blob/master/src/CovidSi...](https://github.com/mrc-ide/covid- sim/blob/master/src/CovidSim.cpp)

I like the way InitModel() crashes (I think) if a global pointer called bmh (short for bitmap header) isn't first initialized by calling InitBMHead() from Bitmap.cpp. I guess it's obvious to academics with giant brains that InitModel() depends on a bitmap existing.

But it gets worse - the pointer is declared in CovidSim.cpp but Bitmap.cpp reaches across the module boundary to initialize it. Sweet.

Edit: I feel bad now. It's great that this code was made public. I should be encouraging that. I think academics writing code for things like this should probably take an undergrad course on software engineering. I think the one that taught me about Abstract Data Types would be most beneficial the author(s) of this code.

<comment><USER3> I was part of the GitHub team that helped get the code ready for public release. We fixed a few bugs, reduced memory consumption, made it portable across operating systems, etc., but the code you see is largely what was written by Neil Ferguson and his team.

Given your concerns, I would like to mention two things:

1) the code was originally a single source file, so I'm not surprised the module boundaries are imperfect - the code is many years old and the module boundaries have existed for only a few weeks.

2) this was not written by professional software engineers, but epidemiologists, and they were working with limited budget, time, and programming experience.

<comment><USER4> Epidemiologists _are_ professional software engineers, in the sense that they are paid full time to write code and summarise the output in papers. They might not be "professional" in the sense of the quality of their work but let's not kid ourselves that these people spend half their days in the lab or taking swabs from children in Beijing. Other types of researchers do that - these guys just run sims.

<comment><USER5> Academia is geared towards paper publishing, so why would they bother with code quality? Even if in the long run it would benefit them, its at best a nice to have. Most academia doesn't share code or data anyway.

It's like saying that programmers are professional English writers, so comments and such should be written in perfect English.

IMHO the only valid criticism is if the the simulation modelling is sound and implemented accurately.

<comment><USER2> Papers should not be accepted unless they are accompanied by high quality source code.

> IMHO the only valid criticism is if the the simulation modelling is sound > and implemented accurately.

I think the best way to tell if it is sound and implemented accurately is to first require that it is implemented as simply (to understand) as it can be. Even then, it is hard to reason about code. But without simplicity, the problem is ten times worse.

I'm tempted to go further and say that source code is formalized thought. I've written a number of simulators in the past, sometimes purely to help me understand a system more fully. There's something beautiful about describing the behaviour of a system in elegant code. When there's nothing left to remove I get much greater confidence that I've fully groked the system. I'd say this is the area where the "computers are like a bicycle for the mind" quote is the most true.

</comment></comment></comment></comment></comment><comment><USER6> Interesting tidbit for HN, Jobn Carmack helped a little with this project apparently [https://twitter.com/ID_AA_Carmack/status/1254872368763277313](https://twitter.com/ID_AA_Carmack/status/1254872368763277313)

<comment><USER7> Yeah and he said that code is fine so I am trusting him.

</comment></comment><comment><USER8> Some people have raised issues with the model[1][2], or rather, the software implementation of it.

There's also a (flagged) submission on HN discussing this[3] referencing [1].

[1] (warning: possibly partisan link) [https://lockdownsceptics.org/code- review-of-fergusons-model/](https://lockdownsceptics.org/code-review-of- fergusons-model/)

[2] [https://github.com/mrc-ide/covid-sim/issues/165](https://github.com/mrc- ide/covid-sim/issues/165)

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

<comment><USER9> That issue is unhelpful. Yes, no good tests, but how about suggesting ways it can actually be improved? Why are devs such bores when it comes to things like this? They have released the model, review it and suggest improvements! Don't grandstand "We, the undersigned etc etc" as if that's going to help improve the codebase in the slightest.

Carmack is OK with it, he's put his name to reviewing it. That's not to excuse the bad testing, but he hasn't thrown his hands up and run away. He worked with them constructively to make it possible for us to even see it! Be more like Carmack.

EDIT: Also be like this person: [https://github.com/mrc-ide/covid- sim/issues/161](https://github.com/mrc-ide/covid-sim/issues/161) Helpful, constructive and the developers engaged with them.

<comment><USER10> I fear that this area is too divisive currently to allow for normal discourse. The downvoting in these kinds of topics have been atrocious on hacker News the last few weeks.

<comment><USER11> HN is one of the increasing fewer places online where covid19 deniers can congregate.

<comment><USER8> I personally don't like much the term "deniers", because there are a lot of unknowns on this virus and what it does, and there is no agreement on many fronts.

Also, doing these generalizations groups together people with very questionable theories ("It's the 5G") with others that have more nuanced criticism.

Personally (and yes, I am a scientist) try to look up whatever is said in the media, either by journalists or experts, no matter if the results end up matching 100% what it is said (often it is less, and on some cases there is no match).

I think there should be fairly high standards of scientific rigor even in published code, especially if this might impact public policy actions, like we should expect high rigor in biological and epidemiological studies.

<comment><USER11> I started using the term deniers because all of them are studiously ignoring something that doesn't pencil out. It doesn't matter if they are loony deniers, sciency deniers, I have a big brain tech bro deniers. The result is all the same. Garbage.

Dangerous garbage.

</comment></comment></comment></comment></comment></comment><comment><USER12> Honestly this is kind of sad. I can't understand how someone can have the gall to use any results from this spaghetti code in a scientific paper, let alone one that changes a country's entire strategy.

<comment><USER13> I'll be "that guy" and point out we know the climate simulations have similar issues.

</comment></comment><comment><USER14> I'm no expert in C++ so not sure if it's meant to look like that, but that code is making my brain hurt.

<comment><USER15> Just argument parsing makes my eyes bleed...

[https://github.com/mrc-ide/covid- sim/blob/master/src/CovidSi...](https://github.com/mrc-ide/covid- sim/blob/master/src/CovidSim.cpp#L146)

That stuff is priceless:

else if (argv[i][1] == 'C' && argv[i][2] == 'L' && argv[i][3] == 'P' && argv[i][4] == '1' && argv[i][5] == ':')

I guess string comparisons are complicated. I also fail to see why they used ':' as the separator and why they didn't use a proper library to parse argv...

<comment><USER16> Because when you have only a very limited number of arguments it's easier to do it that way than selecting a lib, adding it to the project, reading the doc, trying it and integrating it for real. I add the issue in C#, and after trying 2 or 3 libs (including one by Microsoft) I just gave up.

<comment><USER15> I hear you but in their case they have more than 130 LOC to parse ARGV. Doing all that manually hurts both code readability and maintainability.

<comment><USER14> Having seen a discussion about this on a different forum, someone who used to work in academia mentioned that repeatability and consistency are key to academic code, which means often readability and convention may get sacrificed - it works for the author and if someone wants to repeat the experiment it should get the same results without wangling around with many external packages or modules that may change or become obsolete.

Still hurts to read though :P

<comment><USER16> Yep. Also, speaking from academic point of view, code won't make you advance on your career by itself (only papers based on it will), so the minimum is done until the thing is usable for its goal. So forget about CI/CD, proper test suits, documentation (I hate this point personally and document my projects a bit more than the average researcher) and engineering best practices.

<comment><USER13> Then public policy should heavily discount results based on academic code, if it shown to be poorly engineered. I'd go further and say you can't trust the papers based on the results of badly engineered simulations. As a poster said earlier "I think there should be fairly high standards of scientific rigor even in published code, especially if this might impact public policy actions, like we should expect high rigor in biological and epidemiological studies."

<comment><USER14> ...what do you think those biological and epidemiological studies hinge on? ;)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> If this has been flagged off the front page I despair for HN. This should be an apex story for us: open source release of a computer model that has incredible relevance to loads of people globally. Quite sad.

<comment><AUTHOR> I'm pretty sure it was. It was at number four and rising then suddenly dropped to the bottom of the front page before vanishing.

</comment></comment><comment><USER17> Alumnus here, it's Imperial College, London. It is a university (in its own right), but always goes by that name.

<comment><USER18> Only since 2007. Uni of London before that for 100 years. Used to play them at sports as part of the ULU league.

<comment><USER19> No, Imperial's royal charter (what's needed to be 'a university' and award degrees in your own right) dates to 1907. I believe that's true of most of UoL's constituents, just not the smaller ones perhaps like SOAS or other field-focused colleges.

</comment></comment></comment><comment><USER20> I guess confidence really is key when making code public...

</comment><comment><USER21> For a long time academics would only publish formulas and results as part of their papers - omitting source code and arguing that 'the formulas are the only thing that matter'.

Perhaps the real reason is the code typically smells of Swiss cheese.

From now on I vow to trust NO academic results of computer models unless source code is published along with instructions on how to reproduce outputs (or at least similar output!)

</comment><comment><USER22> .

<comment><USER23> _> Its results is as useful as simcity is for mayors._

I bet the quality of local administration would go through the roof if all mayoral candidates were forced to be proficient at SimCity.

</comment></comment><comment><USER24> Is this thing actually being used for policy decisions?

Given the complexity, poor language/framework choice (should have used either Rust or Tensorflow), bad code design, and unclear determination of the parameters (especially the fact they don't seem to be estimated from real data with Bayesian inference, or if they are they didn't release that), as well as the ludicrous CPU and RAM usage making it impossible for most people to run it and thus check it, it doesn't seem like it has any chance of actually being a good model.

If this is the state of the art for the most important statistical modelling project in the world, we are in the dark ages.

<comment><AUTHOR> It's 13+ years old. There was no Rust or Tensorflow when it was originally produced.

<comment><USER25> 13+ years ago the same academic modeler predicted 200 million deaths from a bird flu outbreak that killed 282 people in total.[1]. That's a pretty enormous error-- alarmist publicity-seeking behavior then and now, but the damage was felt more acutely now. If this modeler really wanted a competent simulation it would have been better constructed. That it was not well- constructed is another datapoint indicating how egregious the error was on the part of the goverment in failing to properly vet it.

[1].[https://www.express.co.uk/comment/columnists/frederick- forsy...](https://www.express.co.uk/comment/columnists/frederick- forsyth/1270245/coronavirus-neil-ferguson-sars-bird-flu-deaths)

<comment><USER26> That's an amazingly disingenuous comment.

[https://www.theguardian.com/world/2005/sep/30/birdflu.jamess...](https://www.theguardian.com/world/2005/sep/30/birdflu.jamessturcke)

He said that if it was the same as the 1918 flu, you could probably scale it up to 200M people. He didn't _predict_ 200M, he speculated that it could be that bad.

And he wasn't alone - "A global influenza pandemic is imminent and will kill up to 150 million people" said "David Nabarro, one of the most senior public health experts at the World Health Organisation"

"A Department of Health contingency plan states anywhere that there could be between 21,500 and 709,000 deaths in Britain."

An unnamed WHO spokeswoman said "best case scenario" would be 7.4 million deaths globally.

[https://www.newscientist.com/article/dn7787-flu-pandemic- let...](https://www.newscientist.com/article/dn7787-flu-pandemic-lethal-yet- preventable/)

"And yet, the models show, if targeted action is taken within a critical three-week window, an outbreak could be limited to fewer than 100 individuals within two months."

Oh, he also showed how to react and keep the number of casualties to a minimum.

Don't believe what you read in dirt rags.</comment></comment></comment></comment>


Show HN: Gmail Plugin That Makes Up for What Rapportive Users Lost - <AUTHOR> http://bindlix.com/ <comment><USER2> What am I looking at? There is zero information at that link. There's the contextless, meaningless text "all data in one place," a incomprehensible screenshot of a Google page with all text marked out, text asking me to sign up despite no sign-up link being present, and finally an offsite link to a Chrome plugin.

The plugin page finally seems to have some actual information. Why didn't you link to that instead?

</comment><comment><USER3> I like the popup that I get that asks me for an email so that I can be notified when this is released. It won't accept an email address. Finally went over to the Chrome store and got a lot more info, but I'm not sure I trust it enough to install it.

</comment><comment><USER4> Why would I trust a random site to see my emails?

</comment><comment><USER5> If you wanna build something similar, you can use clearbit.com for getting lots of data from just an email address.</comment>


Continuous map of parks/forests in each state, with trip reports. - <AUTHOR> http://www.trailbehind.com/state/California/

<comment><AUTHOR> I've posted the site here before, but I thought I'd share the state-based pages. You can also narrow the state by activity, though we have mostly hiking stuff right now:

<http://www.trailbehind.com/state/Minnesota/hiking/>

<http://www.trailbehind.com/state/Colorado/biking/>

<http://www.trailbehind.com/state/Texas/camping/>

<http://www.trailbehind.com/state/New%20York/climbing/></comment>


Adobe Updates Flash Builder and Flex to Support Building iOS Applications - <AUTHOR> http://blogs.adobe.com/flashplatform/2011/06/build-mobile-apps-for-android-devices-blackberry-playbook-iphone-and-ipad-today.html

<comment><USER2> I don't know the specific tech that Adobe is using, but I'd look pretty carefully at the technology before committing to a platform like this as a true cross-platform development environment. "Cross-platform" can mean lots of different things.

We had a native app developed in Android. When we decided to create an iOS version, we selected Appcelerator after reviewing a few different options and seeing what we perceived to be good adoption of Appcelerator (and after talking to another firm that chose the same thing). And, we (mistakenly) thought that it's "generating native code", so, if anything goes wrong, we can always debug in the Objective-C. Right?

Wrong.

About 6 weeks into the development process, we were doing a round of testing to get a version out to Beta testers and found that we simply couldn't debug the code and get it to 100% stable. That's when we dug deeper (yes, a bit late for that...) and found that Appcelerator is essentially a VM running on top of the native stack. So crashes get logged to the same few lines of Appcelerator interpreter code--which is pretty much useless for debugging. For prototyping, it's great, but for production quality code, I would say stay away.

Shortly before we finalized this decision, we reached back out to the other firm whom we had originally spoken to before making the Appcelerator decision. They told us that they were in the same spot and had just made the decision to move off Appcelerator a couple days previous--for the same reason: stability and lag issues and no way to get to zero defects.

We moved to native Objective-C and the dev team is much happier. Crashes have full stack traces and we can identify exactly what to fix.

We got some benefit out of Appcelerator because the second round of development took less time, but given the choice (and knowing that we weren't just prototyping--we had a native Android app and we were generally happy with the screen flows) we would have gone native to begin with.

<comment><USER3> Interesting. I thought Apple didn't allow VM's running on top of iOS.

<comment><AUTHOR> I believe the change in policy was that you can now implement VMs/scripting engines but that /all/ of the bytecode/code that will run on them must be packaged within the app (i.e. you can't download more code to run dynamically).

</comment></comment></comment><comment><USER4> I've been working with Flex for the last few months, and I keep feeling that "great" is not in Adobe's DNA. Adobe's DNA seems to be "Features! Features! Features! Good Enough Features!"

I would kill for Adobe to go into each of their development tools and products and spend a year without adding a single feature - instead, they just obsessively make existing features better. Faster. Easier to use. Can anyone mention an Adobe product they love? That they wouldn't like to see a more elegant replacement? I include Photoshop and Illustrator in here, by far their two best products.

Okay, so I'd like to also see a Flex->HTML5 builder, but if and only if it can match the speed of their current solution. (And I'm sure they're working on it.)

<comment><USER5> I've been a Flex developer for the last few years and you couldn't be more right. Every time I dig deep into the framework and find something that doesn't work I get the feeling some Adobe engineer knew it was broken but their manager told them ship anyway.

My favorite lately was an Adobe plugin for Photoshop to export FXG files (FXG is Adobe's SVG used to build Flex graphics). If you run the script it doesn't even preserve text layers, it turns them into bitmaps instead. I could write that script in an hour, why even bother releasing it as a half baked feature?

</comment></comment><comment><USER6> If you want to build a native app, use the native development tools. I've yet to see a third-party platform that offers 'support for building iOS apps' result in good user experiences and positive reviews. Take these, from Conqu for iPad (built with Flash Builder/Flex)[1], for example:

"App looks nice when it finally loads. Every function has a serious time lag that makes the app unusable."

"However, be warned, this app is painfully s-l-o-w -- at least for me. So slow it has been placed in the "tried apps" bin."

[1]: <http://itunes.apple.com/us/app/conqu/id440591468?mt=8>

<comment><USER7> Someone decided to release these apps in that state, and it wasn't Adobe. Furthermore, it was Apple's vaunted review process that passed these badly working apps.

<comment><USER6> Yet Adobe _has_ decided to feature 'badly working' apps in their showcase to display what's possible with their tools.

My interpretation as a developer considering their software to build iOS apps is that the apps in their showcase are indicative of what I'd be able to produce for iOS with Flash Builder/Flex.

</comment></comment></comment><comment><USER8> Yet another iOS builder....when will this end ? At the moment the only reliable solution I see for building native apps without messing with ObjC is (maybe) the future Macruby project. All these other solutions are just wrong, and should end.

No matter how good they are they will always be one, two steps behind native apps. It will be either for lack of documentation or unsupported new iOs features etc..

To be honest, I'd rather build a web app for iPhone than use this stuff. At least I'm being honest to my users and I'm not delivering crappy apps to them. I mean, I understand why we need a standard tool, but this is the way to go, running apps on top of VM is crap.

Sorry Adobe, not this time.

Edit: also, is really that hard to learn ObjC ? I find it to be a very easy language to learn to be honest. Not the most pretty syntax, but it's easy.

<comment><USER9> Firstly, i'm going to agree with you - Yes, ObjC isn't that hard to learn and people intending to distribute apps on the App Store really have no excuse for not using it. If you want to use new features (Game Center, Notifications, etc.) there is no better way.

Now I have to disagree with you... There is a use case for tools like this, for me anyway - building small one off demo and kiosk type applications. I built a "small" app for a customer the other day which was a menu with 7 or 8 videos linked from it and transitions between the menu and videos., with some logging to say how many times people had viewed each video. Building this natively in iOS meant messing with all sorts of API's, handling multiple different scenarios that I really didn't and shouldn't need to care about and generally consuming far too much of my time and the client's money.

Building the same application previously in Flex took me all of about 5 minutes and I suffered no performance issues whatsoever. If Adobe can deliver me a tool to do the same on the iPad/iPhone, both myself and my clients will be a lot happier for it.

Don't get me wrong, i'll still need to heavily weigh up what tool to use in more complicated scenarios, but if Adobe can give me something to save time on the smaller jobs (and it works), i'll take it.

</comment></comment><comment><USER10> Didn't Adobe try something like this already, and Apple changed their policies to ban apps that used cross compiled code? Did Apple change their policies to allow this kind of tool after all, or is this somehow different from last time?

<comment><USER11> Apple went back on that policy some time ago.

[http://www.techrepublic.com/blog/programming-and- development...](http://www.techrepublic.com/blog/programming-and- development/apple-relaxes-restrictions-on-third-party-tools/3119)

</comment></comment><comment><USER12> In the video: Did they actually speed up the "close up" recording to make the applications seem faster?

They let audio track continue at regular speed, but the hand movements seem to be at about 150% ... ouch

<comment><USER13> I don't think so - I think the guy is just wired on caffeine :-)

Watch his hand movements when he's on screen - pretty frenetic IMO

</comment></comment><comment><USER3> Although, native apps will likely always perform better, I think this is a step in the direction for small companies and startups that don't have the resources to build and support mobile applications for all platforms. As mobile platforms continue to evolve and change rapidly, the task continues to get more complex.

Since Adobe has the resources and a strong vested interest in securing a future for their Flash ecosystem, it will be very interesting to see how their tools evolve over time. The market opportunity for tools supporting write once, run anywhere mobile apps as well as tools for HTML5, Canvas, SVG and WebGL development is clearly growing and Adobe is one of the few companies capable of delivering this on a large scale. The question now is ... will they do it?

</comment><comment><USER14> You know I find that it is incredibly useful to use cross platform tools or something like Appcelerator to test a proof of concept in the marketplace, but in the long haul, it is a tradeoff and if you want certain features to work right, you have to either be content waiting for the 3rd party platform to support them, or you need to go native.

In general, there is nothing wrong with the strategy of build a basic v 1.0 proof of concept to see if it connects with a market and then rebuild it on a native codebase. On the other hand, if you are a good enough developer, you can probably skip this step and just start native, but that certainly isn't the case for everybody.

Looking at Flash in this prism of being a cheap prototyping tool is a reasonable way to look at things. Looking at it as a be-all-end-all platform is a bit foolish, but most reasonable people outside of Adobe aren't that foolish.

</comment><comment><USER15> The combination of a steep learning curve (probably easier than ObjC but not by much) plus the less than robust support for all of iOS features still makes me prefer native. Make something as easy and simple as JQuery, and make it 95% robust and I'll switch from native in a heartbeat.</comment>


Mt. Gox users can now log in to check balance - <AUTHOR> http://www.mygox.com/#balance

<comment><USER2> Is this a phishing site?</comment>


Happy Birthday Donald - <AUTHOR> https://github.com/dogeared/happy-birthday-donald <comment><USER2> Whilst I can definitely see the attraction for spamming Trump's feed with pictures of Obama, what are twitter's TOS on things like this? Isn't it a bit...childish?</comment>


Mathematics I Use (2012) - <AUTHOR> http://pub.gajendra.net/2012/10/mathematics_i_use <comment><USER2> I would say almost half the performance problems I have seen developers and devops managers run into over the last 5-6 years could have been avoided with a bit of front loaded queueing theory.

When you are doing microservice orchestrations, using an enterprise service bus or a pubsub, or doing multiple asynchronous operations, small delays multiply through the system. Spending a day to model your solution as a queue will give you some ballpark tolerances for lag, queue size, and in particular, RTT through the service.

Doing microservice architectures takes a lot of the logic of the problems solved decades ago on the network layer and reinstantiates them at application service layers without those solutions. Request TTL, state, queue flushing, retransmission, shortest path, service availability, 'ping', 'traceroute', etc.

If one service crashes, and requests start piling up, you need to clear that queue, and oftentimes your solution isn't built to clear that queue while more requests are coming in and your cache overflows because "keeping state is a next order complexity problem that wasn't specified in the user story." There is an assumption you can just horizontally scale your way out, which has significant compute and administrative costs. I suspect AWS makes a lot of its money as a direct result of those assumptions.

Not saying someone needs to be doing new proofs, but some forethought using a handwavy abstraction might provide some insight into the needs of the system under load.

<comment><USER3> There's a good book for this if anybody is interested [http://www.cs.cmu.edu/~harchol/PerformanceModeling/book.html](http://www.cs.cmu.edu/~harchol/PerformanceModeling/book.html)

<comment><USER4> Good book? Are you sure? This is a terrible book on performance... It begins with the classic: "this book will make readers pass the first chapter, because it contains simple explanations for performance phenomena..." \--> then, by chapter 2 _everybody_ is completely lost about the subject... again......... :(

Edit: this book is currently sitting on my shelf collecting random particles of dust (for 4 years...).

<comment><USER3> There's many other books[1] on queuing theory if you want, I liked the Harchol-Balter book because of the exercises [1][https://web2.uwindsor.ca/math/hlynka/qbook.html](https://web2.uwindsor.ca/math/hlynka/qbook.html)

</comment></comment></comment></comment><comment><USER5> I feel like you have to know a little bit about a lot of things. Like, yeah, you have to have a basic understanding of SOME graph theory when programming computers, but you don't really need anything too advanced. Yes, I guess you need to understand SOME category theory to be able to use advanced typing systems effectively, but it's a very surface level understanding of a very deep field. Same thing with most of the other fields mentioned.

One thing that wasn't mentioned: if you're doing any kind of graphics programming, you use a huge amount of basic linear algebra every day. Vectors, matrices, dot/cross products, affine transforms, spaces and subspaces, that kind of thing. If you're doing more advanced stuff, a working knowledge of how to solve large linear systems (i.e. things like Gauss-Seidel/Jacobi methods) and the physics of light transmission is also useful. If you're doing physics simulations, obviously you need a working familiarity with calculus.

Again, though, all of these things are massively deep fields that people dedicate their lives to understanding, but as a programmer you just need to skim the surface, generally speaking.

<comment><USER6> And yet I'm constantly surprised by people knowing nothing of set theory. Occasionally someone who doesn't know logic (evidenced by nasty, over- complicated Boolean logic)

Or my current favorite: a very senior and very optimistic person who apparently doesn't believe in decidability, the halting problem, or NP completeness.

<comment><USER7> Like, they think computers are just invincible problem solvers, or can't even really comprehend the question? I can't grok what it means to not believe in NP completeness.

<comment><USER6> That developers can do anything if we stop complaining and get to work.

No, in fact we've proven there are a lot of things we can't do, and oceans of things that are theoretically possible but completely impractical to do (another class of people mistake intractable for impossible, but for small enough N sometimes it is both possible and worthwhile).

</comment></comment></comment></comment><comment><USER8> You don't need much mathematical knowledge to _merely_ be productive, but his points are valid.

1) The more math I learn, the more I realize how much I'm already doing it (via poor heuristics) without realizing it.

2) Mathematical training comes with many tools I would never think to Google without prior introduction. For instance, I sometimes use Karnaugh maps to simplify complex boolean logic. I'm sure there are many areas where I re- invent the wheel, miss simpler solutions, and generally produce less quality because I'm ignorant of the surrounding mathematical context.

<comment><USER9> This. I believe we are ripe for another leap in math education, or at least computer science education. A new approach to teaching that in a generation will make current methods looks like rhetorical algebra.

I think this is a great example: [https://github.com/Jam3/math-as- code](https://github.com/Jam3/math-as-code)

That page is a sort of rosetta stone for me after years of learning to code while also struggling with math notation. I find a similar fog lifts when I look at set theory through the lens of SQL and relation databases.

It amazes me that we still can't clearly demonstrate to children why math is important and instantly and universally instill a love and curiosity. Instead we have unforgiving educational models that are "well, you either get it or you don't."

It angers me to think of all the potentially _effective_ programmers who get their dreams squashed because they can't pass Calculus II (or other prereq.), and thus are literally not allowed to enroll in a programming course.

I didn't know about Karnaugh Maps but I use truth tables constantly in the design phase of tasks. Thank you very much for this. If you've found other tools like this please share. Not really related but for requirements I find gap and SWOT analysis to be vital tools as well as weighted pairwise comparisons. Throw in some UML diagrams and I start feeling good about things. These things impress far more people than they should.

</rant>

</comment></comment><comment><USER10> As someone who has spent most of his adult life recovering from a math phobia (due largely to poor teachers in middle and high school) and enjoys programming as a hobby, had I read this article when I was exploring whether or not I had the aptitude/background for programming this would have turned me off entirely.

I agree with the others that this article seems to overstate the requirements.

<comment><USER11> So, are you still afraid of math?

<comment><USER10> No. Post-college, I didn't need it for my job and I discovered programming - at least at the level that I was enjoying it - was as much, if not more, about logic and breaking problems into pieces. Despite that my lack of math ability felt increasingly like an albatross around my neck. In the same way that one might feel they're missing out by not studying history.

It was only after coming across a quote from Charles Darwin where he mentioned that one of his regrets was that he didn't study math more thoroughly. And that because of that there were entire "conversations" he was missing out on. For some reason I found that both liberating and motivating.

"Me and Charles Darwin, we're not so different you and I." ;-)

</comment></comment></comment><comment><USER12> This is a very well written post, in the sense that much of what he mentions is central to programming. But there's also a Zadeh's principle to mathematics -- when you have measure theory suddenly everything is a change of measure.

And I mean, this is great. "Diversity in tech" should be more like "people who are into analysis, topology" versus "people who are into algebra and cat theory" etc. There are many different ways to skin problem spaces into mental models and coding styles.

</comment><comment><USER13> A good programmer may use many of these types of math without even knowing the formal names.

Sometimes knowing the formalism helps a lot, sometimes it doesn't add much. Some people overly obsess with formalisms and some people are overly adverse to them.

I do find people who need to over-formalize everything to be annoyingly pedantic.

</comment><comment><USER14> For whatever reason, the link does not work for me. Google's cache doesn't seem to provide a copy, so here's one from the Wayback Machine:

[https://web.archive.org/web/20180420113021/http://pub.gajend...](https://web.archive.org/web/20180420113021/http://pub.gajendra.net/2012/10/mathematics_i_use)

To the topic, I think this quote from the article is very important to note here: _"Of course, I do not do all of this every day, but I have done all of it at one time or another and most of it regularly."_

It is nice to have an idea of how you write a parser for a language, but I do not believe the author advocates for being able to write one of the top of your head. Same with most other points.

</comment><comment><USER15> I think if you're a programmer wondering what math will help you in your career, which is the question this article is trying to answer, this article is misleading.

Most working programmers won't have to know any math beyond arithmetic.

For instance,

"Also, how does one distribute a large computation across globally distributed data centers? You have to understand some physics to do this well: at Internet scale, the speed of light starts to be a bottleneck. Heat dissipation, density of electrical current draw per unit area, etc, are all real world considerations that go into what programmers do"

Come on, let's be real. In grade school we learned that light goes around the earth 8 times a second. That means 1/16 of a second (63ms) to go around to the other side of the world. That doesn't set a useful lower bound since this is the ballpark of latency within a country anyway. You're just going to ping between the two servers and measure the latency.

That being said, programming could in theory require _any_ kind of math. If you're doing machine learning, you'll need to understand statistics. If you're doing graphics programming, you'll need to understand trigonometry, linear algebra, etc.

If you're writing software for the medical industry you'll presumably have to understand a little bit about how that industry works, but I wouldn't suggest programmers go learn that just for the sake of improving their "general" programming skills.

Here's a more realistic take:

1) Learn math as necessary for a field you're interested in

2) Know binary and hexadecimal representations of numbers.

3) If you're going to use a lower-level language, understand how signed/unsigned arithmetic works, boolean algebra, and some basics of the floating point representation (in a nutshell, don't assume that computations are exact, so don't rely on equality (==)).

4) Understand time and space complexity. For most programmers, this is going to be simple: don't nest too many for-loops. I'm guessing 90% of programmers will never have to construct an algorithm whose complexity involves a logarithmic function, except for maybe binary search. Even then, most programmers will rely on libraries to do those things.

5) Be able to do back of the envelope calculations, and understand that order of magnitude is more important than exact numbers. Try to do them in your head so you can quickly evaluate possibilities.

6) Increasingly, statistics and machine learning are becoming important for programmers to know. Learn some basic statistics and it will make you much more desirable. Play around with R or Octave or numpy and don't make the mistake of applying too much statistics without thinking, unless you're in the marketing department.

<comment><USER16> Programmers use tons of math, they just don't recognize it. Partially because you can still come out of even a bachelor's program in computer science and still think "math is just about numbers", but some of it is also just excessive familiarity and not realizing the easy things that you're doing that are actually mathematical because school trained you that Math must be Hard and you have to be Sitting There and Thinking Very Hard or you're not Doing Math.

Every day I'm using mathematical reasoning such as "I reached this line of code, and since this is a structured program I am guaranteed that this variable was initialized by the time I got here", "this function can only return either a non-empty string XOR an error and has nowhere it can throw an exception so if I handle those two cases I have fully handled everything this function can do", "the error string has the username in it, and values like that must come from somewhere, so even though I've been looking for an hour and can't find it, mathematically the thing generating the error message must have access to the username", "if I construct this as a pure function that does no IO, on the flip side, no users of this function will have to worry about what errors could arise during IO, reducing the mathematical cognitive load of using this function for users".

Then you start stringing together those steps by the dozens and hundreds and thousands and millions (and you get qualitative differences there too, but those don't fit into a little post like this anywhere near as well), and you can build software.

You don't have to realize you're reasoning mathematically (proof: look around), but you're leaving useful tools in the toolchest if you don't. Even if you won't believe me about building systems this way, I can assure you those magical stories about people who can _debug_ systems at a glance that have defeated others for hours or days comes back to someone who either formally or by experience has a fairly mathematical understanding of the system in question and was able to apply some sort of logic, even if only intuitively, to arrive at that conclusion.

<comment><USER17> But that's mostly logic, at best mathematical logic. I don't think anyone formally reasons when writing code anyway, we mostly rely on intuition. Maths isn't about numbers but it's not about intuition neither.

Programmers doing actual math would be modeling problems and creating proofs for their solutions. Usually we clasify those problems based on the field of math we use to model them.

Saying we do tons of math implies we use a lot of knowledge from a lot of those fields. But most of the time, programmers use only the introductory notions of those fields. We are usually guided by a domain expert anyway so that the math part is correct.

Programmers don't use a ton of math. They use some math.

<comment><USER16> I think most modern mathematicians would be taken aback if you told them logic is not math. You might be surprised what some logicians have gotten up to.

And sure, if you define what I talked about as not math, then you don't use math. If you don't want to use the tools of mathematical thought, be my guest. It's one of my competitive advantages in the marketplace.

But I think Dijkstra would be pretty surprised to hear that structured programming wasn't math, and you might be interested in budgeting six months or so to play with Coq or something like it, where you'll learn that the difference between proving code and what you do in just trying to make code work and debug code is much more a quantitative difference than the qualitative difference you think. There's no magic in how code proofs work... it's the same processes you use all the time if you code at any scale beyond a single screen of code, just taken to their logical conclusion.

<comment><USER17> Propositional logic / zeroth-order logic is like arithmetic. You didn't consider numbers (by which I gathered you meant arithmetic) as math, and I'm the same in saying this type of logic is not math.

Logic is a VAST field, and most programmers don't get to use most of it, that was my point.

I already played with Coq (that feels weird to say :)) ). It is a very specialized tool useful in very specific cases. I don't think it will ever be adopted as the standard way of programming since it's really unproductive.

Just because you use math that is really heavy does not mean you understand the math behind completely. We can view a ball throw as a complex quantum- mechanical physical process but we don't call ourselves theoretical physicists for being able to throw a ball.

</comment></comment></comment></comment></comment><comment><USER18> I you find yourself wondering how math heavy programming is before diving in...just start programming and ignore the math. You'll get by just fine. There's libraries for everything. Yes int theory you need to know some math to know when to use what but we live in an age where you can search for things like "I want to do X, tell me how" for most programming problems and get a reasonable high level "practical" answer of use library/function X and btw. here's the docs.

That being said (basic) logic, applied probability theory (no and some vector and matrix stuff are probably the most useful (for ML/DL). The more into algorithms you get, the more mathy it gets. Most programmers do this rarely in their day to day life unless they are rather specialized.

tl;dr: Don't worry about math, start writing code right now. It's fun. The rest will come once you get interested in certain things.

</comment><comment><USER19> I'm very skeptical about the applicability of group theory to computer science - outside of the usual applications to counting/combinatorics and crypto/number theory.

</comment><comment><USER20> [2012]</comment>


Hex: Reimplementing TeX in Haskell - <AUTHOR> http://luispedro.org/software/hex

<comment><USER2> Is this related to jgm's HeX[1] at all?

[1]: <https://github.com/jgm/HeX>

<comment><USER3> The code looks substantially different and technically the names are different. HeX is pronounced "Hek", and Hex is probably pronounced "Heks".</comment></comment>


Shadow attacks: hiding and replacing content in signed PDFs - <AUTHOR> https://pdf-insecurity.org/ <comment><USER2> The core problem seems to be:

       For instance, overwriting content on a page of the document is not allowed and thus leads to invalid signature verification. Nevertheless, some changes are considered harmless by the PDF applications and do not throw any warnings

I am trying to understand if there is any design consideration behind not signing the entire PDF, but only some sections?

<comment><USER3> One obvious need is other signature blocks that haven't yet been signed. When you sign a PDF, your name and the date end up in the signature block that's part of the PDF and, e.g., prints with it. If you had to sign the entire PDF, then a second person adding their signature would invalidate the first one.

<comment><USER4> Surely there must be a way to have an order of signing so that additional signing doesn't invalidate previous signatures.</comment></comment></comment>


Walled Gardens and Closed Ecosystems are a Non-Problem - <AUTHOR> http://billpatrianakos.me/blog/2012/11/23/walled-gardens-and-closed-ecosystems-are-a-non-problem/

<comment><USER2> Walled Gardens ARE a problem for some parties. I care about this because problems are the source of ideas for startups.

Book publishers, the ecosystem I'm lived in for the past five years, have a huge problem with Walled Gardens which means Amazon. Right now the Revenue split for eBooks is 70/30 publisher/Amazon. The Audiobook market has one player Audible.com owned by Amazon that also runs the audiobook section of the ITunes store. They have 90%+ Marketshare. Audible gives everyone a different deal but publishers get about 1/3 of the revenue and the free product they use to attract people to the platform comes out of publisher revenue.

Book publishers are deathly afraid that Amazon will take it's 75% eBook marketshare and beat down the revenue split. Only time will tell if Book publishers concerns are valid.

<comment><AUTHOR> What you're describing isn't a walled garden or an ecosystem. Amazon is selling a product but there's no consumer lock-in. I can buy music, movies, or ebooks on Amazon and put them on an iPad, a Kindle, or my computer using common software. They may have a dangerous hold on the market because of their size but that's more like a monopoly than a walled garden.</comment></comment>


React-reboot: simplest way to update the syntax of your old React components - <AUTHOR> Hey all. Not really used to HN so I hope it's not a big deal if I advertize here my new opensource project React-reboot
https://react-reboot.now.sh/
It's a tool (online,cli,node) that permits to update the syntax of your react/js files.
It runs jscodeshift eslint babel prettier in a row with an opiniated config because some transforms are only available in one of these tools If you like you can retweet: https://twitter.com/sebastienlorber/status/925743129705185281 <comment><USER2> Yep great tool :)</comment>


Ask HN: I want to create a new bitcoin Exchange. - <AUTHOR>

I know security and trust would all be EXTREMELY important factors, but if I could get past those hurdles...<p>Is there room for another bitcoin exchange? <comment><USER2> There are dozens of exchanges. None of them have the liquidity to make my time there worthwhile.

Doing your best at security is not good enough. Bitcoinica is a good example of this. You'll need to make sure everything is locked down, or the day when you announce to your users their funds are gone awaits.

Ability for users to easily get funds in/out of your exchange is a must. If you choose to obey AML laws, your users will curse at you for making their lives miserable. You're going to be stuck with bank wires/LR because accepting ACH is a ton of risk.

I either go on Mt. Gox for day-trading or Coinbase for buying/selling.

</comment><comment><USER3> I don't know your background, but remember to be very very very careful with the security. At lest, first read the Bitcoinica threads:

Show HN: Bitcoinica - Advanced Bitcoin Trading Platform (515 days ago) : <http://news.ycombinator.com/item?id=2973301>

Bitcoinica lost customer database, has no up to date record of trading balances (254 days ago) : <http://news.ycombinator.com/item?id=4026255>

And if you still need more (yes, there is more): [http://www.hnsearch.com/search#request/submissions&q=bit...](http://www.hnsearch.com/search#request/submissions&q=bitcoinica&sortby=points+desc&start=0)

<comment><AUTHOR> I appreciate your advice, and links. I'm going to read up on them tonight.

</comment></comment><comment><USER4> Room? Yes, there are, of course, specially if you do it better than the current ones.

Granted, what you need, first, Security.

Do it wrong, and you are screwed, even legally.

Second, a way to handle fiat money, Bitcoinica famously sidestepped that because they were not a true exchange, and were more of a sort of "betting" platform.

Some exchanges negotiate with banks, to do their thing.

Third, making a software that is not buggy enough to be exploited.

I know of a exchange where it was possible to withdraw USD twice (you deposit say, 1000 USD, then withdraw 1000 USD, and 1000 USD again).

Another one, calculated your fees only after you requested a withdraw (so, suppose you wanted to transfer 1000 BTC, and the fee for withdraw was 1%, it would allow you to transfer 1000 BTC, keep the BTC, and then would set your account to -10 BTC)

Or Bitcoinica once that had negative spreads, thus just buying and selling like crazy had outrageous profits (and outrageous losses to bitcoinica).</comment>


Hello Haskell, Goodbye Scala - <AUTHOR> http://joshbassett.info/2013/hello-haskell-goodbye-scala/ <comment><USER2> For personal projects or for learning the principles of FP, there is nothing wrong with using Haskell.

From personal experience however, I will not be using Haskell again for a larger professional project, because our team ran into too many time consuming issues and problems that have been solved successfully in other languages/environments (especially the JVM) like dependency management or reasoning over runtime characteristics before deploying the application on production systems. Especially memory consumption is very hard to predict.

Of course, the language also has its benefits and even after some years it tickles your brain just the right way.

I like programming in Haskell very much, but in real world projects (you know - when you work in a team not only consisting of PhDs) I prefer Scala or Java, because getting a war file deployed or profiling an application is just so much easier.

YMMV, of course.

<comment><USER3> Interestingly, despite their respective reputations Haskell is by far more popular than Scala:

<http://www.langpop.com/>

<comment><USER4> There's lots of measures: Indeed job listings, google searches, mailing list volume; tiobe tries to incorporate a few.

<http://www.drewconway.com/zia/?p=2892>

[http://www.wired.com/wiredenterprise/2012/06/berkeley- progra...](http://www.wired.com/wiredenterprise/2012/06/berkeley-programming- languages/)

</comment></comment></comment><comment><USER5> I've invested a lot of time in trying to learn Haskell properly.

On one hand, it's incredibly rewarding when a completely new and strange concept finally 'clicks', then you write a few lines to test your understanding and it just works.

On the other hand, it's frustrating to realize that there are still a lot of concepts you don't fully grasp, several libs that are still out of your reach, yet another completely new way of structuring your code that you are yet to unravel. Essentially, that you are (I am) still a newbie.

All in all, I find Scala better suited to learning FP and applying your newly- acquired knowledge to develop mildly useful apps, as quick results usually lead to more motivation. Just IMHO.

(Not to mention there are many libs that aren't yet up to par with their JVM counterparts, but that's another can of worms.)

<comment><USER6> One of the things I like about Haskell is that there's never scarcity of new concepts to learn: Functors, Applicatives, Monoids, Monads, Monad transformers, Comonads, Arrows, Lenses, Foldables, Iteratees... And every one of these has a world in itself!

<comment><USER7> On the other hand, that one time you just need a simple library for something, you get to use some guy's pet experiment for learning one of these concepts (Monoids, Monads, Monad transformers, Comonads, Arrows, Lenses, Foldables, Iteratees, Functional-Reactive Programming) you haven't learned yet just to parse some XML.

Yeah, a real productivity booster. It's like batteries included but with C4 attached to every battery.

Sometimes, people have work to do.

<comment><USER8> Yeah, those tricky monoids. So hard to learn, and even harder to use a library based on them. You have a whole whopping one function to learn, that does some incredibly convoluted and arcane nonsense called "appending"? What a horrible language. You should definitely devote more time to complaining about ridiculous strawmen like this, it seems like a very good use of time.

<comment><USER9> Here is some of my code to parse html:

        tstamp <- this ! "data-timestamp" >>> arr parseTime -< el
        (path, score) <- css "td[class~=score-time] a" >>>
            (this ! "href") &&& (getAllText >>> arr parseScore) -< el

So yes, you do have to learn about arrow syntax in order to use HXT efficiently. For most newbies it is not an easy concept to grasp, not helped by the fact that HXT isn't a very well documented library.

<comment><USER6>
        tstamp <- this ! "data-timestamp" >>> arr parseTime -< el

This, on the other hand, is one of the thing I don't like about Haskell: there are 4 operators on this line, and no easy way to see, at a glance, their precedence. Also, some operators are "mentally interpreted" as flowing data left to right or right to left; changing the direction mid-statement, I find confusing. I have the same problem when unix shell commands are expressed like this:

        program < input > output

</comment></comment></comment></comment></comment></comment><comment><USER10> I learned F# as this guy learned Scala. I too dived into Haskell after a while and learnt a lot of new things.

Having learned some great functional tips, I came back to my regular C#/Ruby and applying LINQ and Ruby's blocks seemed more natural to me. However, monads, monoids, functors still don't matter when you switch over.

I've used Yesod to write a small app. A typical form in Yesod (for model binding) has this signature:

newPostForm :: Html -> MForm Blog Blog (FormResult (Text,Text,Text), Widget)

Even after learning Yesod for a while, I wasn't able to completely reason with that signature. Why bother with all the name of the application, sub site, formresult, widget when all you want is just three simple form fields? Rails gives it to you in params[:form]. It's just too easy in Rails with a lot of gems lying around for every task you decide to do. And when you're stuck, you're just a google away from getting your answer.

So my question is: after learning Haskell, do you intend to stick to it? Did I make a wise decision in ditching Haskell?

<comment><USER11> Why not define a type alias?

      type AppForm a = Html -> MForm Blog Blog (FormResult a, Widget)

And then you get:

      newPostForm :: AppForm (Text, Text, Text)

<comment><USER12> The real fun with type aliases is that GHC rarely uses them in error messages. So you get about 20 lines of type vomit whenever something refuses to compile and then you get to try to piece it back together into a level of abstraction that humans can handle.

<comment><USER11> Well, it isn't the case here, is it?

</comment></comment></comment></comment><comment><USER13> I can respect and applaud the man for wanting to learn, When I picked up scala I had the same experience he did. When I went to solve a problem I immediately fell back to the imperative style of programming since that's how my brain has worked for a decade. It has taken real time and effort to _try_ and solve problems in a functional manner. Turns out that's a really good and elegant solution for some problems and a skill that's worth developing. If another language makes that training easier then by all means use it. One of the real benefits of scala is you can be useful in it ( just solving the problem ) while you have all the tooling necessary to make those elegant solutions when you have the requisite skill set to implement them. It would be handy if scalac has a setting like -Werror in C land where non-functional constructs would be flagged in the codebase.

</comment><comment><USER14> If anyone wants an introduction to functional programming using Scala, I really recommend Martin Odersky's coursera course (<https://class.coursera.org/progfun-2012-001/class>). He restricts you to functional Scala; there isn't a mutated variable in the whole course. It isn't officially a course right now. You won't get a certificate for taking it, and I don't think the grader is turned on, but the other materials are still there.

In my mind, the really mind altering thing was seeing not just that Object Oriented and Functional programming styles could be compatible, but that they were in many ways complementary. Good OO design, particularly the idea of small single responsibility classes, is kind of enforced by functional style. If you need to pass around fifty variables just to increment a counter, you'd go crazy. So writing functionally forces you to figure out ways to split things up. Similarly, its easy to convert well small, single responsibility OO objects into functional ones, and just a nightmare otherwise.

I was just blown away at how much a course on functional programming helped me to understand OO design.

<comment><USER15> Does the course cover Functors, Applicatives, Monoids, and Monads? What about other higher-level functional constructs (Arrows, Zippers...)?

From what I've seen, I think Scala is a nice language. One thing I don't like is particularly that it's a bit kitchen-sink-ish: there's a whole lot of syntax and semantics to learn, seemingly due to the OO side of the language. By comparison Haskell is quite simple. All the higher-level constructs are implemented in plain Haskell, so you can easily understand them but thanks to a flexible, uniform syntax, using them doesn't feel clunky.

To me the main reason for not learning FP through Scala, however, is that the community isn't organized around teaching FP in the same way that Haskell is. It sounds like this course is an exception. But otherwise, I found that trying to learn about Monads from the scalaz documentation was not satisfying, and we all know that "A Monad is a Sheep with Curly Hair" blog posts are a dime a dozen (in Haskell and Scala). Learn You a Haskell made the concepts, and also their benefits, clear to me for the first time. Now I'm working through Real World Haskell to build my chops and reinforce my understanding.

While trying out both languages and picking which one to learn, I came across an interesting post on Gilad Bracha's blog which had a lively discussion including a comment by the [claimed] original author of Scalaz [1], which made it clear to me that it would be easier to start in Haskell and move to Scala than vice versa. I think I (and the OP) are both seeking to gain a strong foundation in FP concepts. To summarize, in my experience most Scala resources on the internet (blog posts that come up, etc.) aren't quite as good in this regard; at this point a lot of the Scala programmers using these techniques are probably Haskell programmers anyway.

That being said, the internet is a huge place. If there's a Scala equivalent of this post [2] please do share it! I agree with other posters here that Scala has quickly gained a significant amount of industrial acceptance. I'd imagine that I'm more likely to write Scala professionally in my lifetime than Haskell. But I also believe I'll be better off approaching it having learned the FP concepts in Haskell first.

[1] [http://gbracha.blogspot.com/2011/01/maybe-monads-might- not-m...](http://gbracha.blogspot.com/2011/01/maybe-monads-might-not- matter.html?showComment=1295940865245#c7260381172547454562)

[2] [http://stackoverflow.com/questions/1012573/getting- started-w...](http://stackoverflow.com/questions/1012573/getting-started-with- haskell)

<comment><USER14> >Does the course cover Functors, Applicatives, Monoids, and Monads? What about other higher-level functional constructs (Arrows, Zippers...)?

Nope. It's very intro level, though the students basically begged Odersky for a part II, and he seemed very open to it.

And I totally didn't mean to imply that I thought people should learn Scala instead of Haskell. I was just sharing a FP resource I found helpful.

Not actually having mastered the higher level functional constructs yet myself, I really don't have a firm opinion about which is the "better" approach. Personally, I've looked at both languages and I know that each helped me understand the other. So if I have any opinion, it's that if you get stuck, it's probably a good idea to approach it from another angle, like the author is doing.

</comment></comment></comment><comment><USER16> My own approach to learning FP has been "Hello Haskell", "Hello Scala", "Hello ML", "Hello Clojure", "Hello Rust",...

I don't know why you say goodbye, I say hello.

<comment><USER17> Maybe you should actually learn something about FP rather than trying to learn a bunch of languages?

<comment><USER16> I think you'll discover that languages are actually much smaller than they appear in your mirror.

<comment><USER17> That's my point. You're talking about jumping around from language to language, but Functional Programming techniques tend to be applicable across all of them. My personal angle is that Haskell puts up less bullshit in your path while you're learning stuff about type based reasoning at the cost of being much less like things you may have seen before.

Regardless of that, going from Haskell to Scala to ML to Clojure ad naseum isn't going to get you any deeper understanding of techniques. At most you'll understand how some very basic concepts work in different languages.

<comment><USER16> I wouldn't call opening myself to multiple languages "jumping", and it seems a bit of a leap that you assume so. (Note that I said nothing of the proportions invested in each.) The only point of my post was that one does not need to wall oneself off from one language in order to open oneself to another.

 _Regardless of that, going from Haskell to Scala to ML to Clojure ad naseum isn't going to get you any deeper understanding of techniques._

I suppose that's a fair view if one starts from the assumption that techniques are all that is worthy of pursuit.

But there is also comparison of priorities implicit in different design choices. There is also an appreciation of history (ML is a good example of that) and an appreciation for industrial frontiers (Rust is a great example there: if you're not following Graydon Hoare you're missing out). Each language also has its own unique traits that don't readily map to others. Haskell's lazy evaluation and monadic IO are a great example there. Want to wield the sword of homoiconicity? Better learn a LISP.

Moreover, learning Haskell prepares you to read a lot of literature. ML prepares one to read Chris Okasaki's book on purely functional data structures. (Yes, there is a Haskell appendix in the back of the book, but knowing both means you can compare them!). Scala is worth study as a case study in the tradeoffs of making on object/functional hybrid.

The human brain is an associative machine, you know. Sometimes the act of broadening has the consequence of strengthening (or even deepening), because you're giving your melon more things to interrelate.

<comment><USER17> Learning any one of these, if they have a strong type system and an emphasis on immutable data are going to prepare you for the literature.

Comparative language evaluations are fine, but don't tell me that you made that clear that that was what you were after in your original comment.

<comment><USER16> You're a strange chap. If you agree that languages are small – so much that you insist it was your point when, in fact, it was mine – then why do you think there's such a large cost to picking up another one?

I also don't understand why I needed to make it clear that language comparisons are beneficial. Was someone trying to assert that they're not?

<comment><USER17> You said, 'My own approach to learning FP has been "Hello Haskell", "Hello Scala", "Hello ML", "Hello Clojure", "Hello Rust",...' and I thought to myself, "Well, that's not going to really help you learn Functional Programming techniques and design strategies". You really have to use a language for a while to understand how to make a good software design inside of it. It's not the cost of learning the language, it's the cost of not spending enough time working with the language.

Now on the other hand, if you just like looking at a lot of languages and seeing the design tradeoffs, you can spend a lot less time using each one to get that perception.

But you _only_ mentioned learning FP in the first place. I didn't divine that comparing the language design was your reason for not picking one and sticking with it.

<comment><USER16> _...and I thought to myself, "Well, that's not going to really help you learn Functional Programming techniques and design strategies"_

That's where you went wrong, then, because it doesn't in any way rule out the possibility of learning it either.

In your initial response, you said " _Maybe you should actually learn something about FP..._ ". Let's make this clear: you don't know me.

Pro tip: if you have to make assumptions about other people, then it's possible to make a wrong assumption. In these cases, it's often better to ask a question than to launch into criticism based on assumptions.

<comment><USER17> Pro tip: Don't make glib comments and be surprised when people respond brusquely.

Also, Pro Tip: Assumptions are necessary in order to have reasonable conversations. People aren't inference engines.

<comment><USER16> That word doesn't mean what you think it means. My initial post is sincere wisdom.

And your initial brusqueness didn't bother me, FWIW. The determined obstinance does a bit, but no worries.

<comment><USER17> <http://www.merriam-webster.com/dictionary/glib>

Nah, fits what I meant.

<comment><USER16> That which does not conform to your world view must be disparaged, because you'd feel embarrassed to be caught red handed in the process of learning. I get it.

<comment><USER17> Yeah, well, y'know... that's just, like uhh... your opinion man.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER18> I enjoyed the read, but I borked at your suggestion that not being purely functional, and the language barking at you if you break that convention stops you learning functional programming.

Take most Lisps (I'll assume scheme, because it's what I'm most familiar with), which give you more than enough side-effecty rope to hang yourself with should you so desire- but you won't get far unless you're coding functionally.

<comment><USER19> Sometimes you need side-effects. The world is far from pure. I think Common Lisp gives you exactly the tools you need and gets out of your way. Dynamic variables (a very specific term in CL) are simply _awesome_. You need side- effects when you're dealing with I/O -- sockets, files, shells, etc. I prefer languages that make it as painless as possible when I need it.

Purity, IMO, is over-rated. You can write pure FP code in C++, Java, or CL if you wanted to. It doesn't matter whether you _can_ write imperative code with side-effects and doesn't make those languages any less useful. This _purity_ thing that the Haskell-zealots are on about just stinks of bullish*t and it's not good for you.

That being said, Haskell does do some neat things and there is a lot to learn from it. It's type-inference lets it do some neat things like parallel maps and so forth. It also shows us that laziness is not always a good default. I'm not hating on Haskell but anyone who drools over its, "purity," is not saying much at all. Purity is not an attribute that wins you any battles.

<comment><USER20> > Dynamic variables (a very specific term in CL) are simply awesome.

I may be wrong but I think the name is rather common outside CL too (assuming you refer to "variables with dynamic scope rather than lexical"). E.g. as we are talking of scala

[http://www.scala- lang.org/api/current/scala/util/DynamicVari...](http://www.scala- lang.org/api/current/scala/util/DynamicVariable.html)

<comment><USER19> Sorry, didn't mean to imply it was a feature unique to CL.

</comment></comment></comment></comment><comment><USER21> Anybody here has developed and deployed a Scala-based or/and Haskell-based project for production? I mean systems for business purpose where rubber meets the road with timeline to hit and budget to meet. Far too often the stories are shared by people who learned a new language for 3 months and implemented a pet system where only a few real users. Definitely I respect their zeal and curiosity, but I am more interested to know what the veterans are thinking

<comment><USER22> I know of a few strong mostly Haskell places in NYC alone. Likewise I'm actually bootstrapping a biz where I've spent most of the past year building the tech where some of the things I'm doing are only tractable to build _by_ using Haskell.

<comment><USER23> > I know of a few strong mostly Haskell places in NYC alone.

Hedge funds? Or something else?

<comment><USER22> Both! more precisely, at least one large quant shop, at least one normal hedge fund (apparently theres a difference!). Probably others in the finance space.

Theres at least 2 not finance enterprise focused haskell shops in NYC that are currently profitable and growing, theres at least 1-2 other places that have a smidge of haskell here and there.

Oh, and theres my place, Wellposed, which is pre launch but for the first product, only Haskell is used, and if it works out, the # of (partially) haskell shops will increase quite nicely :)

</comment></comment></comment></comment><comment><USER24> Yeah I've tried learning Scala for a year.

It was painful, real painful and I felt like I didn't learn much from it.

Now I'm learning Erlang and I'm applying what I've learned from Scala to Erlang and wow. I'm glad I took at stab at Scala. Erlang is wonderful btw, it's so simple there are some minor drawback like no string primitive... I also love the fact that there is no loop, it forces me to think recursively. I guess because it's so simple I can just focus on learning the functional part instead of other stuff such as new objects paradigm (traits, etc..), design pattern ("pimp my whatever"), and type. I'm guess once I'm done with this I'll focus on type, thinking Haskell...

</comment><comment><USER25> While i liked his gumption, I personally thought god i don't want to do that.. I have been playing around haskell on and off, in my free time, and have come to a conclusion that while it's a fun and cool language to play around, it may not be useful(as in career) hobby. It might be categorized as pure fun language learning.

</comment><comment><USER26> Haskel/Scala has Learn You a Haskell/Scala for Great Good! and Lisp has The Land of Lisp.

Are there any _why-esque guides to Clojure and FP in general like these other languages have? I'm unaware of any and consider it surprising given the Clojure communities passion.

</comment><comment><USER27> I find it unconvincing. That Haskell deemed is better for learning functional programming for the sake of learning functional programming does not really say much about general usefulness.

<comment><USER28> And the OP is talking only about learning FP, not about general usefulness.

Not sure what you are unconvinced about.

<comment><USER27> The title and the first few paragraphs gave the impression that this was an article about the general utility of the two languages. Only half-way down did the truth out.

<comment><USER28> Maybe one shouldn't make general comments about a piece one hasn't read in its entirety.

Especially for an 11 small paragraphs piece.

<comment><USER27> I did read it fully. Then I commented that I found it unconvincing, which in my book is one step below misleading.

<comment><USER28> I then find unconvincing your usage of the word unconvincing.

</comment></comment></comment></comment></comment></comment><comment><USER29> Nice choice! Learn You a Haskell for great good is an excellent book, I learned a lot reading it.

</comment><comment><USER30> _> For christmas I bought myself a copy of Learn You A Haskell For Great Good by Miran Lipovača. Apart from being a great Haskell learning resource, it's one of the best programming books I have ever read._

I second that. Miran is a superb technical writer. He also annotates the book with little excerpts from all my favorite movies.

</comment><comment><USER31> Perhaps Scala was built for introducing functional programming gently to Java programmers, with the intention to make them switch to Haskell.

</comment><comment><USER32> Obsessive, compulsive, pure functional disorder. Now drop it all and go and build something.</comment>


My Weekend Project: The Pauper's Book Club - Find Inexpensive Kindle Books - <AUTHOR> http://www.paupersbookclub.com/

<comment><USER2> Is there any chance you could add a function to search non-US Kindle stores?

I think this would be a very useful app, but Amazon has placed this annoying restriction on their Kindle shop that prevents me buying any of the books listed. :(

<comment><AUTHOR> It's definitely on my TO DO list. I had thought about it briefly, but I'm only just learning about the Amazon experience outside of the US. From what I can tell though, it should be as easy as pulling the data from the different Amazon sources, and all the rest should basically just work.

Famous last words. 0-]</comment></comment>


How to remove yourself from all background check websites - <AUTHOR> http://www.reddit.com/r/technology/comments/j1mit/how_to_remove_yourself_from_all_background_check/ <comment><USER2> Startup idea: charge me $149 and handle all these opt-outs for me. Add in a yearly subscription for on-going monitoring.

<comment><USER3> Reddit comment: >> Employee of Acxiom here. The Direct Marketing Association (the-dma.org) is the legitimate trade group of direct marketing companies. If you opt out at the-dma.org, it will be accepted by almost all legitimate datamining companies. DO NOT USE THE ONLINE SERVICES THAT SAY THEY WILL OPT OUT OF EVERYTHING FOR YOU! These "services" send an opt out on your behalf that will be ignored by all the major marketers/dataminers because they only accept opt-outs from individual consumers. The "services" that send opt-outs en masse will collect your info to spam you later. As far as I know, the DMA is the only external organization that Acxiom will honor an opt-out from.

<comment><USER4> It's not very clear on the "the-dma.org" site how you actually request them to remove you, and it takes you via 2 other sites to get there, but the url for consumers is:

<https://www.dmachoice.org/>

<comment><USER5> Has anyone actually used this successfully? How long does it take to take effect? The site looks like it is supposed to remove you from junk mail lists, not background check sites/public records sites.

<comment><USER6> I have. After recently moving, I opted out (for several years) and I didn't opt out my wife. Only my wife gets the credit card and offer spam.

Of course, this does nothing for the local grocery ads and "recipient at <your address>" junk mail.

</comment></comment></comment></comment></comment><comment><USER7> I would be a bit careful about sending my scanned ID to a data mining company.

<comment><USER8> That was my first concern to: To prevent these companies from collecting data about me, i have to send them my ID; the most sensitive of them all?

</comment></comment><comment><USER9> Would I be right in saying this is an American phenomenon?, or is it used worldwide ?

<comment><USER9> That's an actual question, not a rhetorical one, thanks for the upvotes, but does anyone know the answer to my question ?

<comment><USER10> This is very American. That's not to say that other countries don't have some of this information, but from my experience to a lesser extent.

There's a lot of transparency in a lot of contracts / arrangements. A lot of information ends up on public record. Buy a house, get married, poor credit rating etc. Most of this information is accessible in some form and these companies are simply aggregating it.

This information is generally much more difficult to collect in other countries (with my own personal experience being in a few European countries), if it's even accessible at all.

I'm sure there's exceptions but this does seem like a very American problem.

</comment></comment></comment><comment><USER11> So, I assume that these "background check websites" are are one tool that prospective employers use to research potential hires? If you remove yourself, what answer will the background check company give your prospective employer? Will they just answer "this person is not in our database", or will they say "this person opted out of our service"? How will this affect your chances of getting hired?

</comment><comment><USER12> Is it just me or is there something logically broken about the idea of giving these websites all your information so that they do not have all that information about you?

</comment><comment><USER13> im not giving these websites anymore information about me, even if it is to "remove" me from their databases.

</comment><comment><USER14> What are the possible ramifications of opting out from these companies? Purely positive? Are there any downsides I may come across in the future as a result of opting out?

<comment><USER15> I was curious, too. From the OP, "I asked LawyerCT about this one and she said that any serious employer would use a real site such as social intelligence to run a background check. The sites listed above are mostly around to make a profit off of selling your information. There are sites like Social Intelligence which are only available for use by organizations/corporations." Seems like a pretty safe move.

</comment></comment><comment><USER16> Background check sites are the lowest of the low. Worse than Steve Yegge's "cat picture" sites.

EDIT: My only reason for saying the above is that I can only imagine these sites being used for borderline nefarious purposes.

</comment><comment><USER17> How do people actually know if these companies have data on them? I once searched in Spokeo and started getting a bunch of spam email.

</comment><comment><USER18> we're privacy advocates working on a free, automated, transparent solution to opt you out of all major personal information search services...coming very very soon

</comment><comment><USER19> Isn't changing your name an easier & better way?

<comment><USER20> Changing your name is not an option for many people: 1) In many parts of the world, this is a complex process in and of itself. Often you need to petition a court, and to place notices in local papers. 2) Names have reputation. Just because you want to not be listed in background check sites, doesn't mean that you don't want your professional reputation, that you want the hassle of explaining to an employer why your references are for a different name, etc. 3) Names have meaning. Even for those who have never changed their name, their name will mean something to them. To hear it said can be frightening, or arousing. It can be a mantra of strength, and give a sense of self. And for those who have already changed names, this is even more so.

Even if changing name was an option, there are many means to link an old name to a new one. Many organisations keep both on file, even when they shouldn't. And combining public records with statistics can show that someone still is the same person.

</comment></comment><comment><USER21> I used ussearch.com, they are a scam site, they will autobill you when you only specify a one time charge. They nabbed me for $90 bucks when I only wanted a one time charge of $14.

Using a credit card to do a background check on yourself or others is a VERY bad idea. They make you jump through 5 hoops to stop the autopayments you didn't request. do a google search for ussearch.com unexpected autobilling and you'll see a mountain of complaints. And to top it all off, the information about the target was wrong.

<comment><USER22> Call your credit card company and explain next time. They can halt that immediately.

</comment></comment><comment><USER23> just say no to all forms asking to share your information with business.

every place i go they send me one here in Cali.

my bank. my tax guy (ernst&young, btw avoid them). my one building landlord. etc. ...my bank send one every year and if i do not send back they assume they can share my info.

also, never check you credit score. EVER. let 3rd parties do that for you :)</comment>


New CSS Features That Are Changing Web Design - <AUTHOR> https://www.smashingmagazine.com/2018/05/future-of-web-design/ <comment><USER2> Well, they're changing web development that's for sure, and stuff like CSS Grid ought to finally make using Bootstrap esque grid frameworks a thing of the past for many projects.

But I'm not sure they're changing web design, at least for many people in the field. CSS Grid is useful, but most designs built with it will likely not be too different from those built with Bootstrap or Foundation or Flexbox. Non grid like designs are neat, but the fancy shapes and curved edges aren't something in most business website designs, regardless of how much easier they may be to make now.

Just think it's important to realise that most sites and developers are not on the cutting edge, nor have unlimited power in terms of design.</comment>


Microsoft To-Do for Android and iOS Updated with New Features - <AUTHOR> https://www.bleepingcomputer.com/news/microsoft/microsoft-to-do-for-android-and-ios-updated-with-new-features/ <comment><USER2> I was a fan of Wunderlist until MS scooped them up and churned out To-do.

I ended up moving to Google Notes. I mainly use the widget as a way to keep myself reminded of things I want to do (with no deadline). My GF and I share a note for Groceries which works well.

Too little to late 4 me sry MS. Lack of alphabetically sorting my list was enough for me to switch.

<comment><USER3> Do you mean Keep?

</comment></comment><comment><USER4> I remember trying to use it a few months ago and it had trouble syncing todos.

Data was lost due to this.

Contacted support,and they did not care.

I definitely do not recommend using Microsoft To-Do.

</comment><comment><USER5> I'm always amazed that so very few todo apps support recurring task _after_ completion (ie "repeat 7 days after last completion" rather than "repeat every Monday"). Almost all my repeated tasks fall into this category and I'm amazed other people can be productive without it.

<comment><USER6> On Android, aCal+ Tasks supports this. It uses google's todo as a storage backend so you can do some editing there.

[https://play.google.com/store/apps/details?id=org.withouthat...](https://play.google.com/store/apps/details?id=org.withouthat.acalendarplus&hl=en_US)

</comment></comment><comment><USER7> This is a pretty basic to do app that can't even measure up to Wunderlist, that they bought and sidelined ages ago (e.g. last I tried it, it had no comments to allow collaboration on tasks), let alone add anything interesting.

</comment><comment><USER8> What is interesting about this Meetoosoft advert?</comment>


Ask HN: Deploy ML Model as API - <AUTHOR> Looking to deploy some pre-trained Keras models into a simple but scalable RESTful API.
What would the easiest way of doing this be? And what would the cheapest way be? (Presuming these are different)
My current thoughts are to save Keras model as .h5 and combine with Flask and AWS EC2.
New to deployment and backend stuff so would be very appreciative for any help. Thanks so much! <comment><AUTHOR> As an answer, other than the ones listed above, I was recommended: [https://algorithmia.com/](https://algorithmia.com/)</comment>


Microsoft is now irrelevant to computing, and they want you to know it - <AUTHOR> http://semiaccurate.com/2014/05/15/microsoft-now-irrelevant-computing-want-know/?fb_action_ids=10152857428124156&fb_action_types=og.likes <comment><USER2> I kind of feel bad for Microsoft. I know they were the "evil empire" in the 90s, but these days, I can't help but root for them. At least Microsoft is willing to just sell me a piece of software for money up front, instead of either a) "giving" it to me "free" (in return for monitoring everything I do) or b) Making me by a "subscription" and bleed me slowly over the long term.

</comment><comment><USER3> Office 365 seems to be the saver for Microsoft in coming years. That is until google chrome apps enters into enterprise.</comment>


U.S. eavesdropping agency chief, top deputy expected to depart soon - <AUTHOR> http://www.reuters.com/article/2013/10/16/us-usa-nsa-transition-idUSBRE99F12W20131016?irpc=932

<comment><USER3> We're still not seeing charges for intentional lying under oath to congress. Well, it's not going to happen, but one can still dream of equal treatment under law, no?

I can believe that he's a good man and he did it with good intentions - <USER2> it's important for the society to state that actions like _THAT_ are unpatriotic (literally, against one's nation and people) and immoral, unlike whistleblowing.

</comment><comment><USER4> Revolving door strikes again. They probably will join Booz Hamilton or one of these large contracting companies and rake in the money. Same old.

</comment><comment><USER5> Political theatre. New guys will be even worse, and can stall investigations pretending not to know what is happening hoping the calls for inquiry disappear

</comment><comment><USER6> The title, coming from Reuters, is a little bit shocking. I mean, I'd expect the NSA to be referred to as "Eavesdropping agency" here, but that Reuters does it implies that this feeling is mainstream and widespread, which was not my previous impression.

<comment><USER7> At least outside the USA it's my impression that it's virtually universal.

</comment></comment><comment><USER8> Perhaps replace them with Snowden and let him deal with them?

<comment><USER9> _Perhaps replace them with Snowden and let him deal with them?_

That's almost as crazy as putting a man in jail for terrorism and then later electing him to be president - without an armed revolution in the interim.

<comment><USER10> While he did a laudable thing, Snowden ain't Nelson Mandela.

<comment><USER11> He didn't do a laudable thing, two wrongs don't make a right.

<comment><USER12> Welcome, deontologist, to the world of consequentialism.</comment></comment></comment></comment></comment>