Why Gov't That Collects Private Data Won't Let Employees Access Public Info - <AUTHOR> http://reason.com/blog/2013/06/28/why-a-government-that-collects-everyones?fb_action_ids=10201424521684950&fb_action_types=og.likes&fb_source=aggregation&fb_aggregation_id=288381481237582

<comment><USER2> That's freaking hilarious. I remember when the Wikileaks cables broke, and the feds sent a letter to my university's public policy school saying that the MPA students should avoid reading the news if they wanted to have any chance of entering public service in the US after graduation.

</comment><comment><USER3> I thought it was more about not polluting the classification ranks. It isn't that the government thinks it can actually shield employees from public information, but actually that when their job entails gathering and discussing information of a certain classification at work, they shouldn't be using or interacting with information (at work) that is still technically at a higher classification level.

Bureaucratic? Yes. Ignorant? Not in the way most people are portraying it.</comment>


Linus Torvalds' BitKeeper blunder - <AUTHOR> https://www.infoworld.com/article/2670360/operating-systems/linus-torvalds--bitkeeper-blunder.html <comment><USER2> Needs a (2005), this wasn't recent at all.</comment>


Ask HN: Has political correctness in tech gone too far? - <AUTHOR>

It feels as if there is a mob of silent assassins lurking on twitter and media outlets looking to out anyone who says anything that isn't glowingly politically correct. They are sort of like "political trackers", except they are targeting mostly white, male programmers - but in reality - anyone who disagrees with their narrative (whatever it is) is a heretic.
I find it offensive that there are claims of sexism in OSS and tech. Codes of conduct. I feel like I can't give an opinion, or even make a mistake speaking without being stared down or ruining my career.
I don't want to be politically correct. But it looks like they only way to survive is to be that.
Am I the only one who feels like outsiders are assaulting tech for their own selfish agenda, and we were already diverse by design decades ago?
Someone decided to flagkill what could otherwise be a constructive discussion: https://news.ycombinator.com/item?id=9738526
Interestingly, that is an example of the kind of censorship that is taking it too far. I would like a discussion to happen and this not to be censored. Use an anonymous account so you can speak your mind without being persecuted. <comment><USER2> I have a suggestion.

If you know any _women_ in tech that you think you could ask about this, ask them. If you know any African-Americans or Latinos in tech, ask them. You may learn things that you don't know about right now. And if you don't know any non-white males that you would feel comfortable asking in order to expand your horizons... well, that's evidence of a problem, right?

You find it offensive that there are claims of sexism. I find it offensive that there is _actual_ sexism. I don't know a female tech professional who _hasn 't_ been subjected to discomfort, doubt, or harassment. Especially if they're pretty - every pretty woman I know in tech has faced assumptions that she isn't technical, because she's a woman.

No one is going to ruin your career because you made a careless sexist remark (especially if you acknowledge that it was actually sexist afterward). Hell, they _can 't_ ruin your career, not in an industry with negative unemployment, not unless you crossed the line into physical assault. Which, by the way, _many_ males techies have gotten away with doing to their female colleagues.

People who disagree with the "narrative" of equality aren't heretics. They're assholes.

<comment><USER3> > No one is going to ruin your career because you made a careless sexist > remark

unless it was a dongle joke at a tech conference.

<comment><USER2> Educate yourself on what happened. Did you know that the woman who reported the dongle joke was fired from her job because she reported it? And that she received actual threats for it?

[http://techcrunch.com/2013/03/21/a-dongle-joke-that- spiraled...](http://techcrunch.com/2013/03/21/a-dongle-joke-that-spiraled-way- out-of-control/)

I don't know who the anonymous joker was (who got fired, and then publicly apologized for his inappropriate joke), but I'm fairly certain he would have found another job pretty easily. "Career ruined" is still not correct language for this situation.

</comment></comment></comment><comment><USER4> There are lots of places you can speak your mind anonymously and say whatever you like about whoever you like. Of course, the downside of posting anonymously is if you express some socially unpopular opinion people will just dismiss it as bigotry, when presumably you'd like to have that opinion taken more seriously. But if you attach your name to it, and that name is invested with social credibility for whatever reason, then one of two things can happen. It might be more persuasive other others because of who you are; or if enough people consider your opinion socially toxic, your overall credibility may take a hit.

Well, too damn bad. We live in an increasingly densely populated world and communicate through increasingly persistent channels, such that it's almost as easy to permanently record your whimsical opinion on any subject on the internet as it is to mumble it under your breath in a moment of transitory annoyance. That density and persistence combine to amplify the power of ideas significantly, whether those ideas are entrepreneurial, artistic, political or whatever. If too many people find your opinions hurtful or offensive, then in the aggregate they'll isolate you socially on the basis that your positive contributions, however good they may be, are not sufficiently interesting to offset the negative feelings your opinions engender. You're not so special that your positive contributions can't possibly be replicated by anyone else, and so people will prefer to wait for someone who is equally productive but more pleasant to be around.

In short, you can say whatever you like without regard for its effect on others, or you can maintain and improve your social standing, but society is not obliged to help you do both at the same time.

Of course, there's an interest grou for everything on the internet, so no matter how extreme or controversial your opinions are, you can likely find a community of people where those opinions will be validated, celebrated, perhaps even commercially viable, even as they are rejected or vilified by society at large. You will have to decide what sort of social connectivity you desire and deal with the limitations of that choice on your output, your popularity, and so on.

</comment><comment><USER5> This was the intent behind Political Correctness - a term cribbed from the Soviet Union's ideology and popularized in the United States at the University of Wisconsin, Madison. It's an intentional tool of social control by corrupt people who want to enforce a worldview on others.

Ther is no such thing as it "going too far". It shouldn't exist at all.

</comment><comment><USER6> I feel the same way you do, especially the part about white males being attacked most of the time. And i'm not even white.

</comment><comment><USER7> "I don't want to be politically correct. But it looks like they only way to survive is to be that."

It is the only way to survive. If you say the wrong thing, even if you aren't attacking anyone, you could have your career or life ruined.

Just look at the ex-Mozilla CEO for a good example of this. He donated a small amount of money in a cause he believe in, but because it didn't go along with the community narrative, he was bullied online until he was forced to resign.

If it had been the reverse and he donated to a pro gay marriage fund and the company was extremely religious, the same community would be on the side of the CEO. This is what tells you it's all about politics and has nothing to do with what people tell you (freedom, etc).

I just don't understand why we can't just live and let live.

In the end, it means that people like me that ordinarily just want to live and let live now have to resort to under-handed tactics (like getting people fired and ruining the lives of people) to make the world right.

<comment><USER8> Yeah, must suck to have your life ruined and be denied opportunities based on your actions rather than your gender, race, or orientation like all us non- white non-straight non-males have to deal with. "Why can't I just be allowed to be terrible to other people without fear of criticism?!?"</comment></comment>


Show HN: Lisp interpreter with a 2D graphics API written in Rust and OpenGL - <AUTHOR> https://github.com/rpasta42/skomakare <comment><AUTHOR> LambdaOxide is the Lisp interpreter and Skomakare is the graphics interface that supports drawing basic shapes, text and textures from LambdaOxide REPL.

LambdaOxide source code: [https://github.com/rpasta42/LambdaOxide](https://github.com/rpasta42/LambdaOxide)

It's pretty basic and does not yet support tail-call optimization and macros.</comment>


Why Greece took the fall for a European banking crisis - <AUTHOR> https://renegadeinc.com/why-greece-took-the-fall-for-a-european-banking-crisis/ <comment><USER2> I haven't read the article yet, but just from the headline I'll bet it doesn't say "because Greece borrowed more than anyone could ever possibly repay". Not even as one of n reasons.</comment>


How I manage my todos, priorities and calendar - <AUTHOR> http://ryanleecarson.tumblr.com/post/22834532187/managing-life <comment><USER2> There are a few things I'm looking for in a task management system. Those of you who remember IWantSandy when it was still around will have a good idea of the feature set I'm looking for, plus a few things.

Haven't yet found something that ticks all of the boxes..

* Easy task entry with natural language Do thing with Dick and Jane at Location tonight at 6:30 pm and every week on thursday (Sandy was the undisputed queen of this)

* Truly cross platform (Needs a web interface, and an identical native interface on Win/Mac/Lin, and a mobile interface which isn't tied to the web)

* A CLI would be nice but isn't super necessary (ala Taskwarrior)

A couple of my favorite systems get one or two things right _really, really welll_ but then fall flat elsewhere. I'd use Omnitask everywhere except it's completely mac specific, and therefore useless for my needs. Seriously. I would give almost anything to have Omnitask on Windows. Wunderlist isn't bad at all, but isn't terribly stable on the native client, have to enter everything the old fashioned way though. Taskwarrior is my go-to in a *NIX environment but, again, useless anywhere else.

I'm currently using Todoist, which has a decent web interface and mobile client, with semi-decent NLP task entry, and it's doing okay for me now.

I'm very, very seriously open to suggestions here. Asana looks absolutely beautiful, but it's another Mac-Web specific product, so wouldn't work for me.

<comment><USER3> I am very happy to see a Todoist user on HN! Founder of Todoist here.

Unfortunately I had I detour in social networks so the work on Todoist has been slow for some years. But about 8 months ago we started fulltime working on it and Wedoist. I think we have some amazing updates coming up that will solve all of your issues (ex. HTML5 enabled web and desktop applications and native mobile apps for iOS and Android).

Stay tuned and please provide feedback of how we can improve Todoist (here or on my email which is in my HN profile).

<comment><USER4> Please just get away from your not-native Todoist app. It's slow, it's not pretty. It's the opposity of the awesome web interface. I used Todoist for a long time , but with time and the increase of my mobile usage(due to iPhone) i needed a decent iPhone app. Just make a decent, beautiful iPhone app, believe me lots of people like me will converse and move to Todoist.

(off-topic: Keep up the great work amix. I've learned lot from you programming blog).

<comment><USER3> We learned a lesson in mobile development and we are dumping our HTML5 mobile app. The experience is simply too limited and you need to do lots of hacks to make simple things work. For anybody that is thinking about going HTML5: don't do it, it's more a pain than a gain and the user experience won't be good.

We will do a public beta in the following weeks of our iOS version. We will make it public via our Twitter/G+/FB accounts, so stay tuned ;-)

<comment><USER5> Any plans for android in the foreseeable future?

</comment></comment></comment></comment></comment><comment><USER6> The take home message here is two fold.

1) build some regularity into your daily routine even if you wear different hats

2) Systemisation will set you free

People griping about specifics of management systems aren't seeing the forest for the trees.

<comment><USER7>
        1) build some regularity into your daily routine [ ... ]
        2) Systemisation will set you free

Translation: transform yourself into a cron daemon that fires up at 4:54AM and sleeps at 9PM.

<comment><USER8> Easier said than done. We'd all love to just make it up as it goes. But there's aHUGE problem with that. It's fine if you're single and don't have a ton of responsibilities, but if you're a parent and a responsible to a bunch of other people in your startup who are parents too, then what Ryan has done here is nothing short of remarkable.

Call it what you will, but it sure as hell is effective and true. And if you have to sacrifice being a "rebel" or "free spirit" for anything, your kids, family & health are probably the right things to do it for.

Not to mention, he's already pretty out there for running a startup, working from home and still caring for stability and the health of his families. I know many people who work their regular 9-5's who're doing far worse & they think they're real "rebels" for hitting the bars every night or something else that's utterly stupid...

I'd gladly transform myself into a cron daemon and have the best of life, family & work that I love doing.

Thanks for the post Ryan, you're an inspiration to other Dadtreprneurs!

<comment><USER7> Funny how extreme the views here are. So I either hit the bars and get drunk every night or I run on a manic schedule?

The premisses here are entirely false. There is a balanced life in between which IMHO is where we should be aiming.

<comment><USER8> Care to expand on this view of balanced life? I thought that's what's so appealing about Ryan's post... If you've got some thoughts on how to get a better balance, that would be much appreciated, rather than simply critiquing someone else's solution (which may or may not work for everyone, but may for others)

</comment></comment></comment></comment></comment><comment><USER9> I hate to nitpick, but I can't stand this persistent meme that eating in the morning boosts your metabolism, or some such nonsense. It doesn't[1]. This idea needs to die.

1\. [http://www.leangains.com/2010/10/top-ten-fasting-myths- debun...](http://www.leangains.com/2010/10/top-ten-fasting-myths- debunked.html)

<comment><USER10> I hate to nitpick, but the "Skipping breakfast is bad and will make you fat" section of that article is terrible, as are some of the others. The skipping breakfast section doesn't actually show data either way, it's just the author expressing his interpretation of correlation studies. I'm not saying he's necessarily wrong, just that he needs to show real data to support his claims.

Also, the site's design is terrible and the font size is too small.

</comment></comment><comment><USER11> Here is another good read (from few days ago on HackerNews) on "How Uservoice use Trello & Google Docs to make UserVoice better every day." - [http://www.uservoice.com/blog/founders/trello-google-docs- pr...](http://www.uservoice.com/blog/founders/trello-google-docs-product- management/)

We're following this rather closely and is pretty good so far. Once you master a decent tool, you can do lots with it. So, if you're an Asana guys, go with it but then if you've started with Trello, make the best of it. You do not need to get swayed here and there trying to find the best tool ready-made for you.

<comment><USER12> <http://news.ycombinator.com/item?id=3853688>

</comment></comment><comment><USER13> I really enjoyed this post. I like the idea of rotating through the different responsibilities during the week (Product / Video & Teaching etc). I could see this helping make sure you don't neglect areas that maybe you are a little less passionate about - for example, maybe you like thinking about product development but not HR / Culture, having a split schedule like this makes sure you put a little time into the HR problems each week instead of waiting for some emergency to force you to concentrate on that.

</comment><comment><USER14> Why 4:54 instead of, say, 4:55 or 5:00?

<comment><USER15> Just look at his picture, and you will have your answer.

<comment><USER16> I'm not seeing it.

</comment></comment></comment><comment><USER17> Asana looks pretty interesting.

I've been using TeamworkPM for 2 years now. It has been through a lot of improvements lately, which makes it very powerfull now. It organizes client/partner companies and projects in a matrix sort of way that allows you to really flexibilize access to tools and documentation. I like it.

For my personal stuff I use a simple TXT file with markup.

E.g.

##House Maintenance //Project or recurring work

\+ Clean patio //task that must be done

\- Paint doors //optional task

No dates or anything. I just look at the list early in the morning and decide what I'm doing for the day.

</comment><comment><USER18> Thanks for sharing.

Seems like Asana is getting a lot of love lately. Is it that great? I mainly use Workflowy & Trello but I'm always shopping for a better tool :)

<comment><AUTHOR> I found Trello too complex and WorkFlowy under-supported. Asana is just the right mix. It's powerful and flexible but it gets out of your way.

<comment><USER19> I just had a play with Asana, which is great in many ways.

But doesn't support a hierarchy other than Project->Task. As I frequently want to break things down into much smaller chunks and subchunks I guess I'll be sticking with Workflowy for the moment.

Shame, really. It's got a great interface.

<comment><USER20> Exactly, I replaced Asana with Workflowy for this reason.

The other showstopper for me was that Asana's mobile site is almost unusable outside of a fast wi-fi connection. Workflowy is extremely usable from a phone even when I'm in an area with weak bandwidth. So I can take notes and start planning while in a meeting and they're on my screen when I get back to my desk.

</comment></comment></comment></comment><comment><USER21> Decent post on his workflow. Asana looks nice enough but I would always prefer to use open source or pay for a product rather than using a product that is just free. Just doesn't make sense unless they are selling your info to advertisers.

Does anyone know how/why Asana is free?

<comment><USER10> It's freemium, free for <30 users.

</comment></comment><comment><USER22> I registered with my Google Account to asana.com after reading the article.

The interface is nice but I want to unsubscribe now, being sure that they cannot access my account anymore.

Is there any FAQ or page in Google listing all the enabled applications ?

Thank you

<comment><USER23> You can list authorized apps and revoke authorization from Google's accounts page.

Here's the direct link: <https://accounts.google.com/b/0/IssuedAuthSubTokens?hl=en>

or go here: <https://www.google.com/settings/> and click "Authorizing applications & sites"

<comment><USER22> thank you fps! I found the same in the dashboard ;-)

</comment></comment></comment><comment><USER24> Ryan - how do you conduct meetings with the people you need to during the week? Is it via Skype or chat?

Also, what are the challenges of managing others via distance?

Lastly, how do you compare Asana with Basecamp?

</comment><comment><USER25> And yet, this makes way more sense to me: <http://zenhabits.net/how-to-live- without-the-clock/>

</comment><comment><USER26> Asana doesn't look anywhere near as good as Wunderlist.

</comment><comment><USER7>
        Here's my daily routine
        Wake up at 4:54am [ ... ]
        Jump in front of my iMac

IMO if you wake up before 5 AM and jump in front of your iMac then there's either something wrong with your to-do list program or with your to-do list itself.

<comment><USER27> First hitting his iMac at 4:54am but also finishing work at 6pm with time in- between for his kids before school, the gym, and then finishing at 6pm. And...a four day week. I'd say he's got it figured out.

<comment><USER7> That only works as long as everything works. Soon as you car breaks down coming back from the gym, soon as your kid has a flu and you've got to take him to the hospital and come back at 2 AM, everything has broken down. Then the next day you can't remain on 9pm to 4am sleep anymore, you're then catching up with the late stuff from day before. Weekends then become compensation for the day before the day before when you had the kid flu and then ....well I've been there, done that, and this kind of schedule simply does not work(for me).

<comment><USER28> I know many people who I presume like you, let chaos and drama rule their lives.

Shit happens, it doesn't matter if you have a super-structured day or not. Your ability to handle it calmly and with confidence is what makes the difference in how balanced, productive and stress-free your life is.

<comment><USER7>
        I know many people who I presume like you, let chaos and drama rule their lives.

So you either wake up at 4:54 AM or you let "chaos and drama" rule your life? Aren't we missing some possibilities in between?

        balanced, productive and stress-free your life is.

Yes, because waking up at 4 AM and working till 6 PM sure sounds balanced, productive and stress-free. Thanks for the amazing insight.

<comment><USER29> If you simply regard this as the prototype for a typical day, and not a script that's intended to handle all possible atypical scenarios, then there is no problem for it. As to 4am - 6pm, it's not like he's working solid in that timeframe. He's got personal time (kids, gym, etc) worked in there as well.

All of that is beside the point, however, as this is the schedule that works for HIM. If it doesn't work for you (or if structured schedules in general do not work for you) then you are quite free to simply move along.</comment></comment></comment></comment></comment></comment>


AOL opens AIM and ICQ instant messaging protocols - <AUTHOR> http://www.process-one.net/en/blogs/article/openaim_aol_is_opening_its_instant_messaging_protocol/

<comment><USER2> ICQ soooooo nostalgic, who still uses ICQ?

I wonder why the makers of ICQ never predicted Facebook, they had the opportunity to improve the Interface, increase the features in a nice manner, and becoming facebook!

I dont know why they stuck themselve into the narrow one column interface thingie! They just cluttered their interface sooooo much

They so desperately needed to think outside the box, literaly

<comment><USER3> You'd be surprised how many people use ICQ still. Israel, Germany, Russia and Ukraine are big ICQ countries.

</comment></comment><comment><USER4> As the comment to the post says, "Open" is meaningless.

<http://dev.aol.com/aim/license>

Among other things, like requiring you implement certain features, it says:

"AOL will issue you one or more alphanumeric software keys that are uniquely associated with your Screen Name and your Application(s) (the "Open AIM Keys") to enable you to access the Tools you will use to build your Developer Application(s). During the registration process for access to and/or download of the Tools associated with a given Application or Applications (as set forth below), you will be prompted to identify to AOL certain information describing your development and intended use of the relevant Applications, including the URL of your Site."

</comment><comment><USER5> Sounds like they're about 6 years too late; everyone has already reverse engineered both of those protocols.

</comment><comment><USER6> People still use AIM? The client turned into a gigantic epileptic-fit inducing billboard.

IRC or Jabber. You're done.

<comment><USER3> You are clearly a hacker =)

Yes, AIM is the 2nd largest Network in the US after Yahoo. Internationally MSN Messenger and QQ are dominating in terms of pure user numbers.

</comment></comment><comment><USER7> This means everyone can use AIM and ICQ via the Jabber gateways: [http://www.process- one.net/en/blogs/article/openaim_aol_is_o...](http://www.process- one.net/en/blogs/article/openaim_aol_is_opening_its_instant_messaging_protocol/)

</comment><comment><USER8> I think Meebo and projects like Gaim/Penguin make this announcement a little less significant

</comment><comment><USER9> I'd really like to see someone mesh together IM and SMS in a seamless way. Probably won't happen while mobile phone carriers are charging per-SMS, though.

</comment><comment><AUTHOR> It probably bring a lot of opportunity to build new interesting services.</comment>


Ask HN: What is that standalone organization program that orgmode people like - <AUTHOR> This standalone program was supposedly good for organization for programmers; i remember it had a subpar GUI that people complained about but was really good. I think there was some green in the GUI. I can't find the program googling around. I first saw it on HN which is why i'm asking, but the site:news.ycombinator.com google queries i'm trying are not helping.<p>What is this program please? <comment><AUTHOR> [https://leoeditor.com/emacs.html](https://leoeditor.com/emacs.html)

</comment><comment><USER2> Maybe WorkFlowy? ([https://workflowy.com/](https://workflowy.com/))

<comment><AUTHOR> No it wasn't that. It was a standalone GUI program with a GUI that seemed non- modern but was useful.

</comment></comment><comment><AUTHOR> I think it was more programmer-centric than just organizing. It was for organizing code ideas too.

<comment><AUTHOR> The gui reminded me of an old tcltk gui or something

<comment><AUTHOR> Now that i think about it it wasn't a gui it was i think a tui and maybe an editor. it might be leo i was thinking of. I'm pretty sure it was leo. Sorry for not being clearer.

</comment></comment></comment><comment><USER3> maybe it is listed on this thread? >> [https://news.ycombinator.com/item?id=21667045](https://news.ycombinator.com/item?id=21667045)

<comment><AUTHOR> Thanks but didn't see it there.

</comment></comment><comment><USER4> Maybe bear.app or Ulyss. I use bear.app and really like it.

</comment><comment><USER5> maybe [http://notational.net/](http://notational.net/)</comment>


500 Startups Infographic Celebrates 3 Years of Success - <AUTHOR> http://advsor.com/500-startups-infographic-three-years/?utm_source=Hacker+News&utm_medium=blog+post&utm_campaign=500+startups+infographic

<comment><USER2> As usual, visual data presentation rocks. Interesting how 500st perform comparing to others accelerators/early stage investment funds.</comment>


The 28 Bytes of Ruby Joy - <AUTHOR> http://rbjl.net/26-the-28-bytes-of-ruby-joy

<comment><USER2> Raganwald does a nice job explaining the pitfalls (and to the OP's credit this was also linked from the original post.)

[http://github.com/raganwald/homoiconic/blob/master/2009-02-0...](http://github.com/raganwald/homoiconic/blob/master/2009-02-02/hopeless_egocentricity.md)

</comment><comment><USER3> so this is basically a simplified version of the null object pattern with all its problems.

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

it is worse than the null object pattern though as you have done it to your entire application. a better approach would be to determine when you have a hash that you want this behaviour from and implement a class for that specific behaviour rather than shotgunning it into everything.

</comment><comment><AUTHOR> My initial reaction is that this is a bad idea. I would rather fail quickly than pass the nil along.

But I'm curious what others think.</comment>


Intel developers create shitty code too - <AUTHOR> http://www.reddit.com/r/programming/comments/j5j2d/intel_developers_create_shitty_code_too/

<comment><USER2> Why not post the direct link to your blog? There's nothing on reddit ATM, so it's just another layer to click through without any added value.

<comment><USER2> oh man...

 _Recently, while telling you about check of another project_

What did you try to say? Was that anything like 'Recently when I told you how we checked some project...'?

 _it is a very quality code_

should be 'high-quality'

 _you just not only see a puddle, but_

'not only do you see a puddle, but...'

etc etc etc

It's nice to see an English-language technical blog from Russia, but man, PLEASE, improve your English.

</comment></comment><comment><USER3> Direct link: <http://www.viva64.com/en/b/0106/></comment>


About YouTube RealTime - <AUTHOR> http://www.google.com/support/youtube/bin/answer.py?hl=en&answer=145714

<comment><USER2> Who else was expecting "RealTime" to be some kind of live streaming feature?

<comment><USER3> My first reaction was 'YouTube is taking on ustream and justin.tv?'

</comment></comment><comment><USER4> This is a neat step forward in actually making YouTube accounts worthwhile but, as others I thought it would be live streaming. damn :)

</comment><comment><USER5> Reminds me of FriendFeed</comment>


Show HN: Resistor Colour Code Challenge, a game to teach resistor colour codes - <AUTHOR> http://sdmtr.github.io/rccc/ <comment><AUTHOR> Hello HN, I find it easier to learn through practice and repetition so I made this little game to help me with resistor colour codes.

At the moment it picks a random E12 resistor value, but at some stage I'm hoping to have time to update it so that you can pick different series, tolerances, and number of bands.

Someone on reddit asked why it doesn't just get the player to type in the value of the resistor into a text box (like 1M, or 6.8k or 150R or whatever), and the reason is that I think it's much more useful to learn the colour translations directly since converting the numbers to a resistance value is trivial. Getting the numbers right first is more important.

The source is on Github, but since it's an entirely self-contained HTML file there's nothing much to see.

I've only tested this on the latest Chrome on macOS so YMMV with different browsers and platforms. If you have any issues you'd like to report please add them to the Github tracker or reply to this comment. Cheers :)

[https://github.com/sdmtr/Resistor-Colour-Code- Challenge](https://github.com/sdmtr/Resistor-Colour-Code-Challenge)

</comment><comment><USER2> Nice - I gave it a try, and found that I had forgotten how to do something that was once automatic.

I still recall when I realized, as a kid, that the middle six are in rainbow order.</comment>


Bubonic plague found in a herder in Inner Mongolia, China says - <AUTHOR> https://www.nytimes.com/2020/07/06/world/asia/china-bubonic-plague-inner-mongolia.html <comment><USER2> Bubonic plague pops up relatively often and is curable with antibiotics.

It's not really such a big deal anymore.

<comment><USER3> I am not a doctor (nor a cyborg) but Wikipedia says (and gives a reference):

 _" With treatment the risk of death is around 10%."_

[https://en.wikipedia.org/wiki/Bubonic_plague#cite_note- Lance...](https://en.wikipedia.org/wiki/Bubonic_plague#cite_note-Lancet2007-3)

In a recent book, it is recounted that in the US from 2000 through 2009, 57 cases were reported with 7 deaths.

[https://www.ncbi.nlm.nih.gov/books/NBK549855/](https://www.ncbi.nlm.nih.gov/books/NBK549855/)</comment></comment>


Anti-Patterns in Python Programming - <AUTHOR> http://lignos.org/py_antipatterns/ <comment><USER2> The more frequent and dangerous pitfalls are, in my humble opinion:

\- Bare except: statements (that catches _everything_ , even Ctrl-C)

\- Mutables as default function/method arguments

\- Wildcard imports!

<comment><USER3> Couldn't agree more! One of my all time new python interview questions gets a surprisingly large number of developers.

Given a function like:

        def append_one(l=[]):

            l.append(1)

            return l

What does this return each time?

        >>> append_one()

        >>> append_one()

        >>> append_one()

<comment><USER4> At what level would you test an interviewee with this kind of question: Python guru, Python expert, Python ninja, Python rockstar, or merely "is familiar with Python"? Your example is a very common gotcha that has been covered ad nauseam, but IMO it's still the kind of bug that would be caught immediately in code review and is very easily fixed.

<comment><USER5> I thought we were past using trick questions like this anyways! Since, you know, it would be easy for an experienced yet anxious programmer to get tripped up on this, but someone who just browsed "python interview questions 101" to breeze on through. Also it selects against experienced multi-language developers, since language-specific quirks like this are not generally useful information to keep front-loaded, but are trivial to become re-familiar with in a work environment, or even _gasp_ learn for the first time from a co- worker or helpful article.

If the industry as a whole cared about evidence-based, non-superstitious, non- monoculture-reinforcing hiring practices, we'd realize that tripping people up and judging programming capability based on minutia is as unfair as it is self-defeating.

</comment></comment></comment></comment><comment><USER6> Mmm... you should always use 'if x is not None:' imo.

It's very common for libraries to make values evaluate to False, and very easy to get bugs if you just lazily test with 'if x'.

Sqlalchemy springs to mind immediately as one of the common ones where using any() and if x: is a reeeeeallly bad idea; there are plenty of others.

I'm pretty skpetical about modifying your coding behavior based on what libraries you happen to be currently using.

'If x' isn't your friend.

<comment><USER7> Especially taking into account the more bizarre bugs (features?) of python:

        (bool(datetime.time(0)), bool(datetime.time(1))) == (False, True)

I _always_ consider `if x:` a bug, unless x can only be a boolean. Furthermore, it seriously hinders readability and clarity of the code.

<comment><USER8> I was specifically looking through these comments for your example.

I got bit by this once, and it's certainly... _strange_ (it's also surprising). It's considered "behavior consistent with the rest of Python" [1] (which I can agree with) even if it makes little sense in terms of immediate readability to someone who hasn't previously encountered it. Fortunately, the workaround is easy, and it _is_ documented.

There's at least a couple of spats on the mailing list regarding this feature that are of interest to the curious or at least those who are interested in the history of such behavior.

[1] [http://bugs.python.org/issue13936](http://bugs.python.org/issue13936)

</comment></comment></comment><comment><USER9> Check out Raymond Hettingers Transforming Code into Beautiful, Idiomatic Python talk on youtube [1].

Great talk on avoiding some of the common pitfalls new python developers step in. Exposes some nice language features.

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

<comment><USER10> And the slides are here:

[https://speakerdeck.com/pyconslides/transforming-code- into-b...](https://speakerdeck.com/pyconslides/transforming-code-into- beautiful-idiomatic-python-by-raymond-hettinger-1)

</comment></comment><comment><USER11> The only thing I disagree with is "use nested comprehensions" thing. In my mind: x = [letter for word in words for letter in word]

is inside-out or backwards or backwards. I want the nested for being the less specific case:

       x = [letter for letter in word for word in words]

makes more sense in my mind.

(It's also my first answer to the "what're some warts in the your language of choice).

<comment><USER12> I'm in the camp that if your list comp needs more than one for clause, it's complicated enough to be broken out into actual for loop.

<comment><USER13> Everybody, listen to this person!

<comment><USER14> Then it turns into this:

        x = []
        for word in words:
           for letter in word:
              x.append(letter)

Which in addition to being far more verbose and less readable, is also less efficient.

<comment><USER11> I'll tell you what I tell my team: it's barely more verbose, and the readability is up for extremely serious debate (I mean, everyone understands nested for loops, but the nested list comprehension thing is wierd... why is something that appears way way before the innermost "for" the same as something in that for loop's declaration?)

It may also be less efficient. When I'm shown numbers that the difference between the comprehension and the for loops are (in each specfic instance, or in aggregate for the program in question) is above statistical noise AND it's a significant factor in overall runtime (I won't ever worry about a millisecond when the runtime is 1s), then I'll gladly say: put them in.

Until then, just use the loops. Use of really strange language features that are surprising, not exactly idiomatic (this argument is common for this case) and not shown to be of actual benefit, are detrimental in a polyglot environment.

<comment><USER14> When I see a list comprehension I can see with a single glance what it's doing. Not so with the 4 line for loop. Comprehensions aren't a strange language feature in Python either...it's one of the central features of Python.

Don't use something until it's proven to yield a great benefit is a very conservative approach. That may be appropriate in some cases, but I'm very glad that I am not in such a team since that would be incredibly frustrating. I much prefer an approach where you go with the choice that's most likely the better one, even if it's not 100% proven better or not a big difference.

<comment><USER11> I'm talking strictly about multi "for" comprehensions. They just are too confusing to me and most of the people I've worked with ever. But we also use lots (most) python features fully, just that one has been the source of dozens of bugs in this one codebase, not to mention others I've worked on with other people. It is a shitty non-intuitive syntax.

Nested for loops, flatten(), various itertools functions and chained generator expressions all suffice, and I have yet to see them provide measurable slowdown to actual code compared to good algorithms and decent factoring. Like I said, I'll even use multi-for comprehensions if there is a measurable difference over nested for-loops.

Also, I think you are intentionally misrepresenting what I said - when I said don't use "weird stuff" I explicitly excluded idiomatic language things. That includes (for python) single for comprehensions. The multi-for comprehension is something I rarely come across in the wild despite it's long time existence in python - it's a weird one.

<comment><USER15> I think you are trying to justify your strange preferences after the fact. How exactly were there bugs caused by nested for loops that you encountered? It's not like if you mess up the order it will actually run without throwing an exception. Nested list comprehensions are idiomatic python. It's really strange that you don't let your team use them because you are afraid of them.

<comment><USER13> Well, Google doesn't recommend it either ([http://google- styleguide.googlecode.com/svn/trunk/pyguide.ht...](http://google- styleguide.googlecode.com/svn/trunk/pyguide.html?showone=List_Comprehensions#List_Comprehensions)), but I guess they are all bloody noobs or whatever.

I mean, single level comprehension is good. Nested list comprehension is OK only in most trivial cases. In my opinion, if I see how a person uses list comprehension, I can tell, what kind of person this is.

There are people who, for example, do this def all_is_okey_dorey(lst): return all([some_predicate_fn(x) for x in lst])

instead of this def all_is_okey_dorey(lst): for x in lst: if not some_predicate_fn(x): return False return True

and can live with themselves somehow.

Or there are people, who refuse to acknowledge the existence of anything besides Python 3.x and when forced to write in 2.x use list comprehension instead of iterator comprehension.

Thing is, the _validity_ of using nested list comprehension depends not on the amount of for loops you have, but on the thing you want to do with the item. If it's just selection, then it might be ok. If you want to apply some kind of function to it, then it's most probably the case of trying to be too clever.

<comment><USER15> If you think two loops is not a "simple case" of a list comprehension as Google suggests to use them for, perhaps you shouldn't be doing code reviews. It sounds like your team would be held down by your weak grasp of the language.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> > write a list comprehension (...) code just looks a lot cleaner and what > you're doing is clearer.

I know how to use list comprehensions, but often avoid using them and use the standard for loops. List comprehensions look nice and clean for small examples, but they can easily get long and become mentally hard to parse. I would rather go for three 30 character lines instead of one 90 character line.

<comment><USER17> Depends on how you want to program: imperative vs functional.

Personally I think list comprehensions are the most beautiful part of Python, though sometimes I use map() when I'm trying to be explicitly functional (I realize it's allegedly slower, etc).

Generally I think list comprehensions are cleaner and allow you to write purer functions with fewer mutable variables. I disagree that deeply nested for loops are necessarily more readable.

<comment><USER3> Map is not allegedly slower, it is demonstrably slower.

$ python -mtimeit -s'nums=range(10)' 'map(lambda i: i + 3, nums)' 1000000 loops, best of 3: 1.61 usec per loop

$ python -mtimeit -s'nums=range(10)' '[i + 3 for i in nums]' 1000000 loops, best of 3: 0.722 usec per loop

Function calls have overhead in python, list comprehensions are implemented knowing this fact and avoiding it so the heavy lifting ultimately happens in C code.

<comment><USER17> Fair enough. I said "allegedly" because I had never personally measured the performance difference.

Even though you could construe map as "half as fast" (or twice as slow) as the equivalent comprehension, I don't see a difference of ~1 usec making any difference in my code thus far. Good to know, though.

<comment><USER3> Yup, for very large calculations, or certain use cases, it can make much larger differences. It all depends on your use case.

</comment></comment></comment></comment></comment><comment><USER18> I always struggle to understand why a list comprehension

      alist = [foo(word) for word in words]

is considered more Pythonic than _map_

      alist = map(foo, words)

<comment><USER19>
        alist = [foo(word) for word in words if word.startswith('a')]
        alist = map(foo, filter(lambda word: word.startswith('a'), words))

Which reads better?

<comment><USER20> I don't use FP practices in Python much, but if I did I'd define the filter outside the map, like so:

        begins_with_a = lambda x: x.startswith('a')
        alist = map(foo, filter(begins_with_a, words))

<comment><USER21> Even with named functions, Python's use of global functions instead of methods for iterators force you to read the expression from the inside out. I think Lisp languages nailed this with their threading macros, which allow natural left-to-right reading, but Ruby's strategy is better than Python's, too, while maintaining very similar syntax.

        ;; clojure
        (let [begins-with-a #(.startsWith % "a")
              foo #(do-some-stuff-with %)]
          (-> words (filter begins-with-a) (map foo))))

        # ruby
        words.filter { |e| e.start_with?(?a) }.map { |e| foo(e) }

It doesn't really make sense for things like `len` and `map` to be global functions in object-oriented languages.

</comment></comment></comment></comment><comment><USER22> This is a nice little article, but I wonder about some of the design decisions. In particular:

> The simplifications employed (for example, ignoring generators and the power > of itertools when talking about iteration) reflect its intended audience.

Are generators really that hard? (Not a rhetorical question!)

The article mentions problems resulting from the creation of a temporary list based on a large initial list. So, why not just replace a list comprehension "[ ... ]" with a generator expression "( ... )"? Result: minimal storage requirements, and no computation of values later than those that are actually used.

And then there is itertools. This package might seem a bit unintuitive to those who have only programmed in "C". But I think the solution to that is to _give examples_ of how itertools can be used to create simple, readable, efficient code.

</comment><comment><USER23> Point 3 of the iteration part is not good advice. With [1:] you're making a copy of the list just to iterate over it...

<comment><USER24> You're right. I still wouldn't recommend looping over indices, but rather using itertools.islice(xs, 1, None) instead of xs[1:].

</comment></comment><comment><USER25> I find that the testing for empty is a bit misguided if you want to be rigorous with types. for instance:

         >>>def isempty(l):
         >>>    return not bool(l)
         >>>isempty([])
         True
         >>>isempty(None)
         True

If embedded within your program logic this kind of pattern can waste precious time with debugging. You can catch your errors much more quickly if you are explicit with your comparisons.

</comment><comment><USER26> Failing to use join is a big one.

I have seen countless instances of people writing the logic to output commas in between items (like for CSV export) that they want to concatenate into a string.

        header_line = ','.join( header for header in headers )
        csv_line    = ','.join( str(dataset[key]) for key in dataset.keys() )

Example for a case of a dictionary mapping a string to a bunch of numbers.

<comment><USER27> Proper Python would use the csv module for this operation, as your CSV export would break if `header` or `dataset[key]` contains a comma.

<comment><USER26> Yeah. This was a special case for a one line CSV that was requested by my client. It was a dictionary with a bunch of single measurements.

</comment></comment></comment><comment><USER28> > PEP 8 is the universal style guide for Python code.

> If you aren't following it, you should have good reasons beyond "I just > don't like the way that looks."

Core dev and Guido have said many times PEP 8 are not holy.

See [https://mail.python.org/pipermail/python- dev/2010-November/1...](https://mail.python.org/pipermail/python- dev/2010-November/105681.html)

In essence, a "stupid reason" like "I don't like it" is a valid reason not to adopt PEP 8.

In fact, I don't like the PEP 8 recommendation on docstring. I like Google's docstring (aka napoleon in Sphinx contrib-module).

[http://sphinxcontrib- napoleon.readthedocs.org/en/latest/exam...](http://sphinxcontrib- napoleon.readthedocs.org/en/latest/example_google.html)

</comment><comment><USER29> Interesting read, a couple of things I noticed though:

1\. In "Checking for contents in linear time" both examples are the same. Perhaps remove the list entirely in the second example

2\. Itertools.islice helps if you need to slice a list with a bajillion elements

</comment><comment><USER30> # Avoid this

lyrics_list = ['her', 'name', 'is', 'rio']

words = make_wordlist() # Pretend this returns many words that we want to test

for word in words:

        if word in lyrics_list: # Linear time

            print word, "is in the lyrics"

# Do this

lyrics_list = ['her', 'name', 'is', 'rio']

lyrics_set = set(lyrics_list) # Linear time set construction

words = make_wordlist() # Pretend this returns many words that we want to test

for word in words:

        if word in lyrics_list: # Constant time

            print word, "is in the lyrics"

the second example should read ... if word in lyrics_set: ...

<comment><USER31> Just to point out, if you really will have a tiny list and that's knowable, it's possible this example would be best with a straight linear time check. It could be fewer operations than hashing a string and looking it up. Practically pedantry though.

</comment></comment><comment><USER32> I use python for datamining, and most of my work is done exploring data in iPython.

> First, don't set any values in the outer scope that > aren't IN_ALL_CAPS. > Things like parsing arguments are > best delegated to a function named main, > so that any > internal variables in that function do not live in the > outer > scope.

How do I inspect variables in my main function after I get unexpected results? I always have my main logic live in the outer scope because I often inspect variables "after the fact" in iPython.

How should I be doing this?

<comment><USER33> If you are using the interpreter directly then that particular bit of advice is hard to follow since you basically live in global all the time. For that reason I would say that this advice applies mainly to .py files.

<comment><USER20> Agreed.

There's a big difference between "scripting" and "writing software" in terms of best practices.

If you're writing some ETL scripts in an IPython notebook, it would be overkill to encapsulate everything to keep your global scope clean.

</comment></comment></comment><comment><USER34> Instead of this:

        # Do this
        lyrics_set = set(lyrics_list) # Linear time set construction
        words = make_wordlist()
        for word in words:
            if word in lyrics_set: # Constant time
                print word, "is in the lyrics"

You could do this:

        lyrics_set = set(lyrics_list)
        words = set(make_wordlist())
        matched_words = list(lyrics_set & words)
        for word in matched_words:
            print word, "is in the lyrics"

<comment><USER20> Of, off the top of my head:

        for word in (set(lyrics_list) & set(words)):
            print('{} is in the lyrics'.format(word))

<comment><USER34> Even shorter, nice. How about this one liner, the last bit is looking a bit messy any ideas?

        print " is in the lyrics \n".join([set(lyrics_list) & set(words)]), "is in the lyrics"

<comment><USER35> How about

      >>> lyrics_list = ["her", "name", "is", "rio"]
      >>> words = ["is", "rio"]
      >>> print '\n'.join("{} is in the lyrics".format(word) for word in set(lyrics_list) & set(words))
      rio is in the lyrics
      is is in the lyrics

<comment><USER20> Heh, I just replied with pretty much this exact code to someone else trying to make it a one-liner.

Yes, it's possible. I would never, ever publish code like this, though. It's opaque.

</comment></comment></comment></comment></comment><comment><USER20> I can't think of a single case where using sentinel values is necessary or appropriate in Python.

Generally speaking, one should just return from within the loop.

<comment><USER36> I get what you're saying, but even when sentinels are used inside a function, returning a _-1_ to the caller seems like a pretty bad API. It's OK to raise _ValueError_! I had thought the idiomatic sentinel value was an instance of _object()_ you could _is_ against, anyway.

<comment><USER20> I agree - _especially_ when you're returning a list index, since `[-1]` is a valid index in Python.

</comment></comment></comment><comment><USER37> > Consider using xrange in this case. Is xrange still a thing? doesn't range > use a generator instead of creating a list nowadays?

<comment><USER24> Well, I'd say no, not in "Python".

It seems to me that when people say "Python" they still mostly mean Python 2, where range returns a list and xrange a generator. In Python 3 there is no xrange and range returns a generator, but I think people still most often call that language "Python 3", not "Python".

</comment></comment><comment><USER38> I don't think there us such thing as a pattern per language, unless the language is really unique. IMO what does exists is Language Bad Practices, which are actually tied to the language itself.

An (anti)pattern is something abstract and can be applied to any other similar language.

</comment><comment> yoo-interested Speaking of find\\_item, is the `for..else` loop (which can be used to write find\\_item in another way) considered Pythonic? I personally like `for..else` loops but I don't know where the consensus is at.

<comment><USER39> [http://en.wikipedia.org/wiki/No_true_Scotsman](http://en.wikipedia.org/wiki/No_true_Scotsman)

Don't ask what's "more Pythonic" or "less Pythonic", Python is not a cult, it's a very practical scripting language. Ask for benefits and weaknesses of a given approach in given circumstances.

<comment><USER40> Speaking a language in the same way as other speakers of that language makes you easier to understand.

<comment><USER39> When it comes to basic formatting, symbol naming and high-level code organization, sure.

But computer languages, unlike human languages, are precise. Their intent is clear. And you'll never encounter a case where the Python 3 interpreter hasn't heard of that particular Python 3 keyword you're using.

It's also not an excuse to avoid certain features of a language, when using them leads to a better and simpler solution, just because they're _less popular_. Programming is not an exercise in popularity.

On the other hand, human language is fuzzy and full of phrases that consist of statements having nothing to do with their meaning. Such as me saying "your argument doesn't hold water".

Human languages also have additional layers entirely separate from the primary meaning of a conversation, such as sending social cues like "how smart am I", "do I like you", "do I fit in this group", and "am I a leader or a follower". Each layer of concern drives a certain way of expression and imitation, none of which occurs (or _should_ occur) when writing computer code.

A better example to compare to programming code would be mathematical notation. As long as you express your intent shortly, using the available mathematical notation, people will be fine, and your intent will be clear.

I've never seen someone ask in a math forum if their formula is more Mathematic one way, or another way.

</comment></comment></comment></comment><comment><USER41> an anti-pattern is a design pattern gone bad. these aren't anti-patterns. they're just noobie mistakes and non-idiomatic expressions.

<comment><USER42> is it an anti-pattern to call something an anti-pattern because the author isn't sure what an anti-pattern is?

</comment></comment><comment><USER43> read this right after using a range in a loop in order to get the index. Can't believe I went this long without knowing about enumerate.

<comment><USER44> It first mentions enumerate as a footnote after looping with a range:

[https://docs.python.org/2/tutorial/controlflow.html#for- stat...](https://docs.python.org/2/tutorial/controlflow.html#for-statements)

But the tutorial in the Python docs has pretty high information density and good coverage of things like this.

(I think there is some risk that this comment will be interpreted as _If you don 't know enumerate you need to look at the tutorial._ That isn't what I intend, I just want to point out that the tutorial is a reasonably dense resource that hits on a lot of stuff like enumerate.)

</comment></comment><comment><USER45> Question, how do you over multiple long lists (in python 2) especially if zip itself takes a long time to zip them, for example.

<comment><USER46> You use Python 3.

J/K, while this is technically a limitation of Python 2, there actually is izip in itertools package which is a generator and works in similar way to zip in python 3.

<comment><USER45> Awesome! I knew there was some lazy zip-ish thing for python 2. I personally hate using range(len(foo)) as anyone else.

</comment></comment></comment><comment><USER47> I would say that the leaky out scope problem combined with those really similar typos is perhaps most diffcult to spot out.

</comment><comment><USER48> > Things like parsing arguments are best delegated to a function named main, > so that any internal variables in that function do not live in the outer > scope.

Why a function named `main`? We're not writing C here, there's no need for a function named `main`. Let's call it something that's actually useful, like `parse_cmd_arguments`

</comment><comment><USER49> Set membership checking is constant-time? Somehow I don't believe that.

<comment><USER50> Sets are basically hash tables that store only keys and not values. You can easily write your own Set implementation by subclassing `dict` and stripping out references to `.values()`, etc.

As such, testing for membership is an O(1) hash table lookup. If you're skeptical:

        $ python -m timeit -s 'nums=range(1000000)' '100000 in nums'
        1000 loops, best of 3: 1.4 msec per loop

        $ python -m timeit -s 'nums=range(1000000)' '500000 in nums'
        100 loops, best of 3: 7.15 msec per loop

        $ python -m timeit -s 'nums=range(1000000)' '900000 in nums'
        100 loops, best of 3: 13 msec per loop

        $ python -m timeit -s 'nums=set(range(1000000))' '100000 in nums'
        10000000 loops, best of 3: 0.0572 usec per loop

        $ python -m timeit -s 'nums=set(range(1000000))' '500000 in nums'
        10000000 loops, best of 3: 0.057 usec per loop

        $ python -m timeit -s 'nums=set(range(1000000))' '900000 in nums'
        10000000 loops, best of 3: 0.0584 usec per loop

</comment></comment><comment><USER51> islice should be used, not xrange</comment>


Snapchat petition attracts one million signatures - <AUTHOR> http://www.bbc.co.uk/news/technology-43045042 <comment><USER3> I really appreciate that this clickbait and influencer garbage is now separated from snaps and stories of my contacts. I don't get why this would make the app less usable. Snapchat was never an app with great UX but I think the new update is a great improvement.

<comment><USER4> My main dislike is that it now uses an algorithm to populate my "friends" section, hiding arbitrary friends from me. I have no confidence that I can see all my friends' stories because of the exceptionally poor UX.

On top of this, Snapchat has decided that people I connect with who don't connect with me are as valueless as random adverts and "influencers". I now have no way of consuming stories from people I find interesting without scrolling endlessly through ads and clickbait. Obviously this is by design but it is some of the most user-hostile UX I have encountered.

</comment></comment><comment><USER5> I thought it was great, it made it so much easier to stop using snapchat.

</comment><comment><USER6> This is analogous to Facebook moving from individual walls to a newsfeed. Why did they move to newsfeed? Easily consumable ad units.

People WILL get used to it, and advertisers will soon have programmatic access to ads that will show in the Discover section. Whether or not they will add value to the advertisers with this format is the real question.

This change is no surprise to me, nor will they change it. Driven by the need for ad revenue [0]

[0] - [https://news.ycombinator.com/item?id=14983800#14985153](https://news.ycombinator.com/item?id=14983800#14985153)

<comment><USER7> There was no real alternative for facebook. There is one for snapchat and it's called instagram stories. The way I see it, snapchat will lose even more users to instagram while at the same time increasing their per-user revenue. What's left to be seen is whether the increase in per-user revenue will make it up for the lost users.

<comment><USER8> Snap and Bitmoji are at the top of the charts in the app & play store (even above Instagram for the most part) since the update came out, so I wouldn't be so sure about that.

</comment></comment></comment><comment><USER9> I really like the change. More friends, fewer brands, and the ability to unsubscribe from specific users' stories. I hope people eventually acclimate to it and it sticks around.

<comment><USER10> In principle I like that I no longer have to look at all that clickbait shite when I go to look at Stories, that said the UX of the new friends screen _is_ pretty wild. The app is also now almost unusably slow on my Nexus 5X - <USER2> THAT old a phone - which probably contributes to peoples' reactions.

I feel like this change is probably bad for Snapchat's revenue (in terms of clickthrough to sponsored articles etc) and good for the user, which is a refreshing trend, so I hope that if there is any reaction to this it is to improve UX on the friends screen and performance overall, and not to roll back.

</comment></comment><comment><USER11> People always hate redesigns of popular services, and the truth is that it doesn't matter. A redesign has never encouraged any significant % of users to leave any service. People hated Windows 8, new Youtube looks, new Facebook timelines, Twitter changes, and nobody ever left any of these because of those changes. Another matter is that these petitions can be easily scripted and signed from thousands of IPs in a matter of minutes.

<comment><USER12> I can also say that I've basically stopped using Last.FM after one of their re-designs.

It's not that I have signed any petitions, it's that with new feature set and presentation, there wasn't any place in my life for this. I still scrobble but I'm not really visiting.

That, and failure to bring in positive change. Instead of addressing problems that I am seeing (e.g. trolls and bitter people spamming broadcasts of artists) they're tweaking colors. Ok, bye.

<comment><USER13> What did you use last.fm for besides scrobbling? I still go to it once a week to see my scrobbles and popularity of certain artists or related ones. The redesign removing personalization of own profiles annoyed me. But didn't change my habits much.

<comment><USER12> Any new artist name I have heard, I would look up in last.fm to gauge what they similar to and how big they are.

I used events (to show that I'm going to a live concert).

I had friends there. Another thing is people stopped using last.fm eventully.

I did artsts tagging and used shoutbox. This is where lack of community tools really kicked in. Many shoutboxes were outright dominated by undesirables.

</comment></comment></comment></comment><comment><USER14> How can something like this even happen? Don't they have hallway usability testing prior to a release?

<comment><USER15> Evan Spiegel is convinced that he's the second coming of Steve Jobs. [http://www.businessinsider.com/what-its-like-to-work-at- snap...](http://www.businessinsider.com/what-its-like-to-work-at- snapchat-2016-10)

<comment><USER16> After reading that article, I now hate that guy and I don't even know him

<comment><USER17> Your comment says more about you than it does Spiegel

</comment></comment></comment></comment><comment><USER18> "products" are rebelling ? Snapchat will not care, until it impacts their real clients, you know, the announcer..

</comment><comment><USER19> Sounds like Snapchat is pulling a YikYak.

</comment><comment><USER20> > "But I don't think this large Silicon Valley company is going to take notice > of a petition."

Except it's based out of LA...

</comment><comment><USER21> When I look at "discover" I basically only see somalian people. Is that just me or wtf is happening?</comment>


Who Can Do Something About Those Blue Boxes? - <AUTHOR> http://daringfireball.net/2010/01/blue_boxes

<comment><USER2> In the midst of the iPad Flash controversy I think people are overlooking that Adobe has failed to deliver a major mobile Flash upgrade since early 2007. They missed their promise to deliver a beta for the Android and WebOS platforms in 2009. Android support is now projected for mid-2010. Since 2007 Apple has released 3 major versions of their iPhone OS, Google has announced, developed, and released a SmartPhone OS with 2 major revisions. Apple developed, announced, and will release the iPad before Adobe ships a modern mobile Flash for a large variety of devices. Linux & OSX support for Flash on the desktop is still subpar. If you think Flash is good or bad there are serious questions here about Adobe's ability to simply support this platform that is so widely relied on by developers.

<comment><USER3> Precisely. Not to mention the wonderful little easter egg that is flash- cookies which the user has no control over or visibility into. Adobe has let most of it's constituencies down.

<comment><USER4> I didn't know about flash cookies. That's a mini scandal.

Here's Adobe's terrible UI for viewing and deleting your Flash cookies: [http://www.macromedia.com/support/documentation/en/flashplay...](http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager03.html)

<comment><USER5> That's actually bookmarked as the first item in my Firefox toolbar. Use it regularly, though also using the Better Privacy FF add-on. .

</comment></comment></comment></comment><comment><USER6> Here's something that came to mind reading this: When the iPhone was announced (and once again when the SDK was announced) there was a fair amount of teeth gnashing and whining about Java not being supported.

Haven't heard one peep about Java on iPad this time around. Will Flash suffer the same fate?

<comment><USER7> The Java-on-the-iPhone critics were less numerous from the start (or at least were not as vocal). But you're right, though; I think it's easier now to wonder if Java would offer anything compelling to the iPhone platform anyway (other than offering another way to run your own code, which is a different discussion entirely).

As to your second question: Java is a fundamentally important language in its own right (the enterprise angle); its success was never really tied to the availability of client-side runtimes. Flash doesn't quite have that same luxury.

<comment><USER6> I'm kind of second-guessing my thought as well. In the early days (well, the first year, really) of the iPhone Apple was steadfast in their idea that everything would be web-based. No SDK needed.

The concern over Java at _that_ point was if it was going to be allowed on the phone at all. JME/J2ME was what the mobile industry was trending toward. The success of Cocoa Touch and the App Store has pretty much made J2ME a footnote (except for the few carriers still hanging on).

<comment><USER8> _Apple was steadfast in their idea that everything would be web-based._

Is there an actual quote to back this up? I was paying close attention back in the "shit sandwich" days and I don't recall this "steadfast" insistence being actually stated by anyone from Apple. What I do remember was just a big disappointment at the time and Apple's usual silence on future plans. And the web SDK they did offer did actually end up getting used widely, as Gruber mentions in this article.

I'm not trying to argue, I just see this idea that Apple never planned a native SDK is repeated so often and yet it doesn't fly with what I remember.

<comment><USER6> I totally understand. In the flurry of it all we've all forgotten what you remembered: Apple never said anything to the point of "No SDK. Ever."

Aside from Jobs' WWDC 2007 address there were rumors and signals that "web was all you're gonna get"[1][2], but obviously they planned an SDK that eventually was announced 9 months after the reveal. Or developer pressure convinced the staff to polish the internal tools and APIs for public use? I'm kind of sad that with the new secretive Apple, we'll never know the full story behind the scenes for a long long time to come.

[1] [http://theappleblog.com/2007/06/11/tab-wwdc-2007-live- covera...](http://theappleblog.com/2007/06/11/tab-wwdc-2007-live-coverage/)

[2] [http://arstechnica.com/apple/news/2007/10/source-iphone- sdk-...](http://arstechnica.com/apple/news/2007/10/source-iphone-sdk-will- remain-web-based-for-the-foreseeable-future.ars)

</comment></comment></comment></comment></comment><comment><USER9> A screenshot showing aviary working because they made a quicktime video alternate? Aviary's whole platform is a stunning example of how awesome Flash really can be, it's a suite of cutting edge design tools done in Flash and they haven't ported _those_ to the iPhone - check them out if you want, their apps are just amazing: <http://www.aviary.com>

The 'games' they mention are not what TFB is showing either. Addicting Games (owned by MTV) is a casual game site with somewhere around a million daily visitors and 1000s of games you can just click to play, not apps you need to find, maybe buy, download and install.

Even if that process is streamlined it doesn't scale to the extent Flash game sites do where at any time your investment in any game is just a click and countless other games are also just a click away.

<comment><USER10> But the vast majority of flash games are useless on the iPhone and iPad, because they expect input mechanisms that those devices don't have. Though there's probably less variety, native games clearly provide a better experience because they are designed for the hardware.

<comment><USER11> Yes! It's extraordinary to me how much people forget this. Flash would be nice on the iPhone OS devices for movies, but a huge percentage of the games would be unplayable. No wonder Apple isn't interested.

</comment></comment></comment><comment><USER12> The Hulu developers didn't pick Flash because it was "easy." They picked it because it allowed them to retain a high degree of control over their streaming video content -- control they would lose if they exposed an h.264 stream to an iPhone or iPad client.

I think it could be five years or more before anyone watches Hulu or Netflix on any of these devices.

<comment><USER13> No, I think the hulu developers picked flash because that's where the users are. They could have chosen java, or silverlight, but they chose flash for the same reason most sites choose flash. I'm sure if Hulu wanted to, they could develop a native app, just like the YouTube native app, for the iPhone, but my guess is that it wasn't part of their strategy initially.

If netflix wants the iPad users, they would develop their own native app and ship it just like the other dozens of apps out there. In fact, it would give Hulu & Netflix greater control over their users with a native app. Hulu has already developed a desktop app, why wouldn't they develop a native app for the iPhone?

Remember back in the IE4 & IE5 days? Lots of companies developed native ActiveX components that could be embedded into webpages because most users used IE4. I'm actually quite happy that Apple is forcing web companies out there to rethink open platforms. There's quite a few demos that show how powerful javascript & canvas can be already. It would be nice if we could replace the majority of flash apps with javascript, canvas, and webgl.

<comment><USER14> If Hulu or Netflix (which uses Silverlight) were to make a native application for iPad would Apple approve it? I don't know. Neither Hulu or Netflix could make an application without approval of both Apple and their content providers.

</comment></comment></comment><comment><USER15> Our company's bread and butter are Flash-based portfolio sites (and a good amount of bread, I might add).

But I don't want Flash on the iPhone OS. I remember looking at one of our sites on my old Dell Axim—it sucked.

I'm already working on new, non-Flash offerings and they're going to sell well (I think). I can do almost everything my clients want now w/o Flash—once HTML 5 is fully supported, everything.

Like Gruber said, I don't care about Adobe, I care about me and my clients.

</comment><comment><USER16> There's always the status quo - that the majority of content producers will simply continue to make content using Flash that the iPhone and iPad can't access, and users mostly live with it with the occasional grumble, while the bigger providers will largely create dedicated applications to work-around the issue (and that isn't going to kill Flash).

Let's get some perspective here. The iPhone currently represents around 0.45% of all web browsing (citation: [http://www.macsimumnews.com/index.php/archive/net_applicatio...](http://www.macsimumnews.com/index.php/archive/net_applications_mac_os_x_sees_market_share_dips_in_december_iphone_safari_/)). The iPhone's dent in Flash's market share represents _at most_ a drop from 99% to 98%. For the iPhone and iPad to get the marketshare of _Opera_ , this usage would need to triple. Would you radically redesign how your site works for Opera users? Developers do follow what their users have, but little has changed and users still have Flash.

To make matters worse, there's no drop-in replacement. For the most common use-case of audio and video, we're in standards hell -- Firefox and Internet Explorer make up over 80% of web browsers on the Internet between them, and Mozilla aren't going to support the H.264 video tag and Microsoft are unlikely to support it in IE either. And in many other cases, websites are using Flash to do things they simply can't do in HTML (or even HTML5), whether DRM, streaming video, or something vastly more complicated.

</comment><comment><USER17> What I think every time I see the blue boxes screenshots:

<http://gr.ayre.st/s/images/go_flash.png>

<comment><USER18> I have never, never, EVER had flash crash. Nor has anyone else I know. But then, they all use PCs..

<comment><USER19> It's always easy to spot people who make a living programming solely in Flash. It's kind of an interesting phenomenon -- people will suddenly, and vocally, speak up in support of Flash with outlandish claims.

<comment><USER20> I'm not sure who's making the outlandish claims here.

I haven't programmed Flash in my life, but I can't say I've had Flash crash on me more often than, say, once a few months. Definitely not often enough that I notice it as a major annoyance, on either Mac or Windows.

Now, Flash is annoying for other reasons, but crashing isn't one -- for me.

<comment><USER19> For me, Flash crashes multiple times every day in OS X 10.5. Clicktoflash is a godsend for Safari stability without plugin process separation.

(offer an anecdote, receive an anecdote.)

<comment><USER20> Anecdotes are fine. It's extrapolating to "It's always easy to spot people who make a living programming solely in Flash" that I'm taking an issue with.

<comment><USER19> Then you should have said that when you replied, not state that it wasn't an outlandish claim.

</comment></comment></comment></comment></comment></comment></comment><comment><USER21> As uneasy as I am about what the iPad might say about the future of personal computing, if it can deliver the death blow to Adobe Flash then I'm all for it.

However, I do have my doubts. This article compares the iPad's Flash problems to Firefox's early problems with sites that were designed specifically for IE, but that's really an apples-to-oranges (Apples to Orange Foxes?) comparison. Firefox succeeded despite early incompatibilities because it targeted power users--the kinds of folks who can live with recurrent web browsing glitches, who can recognize broken sites and don't mind alt-tabbing back to IE where necessary.

But the iPad's target demographic isn't the power user, it's the technological neophyte. iPad users may be less tolerant of things not "just working", and the iPad may therefore have a harder time of bridging that incompatibility gap than Firefox did.

(And while Firefox users always had the option to fall back to IE--using Firefox and using IE were not mutually exclusive choices--what's the fallback option for iPad users when the content they want is only available with Flash? Carry a laptop with them, too?)

<comment><USER22> The lack of a fallback does seem to be the biggest issue. On the iPhone, it doesn't really matter, since none of the flash-based UIs would be usable on it anyways, so a separate version would still need to be developed. The iPad can afford somewhat PC-like interaction, so sites like Hulu could work if there was a flash plugin.

What reassures me that Flash is on it's way down is the way web technologies have advanced and been adopted despite IE's dominance and Microsoft's reluctance to properly implement CSS and other newer web features. When Firefox hit the scene, IE was far more dominant than Flash is now, and yet it managed to fight its way into the mainstream. Web sites are now written to follow the standards everywhere that it's convenient, and CSS and JS hacks are used to make it work in IE.

Sure, iPad users won't be as forgiving of broken sites as Firefox early adopters were, but their collective voice will be far more influential than the small band of rebels that broke the IE monopoly.

</comment></comment><comment><USER23> Gruber is right. I checked my site's stats, and to my surprise 8,4% of my visitors don't support flash.

<comment><USER24> Lots of other people on twitter are also checking their flash stats. You can see the results here: <http://search.twitter.com/search?q=shareyourflashstats>

I would be intrigued to see some big players announce their stats also but anyone of any size usually keeps stats close to their chests.

<comment><USER25> It would be interesting to see what the Flash stats for news.ycombinator.com are.

</comment></comment></comment><comment><USER26> My favourite bit, regarding the infamous blue-boxes poster:

 _Ends up a bunch of them, including the porno site, already have iPhone- optimized versions with no blue boxes, and video that plays just fine as straight-up H.264._

</comment><comment><USER27> Don't forget Gordon, the open source Flash runtime implemented in Javascript and HTML5: <http://github.com/tobeytailor/gordon>

I don't think something like this will save Adobe's derriere though -- at best it'll be a fallback-option developers can use if they must include Falsh content.

<comment><USER28> It doesn't provide everything that flash does, and IIRC only supports flash animations. Some things that flash provides that JavaScript (at least JS provided by the server) can't provide: Webcam and microphone access (think sites like ustream and stickam), exact font control (there was a demo site a while back that showed the same site rendered on different browsers to demonstrate how much even the placement of fonts differed), etc.

I'm no proponent of Flash, but to say that Gordon can completely replace Flash is not the truth.

</comment></comment><comment><USER29> I'm liking John Gruber's posts more and more. Besides Paul Graham he might be favorite essayist right now.

</comment><comment><USER30> I'm all for seeing Flash die a slow death. However, I wouldn't celebrate Apple for making the web more open: their AppStore is the worst proprietary/closed platform out there.</comment>


Rocket Lab – Don't Stop Me Now Launch - <AUTHOR> https://www.youtube.com/watch?v=-zzu7hI0ESM <comment><USER2> summary: "hold hold hold. Ground wind exceedance"</comment>