My Naive Attempt at Making an Artificial Being - <AUTHOR> http://www.paraschopra.com/projects/ai-being/ai-being.pdf

<comment><USER2> It isn't bad. Lots of interesting ideas. I like the self-criticism and multiple theories---your writing is quite uncommonly self-reflective.

Kinda amazing if this was only when you were 15. This stuff is extremely hard to articulate.

Can I ask you .. when did you "abandon the theory ?"

Also, what kind of stuff did you read before writing this paper ? What kind of stuff influenced you ? I would be curious to know how much you read about psychology, behaviorism, neuroscience etc. before writing the paper.

Read minsky's books. Society of Mind and Emotion Machine. These are the most comprehensive overview to AI/computational psychology. EM's got a lot of stuff about 'consciousness' and what it means to be relatively conscious. I like that you don't slip into metaphysical crap about it, but rather go into mechanistic explanation of the phenomenon.

<http://web.media.mit.edu/~minsky/E4/eb4.html> (the server is down..check in a couple of days)

Here's a recent lecture by Minsky about his ideas: <http://mitworld.mit.edu/video/484/>

Minsky had the idea of low level / high level brain which he expanded to a 6 level brain (like your stuff in 'feedback to the theory' section). It was partially implemented in Lisp by his student Push Singh in 2005 in his phd thesis over at mit. I think his work would roughly map to your 'illusionary and actual machinary' idea. The illusionary machinery constantly represents the actions of the actual machinery. This is what you perhaps mean by 'sends partial information. Note that the illusionary machinery needs to be able to influence the future actions of the actual machinery. I like that you have multiple goal types.

<http://web.media.mit.edu/~push/>

Also read the writings of Aaron Sloman over at Birmingham.

<comment><AUTHOR> Hi, thanks for the appreciation.

Actually, I started writing this when I was 13-14 years old. The document had been abandoned about 3 years back and now a year back it was revived again by a guy called Nick. I worked with him for a while and we called the new thing as Intelligent Entity (IE). Now that project is also kinda hibernated/abandoned. We had lots of crazy ideas in the new document, like evolving the IE from the scratch. I will try to get that document from Nick and then post it on HN.

To be frank, I didn't read much before writing this thing. I had just read neural networks (that is why you would find such heavy emphasis of it in this document) and pondered a lot on how mind really works. I remember I had found deja-vus, dreams and other such stuff very amusing. So, I had started examining what could be the possible mechanism for all such weird phenomenon with the mind.

Most of the thinking is from the scratch based on what I thought was commonsensical. I am really surprised (and happy) to learn that Minsky and Push had similar ideas.

Thanks for all the links. I will definitely go through them.

<comment><USER3> Hi,

This is Nick, and if you want to see it the link to our semi-recent project journal is here: <http://docs.google.com/Doc?id=dg88r9d8_17fnhc36>

My background in the project is basically the same as Paras', and I started working on it nearly the same age as he did... I tried to focus on working with NN's because they seemed like the way to go, but eventually our theories started getting so hard to do from a programming view.

I have really thought a lot about how the brain (mind) actually works and creativity is what most interested me... How to make something be creative, and create ideas (as the cognitive side always interest me) was always the big question when working on the project.

Anyways, I am lucky to have a bit more background than Paras' did at my age with having the opportunity to go to Duke and take psychology (and abnormal psychology) college classes as a freshman and 8th grader.

Anyways the problem is the project needs a creative push, which will come relatively soon.

Nick

</comment></comment></comment><comment><AUTHOR> Please excuse the spelling and grammatical mistakes in the document. It was written many ages ago, when I was 13-14 years old.

</comment><comment><USER3> I know just programmer stuff about NN's and GA's and the sort, and theoretical stuff (which you would learn in an introductory Psych 101 course).</comment>


Ololololo shows you the daily most voted videos of the web - <AUTHOR> https://itunes.apple.com/us/app/ololololo/id1117472748?mt=8 <comment><AUTHOR> Hello everybody! I am happy to share with you the app on which I've been coding for a while. I hope it will replace zapping on TV.

Ololololo shows you the daily most voted videos of the web.

You select the channel (e.g. Comedy, Science, Tech) and Ololololo will show you the best videos of the day. Users can upvote the ones they like and Ololololo will improve the daily chart.

That's it. So simple, so entertaining.

I would like to get your feedback, ideas and questions! Cheers

</comment><comment><USER2> :) I designed the app! Hope you will find it nice and play with it</comment>


How the American Male Spends Money - <AUTHOR> http://www.theatlantic.com/business/archive/2011/04/how-the-american-man-spends-money/236888/

<comment><USER2> Golf, soda, cigarettes, newspapers, and beer. Seriously? I've never felt so disconnected from the typical "American Male", nor have I ever been so proud to feel that disconnected.

Maybe if "soda", "cigarettes", "beer", and "bars" were a bit farther down the list, "gyms" wouldn't need to be so high?

(Who still reads newspapers?)

<comment><USER3> You're not alone. I spend exactly zero on all of those as well. Opiates of the modern American man?

<comment><USER4> For Golf there's large costs involved to get going and then continue, hence not that many people could be playing it, but still it has a high cost. Off the top of my head the costs would be something like: course/club membership fees, round fees, golf equipment (clubs, bag, clothes). So you can easily end up spending $1000's per year on the activity.

</comment></comment></comment><comment><USER5> It's interesting that we spend almost as much on sleep aids as we do on energy drinks. I wonder what the distribution is by age.

<comment><USER6> I can't understand why so many people prefer chemical-laced energy drinks to natural coffee. They're more expensive on average, too.

</comment></comment><comment><USER7> Is it useful to speak of a person without bracketing the age? I feel pretty safe in saying that the spending of a 20-something is different from a 30-something is different from a 40-something, etc.

</comment><comment><USER3> Disheartening that books are nowhere on that list. I hope The Atlantic does a similar article for women, would make an interesting comparison.

<comment><USER8> [http://www.theatlantic.com/business/archive/2011/04/a-day- in...](http://www.theatlantic.com/business/archive/2011/04/a-day-in-the-life- of-the-american-womans-wallet/236987/)</comment></comment>


Inside a Chinese Test-Prep Factory - <AUTHOR> http://www.nytimes.com/2015/01/04/magazine/inside-a-chinese-test-prep-factory.html?ref=magazine

<comment><USER2> That's real sad and all, but the root cause of the problem is far too much demand for a limited number of seats at the most prestigious schools. Until that underlying issue is solved (maybe through something akin to America's land-grant colleges?), the problem won't go away. Changing the admissions process will simply cause cram schools to be replaced by essay tutors, interview schools, students taking on an insane number of extracurricular activities, etc.

<comment><USER3> I would argue the culture around education and what it takes to be successful in China is more of the driving force around the enormous pressure students face with the "gaokao". Although it is true there are way too many students than available spots at top flight universities, the perceived notion of success will never change in China unless success is redefined by something other than either having a really good education or making tons of money.

<comment><USER2> This definition of "success" is pretty widespread. In the US, a college education is widely seen as a prerequisite to a middle-class lifestyle (never mind skilled trades or trade schools). Highly prestigious employers (especially in the financial or tech sectors) tend to show favoritism towards students with degrees from prestigious universities. There are analogous problems in Europe and India (e.g. the oversize social importance that IITs, grandes ecoles, Cambridge/Oxford hold). Trying to convince people that success should be defined by happiness or personal fulfillment, rather than social standing or wealth, is a very difficult problem.

Another factor is that a lot of parents in China either experienced significant material deprivation themselves, or are one generation away from people who did. So to these parents "success" through wealth (and hence security from poverty) takes on disproportionate importance. This sort of dynamic can also be seen in a lot of first-generation Asian-American households, often to the detriment of the relationship between the parents and their children.

<comment><USER4> My impression from reading the article is that the gap between the lifestyles you can expect if you get into college or not is really wide in China. It seemed to mark the difference between comfortable white-collar work or being a laborer, with nothing much in between. If Chinese society were a hospital, it would have surgeons and janitors and nothing else.

Perhaps the parents who were interviewed for the article overstated the difference, but here in Canada the situation is a bit different for a couple of reasons. First, we send so many students to college that getting into and through the less prestigious colleges isn't particularly impressive. Second, the jobs available to those who couldn't quite make it into college are still pretty good. Electricians, mechanics, locksmiths, and paralegals don't come cheap around here. So there's a lot less pressure all around.

</comment></comment></comment></comment><comment><USER5> Just creating more schools is not going to solve any problem. The real problem lies elsewhere: lack of opportunities if you don't go to top tier schools.

Look at similar test-prep crap going on in the states. It is very easy for a california resident to get into a community college or a state university like San Jose state, San Diego State, etc. It is even easy to get into UC Merced, UC Irvine, etc.

Who are happy to send their kids to community colleges and state universities in California? The kids of those who work in the service sector. Like hispanics, african americans, etc. Esp those who did not go to college are happy to see their kids at community college or state schools.

If you look at folks who work for tech companies in the silicon valley, you see a different pattern: these parents want to send their kids to HYP (harvard, yale, princeton), S(stanford), etc. And these parents don't want their kids to become worker-bees (also known as engineers); they want them to succeed (of course, financially).

What is financial success in the states? How many of valley engineers have succeeded financially? Most of them end up with nothing after mortgages, day care, 2 hours commute, etc. So, they look at those who have made it. Usually, it is in finance and law; even here, we have to be selective: the local branch manager at Bank of America is called VP, but without any financial rewards. So, it boils down to jobs in PE (private equity firms like KKR, Blackstone), HF (Hedge funds like the defunct SAC), IB (Investment banks, esp blue chip ones like Goldman Sachs), etc. To get jobs in these elite companies, a normal person (those without wealth or prior connections) can try to get there via HYP undergrad, or HS business schools, HYS law schools. Many parents, if given a chance, will try to push their kids there: if the kid is not doing well, they can't push him that much.

Just go to collegeconfidential.com and see what American kinds are after. They are just playing like the chinese kids: extra curriculars, well-roundedness, sports, (fake) volunteering. If they get admitted to HYP, then they look for ways to get top grades: buy note prepared by earlier students or take easy courses.

I knew a girl who went to UC Irvine. ANd she wanted to get into one of HYS (hardvard, yale, stanford) law schools. She got a nice LSAT score. Yet she took one year off, went to India to work for some NGO there, only to boost her chances of getting into top schools.

<comment><USER6> >The real problem lies elsewhere: lack of opportunities if you don't go to top tier schools.

There are loads of blue collar skilled trades jobs which pay decent middle class wages. Those jobs are also not going to be sent anywhere. Not everyone needs to be a senior director.

<comment><USER5> Sure, tell that to any Indian or Asian parent in the valley or in NYC.

<comment><USER7> You left out any parent. (See your prev. comment)

</comment></comment></comment></comment><comment><USER8> It's hard to find any actual example questions from these tests. Now I realize that my Google being biased to english sources and my inability to read or understand mandarin has something to do with that, but still.

Pretty much the only questions you find are inane _essay_ tasks.</comment>


Random unverified rumor:    Google to start clothing company - <AUTHOR> http://forums.techcrunch.com/forums/thread.jspa?threadID=2092&tstart=0 <comment><AUTHOR> Wall Street would hate them for it... but you know Google's fashion line would be just stylish enough to be a solid step up for your typical nerd.</comment>


Programming languages in coding interviews ranked - <AUTHOR> http://blog.hackerrank.com/emerging-languages-still-overshadowed-by-incumbents-java-python-in-coding-interviews/ <comment><USER2> Really interesting graphs at the bottom of the article, which compare the rise of FinTech and the rise of Python. Makes sense why finance companies use Python--they're usually less interested in mathematical languages and more interested in getting stuff done faster and more easily.</comment>


Facebook Just Landed $1.5B; Open Source Alternative Struggles To Raise $10,000 - <AUTHOR> http://techcrunch.com/2011/01/22/facebook-just-landed-1-5b-open-source-alternative-struggles-to-raise-10000/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+Techcrunch+%28TechCrunch%29&utm_content=Google+Reader

<comment><USER2> Is this really a surprise? Everyone is using Facebook, which means many eyes that can see advertisements. The open source equivalents pretty much have nobody using them except hobbyists.

</comment><comment><USER3> Indeed, I'm not surprised. Facebook's value is not its technology, but being the standard of communication for almost 600 million users.

</comment><comment><USER4> Given that they're a volunteer project, what's the OSS project need the money for?

<comment><USER4> Or to put it another way: The OSS project is likely able to make that $10k go pretty far. (Not as far as >1B, but still)

</comment></comment><comment><USER5> > For your information: Appleseed, a 100% volunteer project, was started in > 2004, while Diaspora was only kicked off around April 2010, so they're > certainly much further ahead of Diaspora in terms of development.

That does not follow.</comment>


How we got users from 50+ countries on 6 continents with no marketing spending - <AUTHOR> http://adelinapeltea.com/how-we-got-users-from-50-countries-on-6-continents-in-3-months-with-no-marketing-spending-at-splinter-me/

<comment><USER2> The awesome story of splinter.me</comment>


The Horrors of Static Typing - <AUTHOR> http://vimeo.com/48957343

<comment><AUTHOR> Slides at: [http://chariotsolutions.com/presentation/horrors-of- static-t...](http://chariotsolutions.com/presentation/horrors-of-static- typing/)</comment>


Stick to your journey: an unglamorized look at a year of entrepreneurship - <AUTHOR> https://www.indiehackers.com/@bcarroll/stick-to-your-journey-f35b0b7cfa <comment><USER2> Channing, thanks for sharing this. I hope it's an inspiration for some other entrepreneurs out there!</comment>


Show HN: We built a free online vector editor - <AUTHOR> https://www.vecteezy.com/editor <comment><USER2> I'd like to propose a feature.

Would it be possible to make the left panel collapsable?

I found the need when trying full screen. I really wanted to see the design bigger but the panel wouldn't let me zoom more without loosing visibility.

<comment><AUTHOR> Thanks for this feedback, i'll talk to our design team and look into it!

<comment><USER2> Thanks to you for building it!

Keep up with the good work.

</comment></comment></comment><comment><USER3> How well does this deal with extreme vector drawings? such as in the region of 60000 to 100k shapes, possibly more.

<comment><AUTHOR> Currently chrome does a poor job of rendering these kinds of svgs and so we are dealing with that limitation. I'm hoping that Chrome will give svg performance some love in the near future and that will help us greatly.

<comment><USER3> Excellent. Yeha I agree - I've been working with a similar issue and we've tried all sorts of creative ideas to get the performance, like rendering on the server.

</comment></comment></comment><comment><USER2> This is SO awesome!

I really like the interface.

May I ask how do you cut in half a Shape? (half circle for example)

Thank you!

<comment><AUTHOR> We don't currently support shape subtraction. Thank you for the feedback and we're glad you like it!</comment></comment>


Ask HN: I'm a founder who wants to take back some control - <AUTHOR> I founded a tech business around 10 years ago. A few years ago, I took a bit of a step back and installed a managing director while I took a 'head of technical' title.
Things have been going very well and the MD is great, but I feel I need to take back a bit more control in order to take the business to the next level.
In terms of how I can achieve this as painlessly as possible, any and all advice, anecdotes or input would be greatly appreciated. <comment><USER2> No Advice but a few diagnostic questions:

What is not happening that "should" be happening?

What is happening that "should not" be happening?

What is the specific source of your discontent?

How do you reconcile that with your assessment that things are going very well and the MD is great?

How can you shield the really great of today from potential down-side risk while disrupting the status quo in an effort to take the business to the next level?

Are you getting bored?

Would it be feasible to take yourself completely out of this business (absent owner or sell) and then start another business?

</comment><comment><USER3> Have you talked with the managing director about your ambitions? Maybe giving the managing director more latitude is all that's needed to grow the business...ethical people are often more reluctant to risk someone else's money.

What are the potential downsides of disrupting the current operational context? Framing the option as "taking" suggests that someone gets taken from and that is likely to have effect on moral and workplace culture.

It might be better to simply expand your responsibilities in ways that are orthogonal to the existing working operations, such as adding a new line of business while leaving the existing lines running as they are. Then there's no taking and any pain occurs in the new structure rather than the old one.

Good luck.</comment>


Show HN: Hyperlax.tv – a real-time feed of Instagram's latest Hyperlapse videos - <AUTHOR> http://hyperlax.tv/ <comment><USER2> Nice project! Was actually hoping for something a little different; I've thought about having 4k streams with (local) ambient audio from around the world for use as virtual "windows". Just hang a 4k tv on a wall, and play a location/timezone that suits your mood... (Perhaps with a 24h buffer, so that one could match relative sun height/light to local time if one wants to...).

Would be interesting to see an accompanying technical write-up (choice of technologies, frameworks, rationale -- what was easy, what was hard etc).

Nice use-case for soundcloud, btw.

<comment><AUTHOR> You and I are on the same page, I love your idea too. This is my very first project, I'm entirely new to coding, but hopefully eventually I can extend Hyperlax to what you're talking about. Appreciate you checking it out!

<comment><USER3> Neat project!

Last christmas in SF I wanted to create a "winter vibe" as we were celebrating with the family, and I was looking for videos showing cozy snowfall and winter landscapes. It was surprisingly hard to find something really good. I think it'd be cool if you could select what kind of "window" you want and had a few presets like "Tropical", "Winter landscape", etc.

I personally found the mix of soothing slow music and hyper lapse videos to not be relaxing, I think I'd prefer if the videos were running at normal speed or maybe even in slow motion depending on the video.

</comment></comment></comment><comment><AUTHOR> Really excited to share a personal project I've been working on here. If you check it out, I'd love to know what you think.

Enjoy a peek into the lives of others, from locations around the world. Hyperlax is meant to be a bit of an escape, a bit voyueristic, a bit relaxing. I think it's mesmerising. Maybe you will too!

<comment><USER4> Like it!

Though personally i would probably not have used A tag in the navigation, so you don't get the Dashed outline if you click them, since its not a new page that loads, but otherwise I really like it. Bookmarked :)

EDIT: actually the A tags could just get the css rule (Outline: none;)

<comment><AUTHOR> thanks for the feedback! Weird, I don't get the outline myself. I believe I did use outline:none; but I'll double check. What browser are you using?

<comment><USER4> It could be my browser, since i am using Firefox developer edition 40.0a2

Edit: btw, thanks for sharing site, its awesome watching people race down the highway and changing lanes in hyperlapse to relaxing music :)

</comment></comment></comment></comment><comment><USER5> I can't be the only one who pronounced this in my head as "hyper laxative".

<comment><USER6> You're not.

</comment></comment><comment><USER7> All the grainy videos with this type of music is reminiscent of a Boards of Canada video. It's cool.

edit: to add, just watching the location tab is amazing, really gives an exciting sense of the world buzzing with activity. Plus I just saw where I live and cycle most days!

<comment><USER8> you nailed it. This is boards of canada!

</comment></comment><comment><USER9> Something similar from Uniqlo (the clothing company!) with interesting Japanese scenes: [http://www.uniqlo.com/calendar/](http://www.uniqlo.com/calendar/)

</comment><comment><USER10> What's supposed to happen? All I see is a big photo of a kid, and a music player that isn't making any sound.

<comment><AUTHOR> Hhmm. Do you see a big button that says "Let's Go!"? If not, you may have flash blocked/disabled. LMK what browser you're using. Really sorry about that. Promise it's worth it!

<comment><USER11> Chrome - had flashblock on, but after enabling flash, still won't go. (hope this helps)

        this IS supported
        2app.js:188 videos and songs not loaded
        app.js:651 Object {duration: 122208325, release_day: null, permalink_url:    "http://soundcloud.com/chillcall/sets/chill", genre: null, permalink: "chill"…}
        3app.js:188 videos and songs not loaded
        app.js:332 [Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]
        app.js:452 https://scontent.cdninstagram.com/hphotos-xfa1/t50.2886-16/11682449_1595073700750452_1384791478_n.mp4
        app.js:466 hidden video link: https://scontent.cdninstagram.com/hphotos-xaf1/t50.2886-16/11684410_1604272313181065_1563724192_n.mp4
        app.js:309 content initialized
        2app.js:188 videos and songs not loaded
        app.js:236 video has been paused!
        163app.js:188 videos and songs not loaded

</comment></comment></comment><comment><USER12> Really mesmerizing! I've actually been watching Hypermasher from time to time since it was also submitted here [1]. I like the improvements that you've made, the interface is certainly nicer, and your codebase appears to be more concise. Hypermasher could run without Flash (barring the music), but Hyperlax refuses to start without it, however that's just a nitpick (though you might be surprised at the number of people who have flash disabled by default these days.)

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

<comment><AUTHOR> Thank you!

Regarding the flash issue, you're right, I'm noticing this too. Completely didn't think about that. The "let's go" button waits for the sound to finish loading, but if it never does, you can't start it :/.

I'll look into this, hopefully not too many people are affected.

<comment><USER13> Wow, have you patched out Flash dependance already? I'm running on a Flash- free Safari and it looks and sounds great.

</comment></comment></comment><comment><USER14> Pretty cool. Had a tough time getting it to work in Chrome with "right-click- to-play-flash", but finally got it running by whitelisting your domain. Just clicking the "run all plugins this time" didn't work.

Edit: The light-bulb icon didn't make much sense at first (fullscreen mode), looks like it's for toggling the sidebar in non-fullscreen-mode only. Maybe hide it in fullscreen?

<comment><AUTHOR> flash? There should be no flash on the site, it's an HTML5 video. Very strange..., never heard of this issue before. If you can provide more details that'd be great, but no worries if not.

Light bulb actually = "dark mode", it hides everything else on the page. I intentionally left it ambiguous to see if people would curiously click on it :)

Thanks for checking it out!

<comment><USER14> The webpage loads at least "[http://connect.soundcloud.com/soundmanager2/soundmanager2_fl...](http://connect.soundcloud.com/soundmanager2/soundmanager2_flash9.swf") in chrome osx, and it seems that with right-click-to-play-flash this prevents the "let's go" button from appearing, even after clicking "run all plugins this time".

<comment><AUTHOR> Hhmm, thanks a ton for that info. Not sure yet if there's anything I can do about this, but I will definitely look into it.

</comment></comment></comment></comment><comment><USER15> Nice! I will set it on my room TV as an ambient attaction while talking with friends. let's see how it goes.

This reminds me that project Hyperlapse.js on [http://hyperlapse.tllabs.io/](http://hyperlapse.tllabs.io/). They used to have a working site where you could make your own (quick) hyperlapse using Street View's content.

<comment><AUTHOR> Sweet! It works great with Chromecast and Apple TV, so have at it :)

</comment></comment><comment><USER16> wow, very impressive for just "learning" how to code. Great work man, I like the design a lot.

</comment><comment> t-mw Good job! I think it would suit being played on a big screen at events/cafés. Will new videos be played as they're posted, or will it continue moving back in history?

Edit: Answered my own question I think, it just returned to play a video from a few minutes ago.

</comment><comment><USER17> Very nice! A minor niggle: the map in the sidebar doesn't react when the window is being resized.

Edit: also, the map seems to get stuck: [http://i.imgur.com/YOVzJwz.jpg](http://i.imgur.com/YOVzJwz.jpg)

<comment><AUTHOR> Gah! You are correct about the map not resizing. Has to do with the library I used, called Datamaps. I could listen for window resize events, but for the MVP I figured it wasn't worth it. Thanks for pointing it out though, I'll get to this.

What did you to do get that map stuck in your screenshot? Never seen that before.

<comment><USER17> I don't think I did anything - I hardly interacted with the page at all, except from skipping a Soundcloud track once and possibly resizing the page.

At one point, it switched from "world view" to "US continental view" to show a hyperlapse from Miami, and then got stuck there in perpetuity.

Edit — or maybe I had a blackout and this is resize-related as well. It would make sense if I shrank the window, so half of the map got stuck outside the window. Never mind then :)

</comment></comment></comment><comment><USER18> Really cool. Two suggestions:

1\. Widescreen aspect ratios

2\. Volume slider, not just control. I'm listening on headphones at my desk at the lowest volume on OSX and it is still too loud. If I try to go any lower the sound turns off.

<comment><USER19> For point 2, try pressing:

SHIFT + OPTION + VOLUMEDOWN

Definitely agree on the widescreen aspect ratios though, could make a really cool experience even cooler.

<comment><USER18> That helped, but definitely would have expected it to just be in the UI and not require an unfamiliar keyboard shortcut.

</comment></comment></comment><comment><USER20> Why was the title changed? It's not about the Instagram videos only. That would be a useless service. It's about the whole concept, which the old title much better represented.

<comment><AUTHOR> Huh. Disappointed they changed it, would have thought I have the right to describe my own site! Oh well.

</comment></comment><comment><USER21> This music is amazing! Is it from one playlist on soundcloud?

<comment><AUTHOR> The default is one playlist, yes. But if you head to the "music" tab, you can choose from a bunch more!

<comment><USER18> I might be missing it, but is there a link anywhere to the individual playlists on Soundcloud? Would love little links on the music tab to go straight to the playlist vs. just the individual song from clicking the link at the bottom right.

The playlist is great but I don't always want the video running to listen to it.

<comment><AUTHOR> Ah, there isn't, but that's a good idea. Is there a playlist in particular you wanted a link to, I can pull it up for you.

<comment><USER18> The chillout one is excellent. Not sure how much revenue opportunity there is, but redesigning that sound player and curating the music with affiliate links might cover some of the hosting bill.

Out of curiosity, can you speak to your hosting situation and costs as related to getting hit with this news?

I'm a novice coder, but I'm trying to learn about the sysadmin side of things too and wondering how one might take a site like this and avoid massive bills.

<comment><USER22> I was also curious to find the chill out set so I looked in the source of app.js to find the playlist id and fetch the response:

`curl [http://api.soundcloud.com/playlists/9875415.json?client_id=0...](http://api.soundcloud.com/playlists/9875415.json?client_id=0e790e28fcdf924f78f80375ad74fcb8`)

[http://soundcloud.com/chillcall/sets/chill](http://soundcloud.com/chillcall/sets/chill)

</comment></comment></comment></comment></comment></comment><comment><USER23> Awesome work. Can you share the tech stack you used?

<comment><AUTHOR> Haha, I can but it will leave you unimpressed. This was my very first coding project. It's a front-end app, so good ol' fashioned HTML/CSS/Javascript. Libraries used were:

\- jquery

\- Datamaps (for the map)

-ElementQueries.js (to do responsive design for a given element, pretty cool, check it out)

\- Bowser.js (to detect browser)

\- moment.js (for the "time since")

And I think that's it. LMK if you have any other questions.

</comment></comment><comment><USER24> a volme control would be nice

<comment><USER25> Interesting. You still use this feature? I always thought YouTube and the like still included it on their sites as a throwback to an earlier time, or something. I always use the software on the playback device itself to control the speakers.

<comment><USER26> Volume controls are important! Some examples: you are on a VoIP call but want background music. You have to listen out for some notification and the front music can't be too loud. You work with other audio files e.g video editing but don't need to be listening actively. Any media-multi-tasking situation, really.

</comment></comment></comment><comment><USER27> I'm trying to figure out why I like this so much... Nice job.

</comment><comment><USER28> This is really amazing, thank you for sharing.

</comment><comment><USER29> Mind blown! Awesome work.</comment>


Follow up article: Have no girls been born in 132 villages in India? - <AUTHOR> https://www.bbc.com/news/world-asia-india-49109767 <comment><USER2> Joke article and headline. It even says in the article no boys were born in 129 villages. It's like 2 kids per village max.

Why is this here

<comment><AUTHOR> OP here. This article is a follow up on original article that was posted a few days ago. [https://news.ycombinator.com/item?id=20505952](https://news.ycombinator.com/item?id=20505952)

This was my first HN submission, so maybe I should have clarified the title instead of keeping it same as article itself?</comment></comment>


Reimagining support for Google Cloud Platform: new pricing model - <AUTHOR> https://cloudplatform.googleblog.com/2017/03/reimagining-support-for-Google-Cloud-Platform-new-pricing-model-and-partnerships.html <comment><AUTHOR> Great step forward from Google - gives me much more confidence to develop on their platform.

Now waiting for official Firebase support offerings</comment>


This AI personal assistant took millions to build – it completely fooled me - <AUTHOR> http://www.businessinsider.com/xai-ai-meeting-assistant-interview-dennis-mortensen-2016-11 <comment><USER2> Is anyone using this? It certainly seems pretty cool, but is it significantly better than a quick phone call or the doodle app?</comment>


Windows subsystem for Linux overview [2016] - <AUTHOR> https://blogs.msdn.microsoft.com/wsl/2016/04/22/windows-subsystem-for-linux-overview/ <comment><AUTHOR> there are three segments to this treatise

part two [https://news.ycombinator.com/item?id=20315296](https://news.ycombinator.com/item?id=20315296)

part three [https://news.ycombinator.com/item?id=20315302](https://news.ycombinator.com/item?id=20315302)</comment>


Facebook's new face: What does it needs to accomplish? - <AUTHOR> http://blogs.zdnet.com/BTL/?p=8097

<comment><USER2> This looks like a definite step forward in design for Facebook, but does anyone know what they are doing about their business model? This is what I am really curious to see. Do flyers and beacon alone justify the multi-billion dollar valuations?</comment>


Show HN: Natural Atlas v2 – Coast-To-Coast Map of the Outdoors and iOS App - <AUTHOR> https://naturalatlas.com/posts/natural-atlas-v2-1342 <comment><USER2> Maps are beautiful and easy to read. But I'm deleting the app and figured I'd share why...

* The Start Trip bar takes up too much of the screen for a feature I'll never use, especially when...

* All activities are public unless we pay $30 per year on top of the $6 app? That's not a premium feature, it's an anti-feature, and having those in a paid app is a fast way to turn someone who was already halfway converted into a pissed off 1-star reviewer.

* You limit non-pro users to 3 tiles but don't say how large the tiles are unless we buy the app to find out. Turns out they're approximately 15 by 15 miles, so 3 tiles won't even cover half of a small national park.

There aren't that many of us who still happily pay for apps knowing we may delete them immediately. When you find those users, you want to delight and reward them for taking a chance on you. Not offer a crippled app that only has practical utility with an annual subscription. Make this free or offer more features without a subscription. You can't have it both ways.

</comment><comment><USER3> This is so beautiful. Any plans to introduce Canada?

Also, one thing I really would appreciate is being able to find backcountry camping routes by km/mi length or by number of nights. Any plans for something like that? All I can seem to filter by is trailheads or campsites, but the route is really the important thing.

<comment><AUTHOR> Thanks! We'd love to add Canada, but for the time being are focused on the United States only – need to work on the fundamentals of the business before we get too spread thin.

And yep - route search in general is on the roadmap! We've got some pretty cool other ideas in terms of filtering.

(Aside: Realm has been great. We use it in the iOS app)</comment></comment>


Python Extension Proposal 498: Literal String Formatting - <AUTHOR> https://www.python.org/dev/peps/pep-0498/ <comment><USER2> I am against it, because it allows arbitrary Python expressions inside format strings. It's too complicated and lets user have two different ways of doing things (not Pythonic) - one to calculate expression inside string and the other to calculate it outside (which should IMHO be preferred). This should maybe go to the standard library, but please not into the language.

I think a better approach would be to just add special formatter operators (if they aren't already there) that would just call str() or repr() or ascii() to whatever is presented to them (and maybe take some optional arguments such as length or padding).

<comment><USER3> > I am against it, because it allows arbitrary Python expressions inside > format strings.

I was for this PEP until your post made this reality apparent. I'll take security over convenience.

<comment><USER4> I will go further and say that I will even take readability over convenience.

This is a step in the reverse direction. Please don't do this. I am not sure why this is even considered. We already have ways to do this _clearly_. Let us not add another way to do this in a less readable way that is a lot more easier to write. That is a deadly combination.

Features in python are geared towards more readable code (I know about the stuff you can do with things like comprehensions, but hey I think their power justifies them enough). This will lead to people using this format due to initial convenience, but ends up regretting doing so.

Please remember that code is read more often than it is written. So a requiring a little verbosity if that can enhance readability even a little bit, is good. I hope these kinds of good things about python does not get removed.

I am coming from 9 years of experience with PHP. And I will say that this is not worth it. And this is actually one of the features I have come to like in Python now.

And that is not considering the implications of having expression evaluation inside strings...

<comment><USER5> I actually think the proposal would be more readable because you don't have to think about what it means. Compare:

"{} of very long text here...".format(value)

f"{value} of very long text here..."

<comment><USER4> I thinks this is where our difference in comes from.

When we are reading code, we are not usually reading the strings contained within.

We are reading variables names, we are looking at where they are used, where they are assigned, stuff like that.

I very rarely look inside the strings when we are actually reading code. When reading code, strings are just black boxes where nothing can happen. So we can completely ignore them.

With this pep, that will change. And readability takes a big hit. Strings are no longer black boxes.

And actually you can get the " {value} if very long text" format right now using the format function, but it right now requires an explicit list/dictionary of variables.

This explicit list of variables really helps in the context of _reading_ code. And forcing users to write down that explicit list of variables to use, is good.

<comment><USER6> How do you know where the string ends? If your editor has syntax coloring and you look for the end of the string-color block, then the expressions inside the string will also have a different color and will pop right out. If you don't use syntax coloring you have to scan for " or ', and you'll learn to scan for { too.

<comment><USER4> >How do you know where the string ends?

I usually just go to the end of the line. or if that is not possible, I think I usually look at the next closest thing that obviously is not a string and scan backwards.

I mean, usually I didn't have to do anything consciously (or do a scan) to spot the end of a string.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7>
        There should be one-- and preferably only one --obvious way to do it.

This would be the 4th way of formatting strings in Python.

<comment><USER8> It would also render the previous ways obsolete. New-style formatting never took over completely from old-style because it wasn't sufficiently compelling—`"%s %s" % (a, b)` versus `"{} {}".format(a, b)` doesn't have a clear winner. But `f"{a} {b}"`? Clearly superior. With the exception of backwards compatibility matters (which _will_ be a nuisance for far too long), there would really be no reason to keep using the old ways in most places. i18n/l10n would really be the only mainstream reason for using anything other than f-strings.

<comment><USER9> Your example isn't very compelling, but for longer strings with more complex formatting, I'd say .format() is pretty compelling. I find that in general

        '{x} blah blah blah {y}'.format(x=x, y=y)

is more readable than

        '%s blah blah blah %s' % (x, y)

even if the former is a bit longer.

On top of that, there's a whole bunch of stuff you can do with .format() that just isn't possible with %.

<comment><USER10> Even .format() is quite redundant for the "standard" usage, as we had string interpolation using '%' with dicts for a long time.

        '%s blah blah blah %s' % (x, y)
        '{x} blah blah blah {y}'.format(x=x, y=y)
        '%(x)s blah blah blah %(y)s'%{'y':y, 'x':x}

</comment></comment></comment></comment><comment><USER11> I would be very happy to see _some version_ of this accepted.

When it comes to native String interpolation Groovy has it, Scala has it, ES6 has it apparently; to a more limited extent Bash, PHP, Perl have it too of course.

I can't help feeling that other devs are now coming to Python expecting this kind of feature, and are disappointed to find three (harder, often less readable) ways to do it instead. Got to keep up with the Joneses, etc...

<comment><USER12> It doesn't mean this is a good feature to have - it allows objects within scope to now be directly included in a string, which isn't a secure thing to do.

<comment><USER13> Only literals, not passed strings, not less secure.

</comment></comment></comment><comment><USER14> Nonononono. Python does not need more string literal specifiers. For a language that avoid symbols and sigils like the plague, it already has an absurd amount of string literal syntax.

Why not make a strfmt library on pypi that provides a single _fmt(s, args, kwargs)_ function and let people call that? Why the obsession with more builtins?

</comment><comment><USER15> The first thing I thought of when I looked at the PEP was, "this is like a string version of register_globals=on".

A string literal whose value automatically changes with the code surrounding it sounds like a really bad idea.

I also noticed that the PEP uses str.format method as a strawman, ignoring the fact that % string interpolation is very popular and does not need replacing, which is at the core of this problem in the first place; Someone keeps trying to replace something that does not need replacing.

Furthermore, I can't help but think that this would eventually become a complete literal string DSL (if not one already) inside of Python.

I hope this PEP does not get accepted.

<comment><USER16> > The first thing I thought of when I looked at the PEP was, "this is like a > string version of register_globals=on", which is an unsettling thought to > have about Python, my favorite language.

> The idea of having a string that is automatically dynamic and whose value is > hardly predictable upon first glance, wholly dependent on the stability of > the code surrounding it, sounds like an absolutely horrendous idea.

What?! It's not a dynamic string. It's a string concatenation expression with syntactic sugar.

This isn't PHP's register_globals. It's PHP's "{$n + 1}".

What this does, you can already do. "Foo " \+ bar + " baz" already exists. This is merely nicer syntax.

<comment><USER4> The difference is,

> "Foo " \+ bar + " baz"

is not a string literal, neither is one using format or % function. All of those things return dead strings. This pep is about creating a kind of 'live' _string literal_ , which python does not have right now (or need IMHO). So this is not merely a nicer syntax.

<comment><USER17> It is not live (unless I am mis-understanding what you mean by live) - it is evaluated _once_. That is to say:

        def magic(a, b):
            return f"{a} and {b}"

        s = magic(4, 8)
        print(s)
        a, b = 3, 7
        print(s)

prints `4 and 8` in both cases.

<comment><USER4> It is live in the sense that you can take that _string literal_ and put it in a different context and it will result in a different evaluation, possibly yielding different value for the string and possibly different side effects (after calls to evaluate expressions).

</comment></comment></comment></comment></comment><comment><USER18> This is a massive improvement. I currently use .format(), sometimes with __locals(), but f-strings would improve this massively.

Now if only they didn't require Python 3, so I could use them on the production systems I'm working on...

<comment><USER19> I switch back and forth between format and %, and never use __locals in the format. It 's annoying, every time a string is written, to try to decide which way is better for this instance. That said, is there a way to do ('%.3f' % x) with this?

<comment><USER18> f'{x:.3f}'

</comment></comment></comment><comment><USER20> I am having some problems trying to understand the implementation. What would the AST from evaluating "f'{a+1}'" look like? Will there be a special AST node for f-strings, or will it be pre-structured into the AST?

If it's a special node, is it the responsibility of the byte code generator to parse the string? My belief is that it's part of the parser's job, so the AST will never contain an f-string.

What does a syntax error report look like? Or traceback? Will it be able to narrow down the part of the string which causes a problem?

Can f-strings include f-strings, like:

        f"{a + (f' and {b+1}')}"

I assume the answer is 'yes, and you shouldn't do that', which I can accept.

Support for arbitrary expressions inside of an f-string means that the following is allowed,

        def f(a, b):
            return f"{yield a} = {b}"

        print(f(1, 2))

and will work, and will print _something_ , but it won't be "1 = 2". Nor will any but heavy-weight analysis tools be able to figure out that this 'f' is a generator.

I am less happy accepting that a magic string can turn a function into a generator. Take for example this code from around line 438 of [https://searchcode.com/codesearch/view/18830026/](https://searchcode.com/codesearch/view/18830026/) :

                    if attr=='yields' :
                        yield_unit = self._grab_attr_(obj,'yield_unit')
                        if yield_unit:
                            ret = '%s %s'%(ret,yield_unit) # FIXME: i18n?
                    return ret

The penultimate line could be rewritten, validly, as:

                            ret = f'{ret} {yield_unit}' # FIXME: i18n?

The introduction of a typo, from 'yield_unit' to 'yield unit', would drastically change the function, and be very hard to spot.

                            ret = f'{ret} {yield unit}' # FIXME: i18n?

Yes, Don't Do That, but we know that people use things like syntax highlighters to help understand the code and identify mistakes like this.

EDIT: the PEP says that the expression are "parsed with the equivalent of ast.parse(expression, '<fstring>', 'eval')". That means that 'yield' is not allowed.

<comment><USER16> Presumably it'd be handled similarly to how PHP handles {} and $ in strings. As soon as possible, you swap "{foo} {bar}" for (foo.__format__() + " " \+ bar.__format__())

<comment><USER20> It's not so simple. The full implementation has to do something like insert an AST into the right place, because {foo} can be an expression like f"{__import__('math').cos(len(s))}".

The Python tokenizer will pass an f-string to the AST builder, which has to pass the string to another tokenizer to generate the new AST. Because f-strings can contain f-strings, this process is recursive. The end result is a new AST that replaces the original f-string.

</comment></comment></comment><comment><USER21> One of those things when you read it you wonder why it wasn't done that way in the first place.

<comment><USER4> Exactly when you need to apply this principle...

[https://en.wikipedia.org/wiki/Wikipedia:Chesterton's_fence](https://en.wikipedia.org/wiki/Wikipedia:Chesterton's_fence)

>In the matter of reforming things, as distinct from deforming them, there is one plain and simple principle; a principle which will probably be called a paradox. There exists in such a case a certain institution or law; let us say, for the sake of simplicity, a fence or gate erected across a road. The more modern type of reformer goes gaily up to it and says, "I don't see the use of this; let us clear it away." To which the more intelligent type of reformer will do well to answer: "If you don't see the use of it, I certainly won't let you clear it away. Go away and think. Then, when you can come back and tell me that you do see the use of it, I may allow you to destroy it

<comment><USER21> Well, now you talk about that the reform is wrong (the suggested one or the previous ones?) but I said that I agree with it. So it feels like between the post you are responding to and the Fence there are some arguments missing, right?

</comment></comment></comment><comment><USER22> For those that want something close today, there's [https://pypi.python.org/pypi/say](https://pypi.python.org/pypi/say)

        fmt("Hello, {name}! You have {len(msgs)} waiting.")

Interpolates local variables and expressions. It uses the format method, and has all of format's output formatting.

<comment><USER23> say looks nice, but it still suffers from exactly what this pep is trying to fix

        >>> def test(x=1):return lambda:say.say("{x}")
        >>> test()
        NameError: name 'x' is not defined

[https://github.com/syrusakbary/interpy](https://github.com/syrusakbary/interpy) seems like a closer solution, could be modified to also support format specs

<comment><USER22> I think you're right that Interpy and PEP 498 have a different, earlier binding strategy than say does. I've found the late / local binding of say() and fmt() convenient. Are there use cases where that earlier binding is valuable or critical?

Your example highlights the binding strategy, but more typical would be:

        >>> def test(x=1):
        ...     return fmt("{x}")
        ...
        >>> test()
        '1'
        >>> test(12)
        '12'
        >>> test('woobers')
        'woobers'

</comment></comment></comment><comment><USER24> There's an interesting competing PEP which allows for the way in which the expressions are interpolated into the string to be customized: [https://www.python.org/dev/peps/pep-0501/](https://www.python.org/dev/peps/pep-0501/)

<comment><USER19> I couldn't get myself to read beyond this example

      i"Substitute $names and ${expressions} at runtime"

It looks like bash.

<comment><USER25> Is it bad to look like bash? Bash really is a beautiful language, and string interpolation is one of the things that it's designed for.

<comment><USER19> Well I don't like Bash, but I guess that's a matter of taste.

But I do think most people would agree that Python should look like Python.

</comment></comment></comment></comment><comment><USER26> C# 6.0 is also adding literal string formatting: [http://www.codeproject.com/Articles/846566/What-s-new-in- Csh...](http://www.codeproject.com/Articles/846566/What-s-new-in-Csharp- String-Interpolation)

</comment><comment><USER27> I hope this gets implemented. A year ago or so we had several customers wanting to custom format output filenames and directories in a desktop application and we settled for something which is almost exactly this, so the {identifier:format spec} idea, and ever since implementing it I wish any language had it as we found it really convenient and having no apparant disadvantages in comparision with printf-%-style in C or Python/streams in C++/{}-style in C#/Python

<comment><USER8> I don't understand what you're seeking. This is purely for string _literals_. If you're taking a user input string like `"foo-{date}.{extension}"`, you could use `string.format(date=…, extension=…)`

<comment><USER27> Yes it's for literals only, just saying I like the inline style and readability and succinctness of it and wouldn't mind it being implemented in Python and other languages.

<comment><USER20> But this wouldn't solve your case because it could only be applied to strings that are in the source code. Your users don't have the ability to change those string. Instead, they want to provide a format string, which you fill in. That is already available, eg, via str.format(kwargs), where you control the kwargs and the user controls the str.

<comment><USER27> Yes, I know that as well. But this wasn't a Python application :] Maybe should have mentioned that earlier..

</comment></comment></comment></comment></comment><comment><USER28> _However, str.format() is not without its issues. Chief among them is its verbosity. For example, the text 'value' is repeated here:_

        >>> value = 4 * 20
        >>> 'The value is {value}.'.format(value=value)
        'The value is 80.'

_Even in its simplest form, there is a bit of boilerplate, and the value that 's inserted into the placeholder is sometimes far removed from where the placeholder is situated:_

        >>> 'The value is {}.'.format(value)
        'The value is 80.'

_With an f-string, this becomes:_

        >>> f'The value is {value}.'
        'The value is 80.'

Yeah I've had this thought before.

<comment><USER29>
        >>> 'The value is '+value+'.'
        'The value is 80.'

Boilerplate? It's one extra character.

</comment></comment><comment><USER30> In regards to the title, PEP stands for "Python Enhancement Proposal", not "Python Extension Proposal"

</comment><comment><USER31> You can even hack it into a string class if you don't mind using even more scary hacks like monkey patching built in classes.

        def I(s):
            import inspect
            frame = inspect.currentframe()
            caller_locals = frame.f_back.f_locals
            return s.format(**caller_locals)

        def main():
            a = 12
            b = 10
            print I('A is {a} and B is {b}')

        if __name__ == '__main__':
            main()

</comment><comment><USER32> In TXR Lisp, from system prompt:

      # simple quasiliteral, denoted by backticks
      $ txr -p '(let ((x "Bob")) `Hello, @{x -10}`)'
      "Hello,        Bob"

      # word-quasiliteral (breaks into list on spaces)
      # denoted by hash-backtick:
      $ txr -p '#`@(+ 2 2) @(+ 1 2) a b c`'
      ("4" "3" "a" "b" "c")

      # op-argument references in quasiliteral
      # ret produces a function whose arguments depend
      # on the uses of @1, @2. ... and @rest in the
      # expression. The value of the expression is returned.
      # These references can emanate from a quasistring:

      $ txr -p "(mapcar (ret \`@1--@2--@rest\`) '(1 2 3) '(a b c) '(x y z)))"
      ("1--a--x" "2--b--y" "3--c--z")

      # Very basic indexing, slicing and field adjustment:
      $ txr -p '`foo @{(list 1 2 3) [0]} bar`'
      "foo 1 bar"
      $ txr -p '`foo @{(list 1 2 3) [2]} bar`'
      "foo 3 bar"
      $ txr -p '`foo @{(list 1 2 3) [1..:]} bar`'
      "foo 2 3 bar"
      $ txr -p '`foo @{(list 1 2 3) [1..:] 20} bar`'
      "foo 2 3                  bar"
      $ txr -p '`foo @{(list 1 2 3) [1..:] -20} bar`'
      "foo                  2 3 bar"

Interpolation into quasi-literals is very useful and expressive; I use it all the time. Doing trivial things should look trivial in the code.

Oh, right: referencing splices and unquotes is possible from inside a quasistring:

      $ txr -p '(let ((a 42) (b (range 1 5)))
                 ^(list `hey @,a @(list ,*b)`))'
      (list (sys:quasi "hey "
              @42 " " @(list 1 2 3 4 5)))

      $ txr -p '(eval (let ((a 42) (b (range 1 5)))
                        ^(list `hey @,a @(list ,*b)`)))'
      ("hey 42 1 2 3 4 5")

Safe to say, that one's not coming to a Python near you.

</comment><comment><USER33> This looks like template strings in ES6 [1], which is really well done ! I look forward to using f-strings

[1]: [https://developer.mozilla.org/en- US/docs/Web/JavaScript/Refe...](https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/template_strings)

</comment><comment><USER16> This is a very handy feature of PHP and would be useful in Python. I think readability will be solved by syntax highlighting: expressions in an f-string would be highlighted like normal expressions, rather than like string content. This is what is already done for PHP.

</comment><comment><USER34> I'm really happy to see this. I know it's petty, but this was the biggest reason I decided to focus on learning the ins and outs of Ruby instead of Python.

</comment><comment><USER35> I understand the need for expressions-in-literal.

I really don't understand why the unnecessary extra "!rsa" modifiers are a good thing though.

<comment><USER16> The fact they had to hack in a workaround so != works is a point against it. And they acknowledge you can use repr()/str()/ascii() directly.

They want to keep it for str.format() compatibility, but I'm unconvinced. It hurts readability, and is redundant (There should be one-- and preferably only one --obvious way to do it.)

</comment></comment><comment><USER36> I just use Tornado templates for doing this. I made a wrapper to make it a single function call. The syntax is very similar.

</comment><comment><USER37> So long as they add a rule to PEP8 saying you can only use one of the string formatting methods in a given source file...

<comment><USER38> Something like that would be very easy to add to a linter, even if not to the official PEP8. (Although I totally agree, only use 1 method, whichever it is...)

</comment></comment><comment><USER39> i like it ..a lot!</comment>


Ask HN: Name some good books on the science of workplace behaviour, team health - <AUTHOR> soft skills, rapport etc <comment><USER2> Science? Hard to measure workplace behavior and team health. There are probably books which offer advice and anecdotes, but a "science of workplace behavior" seems unlikely. On the other hand, there are books which may be useful. For example, _The Best Place to Work: The Art and Science of Creating an Extraordinary Workplace_ by Ron Friedman might be helpful. (Your query motivated me to purchase a copy.) I found _Tribal Leadership: Leveraging Natural Groups to Build a Thriving Organization_ by Dave Logan, John King, and Halee Fischer-Wright worth the read.

My point--there is not much real quantitative science in this area: just stories and cautionary tales.</comment>


Recommendation System for blog content - <AUTHOR> https://github.com/naveenwashere/a-recommendation-system-for-blogs-content <comment><USER2> What does this address that Taboola and Outbrain don't?</comment>


Show HN: Clojure syntax highlighting for gedit - <AUTHOR> https://github.com/mattfenwick/gedit-clojure

<comment><USER2> Too much orange, I think? Unless of course the orange is the "default" color for the theme. Anyhow, wouldn't you want at least the core functions/macros to be more of a distinctive color?

<comment><AUTHOR> Q: too much orange? A: Yes! I find it somewhat annoying as well; the standard identifier color was so close to plain white that I couldn't easily see the difference -- at least the orange is obvious.

Q: different colors for core symbols? A: Yes! I'm working on exactly that in the second style file (closure.lang in the repo) -- I've just added a screencap. The eventual goal is to distinguish between special forms, built-in macros, built-in functions, %-args, reserved, &, and all others. (I hope I'm not forgetting anything). Suggestions are welcome!</comment></comment>


Email updates about your own activity - <AUTHOR> https://github.com/blog/2203-email-updates-about-your-own-activity <comment><USER2> I'd love to see a checkbox for email notifications only on repositories I have commit access on... As it is, I'm watching quite a few, and while I like to check them all via the website every couple days, I'm pretty much stuck ignoring the emails, as there are way too many of them to filter the noise out.

<comment><USER3> You could create a filter in your email program.

<comment><USER2> And I'd have to update that filter every time I create a repo on github (which I do more often than I'd ever remember to update email filters).. though tbh it's gulp-header that I don't regularly use anymore that's probably the most popular codebase I control.

</comment></comment></comment><comment><USER4> Feels like GitHub is one of the very few websites that do email Right.

</comment><comment><USER5> Awesome. No longer do I have to remember to respond on Issues by replying to notification emails.

</comment><comment><USER3> Cool. I requested this feature a few years ago.</comment>


Show HN: moment-emoji, get a emoji for the time of the day - <AUTHOR> https://github.com/oscarmorrison/moment-emoji <comment><AUTHOR> maker here. This was pretty quick and dirty, but wanted something a bit cute to add to a time zone widget i built. Might save some others some time

<comment><USER2> Wish there were incremental clock-face emojis for every minute of the day. Would be cool to have a more granular version of this exact idea. Nice implementation though!

<comment><AUTHOR> Thanks. Yeah incremental would have been better. This round the time to the closest 30 mins

<comment><USER3> This is where svg might shine, but for the emoji use case (presumably a non serious use case) this approx time would be fine</comment></comment></comment></comment>


Functors, Applicatives, And Monads In Pictures - <AUTHOR> http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html

<comment><USER2> This is fantastic! Clear and in-depth explanation, and you didn't stop using pictures (sometimes posts start out with pictures and then lose them somewhere along the road). Love it</comment>


Al Feldstein, the Soul of Mad Magazine, Dies at 88 - <AUTHOR> http://www.nytimes.com/2014/05/01/business/media/soul-of-mad-magazine-al-feldstein-dies-at-88.html?_r=0

<comment><USER2> RIP Al Feldstein. My life would not have been the same were it not for that fateful day rummaging through the boxes in the back of my neighborhood comic shop (remember those?) and finding a cachet of MAD from the sixties and seventies.

I would get in trouble with my parents becaue I'd be up until 2am reading MAD by my nightlight and would be exhausted in school the next morning. But MAD taught me more than my public school could've: it gave me a real-world education, the view that things are messed up and broken and that jokers, pranksters, spitballers, and rabble-rousers may be on to something after all.

MAD used to be incredibly intellectual in the earlier days, which makes sense considering the bulk of its audience was college students (whereas nowadays the diminishing readership is probably mostly tweens and manchildren). MAD exposed me to D.H Lawrence, to Virgil and Homer, to a huge array of cultural references across manifold genres. For only a few bucks an issue (cheap!), I was taken away from my suburban bubble and thrust into an irreverent comedic realm that was a catalyst for many of my own projects. I got in a lot of trouble at school because I turned all my assignments on their head but I wouldn't have it any other way.

Also lets not forget MAD's contribution to the hacker culture: they published Donald Knuth's portzebie measurement system!

<comment><USER3> MAD magazine's downfall really accelerated after they introduced paid advertisements.

<comment><USER2> Personally I think the downward trajectory began in the mid eighties. I remember buying the first issue that had advertisements in it (#402) and wondering what took so long. That being said, even its downward trajectory still had some absolutely golden moments. I really enjoyed "Monroe" \- it had a great underground comix feel

<comment><USER4> My only experience with mad is during the 80s, I thought it was great, 90s era or beyond not so much. I still have my collection which I reread on occasion, still funny still brilliant. I find it weird that stand up comedy from the 80s, can age so poorly, I mean absolutely not funny at all today. But old txt files and written stuff maintains its relevance.

</comment></comment></comment></comment><comment><USER5> Mad Magazine, Dr Demento, and Monty Python; these things lie in the heart of almost every 45+ year old programmer.

<comment><USER6> I'm twenty-something, and those are my comedy 'bases'.

Perhaps it has something to do with the types of humor?

Monty Python, for example, tends to create comedy from the over-exaggeration of pure logic. I think we, as programmers, tend to do that anyway; to see it portrayed on the silver screen is great, and maybe we also get a sense of relief from realizing that we aren't the only ones coming up with such silliness, albeit mentally.

Same sort of traits abound in Dr.Demento and MAD. 'Wet Dream' and most of the 'Lighter side of...' series are similar. Take a logical premise, and take it to the point of silliness.

RIP. I have fond memories of MAD, and it definitely helped created the person I am today.

</comment></comment><comment><USER7> This man completely corrupted my childhood. Thanks! I am a better man for it.

</comment><comment><USER8> MAD magazine helped everyone laugh at the absurdity of things and introduced lots of kids to satire, cynicism and sarcasm. It helped us take things a little less serious and not to worry. Every author/artist that worked on the magazine is a free thinking hero. Thanks Al. MAD magazine was one of the best sites on the pre-internet.

</comment><comment><USER9> Without Mad Magazine, George Carlin and Billy Connolly my life would probably be quite a bit different.

Why commit suicide, only because the last issue was sold out...

RIP Al & thanks, two of my favorites down.

I'll go find my catsuit now I guess.

</comment><comment><USER10> Damn. RIP, Al. Loved the mag for many, many years and still take a trip down memory lane when I find one sitting around the house during holiday.

</comment><comment><USER11> Try to imagine what the would would have been like without them.

It's impossible.

</comment><comment><USER12> Feldstein, not Goldstein. Mad, not Screw. The original NYT title is in error, since corrected.

There is a percent of my youth related to "Spy vs. Spy", "The Lighter Side of..." and of course, every parody. Classic.

He's no doubt laughing right now at the irony of the NYT's mistake.

<comment><AUTHOR> I _knew_ something felt off about the title -- corrected, thanks!

</comment></comment><comment><USER13> Surely you meant to type "Feldstein."</comment>


Macros in Python - <AUTHOR> https://github.com/lihaoyi/macropy#case-classes <comment><USER2> If you're interested in doing some of this stuff in JS, there's sweet.js[1] for macros. I've also implemented some similar stuff as libraries: adt.js[2], matches.js[3], and tailrec.js[4]. By implementing them as libraries, I've given up some of the nicety of native-looking syntax, but it requires no preprocessing and only ES3.

[1] <http://sweetjs.org/>

[2] <https://github.com/natefaubion/adt.js>

[3] <https://github.com/natefaubion/matches.js>

[4] <https://github.com/natefaubion/tailrec.js>

</comment><comment><USER3> This is awesome. Everything here (except the anonymous arguments to lambdas, seriously, just use x y and z as default argument names) should be in Python 4 or whatever you'd want to call the successor to Python.

I love love love the PEG implementation.

<comment><USER4> I agree nice clean work, so many try to simply "out do" with elegance and "smart code". Clean and simple is a gem hard to find. I will gladly contribute going forward.

<comment><AUTHOR> If you're serious about wanting to contribute, my email is on my GitHub profile, so ping me and I can help you get up to speed!

<comment><USER5> ^ or me

</comment></comment></comment></comment><comment> iso8859-1 I implemented a network-sort function generator, but the limited lambdas of Python seem to force me to make the macro declare a real function with magic name (see below). Also, I didn't figure out how to use the walker or quasiquotes, so I'm just generating source code and taking the AST of that.

      #run.py
      import macropy.core.macros
      import target

      #batcher.py
      # http://en.wikipedia.org/wiki/Batcher_odd%E2%80%93even_mergesort

      def oddeven_merge(lo, hi, r):
        step = r * 2
        if step < hi - lo:
            for x in oddeven_merge(lo, hi, step): yield x
            for x in oddeven_merge(lo + r, hi, step): yield x
            for i in range(lo + r, hi - r, step): yield (i, i+r)
        else:
            yield (lo, lo + r)

      def oddeven_merge_sort_range(lo, hi):
        if (hi - lo) >= 1:
            mid = lo + ((hi - lo) // 2)
            for x in oddeven_merge_sort_range(lo, mid): yield x
            for x in oddeven_merge_sort_range(mid + 1, hi): yield x
            for x in oddeven_merge(lo, hi, 1): yield x

      def oddeven_merge_sort(n):
        return list(oddeven_merge_sort_range(0, n-1))

      #target.py
      from macro_module import macros, my_expr_macro
      import dis

      my_expr_macro%(8)

      print dis.dis(fun8)

      print fun8([2, 4, 3, 5, 6, 1, 7, 8])

      #macro_module.py
      from macropy.core.macros import Macros
      from macropy.core import *
      from ast import *
      macros = Macros()

      import macropy.macros

      from batcher import oddeven_merge_sort

      @macros.expr
      def my_expr_macro(tree):
       return parse_stmt("def fun" + str(tree.n) + "(a):\n" +
       "\n".join(["  if a[{0}] > a[{1}]: tmp = a[{0}]; a[{0}] = a[{1}]; a[{1}] = tmp".format(x,y) for (x,y) in oddeven_merge_sort(tree.n)]) +
       "\n  return a")

When running, it will spit out the Python bytecode disassembly to show the unrolled sorting loop.

</comment><comment><AUTHOR> Author here,

I just put up a Detailed Guide:

<https://github.com/lihaoyi/macropy#detailed-guide>

That goes into more detail of how macros are written, and walks you through writing a simple but useful macro (the quicklambda macro). This should greatly help anyone who wants to try his hand at some metaprogramming =)

</comment><comment><USER6> This is really impressive. The whole contents of that module are fantastic. Ever since I've started to play around with Scala, I've missed case classes and pattern matching in Python. The ability to write AST macros is even cooler.

</comment><comment><USER7> This whole library is flat-out fascinating. I'm looking forward to trying it out. Macros? The PINQ stuff?

</comment><comment><USER8> While the specific feature is fun to see in python, I'm much more impressed by the fact that MacroPy enables you to do AST transformations from python modules on the fly. This allows for developing DSLs like they show with PINQ (a LINQ "clone").

</comment><comment><USER9> Hy [1] is also making a lot of advancement these days. It now has eval, classes, and macros working in it [2].

[1] Lisp in Python <https://github.com/paultag/hy>

[2] <https://twitter.com/paultag/status/333637217765441537>

</comment><comment><USER10> Something about classes that are nested inside other classes suddenly being available as top level classes seems wrong. I'm not super deep on the innards of Python, but that doesn't look right.

<comment><USER5> Other author here: Like lihaoyi said, it's true that the way we defined things doesn't match standard Python namespacing, but it saves some typing and I think it's easy to get used to the semantics of our case classes. Our macro just transforms the "namespace tree" that you would normally get from writing code like that into an "inheritance tree", where all the subclasses' names are at the level of the top class. If you wanted to do something like this with proper namespaces, you can probably do something similar without macros using metaclasses.

<comment><USER11> I urge you to take this criticism more seriously. With your library a programmer is changing the semantics of class nesting in the language, all by pre-pending a very missable and ambiguous @case to the class. I'm no expert but I think this is pretty bad in any language, and especially one that says "explicit is better than implicit"

<comment><AUTHOR> We do take it seriously; it's a hard tradeoff between Novelty and Utility. Given that the whole point of macros is to change the semantics of the Python language, this (valid) criticism applies not just to case classes but macros in general. If you go haywire with macros, all hell breaks loose.

We think that with some discipline, it is possible to come up with macro transformations which are both useful and understandable by a programmer. This means setting clearly defined semantics for the transformations, which is difficult but doable.

If you think macros are kinda crazy (well, they are!) you should look at the implementation of such pythonic constructs like `namedtuple`, the `ast` module and the new Enum library coming out!

<comment><USER12> The implementation of namedtuple is pretty crazy, but the interface is simple and doesn't change the language semantics.

<comment><AUTHOR> I'd argue that "fields as a string with spaces inside, or maybe a list of strings" is changing language semantics quite a bit.

We're used to namedtuples doing it like this now, but if namedtuples didn't exist, "fields as a list of strings with spaces inside, or maybe a list of strings" would definitely not make it past code review and probably get me yelled at by my future colleagues.

</comment></comment></comment></comment></comment></comment><comment><USER13> I see the docs mention that these only work when importing modules. The dev version of IPython lets you transform the AST of code that is typed in the REPL. It would be really cool to see an IPython AST transformer based on this. Here is an example from the test files in IPython: [https://github.com/ipython/ipython/blob/master/IPython/core/...](https://github.com/ipython/ipython/blob/master/IPython/core/tests/test_interactiveshell.py#L451)

<comment><AUTHOR> Yep, there's an issue for that! <https://github.com/lihaoyi/macropy/issues/14>

I've also gotten a basic implementation working in the CPython REPL, which requires you to run a function `macro_repl()` before you can use them. A Macro powered REPL would be super cool!

<comment><AUTHOR> MacroPy now works with the CPython REPL:

        PS C:\Dropbox\Workspace\6.945\Project> python
        Python 2.7 (r27:82525, Jul  4 2010, 07:43:08) [MSC v.1500 64 bit (AMD64)] on win32
        Type "help", "copyright", "credits" or "license" for more information.
        >>> import macropy.core.macros
        0=[]=====> MacroPy Enabled <=====[]=0
        >>> from macropy.macros2.tracing import macros, trace
        >>> trace%[x*2 for x in range(3)]
        range(3) -> [0, 1, 2]
        (x * 2) -> 0
        (x * 2) -> 2
        (x * 2) -> 4
        [(x * 2) for x in range(3)] -> [0, 2, 4]
        [0, 2, 4]

It's somewhat hacky, but it seems to work pretty well. I went through the examples and most of them work perfectly in the REPL, except for those whose have blank-lines-in-class-def confuse it

</comment></comment></comment><comment><USER14> Wow, I am blown away by how complete this implementation is. Nice work! Now please post a writeup of how the internals work :)

<comment><USER15> It's actually pretty simple and almost all in this file:

[https://github.com/lihaoyi/macropy/blob/master/macropy/core/...](https://github.com/lihaoyi/macropy/blob/master/macropy/core/macros.py)

Those already familiar with the imp mechanism and AST module could probably infer it from the description.

An absolutely beautiful facet of Python's nature is that with relatively little background, it's quite straightforward to _know_ how all sorts of 'magic's and hacks work at first glance. :)

</comment></comment><comment><USER16> I really liked this up until the inheritance bit.

Child classes have to be nested classes of the parent doesn't sit right with me. Also, wouldn't it be better if these classes inherited object in some way?

For the record, I liked everything else that it mentioned. Just the inheritance bit was something I didn't like.

<comment><AUTHOR> \- The classes do inherit from object, iirc \- We know the nesting is controversial; whether it will remain in its current form has yet to be seen. I think there is some merit in this way of doing it, we know others disagree

<comment><USER16> Ah, okay.

Honestly, if I have classes that really do need to inherit from each other, I probably won't be using @case to do it anyways. I see this being extremely useful for the many structures that I need in my application (that may require a few convenience methods) more than anything.

</comment></comment></comment><comment><USER17> Can anyone give a Tl;DR about how this works? Don't x and y need to exist beforehand?

<comment><USER8> It's hard to give a TL;DR on the whole library, but case classes can be used with for example pattern matching (<https://github.com/lihaoyi/macropy#pattern-matching>).

The following code:

      with patterns:
          Foo(x, Bar(3, z)) << Foo(4, Bar(3, 8))

The constructor after the << will be matched with the part before <<. It will only match if the first argument of "Bar" is 3. If that's the case, x and z will be bound to 4 and 8.

Does this help? :)

<comment><USER18> I'm sure there's a use-case for this, but I'm not coming up with one off the top of my head. This comes across as an extremely rare type of problem to encounter.

What's the purpose of only binding x and z if the first argument of Bar matches? What if it doesn't match? Is an exception thrown? Are x,z just None?

[Note: I'm talking about the example, not the @case decorator, which does seem useful]

Edit:

After reading the library examples, the explanation above is not entirely clear:

      with patterns:
          Foo(x, Bar(3, z)) << Foo(4, Bar(3, 8))

here's the rest of the example:

        print x   # 4
        print z   # 8

I was thinking that somehow a new Foo instance was created only when the pattern matched. (Oh, and an exception is thrown when the match fails)

<comment><AUTHOR> Author here. The `<<` operator is being abused to mean "bind", so the right side is a normal expression (constructing a Foo and Bar) and the left side matches it to a particular "shape".

The purposes of pattern matching is to replace code that looks like this:

        if  (isinstance(tree, BinOp)
                and type(tree.left) is Name
                and type(tree.op) is Mod
                and tree.left.id in module.expr_registry):
            ...

with code that looks like this

        if BinOp(Name(id), Mod(), body) << tree
                and id in module.expr_registry:
            ...

Which looks much nicer, and more clearly says what you want: that `tree` "looks like" a particular shape.

EDIT: Here's another example. Turning this:

        if  ((isinstance(tree, ClassDef) or isinstance(tree, FunctionDef))
                and len(tree.decorator_list) == 1
                and tree.decorator_list[0]
                and type(tree.decorator_list[0]) is Name
                and tree.decorator_list[0].id in module.decorator_registry):
            ...

into:

        if  ((isinstance(tree, ClassDef) or isinstance(tree, FunctionDef))
                and [Name(id)] << tree.decorator_list
                and id in module.decorator_registry):
            ...

Doesn't quite work yet, but we're getting there

<comment><USER18> Personally, I find those to be better 'real world' examples. I would suggest including them in the docs. Thanks for the explanation!

</comment></comment></comment></comment></comment><comment><USER19> This is the coolest thing I've seen in a long time! Amazing!

</comment><comment><USER20> It seems like the give-up on clarity of code isn't worth of it for most of this, but the tail call optimization is a nifty little feature to have.

</comment><comment><USER21> Am I the only one thinks that Python is definitely not suitable for syntax magic? like Ruby or something else does?

<comment><USER22> Nope, you're not alone. Though this looks cool, it reminds me of the evilness in C macros.

<comment><USER21> totally agree

</comment></comment></comment><comment><USER23> Just a small note. In the definition of the Cons class, the iterate method is calling each time to len before proceeding, and that is terribly inefficient.

def __iter__(self): current = self

                while len(current) > 0:
                    yield current.head
                    current = current.tail

<comment><AUTHOR> Yeah, we haven't looked at performance at all.

"The Wonderful Thing About A Dancing Bear Is Not How Well He Dances, But That He Dances At All"

We'll get to teaching him to dance _well_ later!

<comment><USER23> Speaking about concepts perhaps Norvig post "(How to Write a (Lisp) Interpreter (in Python))" <http://norvig.com/lispy.html> can be useful. The concept of a dotted pair (the car and the cdr are interesting historical facts.

I wish you the best for your presentation for the Mit class, it seems interesting but perhaps it should have a link to some standard techniques like machine learning.

I am curious about the small projects, will they be available in the page of the course?

<comment><AUTHOR> The homework assignments are all online; One of the project requirements is that the code be hosted somewhere public where people can go and see it, so it'd probably be pretty easy to get a list from the prof

</comment></comment></comment></comment><comment><USER24> I'm basically seeing lots of things I love in Scala, but in Python. Makes me want to go learn Python now ^_^

</comment><comment><USER25> A while ago I made a similar thing: <https://github.com/mmikulicic/metacontext>

still has some issues with line numbers (in tracebacks for example) in files where there is macro expansion.

</comment><comment><USER26> It's a cool idea, but this basically sneaks new features into the Python language through a backdoor, bypassing the public review/feedback process. I would suggest the author create a PEP for these features instead.

<comment><USER27> Given the language's general trend away from functional programming and Guido's flat-out refusal to implement TCO, I think starting with an implementation, showing interest (if it exists), and then trying to standardize via PEPs is probably a reasonable route to go.

</comment></comment><comment> iso8859-1 What made you target Python 2 instead of Python 3?

<comment><AUTHOR> Laziness; we already had it installed.

That's what a lot of other people are using.

It's not that we don't like Python3; their ASTs are considerably simpler (e.g. no print statement), they have importlib, and a bunch of other nice things. It's just that the world we interact with mostly uses Python2, so we just follow along.

</comment></comment><comment><USER28> need a slime implementation please.</comment>


On Redis, Memcached, Speed, Benchmarks and The Toilet - <AUTHOR> http://antirez.com/post/redis-memcached-benchmark.html <comment><USER2> memcached's ASCII protocol is known to be slower and less effective than the binary protocol and using TCP for memcached is slower than using UDP. It's not a fair assertion that redis is faster than memcached when you're picking the slowest way to communicate with memcached.

Also, one should not expect to see parity in get/set ratios or you're doing it wrong. Cache get with a good hit ratio/high effectiveness is the point of memcached. While memcached gets effectively plateaued in his low concurrency example, redis get performance degraded as you added more clients/concurrency. In an unoptimized use of memcached, high transaction rate environment, I see sets at 10% of gets.

Redis may very well be faster, but an effective benchmark should be closer to real world use case and shouldn't hold one party back for parity in protocol complexity.

<comment><USER3> Crad: I compared the same protocols, both TCP, both ASCII protocol. This is a fair comparison for sure with TCP, as with UDP you have many tradeoffs, so this is specifically a comparison of the TCP (reliable) protocol you can use with Redis.

About the binary protocol: I think this is currently not the widely deployed one, but the point here is that if the difference is about the protocol, even Redis could switch to a faster protocol using a binary one. Using almost the same protocol in both servers we are actually measuring the internals.

Anyway your reasoning can be applied the other way around. Many memcached systems are currently using CAS extensively while you can perform just one query with Redis atomic operations in many of the same real world scenarios. So should I double the Redis numbers by two because there is a faster way to do something in a Redis specific way?

About SET/GET ratio, I measured both SET and GET performances in an independent way, so I don't get it.

<comment><USER2> I get your reasoning about ASCII/TCP and it makes sense... apples to apples.

When asking for a performance benchmark, specifically about systems that are very dependent on communication protocol for performance, I think that it's more valuable to know how the best performing protocol of either side would perform.

As far as atomic vs CAS, I'd be more interested in the "right way" than the same way, so for my own interest, yes.

Re: Ratio, from your graph it appeared they were co-mingled. If each was done on their own then my point is moot.

</comment></comment></comment><comment><USER4> I'm Redis using it for:

\- session management

\- message queue (previously using 0mq pub sub)

\- memory cache (LRU argument = weak)

That's previously 3 technologies I had to manage, now only having to install 1. That means only having to worry about 1 driver, and only dealing with 1 API.

Less technologies in the stack is a good thing, esp if you get a performance boost as well.

The current bottleneck is of course an easy way to scale, and 2.2 comes with Redis Cluster.

The other problem some have indicated is the LRU implementation, which imo is a non-issue in almost all use cases.

<comment><USER5> Are you using it as a LRU cache? I'd really like to use Redis for this -- are there any examples out there of how to do it / could you share how you've done it?

<comment><USER4> set max-memory inside the config, it'll automatically do it for you as long as you are using expire on the keys.

The implementation according to antirez is that they sample 3 random keys, and expire the soonest one, so put your high priority data with a longer expire and you'll be fine.

<comment><USER5> Thank you ^_^

</comment></comment></comment></comment><comment><USER6> Really don't buy any of OA's weak arguments for speed over scalability. But I do appreciate people taking shots at assumptions. Like mine that "memcached is the fastest."

<comment><USER3> Not _over_ , we need systems that are both fast and scalable. But I suspect than in five years since now most people will consider a much more reasonable thing to shard client side, by hand, and in the most uncool ways a system that can deliver 100k requests/second than an automatically sharding system with 10k requests/second. My guess is that currently the queries/watt figure is not taken seriously enough.

With Redis we will shortly start working full time at "Redis cluster" so it's not that we don't care :) Just I think the first goal should be to have a very efficient "single" node, and then going the step forward trying to retain the same speed if possible.

</comment></comment><comment><USER7> Ooof, antirez, get someone to help you proofread these things because in some places they nearly make no sense.

"Stressing scalability so much put somewhat in shadow what in the 80's was one of the most interesting meters of software coolness [...]"

"Unfortunately I also think that our dude is part of the problem, since running crappy benchmarks is not going to help our pop culture."

"Apple to Apple, with the same mouth"

<comment><USER3> Sorry I'm trying to improve my English but progresses are really logarithmic at this point...

Well also the fact that I try to write this blog posts in very little time (it took me two hours at max, probably even a mother tongue should alloc more time to end with an high quality blog post) does not help either.

<comment><USER8> Your English is great. I'm a native speaker, and reading your post, I thought you were too. A slightly sloppy one with a couple odd turns of phrase, but perfectly clear and comprehensible. I understood the quoted parts just fine.

That said, please don't make excuses about how little time you spent on it. It might be true, but it shows lack of respect for your audience. Like code, if it's worth writing at all, it's probably worth writing well.

Keep writing, keep coding!

<comment><USER3> Thank you nkurz, sorry about the excuses about little time, I did not argumented it enough: the fact is that I really _love_ to share what I'm doing using blog posts, so I tend to work hard to achieve something that's worth sharing, but then I'm so excited about sharing it that I write the post as fast as possible!

I should try to resist some more hours in order to obtain a post that is more consistent and easy to follow... instead I tend to push the "publish" button and even when the post is already live I continue fixing it... Thanks for the comment!</comment></comment></comment></comment>


Node Needs an Abstraction Layer for JavaScript Engines - <AUTHOR> http://jxcore.com/node-needs-an-abstraction-layer-for-javascript-engines/

<comment><USER2> Don't forget about using Chakra (Microsoft) as an engine,

[https://github.com/Microsoft/node](https://github.com/Microsoft/node)</comment>


Apple's New OS "activation" for Touch Bar MacBook Pros - <AUTHOR> https://onemoreadmin.wordpress.com/2016/11/27/the-untouchables-apples-new-os-activation-for-touch-bar-macbook-pros/ <comment><AUTHOR> tl;dr :

\- TouchBar appears to be denoted as Watch2,5 running watchOS 3.0-14Y36.

\- TouchBar OS is stored on EFI partition.

\- Setting date to 1.1.1970 triggers iOS date problem and makes mbpro unresponsive for some time.

\- Deleting file(s) on EFI partition triggers critical software update.

\- TouchBar iOS seems to 'activate' calling Apple servers.</comment>


Round up change for Code.org (Giving Tuesday) - <AUTHOR> https://changefol.io/?c=code-org

<comment><USER2> Sounds like a pretty cool idea! Code.org is a great cause.

<comment><USER3> i checked the site out and they have EFF(!), which I think is a better cause than code.org</comment></comment>


Leaked iPhone 8 Screen Protector Includes Reduced Bezels and Front-Facing Camera - <AUTHOR> https://www.macrumors.com/2017/06/19/leaked-iphone-8-screen-protector/ <comment><USER2> I wish they'd move the power button back to the top. The number of times I've shut my phone off when I just meant to adjust the volume or take a picture, it's pretty aggravating.</comment>


'We're going to have more visibility and less privacy' - <AUTHOR> http://www.nydailynews.com/new-york/bloomberg-new-york-eventually-surveillance-city-article-1.1296103

<comment><USER2> _"We're going to have more visibility and less privacy. I don't see how you stop that."_

Well, you could start by trying to fight them instead of being an apologist for them and trying to make it happen.

The mayor of NYC coming out strongly and decisevly against the surveillance state would be huge. It would definitely spark a public debate, and would probably lead to laws being passed against wholesale surveillance.

<comment><USER3> >The mayor of NYC coming out strongly and decisevly against the surveillance state would be huge.

Bloomberg? Taking a stance _for_ individual rights? You are a true comedian, sir!

</comment></comment><comment><USER4> What's the legality of obscuring one's face in public? There's potentially a market in avoiding facial recognition. I'm reminded of the "scamble suit" of A Scanner Darkly.

</comment><comment><USER5> I'm glad Bloomberg isn't going to be mayor for much longer (unless he figures out a way to overturn term limits... again).

</comment><comment><USER6> Bloomberg is really an awful being, all things considered. His response to people feeling the government shouldn't tell them how much soda they can have is "look at me I'm not fat, these laws aren't for me." What an adult way to govern. And this whole attitude of "haha you're afraid of big brother" or "wow look at all this magical technology .. I mean I have pledged to do some kind of bogus 'code year' so you shouldn't expect to have any sort of privacy" is just ridiculous of a public official; you'd expect this from some backwater town, not New York. Honestly, his response of "I don't know how we stop that" is just comical. Vaginal probes exist, the technology is ready to go, but I think there is a clear answer for how we prevent government from using them on people.

<comment><USER7> That's actually why I love him though; don't get me wrong, I don't always agree with him. But I can count on him to always do what _he_ wants (in the sense that he said he'll do X if he's (re-)elected, and he does), and do what he _says_ he will. I can trust him to not stick by party guidelines, and not be forced into doing or saying something because it's politically correct. I find his brutal honesty refreshing, even if I don't agree with what he's saying or doing.

</comment></comment><comment><USER3> I wonder how long it will be before camera-smashing takes off as a political hobby. I know there are already a few groups in Russia doing it.</comment>


Ask YC: Dynamic systems (text)books recommendation? - <AUTHOR>

I've gotten a huge curiosity spark by the wikipedia articles on dynamic systems and chaos theory:
http://en.wikipedia.org/wiki/Dynamic_systems http://en.wikipedia.org/wiki/Chaos_theory
I'm finishing up undergrad degrees in Math and CS, so I have a very basic understanding of algorithms as well as differential equations. Are there "standard textbooks" in the fields (equivalents of Rudin for Analysis or Russel/Norvig for AI)? Are there any interesting more pop-oriented books you can recommend?
I came on the subjects from robotics and cognitive science, so this is the kind of research I'm trying to understand:
http://www.cs.uvm.edu/~jbongard/publications.html http://bdc.brain.riken.go.jp/~tani/projects.htm <comment><USER2> I'm taking a course on it right now and most people I've seen use Steven Strogatz's book (Nonlinear Dynamics and Chaos). He mostly focuses on continuous systems, but the end of the book has a lot on discrete stuff like logistic maps and fractals.

His book is definitely _the_ book on stuff like this, but mostly oriented at math-modelling and differential equations. Its also very easy to read and get through with lots of really great examples.

I obviously haven't yet looked at the research you are trying to dig into, but definitely check out this book from the library at least. Its also not that expensive.

<comment><AUTHOR> Thanks! I really appreciate it. :)

</comment></comment><comment><USER3> This book might interest you (assuming you don't have it already):

ODEs and Dynamical Systems (by Gerald Teschl) <http://www.mat.univie.ac.at/~gerald/ftp/book-ode/ode.pdf></comment>


XBMC 13 Gotham released - <AUTHOR> http://xbmc.org/xbmc-13-0-gotham-rises/

<comment><USER2> xbmcbuntu-13.0~gotham_amd64.iso

So, is that now really a 64Bit version of xbmcbuntu? So far, all I heard was that there will only be 32 Bit versions.

</comment><comment><USER3> Congrats to the team, this is a huge release.</comment>