Ask HN: What do you want to learn in 2016? - brown-dragon I want to write a tutorial that other programmers would find useful. What is your "I'd really like to learn this" for 2016? <comment><USER3> Everything. That's the problem, I want it all, and I want it now (as they say). Basically, I need somebody to invent the interface from _The Matrix_ so I can have Tank dump jiu-jitsu, kung-fu, and a pilot program for a b-212 helicopter straight into my brain.

That said, in terms of prioritizing, I'll be spending a lot of time this year on topics related to data science, big data, machine learning and AI. Taking some stats classes online, and particularly interested in finally getting a handle on Bayesian statistics and then exploring things like Bayesian Belief Networks, etc.

Also, I've been doing a lot of stuff with R and Octave the past few months, so more of that for sure. May try to pick up some Julia at some point, and I bought a Swift book intending to at least dip my toes in the water with that. I still want to learn to use some things like Prolog, Mercury, CLIPS, OPS5, etc. as well.

<comment><USER4> This!

Access to the collective knowledge of humanity equates with uncountable paths not taken!

I know someone with 4TB of textbooks and course lectures.

Probably the most important habit learned during my (first year of) PhD:

1\. Make a list of books you want to read

2\. Break up each into reasonable blocks (#_pages/#_chapters is a good unit) and write as checkboxes to cross off to keep you motivated

3\. After filling up two pages or more, reconsider step 1

Another observation, for those not bored yet: Planning each minute will give you anxiety, planning every decade will not be as effective. Multiple timescales can help.

<comment><USER3> _I know someone with 4TB of textbooks and course lectures._

Heh, is your friend me? :-) OK, not sure if I have 4TB of stuff or not, but if I totalled up all the books, videos, etc. I have downloaded and stored here and there, I'm pretty sure it's in the TB range. The most frustrating part, to me, is the lack of time to read/study everything I want to study. I think that's one reason the Coursera classes work so well for me - they force me to pick _something_ and focus on it to (near) exclusion for a defined period of time. Otherwise, I tend to wander around a bit too much. :-(

</comment></comment></comment><comment><USER5> I'd really like to learn more about radios and RF electronics. I have a pretty good understanding of the system level concepts behind radio, and I have enough EE concepts down to understand things like amplifiers and filters, but chaining all of that together into a working system is above my level of understanding.

I think I have a small problem in that I don't know where to start. I don't know how to bridge the gap between block diagram understanding and detailed circuit schematics and diagrams.

Long shot, as this is a mostly programming based thread, but hey, I've gotten lucky before. Maybe I will again?

<comment><USER6> I'd recommend trying to build something relatively simple (e.g. an AM transmitter) from scratch and just enumerating all the questions you ask in the process. Then finding the real answers to those questions and the whys.

<comment><USER5> I've thought of trying that, but part of my stumbling block is that I'd need an oscilloscope to debug the thing when it wasn't working, and those are sort of expensive. (At least, the decent ones are. About $1k or so to start.)

<comment><USER6> Digital ones are expensive but you can get an old used analog scope pretty inexpensively, and often they'll do the job. At least for relatively low frequency projects. Call your local universities surplus department and see if they have any or expect any to come in soon.

</comment></comment></comment></comment><comment><USER7> \- Deduction system, in particular as relating to logic programming such as Datalog. This is more or less in link with my research interest in programming languages - I feel like these techniques could have a lot of implication in compilers.

\- Front-end programming using javascript. I'm always intrigued by all the conversations surrounding React, Angular, etc... There is a background I lack to see why such convoluted solutions are need, what problems they fix.

\- Fundamentals of machine learning, esp. neural network (I have some clues about things like Bayesian filters). It just seem like something that could be used in practice if one knows how to roll with it.

<comment> brown-dragon I can do "front-end programming using javascript" and "fundamentals of machine learning" but have no clue about "deduction systems".

Amongst the two, which would you say interests you more?

<comment><USER7> I'd be more interested by pointers for Javascript front-end principles, because I feel like I'm lacking some background to understand much of what I'm encountering, whereas there's quite a bit about machine learning (which I haven't checked, still I have good hope it covers the fundamentals).

Deduction systems: see [https://www.youtube.com/watch?v=R2Aa4PivG0g](https://www.youtube.com/watch?v=R2Aa4PivG0g) for instance.

<comment> brown-dragon Fascinating talk! Thanks!

</comment></comment></comment></comment><comment><USER8> I've already completed the Coursera Machine Learning course and now I'm starting to get my head around Deep Learning using the nVidia course - <AUTHOR> because I bought a Jetson TK1. This is all to complete a project that will also involve RabbitMQ, Nodejs, and Docker.

Other than that I'm determined to gain a certificate in French Language (although I have been slowly learning for several years now) and get my driving licence :)

It helps that I have stuck with each technical topic rather than trying to do them all at once or skip ahead. Getting to use some of the technologies I need for my project in my day job helps too.

<comment><USER3> I also just finished the Coursera ML course, now I'm doing some stats and data science classes on there, and the Google deep learning class at Udacity.

I kinda think that the rise of MOOCs and "on demand education" is the best thing since sliced bread. :-)

<comment><USER9> Which ML course did you take? There seem to be quite a few - <USER2> recommendation?

<comment><USER3> The Stanford / Andrew Ng one. I thought it was pretty solid.

It's apparently not quite as rigorous as the actual cs229 course, but those lectures, problem sets, etc. are also online if you want to supplement the Coursera stuff with something more math heavy and intense.

<comment><USER9> Thank you!

</comment></comment></comment></comment></comment><comment><USER10> I'm focusing on cybersecurity. Right now I'm doing the microcorruption.com CTF, just finished the stockfighter CTF. I read The Web Application Hacker's Handbook and am practicing pentesting the sample apps compiled by OWASP. [1] I want to learn to reverse engineer malware, and write cryptographically secure software like Tor.

[1] [https://www.owasp.org/index.php/OWASP_Vulnerable_Web_Applica...](https://www.owasp.org/index.php/OWASP_Vulnerable_Web_Applications_Directory_Project#tab=On- Line_apps)

<comment><USER11> Microcorruption was a blast. If you want to learn slightly more realistic binary exploitation, I recommend RPI's MBE course[1]

[1] [http://security.cs.rpi.edu/courses/binexp- spring2015/](http://security.cs.rpi.edu/courses/binexp-spring2015/)

</comment></comment><comment><USER12> Having gone the traditional engineering/cs route through university, I was trained to be a systems engineer. So C, C++, and Java were my first languages. Web has taken me away from that in recent years so I'd like to reexplore what systems programming looks like in 2016. Rust and Go are on the top of my list.

<comment><USER13> Go feels like a "friendly" C, kinda. Rust is different. Vaguely like the ML family. They both have some neat ideas. Rust is probably more of a stretch, given your background.

</comment></comment><comment><USER14> I want to learn more German and more javascript. I took german in high school 20+ years ago but sucked at it and struggled through it for my language requirement in my phd. A decent amount of literature in my field is in German so I want to get better at translating it. I'm doing duolingo.

I went through the javascript program at codeavengers last summer and now I'm looking to build on that.

<comment><USER15> Here's a couple of new things about JS you can learn right now! Currying! Arrow functions! Template strings!

        function getPrefixer(prefix) {
          return str => `${prefix}: ${str}`;
        }

Now use it!

        const infoLogger = getPrefixer('info');
        infoLogger('Starting up!'); // returns 'info: Starting up!'
        infoLogger('Not being used!'); // 'info: Not being used!'

Oh no, We're throwing the string away, let's use it and have it add a date and use a default argument value!

        function getLogger(log, prefix='info') {
          return str => log(`${prefix} - ${new Date()}: ${str}`);
        }

Now use it!

        const infoLogger = getLogger(msg => console.log(msg));
        infoLogger('Starting up!'); //Logs 'info - Sat May 28 2016 08:51:12 GMT-0700 (PDT): Starting up!' to console!
        const errorLogger = getLogger(msg => { throw msg }, 'error');
        errorLogger('Oh no!'); // throws an error with 'error' prefix!

See it in action here with babel: [https://jsfiddle.net/xgwe121v/](https://jsfiddle.net/xgwe121v/)

<comment> brown-dragon This is a very cool intro to the new features of JS! Thanks! :-)

What part here is Currying?

<comment><USER15> The currying part is the variable that you give to the first function. In the first function the prefix variable is stored in the local scope of the big arrow function that is returned. This ability of functions to remember variables from the scope in which they were created is called closures, and storing a variable like this is a closure. Using closures to generate functions with preset variables is currying.

</comment></comment></comment></comment><comment><USER16> Electronics: "Object in Space" baited me into thinking "Huh, I could do that" \- bought an Arduino, assembled some basic circuits, and plan to make at least one USB controller.

"Proper" Woodcrafting: All the better to mount said electronics. Might branch out into making my own arcade cabinet, pinball machine, computer desk, etc. - I've only done basic assembly with boards, saws, nails, screws, etc.

Commercial Failure: I intend to write the gold standard for unit testing tools (at least within game development), and try to make a buck off of it.

Killing Procrastination: I should hit [add comment] and get back to coding...

<comment> brown-dragon I've had this feeling for a while that unit testing tools are ripe for 'disruption'. The main problem I see is relating the test cases "back" to features and broken/flaky tests.

For procrastination, the thing that works for me is timeboxing (setting a timer for as little as 10/20 minutes and just getting started). See if that works for you.

<comment><USER16> > I've had this feeling for a while that unit testing tools are ripe for > 'disruption'. The main problem I see is relating the test cases "back" to > features and broken/flaky tests.

This is part of my interest. For one of the nastiest debugging sessions in recent memory, I eventually resorted to performing a manual perforce bisect of history (no p4 bisect), and manual testing to invoke system UI. This revealed that spamming some call to check internet connectivity would cause a "crash" (via exit(3) with no useful debug spam and an equally useless callstack) if you opened the windows 8 charm bar for more than 10 seconds in a certain way.

I spent a good week or two trying to track that down before resorting to brute force. So there's two tools right there that would've saved me a ton of time:

1) p4 bisect. git bisect exists - writing tools to iterate over arbitrary VCSes shouldn't be that hard.

2) System level input capture and replay. This already exists in the form of tools like AutoHotKey, and there's similar tools for e.g. Xbox 360 gamepad input - but these are scattered tools, each which must be separately learned, configured, and integrated, and usually not focused on creating 'unit' tests.

.

There's also a lot of low hanging fruit for basic test _types_. Most unit test frameworks offer little more than a fancy assert(). Some build systems will have some basic correlation of test failures to VCS versions. Meanwhile, I want to test things like...:

1) Did change X impact this performance-critical bit of software? What about on other machines than mine? I shouldn't have to manually profile every change to see performance impacts, good or bad. I have a very basic prototype of this displaying the results of my latest checkin @ [http://test.maulingmonkey.com/](http://test.maulingmonkey.com/)

2) I have a GLSL shader that works on my device (tm). I want automatic test failures when it turns out this shader crashes the driver when linking the shader on phones with a specific GPU vendor. This boils down to little more than having better tools to manage the running of unit tests against multiple machines/devices, and correlating the results in a sane fashion. Running database unit tests against every phone is usually a waste of time, but running graphics unit tests against only the phones connected to the build machines isn't enough - it should test against every phone connected to a workstation in the studio overnight. It should also test against the AWS Device Farm.

3) I have a cross-platform renderer that works on PS4, XB1, Windows, OS X, iOS, and Android. If I render this scene, do I get approximately the same result? Or is XB1 rendering a black screen instead? Do certain Android phones have major precision issues? Which GPU Driver versions misrender?

4) I want to fuzz-test user profile parsing. "Forever" \- by which I mean, whenever a build machine or workstation is idle. So just script your CI server to run SDL MiniFuzz! But I also want to fuzz things which don't have a file based interface - such as network protocols, containers, user control input, ...

</comment></comment></comment><comment><USER17> Haskell. I am currently reading haskellbook.com but I am kind of stuck with the first chapter about Lambda Calculus. If anyone knows a good advice/link/tutorial about it, that would be great!

<comment><USER18> Have you tried the book "haskell programming from first principles " ? It got some good comments here at HN.

<comment><USER19> haskellbook.com _is_ "Haskell: Programming from first principles".

Edit: And yes, it's an awesome book.

</comment></comment></comment><comment><USER20> After 8 years of being frustrated with HTML/CSS...

How to take a sketch of a webpage I've made on a piece of paper and write the HTML/CSS for it while feeling like I can predict how things will be laid out rather than feeling like I'm playing whack-a-mole. I think I've learned that I just cannot do achieve this with block/inline/inline-block and I need to stick with flexbox. I'd like to either learn a CSS framework or learn sass and write my own.

</comment><comment><USER21> How to stop mumbling. I've tried before and always given up because I sound like a robot when enunciating. But I'm tired of people asking "what?" I'm going to fix it this time.

Also, Tensor Flow. How do I set that up myself?

<comment><USER13> There's a docker container that was really easy on OS X. I tried the local python route, but there were a few issues. Probably much easier on Linux.

</comment></comment><comment><USER22> \- How to refactor legacy code in a team setting.

\- How to prevent more bad code from being written in a team setting.

\- How to architect applications at a higher level.

\- How to mountain bike like a beast.

<comment><USER23> The top two are on my list as well. The tricky part is that my "good code" is someone else's "bad code" and vice versa. Slowly trying to introduce functional concepts into a team of developers who are used to working with what can only very loosely be described as MVC.

<comment><USER22> While you're at it a style guide may be in order. Try to convert your team's current patterns into the set of new patterns that you think are better. This would help to give others a sort of rosetta stone while they're making the switch. I always try to add a why after each good vs bad code comparison.

Having a document external of your brain helps others to feel like they have a tangible set of goals instead of some arbitrary set of goals that nevon wants to have happen. I made my team's style guides repos on github so it's super easy to edit since it's straight markdown. Keep the pedantic discussions to a minimum. Sometimes it's just best to choose something because it's a single way of doing it.

</comment></comment></comment><comment><USER24> German, Swift, Blender, Unreal Engine, C++, how to fly helicopters, improving fixed-wing aircraft night landings, Jiu Jitsu, deep sea diving, breast stroke.

<comment> brown-dragon What kinds of projects do you envision using C++ for? Do you want to learn from scratch or just the new/modern C++ parts?

<comment><USER24> I learnt C from scratch. I'll be using C++ heavily in Unreal Engine, but I'd like to make a standalone project to demonstrate my proficiency in the language.

</comment></comment></comment><comment><USER25> Elixir and Phoenix. I want to be a meta-programming guru by 2017. I'm having a blast so far.

<comment> brown-dragon I'd love to take this up too. Is there anything you would like in this area? It looks like the existing tutorials/blogs are working great for you.

<comment><USER25> I'm currently working through the book Programming Phoenix and it's going well.

I would love more video tutorials because I personally prefer them to books. There was one where Chris went through building a chat app, but it's very outdated now.

</comment></comment></comment><comment><USER26> More Nim [http://nim-lang.org/](http://nim-lang.org/)

</comment><comment><USER27> I hope it's not too late to start, but I'd like to learn Go, the language. I've been working with PHP and Node for far too long and need something not interpreted.

<comment> brown-dragon I _really_ enjoy Go. As jfoutz said above, Go is like a "better C". The "Tour of Golang"([https://tour.golang.org/welcome/1](https://tour.golang.org/welcome/1)) is a really good place to start.

Is there anything I could write that would make it _easier_ for you to learn? Taking up project/quizzes/follow-ups...?

<comment><USER27> I'm not sure. I haven't even got a clue how Go works, so I've got lots to learn. I'll check out the tour, thanks for suggesting it.

</comment></comment></comment><comment><USER28> Dependent types in Idris, and GADT and type families in Haskell.

<comment><USER29> The easy stuff then. ;-)

</comment></comment><comment><USER30> Shameless plug: I am also doing something similar [https://github.com/shekhargulati/52-technologies- in-2016](https://github.com/shekhargulati/52-technologies-in-2016). I am learning a new technology every week or writing some small open source project mainly in Scala, Python, and Java. I am documenting my learning on Github.

<comment> brown-dragon Looks impressive! :-) All the best.

</comment></comment><comment><USER31> I seriously want to stop procrastinating and finally learn some RoR (and not just stop at learning, but actually writing something useful).

<comment><USER32> _not just stop at learning_ \- happens to me quite a lot as well :(

</comment></comment><comment><USER33> I want to learn Redux, these are 20 videos that I have planed to watch: [https://learnredux.com/view/hmwBow1PUuo](https://learnredux.com/view/hmwBow1PUuo).

</comment><comment><USER34> \- Cryptanalysis, and globally large scale, calm, problem analysis (groups, fields, vector spaces). I had a recent itch about prolog, constraint programming.

\- Wholemeal programmng, haskellers view on problem analysis, graph abstractions, topology.

\- Geometry. Back to complex plane ?

\- DT, Agda, Idris.

\- Sub micrometer physics and engineering.

\- Biology/Ecology Energy gathering

\- Non invasive medicine

\- Threads. Just joking; that's too hard.

<comment> brown-dragon For threads - check out "The art of multiprocessor programming" by Maurice Herlihy and Nir Shavit. I've found it to be really really good.

</comment></comment><comment><USER35> Definitely tensorflow (coming from react/front end background)

<comment><USER36> Awesome. try to read neural networks, a comprehensive foundation by simon haykin. It's much more easier than just learning tensorflow.

Try keras + Tensorflow

</comment></comment><comment><USER37> I just graduated 2 weeks ago. There is so much to learn of what is useful, and feels like very little time to do it. Getting proficient with a language that is up and coming (Golang has been my choice lately), and then follow it up with an idea super hot today (machine learning, big data?).

<comment> brown-dragon Golang and machine learning/big data are excellent choices. All the best for your career!

</comment></comment><comment><USER38> Go, machine learning, and dip my toes in various introductory computational biology/biochem topics.

</comment><comment><USER32> 1\. LLVM - enough that I can write my own optimisation passes and plug them in along with the regular -O3 ones

2\. The ability to understand when and where to use meta programming efficiently. Currently I only have C++ experience, but I've heard things are better with Dlang??

<comment> brown-dragon To really "get" meta-programming, try using Lisp/Scheme. I've found that really helps to "grok" the concepts and makes it much easier to understand in C++.

</comment></comment><comment><USER39> How to come up with more clever market making strategies

<comment> brown-dragon Ha! This one I wish I knew!! I've been trying to make a market where cooperates pay to improve developer productivity and it's been really hard.

</comment></comment><comment><USER40> Neural Networks. I actually read a lot of introductory stuff but never really went down to detail and also never had the opportunity to implement one. For me and I guess a lot of people reading tutorials is not enough to learn unless we work on a project.

</comment><comment><USER41> I'm basically in the same boat as @mindcrime here, I want it all but this year's focus has been and will continue to be:

\- Style Transfer (so CNNs, Regressions and a whole bunch of Statistics concepts)

\- React, React Native and that whole ecosystem

\- How to identify and validate startup niches

</comment><comment><USER42> Suffix trees and linear algebra are the two things I'm currently focusing on.

<comment><USER32> What problem did you come across where suffix trees were the optimal tool for the job?

</comment></comment><comment><USER43> ML/AI and actually proficient in a functional programming language like Elm or Haskell so I can write more functional JavaScript. Got my Coursera for ML! Just need more FP experience!

<comment> brown-dragon For FP, give Elm a try. It's a really welcoming community and newbie friendly. Plus it's pure Javascript and very easy to set up and get going.

</comment></comment><comment><USER44> Elixir and/or Clojure.

I would also like to improve my JavaScript chops but can't see myself diving into Node.js. Will probably try to familiarize myself with ES2015.

<comment> brown-dragon Nodejs is actually pretty easy to pick up. Any reason you don't want to get into it?

Elixir and Clojure are also fascinating to me. Is there anything in particular you feel would help you more than the existing tutorials? Projects/quizzes/follow-ups/...??

</comment></comment><comment><USER45> Too many things! Write a compiler, master Angular 2 and TypeScript, learn much more about systems design and scalability. Maybe even some machine learning.

</comment><comment><USER46> I'm playing with hackerrank tests, and also I want to master Scala, Akka, Spark & reactive-streams. Of course improve my english skills too...

</comment><comment><USER47> Enough ROS and ROS-I to control a kuka arm. [http://www.ros.org/](http://www.ros.org/)

</comment><comment><USER48> I want to learn to identify all the plants there are around where I live and their history and origin.

</comment><comment><USER49> STimulated Emission Depletion (STED) nanoscopes and how to make them better.

That and French/US history.

</comment><comment><USER50> I wanna learn Go. After a lot of thought went into what new language to pick (Rust, Nim, Go, etc.), I settled on Go because like Go I'm a minimalist and the feature set and grammar of every other language is just exhausting.

</comment><comment><USER51> Elixir/Phoenix is a very refreshing new perspective to the web design area.

</comment><comment><USER52> French.

<comment><USER53> The question was about a tutorial for programmers. What would French brings in this context? There were some variants of basic in French, but nowadays I'm not convinced French is useful but for reading comments.

<comment><USER54> I think the original question lent itself naturally to the interpretation "what are you hoping to learn about this year?" rather than what might have been intended "what topics would you like me to put into my programming tutorial?". (You could read the original question as something like "I'm going to learn about programming by teaching people about it; what are you going to learn about, and how?".)

</comment></comment></comment><comment><USER55> \- Elm for building large webapps' frontends

\- TensorFlow applied to NLP problems

</comment><comment><USER56> I want to learn service worker and use it to extend apps.

</comment><comment><USER36> Continue learning neural networks, and possibly learn Go

</comment><comment><USER57> Rust

<comment> brown-dragon Is there anything beyond the existing Rust tutorials/blogs that you would find helpful/useful?

<comment><USER57> I haven't started learning it yet so I don't know what is current state of tutorials. I'm coming from web development and mostly dynamic languages (js, python, php, ruby) with most recent experience of elaborate type systems from typescript and C#. I have some past experience with C++ (modern looks awesome) and Java. What excites me most are clever useful constructs I haven't seen anywhere else, evolvability of the code and terse syntax and naming.

</comment></comment></comment><comment><USER58> Business, especially marketing and sales.

<comment> brown-dragon Do you mean online marketing tools and sales outreach for your existing business?

<comment><USER58> Yes. :)

<comment> brown-dragon I've found the HubSpot Sales blog to be surprisingly good. It can get a little "spammy" feel at times but I got a lot of good advice overall.

I don't know how their marketing blog is - never tried it but you could check it out.

</comment></comment></comment></comment><comment><USER59> Variational Inference, Quantum Computing

</comment><comment><USER60> Art of problem solving without my anxiety kicking in. Slow and deliberate.

</comment><comment><USER61> I want know how to hack facebook account

<comment><USER54> Go back in time to 2010 and use Firesheep? (Then the problem is reduced to learning how to time travel.)

<comment><USER62> 'reduced'

</comment></comment></comment><comment><USER63> general relativity in more detail

</comment><comment><USER64> SDN/NFV Erlang HTML+CSS+Javascript

</comment><comment><USER65> Laravel, C# and Unity.

</comment><comment><USER62> Deep learning

</comment><comment><USER66> Sketch. :)

</comment><comment><USER67> Ember</comment>


184.108.40.206 outage explanation - <AUTHOR> https://blog.cloudflare.com/today-we-mitigated-1-1-1-1/ <comment><USER2> This is a great write up. It's also why the DNS root servers have a policy of surviving DDoS through massively over-provisioned, multi-org, anycasted redundancy rather this sort of smart DDoS mitigation that drops traffic: DNS is so critical that any risk of dropping real traffic is unacceptable. (obviously, such a scale is impractical for 99% of services)

A good takeaway from this outage for the average user would be to make sure that your fallback DNS resolvers are operated by totally separate providers. (eg, configure 22.214.171.124 with 184.108.40.206 as a fallback, rather than 22.214.171.124 and 188.8.131.52) (Edit: fixed cloudflare's secondary address)

<comment><USER3> I read on the Pi-Hole forums that 'fallback' is a misleading term because clients don't work that way - they will happily spread requests between two functioning DNS servers. Can anyone confirm this or provide further insight?

<comment><USER4> Can confirm. If I have a secondary DNS specified in my router, other than my pi-hole, it becomes useless. My guess is the router is either measuring response time, and goes with the most efficient, or otherwise round-robining the requests. Either way, requests bypass the pi-hole in such quantities that it became useless.

PS: someone here mentioned that this behavior is OS-dependent - nope, this happens on the router level, and all devices in my apartment suffer.

<comment><USER5> It depends on how your router's DHCP server is configured. If you configure your router to pass its own IP address out as the DNS server for the local subnet then the router's behavior dictates how DNS works. If your router is passing out an external DNS in the DHCP configuration, then you'll get OS- dependent behavior.

My router uses a DNS resolver internally, and it will spread-cast to multiple DNS servers and use the quickest response it can get. It also caches using the TTL in the DNS response, and so it will serve up cached records transparently.

</comment></comment></comment></comment><comment><USER6> > Our FRP framework allows us to express this in clear and readable code. For > example, this is part of the code responsible for performing DNS attack > mitigation: > > def action_gk_dns(...): > [...] > > if port != 53: > return > None > > if whitelisted_ip.get(ip): > return None > > if ip not in > ANYCAST_IPS: > return None > > [...]

What does this code sample have to do with FRP? This code seems extremely trivial and doesn't give any real indication to me why you'd need a framework of any sort. It seems like they really want to emphasize that they use FRP, but this code just seems completely unrelated.

<comment><USER7> From one of the linked presentations: [https://github.com/cloudflare/gatelogic](https://github.com/cloudflare/gatelogic)

</comment></comment><comment><USER8> Major credit to Cloudflare for publishing a clear, honest, and detailed description of what happened. I wish more companies would do this.

One thing I'd be interested to know more about is why it took 17 minutes to fix. While you can and always should strive to make them less likely, outages are inevitable, so how you respond is crucial. Here the outage was very obviously caused by a deployment that I'd assume was supervised by humans – why did it take 17 minutes to roll back?

<comment><USER9> I'm not an expert, but is 17 minutes for:

\- shit is not working

\- is this an attack?

\- no it's us

\- how?

\- that's how

\- let's go back

\- have to get supervisor

\- roll back huge thing

really that long?

<comment><USER10> With ~150 data centres, roll back alone probably took 5-10 minutes. Don't think 17 minutes is that long.

<comment><USER11> For simple PagerDuty alerts I already need 15 minutes to open the app / logs and figure out what's going on.

<comment><USER12> Good point, although the way it's described it sounds like the problem cropped up right after deploy. So they would have been watching it actively. But as said above, 17 minutes to notice, figure out what's going on, decide what to do, and propagate the resolution seems reasonable.

</comment></comment></comment></comment></comment><comment><USER13> Great information on the outage. Looks like another version 2 syndrome side effect [1].

> _Today, in an effort to reclaim some technical debt, we deployed new code > that introduced Gatebot to Provision API._

> _What we did not account for, and what Provision API didn't know about, was > that 220.127.116.11 /24 and 22.214.171.124/24 are special IP ranges. Frankly speaking, > almost every IP range is "special" for one reason or another, since our IP > configuration is rather complex. But our recursive DNS resolver ranges are > even more special: they are relatively new, and we're using them in a very > unique way. Our hardcoded list of Cloudflare addresses contained a manual > exception specifically for these ranges._

> _As you might be able to guess by now, we didn 't implement this manual > exception while we were doing the integration work. Remember, the whole idea > of the fix was to remove the hardcoded gotchas!_

When porting legacy code it is not only important to understand the edge cases and technical debt built up over time, but to test more heavily in production because you never know if you got them all because some smart guy built them long ago and/or there are unknown hacks that were cornerstones of the system for better or worse.

Phased and alpha/beta rollouts in an almost A/B testing way is good for replacement systems. Version 2 systems can also add new attack vectors or other single points of failure that aren't as know from legacy problems, the Provision API seems like it is a candidate for that.

Over time the Version 2 system will be hardened just before it is EOL and replaced again to fix all the new problems that arise over time. Version 2's do innovate but they also shroud fixing old issues and pain points for new unknown problems.

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

<comment><USER14> " _Yes, I know, it's just a simple function to display a window, but it has grown little hairs and stuff on it and nobody knows why. Well, I'll tell you why: those are bug fixes. One of them fixes that bug that Nancy had when she tried to install the thing on a computer that didn't have Internet Explorer. Another one fixes that bug that occurs in low memory conditions. Another one fixes that bug that occurred when the file is on a floppy disk and the user yanks out the disk in the middle. That LoadLibrary call is ugly but it makes the code work on old versions of Windows 95._

 _Each of these bugs took weeks of real-world usage before they were found._ "

— Things You Should Never Do, Part I, ([https://www.joelonsoftware.com/2000/04/06/things-you- should-...](https://www.joelonsoftware.com/2000/04/06/things-you-should-never- do-part-i/))

<comment><USER15> Engineers realized that maintaining all those bug fixes was too expensive. So as an industry we collectively agreed everyone will do constant rewrites.

That win 95 fix? Doesn't matter because win 95 was auto upgraded to be unrecognizable (SaaS is a wonderful thing).

Low memory? Not our problem - go buy another computer. Remember programmer time is more valuable.

You can try and buck the trend but your dependencies wont and the customer doesn't care whose code the bug is in. You won't get any browny points so you might as well just save the effort.

It's a brave new world.

</comment></comment></comment><comment><USER16> What's interesting here is that the automatic cure (DDoS protection) was worse than the disease (even if there was an attack, blocking all access to the DNS servers is potentially worse than letting them get overloaded).

I wonder if it would be possible to express the idea that if a block being applied drops traffic well below expected levels, it must be a mistake?

<comment><USER17> Is it the block causing the traffic drop, or the DDOS though?

</comment></comment><comment><USER18> Commendable honesty and level of detail in the public RFO.

</comment><comment><USER19> Understandable outage. I switched back to cloudflare when it came back up, but this did prompt me to drop 188.8.131.52 in as a 3rd fallback.

</comment><comment><USER20> Doesn't seem fixed, still can't resolve archive.is cloudflare is giving off cloudflare DNS web errors.

[https://i.imgur.com/APpQPTJ.png](https://i.imgur.com/APpQPTJ.png)

<comment><USER21> That's apparently due to the archive.is servers returning different results based on the requesting IP:

[https://community.cloudflare.com/t/archive-is- error-1001/182...](https://community.cloudflare.com/t/archive-is- error-1001/18227/3)

</comment></comment><comment><USER22> Do they just use python as pseudo code or do they actually run their attack detection in python?

<comment><USER23> It is python. They linked a presentation[1] and a talk about the bot.

[1] [https://speakerdeck.com/majek04/gatelogic-somewhat- functiona...](https://speakerdeck.com/majek04/gatelogic-somewhat-functional- reactive-framework-in-python)

<comment><USER22> It's interesting. I would have expected them to use rather something low latency/high performance like c++ or erlang given their scale and performance criticality.

<comment><USER24> This is something that only keeps track of user settings data and consequently configures the endpoints given that data.

It has got nothing to do with packet filtering per se.

</comment></comment></comment></comment><comment><USER25> >The next time we mitigate 220.127.116.11 traffic, we will make sure there is a legitimate attack hitting us.

I fucking love these guys

</comment><comment><USER26> This downtime annoyed me at a critical time. Even though I think it's great they are transparent about it, I don't see myself using their DNS again.

</comment><comment><USER27> I wonder if the change was manually reverted after 17 minutes, or if Cloudflare has a system that watches for a spike in failures and automatically reverts the most recent change.

</comment><comment><USER28> Error 1001 DNS resolution error when trying to access archive.li

But works with 188.8.131.52

</comment><comment><USER29> another decent alternative fallback with the same featureset is quad9

[https://www.quad9.net/](https://www.quad9.net/)

<comment><USER30> The core feature of Cloudflare's DNS is getting you closer and faster resolves to their CDN (probably one of the largest at this point, barring the established enterprise encumbants) in a privacy-first way.

Quad9's goal seems to be about threat-detection and prevention.

It would be nice if you could have both simultaneously (and maybe you can), but at the moment both services are actually quite different.

<comment><USER31> 126.96.36.199 is "quad nine without the threat detection" from memory.

<comment><USER30> Yeah, but the reason why 184.108.40.206 is so fast for sites that use Cloudflare as DNS is because Cloudflare is the authoritative DNS for them.

The only way you get that in a more generic sense is if a specialist DNS CDN provider started up that provided DNS services for all the existing CDNs (or they all agreed to some type of federated standard that let them share the same recursive multicast IP addresses for DNS resolution).

<comment><USER10> Also, Cloudflare has a huge amount of data centres by now, probably more than any other service. Even Google often underperforms them. Debatable if a few ms make a difference but it can for people living in remote areas where CF has a centre and the next 22.214.171.124/22.214.171.124 is 100ms away.

<comment><USER32> It's important to note that the cloudflare dns does not send the EDNS Client Subnet header which can have a negative impact depending on where you live.

<comment><USER33> or a positive privacy impact depending on where you live :)

</comment></comment></comment></comment></comment></comment></comment><comment><USER34> TL;DR: we should have used an IP that is not traditionally used for testing and internal stuff by everybody including Cisco.

<comment><USER35> Not even close. The system had a glitch because they were doing a major DNS resolver at all. It had nothing to do with the baggage that comes with 126.96.36.199 specifically.

<comment><USER36> However a few days ago there was a bgp based outage on cloudfare DNs want there?

</comment></comment></comment><comment><USER37> I switched to 22.214.171.124 when it was released and since I've had multiple issues with free wifis where they would fail to hijack my dns requests to allow me to login to their portal. I Assume this is a good thing but can someone explain to me why this is happening and what's the state on improving these wifi portals?

PS: sorry for hijacking the thread.

<comment><USER38> Might be unrelated. Always try [http://neverssl.com](http://neverssl.com) to trigger the captive login on public wifi.

</comment></comment><comment><USER39> I wonder if they are going to factor the availability into all the blog posts about how fast they are.</comment>


Yahoo's poison pill - <AUTHOR>

http://www.sec.gov/Archives/edgar/data/1011006/000089161808000305/f41347a4defa14a.htm
Not only will the poison pill be introduced when Microsoft buys Yahoo, but also when a different board is voted for by the stock holders (eg Icahn) (change of control)
Is this legal pratice? You are basicly taking your stockholders hostage to vote you on the board. <comment><USER2> Amusing:

        Is the Plan a "poison pill"?
        No.</comment>


National Instruments to Build the E-Cat Cold Fusion Device Instrumentation  - <AUTHOR> http://pesn.com/2011/11/10/9601953_National_Instruments_signs_to_do_E-Cat_controls/

<comment><USER2> A well played scam. I bought a Coke this afternoon, so clearly the CocaCola company lends credibility to my plans for world domination.

<comment><USER3> Its fun to watch. I've got no idea about the validity of it, but at this point in the game, the guy is either P.T. Barnum or Zefram Cochrane.

<comment><AUTHOR> Better analogy: s/Zefram Cochrane/Nikola Tesla/

Tesla made seemingly unbelievable and sometimes bizarre claims about possible scientific and technological developments.</comment></comment></comment>


Ask HN: Guides on finding hidden APIs by monitoring network traffic? - <AUTHOR>

...Or other methods? <comment><USER2> Andrew Tridgell has several posts about reverse engineering the SMB protocol to implement Samba [1]

Additionally the Wireshark docs [2] would be a fruitful place to go looking and learning about setting up a protocol analyzer.

1\. [http://www.samba.org/samba/docs/myths_about_samba.html](http://www.samba.org/samba/docs/myths_about_samba.html)

2\. [https://www.wireshark.org/docs/](https://www.wireshark.org/docs/)

</comment><comment><USER3> I suspect that [http://humdi.net/vnstat/](http://humdi.net/vnstat/) or something similar could do the trick.</comment>


Insider Look at How Twitter Was Born - <AUTHOR> http://www.140characters.com/2009/01/30/how-twitter-was-born/

<comment><AUTHOR> This is a good example of how your success is never what you started out to build. Twitter came from a team that thought they were building a podcast directory called Odeo. The article is from Odeo's QA Lead during the creation and launch of Twitter (or Twttr as it was then).

</comment><comment><USER2> That's a pretty fun backstory, actually.</comment>


Hordes Of Novices - <AUTHOR> http://blog.8thlight.com/uncle-bob/2013/11/19/HoardsOfNovices.html <comment><USER2> IMHO... You can't get a crew of experienced software engineers without starting with hordes of novices. It's just not a field where you can say, "Pass the entrance exam, get some mentoring, and come back in 6 years with experience." It's a field that you need to explore and find if you have the passion. (And I hate the word passion)

So it might take 20 novices coming out of these feeders to find 10 who become decent junior programmers, to get 5 who stick it out to become decent intermediate programmers, to get 1 who becomes a rock star.

But is this so bad? What's the downside? Everyone who falls off along the way becomes someone with tools to make themselves more productive in whatever they do in life.

And what's the alternative?

<comment><USER3> > And what's the alternative?

I think the author gives an alternative in the form of his pilot training; intense training before being allowed to write code (= a proper and full education, instead of a course), and pair programming (= co-pilot) with an experienced or non-novice pilot (developer).

The big corporate world doesn't tend to agree with this though, two people doing one job seems like a waste of money and time to a lot of managers that don't know any better.

<comment><USER2> Do you think this is the solution? Would it work in any environment? Start-up for instance?

One could argue that training a programmer should be like training a doctor - once you get over the initial hurdle of getting into Medical school, it's all about a long period of learning and mentorship.

My impression is that great programmers can come from unlikely sources. It's ok to cast a wider net for people, when the worst thing that happens is that they're more skilled for their efforts.

</comment></comment></comment><comment><USER4> _If one doctor can transplant a heart in ten hours, can ten nurses transplant that heart in one hour? Can a hundred nursing assistants transplant that heart in six minutes? Can six hundred hospital receptionists transplant that heart in one minute?_

The real question is: Could the doctor do the transplant _without_ any nurses? Could the nurses help the doctor without the receptionists?

<comment><USER5> If I wanted to be pedantic I'd say that you'd really want a heart transplant done by a surgeon, not a doctor...

That said, I think the real questions is: who is Robert Martin, self-described uber-hacker, that his opinions should be taken so seriously? What has he written?

<comment><USER5> To expand on that a bit, I should mention that this question came up at a software craftsmanship meetup, after Martin had given a talk in Cambridge. (Incidentally, people who had seen him speak had been very disappointed.) The only answers to "Who is Uncle Bob?" seemed to be "He's very old" and "He wrote a book". Given his schtick is to be a sage figure of comparable stature to, say, Don Knuth or Brian Kernighan, I don't think that's good enough.

(I missed Martin's talk because it clashed with one by Herman Hauser. Industry pioneer vs methodology salesman wasn't much of a contest for me.)

I the interests of full disclosure, I should probably mention that I've had an encounter with another Martin (Micah) from 8th Light (see [http://forums.pragprog.com/forums/62/topics/2753](http://forums.pragprog.com/forums/62/topics/2753)) - nice kid but I wouldn't want him writing code that I needed to rely on.

<comment><USER6> I find the described interaction problematic from an agile standpoint: "People and interactions over processes and tools" \- and then, they agree to give a _lecture_ on TDD? You're describing literally shoving a _process_ down the throats of unwilling programmers.

I'm not an agile expert, but it seems to me they should have refused such an arrangement, and plainly say: "Right now, you don't use an agile methodology. Us giving a lecture to your guys won't change that, it will simply be a waste of your money. You can rent from us an agile coach for minimum 6 months, and she will try to transition you to an agile methodology. This isn't a single decision you make and then 'bam, you're agile' \- this affects hiring, you might even have to let go of programmers who won't play along. Don't pay us for a lecture that will simply anger your employees and achieve nothing."

Regardless of the usual agile vs. waterfall debates, what they did sounds to me very far from the principles of being agile.

<comment><USER5> In this case, I don't think the company can be blamed. As I recall, it hadn't asked for TDD training, it had asked for C++ training. So if anyone should be blamed it would be ObjectMentor for (a) hearing this as "introduction to object orientation", and (b) sending someone with rusty C++ skills.

<comment><USER6> That's what I meant - even if your employer asked for TDD training, ObjectMentor should have objected on the grounds that it will achieve nothing.

<comment><USER5> Well, ObjectMentor got paid, someone at the company got to tick a box to say that developers had been given appropriate training, and we got a break from real work.

Corporate training is an odd business, it has to be said.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> > Is our industry doing the equivalent of offering free rides to hopeful > software developers, calling them pilots, and throwing them by the thousands > into airplanes just to watch them crash and burn? The evidence is pretty > compelling. There's a lot of crashing and burning out there. Is that because > nobody is signing the log?

No, it's because some companies do a really bad job of interviewing and hiring developers. This could be for a few reasons:

1\. Companies are so hungry to attract developers they make an offer to the first candidate that seems remotely competent, only to see him/her struggle when they get out of the bootcamp and into the trenches of day to day work.

2\. Companies have clueless people interviewing candidates for technical positions, and just do a bad job evaluating them.

For all of those "novices" that these bootcamps and such produce, some will go on to fizzle out, but my guess is some of them are actually talented/hard working enough to stick with it and evolve into competent developers. At the end of the day, it's still the responsibility of the company doing the hiring to determine which is which.

The need for developers is only going to increase... so yes, we do need those hordes of novices, but with that need comes an increased responsibility to focus your hiring/recruiting efforts.

<comment><USER8> I think people underestimate how hard it is to find good developers. I've spent a lot of time thinking about it, experimenting with hiring processes, and hiring yet I still wouldn't trust my success rate very much.

The issue is that we don't have any objective measures as to what makes good software. This means that everything we do in the hiring space is subjective, which makes it really difficult to do rigorous study/improvement on.

That said, novice programmers even excellent ones are exponentially less valuable than experienced ones. But, the ratio of good developer to bad seems constant across experience levels.

In my mind the 2 biggest issues in finding good developers are: 1) the cost of novice developers. The market has driven demand so high that it is too costly to experiment/mentor young developers knowing that they will (and probably should) only provide 2 years of valuable work (1 year of uselessness and 2 of value in a 3 year hire). 2) the senseless ageism in our industry. The idea that older developers are somehow inflexible or out of touch just doesn't gel with my personal experience. The older developers who are still out developing are doing it because they enjoy it and keep up with new technology. If they didn't they would have left the profession a long time ago.

Unfortunately, this has led me to a policy of hiring a few more experienced developers instead of a more healthy mix of novice/experience. I know that makes me part of the problem but I can't afford to be otherwise.

</comment></comment><comment><USER9> The overwhelming majority of bespoke software is a CRUD app in disguise (to a lesser or greater extent). You don't need to be an expert to develop things like that - a basic knowledge data structures, connecting to a database, and some UI and off you go. That isn't going to change. So I would argue that yes, we need the horde. We need more of the people at the "bottom" doing the boring stuff than we need at the top doing the hard stuff.

<comment><USER10> I don't know about "overwhelming majority," but yes, there is a very large slice of software that is essentially CRUD.

In my recent experience, though, it's almost always attached to, part of, or feeding into or off of something else, whether that's a CMS, API's, satellite sites, or some sort of proprietary custom plumbing.

Many things _can_ be done by novices, and the limited supply of experts means they _can 't_ do everything. But for many projects, that boring stuff at the bottom handles the data that's vital to everything else, and it's vital to be careful when using novices to work on the lifeblood of your business. Without careful management, you'd better hope they randomly fail to introduce any serious design flaws or security issues given only "basic knowledge data structures, connecting to a database, and some UI."

</comment></comment><comment><USER11> _Is our industry doing the equivalent of offering free rides to hopeful software developers, calling them pilots, and throwing them by the thousands into airplanes just to watch them crash and burn?_

With some exceptions, it's less dangerous when a novice programmer writes ugly code than when a pilot crashes a plane.

So we shouldn't require as much caution around letting people program as we do in letting them fly an airplane.

<comment><USER12> Just don't let them program air traffic control software.

<comment><USER13> Or medical imaging devices.

<comment><USER14> Or let them handle website security

<comment><USER15> Holy crap.

Or write Sony's user management. Or Adobe's. Or …

</comment></comment></comment></comment></comment><comment><USER16> yes, Uncle Bob, we do need hordes of novices.

Because in the days of yore only monks and priests knew how to read and write, and that was bad. Getting everyone to read and write is good. 90% of what they write will be crap, but that's better than not having them write at all.

Obviously they're not going to be writing commercial or critical systems. Learning to code helps people deal with technology, but it doesn't make them professional coders. Just like learning to write a shopping list is useful but doesn't make me a journalist.

Opposing people learning things because what they might create with that knowledge is just wrong.

<comment><USER17> > Opposing people learning things because what they might create with that > knowledge is just wrong

He doesn't oppose people learning things.

> Obviously they're not going to be writing commercial or critical systems.

No. That's _exactly_ what he's talking about. The trend to hire more people rather than better people.

FTA: "Do we really need to keep on recruiting and training cannon fodder to throw at software projects? Or should we rethink this."

Take a few minutes to read the article.

<comment><USER18> I had a big project failed once because at the beginning out rockstar programmer/ninja/free electron (and he was a genuine one) threw a temper tantrum and said - I am bored of working with Microchip Pics (don't worry if you are young and don't know what that is) I want to use something more powerful - so we switched vendors, the stack to keep him satisfied. It went downhill. Sometimes you need mediocre guy for a non demanding job.

A bored talented programmer can sink a project as good as incompetent one.

<comment><USER19> I think what you encountered is a different type of trap, the trap of the talented jerk. The guy/gal who is brilliant, so they're allowed to get away with a crappy and/or irrational attitude. Sometimes this works out well, but other times it'd be better to hire someone may not be of the same caliber skills-wise, but has a better attitude and is more pragmatic.

Your coworker might not have been a true "jerk" per se, but he certainly sounded irrational.

</comment></comment></comment></comment><comment><USER20> He makes a good point that one more competent developer is much more valuable than multiple incompetent devs.

The first part of the piece, about how much software is needed and for how many uses, suggests another point he does not make -- namely that there is a lot of redundancy. In the universe of softare, how many independently developed, duplicative solutions to essentially the same functionality, code pattern or use case are there? Probably quite a lot, right?

The efforts of the limited number of good devs societies have on tap, obviously would go a lot further if there were more re-use and sharing. I know I'm an idealistic outlier in believing software should never have been deemed copyrightable, but the more we go in the "Free" direction - with GPL/BSD type licences and such - the better off we'll all be, in a macro view.

</comment><comment><USER10> _If one doctor can transplant a heart in ten hours, can ten nurses transplant that heart in one hour? Can a hundred nursing assistants transplant that heart in six minutes? Can six hundred hospital receptionists transplant that heart in one minute?_

All of the people involved have useful and important skills, but they are not appropriate or relevant for the operation in question. My only change here would have been to swap receptionists out for interns: The skills are still relevant, but the experience is not there and the expectation is still unreasonable.

No, development is not surgery (certainly not brain surgery, and usually not heart surgery). But it is often complex work that requires not just an understanding of what to do, but also how to do it, why to do it that way, what alternatives are available and how they might benefit the work in the future, how requirements tend to change, the difference between what clients/bosses say and what clients/bosses mean...

It's vital that we have new developers. But the point of having new developers is that they become experienced developers; a swarm of n00bs is not, in and of itself, valuable. Treating it as such is dangerous, as many, many rescue projects painfully illustrate.

</comment><comment><USER21> "Get off my lawn you damn kids!"

Today's novice is tomorrow's expert.

No matter how much of an expert you think you are, you are a novice to someone else.

If we go back and look at your code from X years ago (or even last week), are you going to be comfortable or are you going to squirm a little and want to make excuses for certain things?

Bad code making it into production and causing problems for users is not the fault of the novice developer, it's the fault of their team lead/manager. Who shouldn't be a novice. If they are then that's an organizational problem, and not one caused by the mere existence of novices.

</comment><comment><USER22> The problem with mentoring programmers is: who is a good mentor? Looking back at when I started coding, very few of the senior people there would not have been good mentors. They simply weren't good enough. They would have taught me the wrong things.

Also, of course we need more good developers. The problem is that there aren't enough good people to be found (this is not a problem of too few places where you learn to code). Plus, the demand for more software seems pretty limitless.

<comment><USER23> Yes. There's also difficulty in finding mentors. There are sites that pop up claiming to offer software mentorship, but most seem to be just people who are willing to help you with an issue you're having with your code. That is not a good mentor-protege relationship.

<comment><USER24> There's also a problem finding decent students/coworkers that listen. I don't know how many times I've made suggestions and recommendations, just to be ignored.

I co-lead a local programming user group and we commonly help people. Frequently we encounter people that want us to fix the bug in one line of code and don't want help in fixing the structure, the function, the readability or overall program.

<comment><USER22> Exactly. Not enough developers care enough to be either good mentors or good mentees.

</comment></comment></comment></comment><comment><USER25> While I enjoyed and partly agreed with Uncle Bob's equivalent of "Get off my lawn", it would be excellent if he also proposed something that resembled a solution to the problem. I struggled at my first dev job because school only taught me the basics, not modern full-stack agile software engineering. I worked with a team that had everything from testing to deployment polished and near perfect. However, some of them gave me a chance, and today, I suck a lot less at writing good, clean, tested code. Our industry will need to continue to do things like that if we hope to improve over time. Otherwise, history will just repeat itself.

<comment><USER26> One of the problems with software engineering training is that few schools take the "engineering" part seriously. Instead they train programmers or software developers. If engineering was taken more seriously then they would teach SWEBOK and SEMAT along with coding. Of course, many schools would argue that software engineering is a young profession and that SWEBOK and SEMAT are not yet fully formed. But nevertheless we do have people that are trying to apply some engineering rigor to the process of developing software and there is something there for all of us to learn, even if these things take another decade or two to become fully formed.

</comment></comment><comment><USER27> Have you ever worked at a job where a guy who learned to program 20 years ago has to sign off on everything you do? I did, and it was awful. I've also worked at a place that hired nothing but fresh graduates, and that... actually turned out pretty well. There were cases where they wrote more code when they needed to, or used an unsafe construct when there was a better alternative... but they were willing to reason about things, to experiment, rather than just "this is how we do it". I'll take an untrained grad over someone who rigidly follows procedures any day.

</comment><comment><USER28> This discussion reminds me of Joel Spolsky's "Hitting the High Notes":

[http://www.joelonsoftware.com/articles/HighNotes.html](http://www.joelonsoftware.com/articles/HighNotes.html)

Instead of debating with every other PHB, PM/BA, or clueless customer, I have them read this first. It's fundamental for understanding how to use high achievers to get things done.

(Love this part: "Five Antonio Salieris won't produce Mozart's Requiem. Ever. Not if they work for 100 years.")

</comment><comment><USER29> As a relative "novice" compared to the author, I welcome the suggestion that more formalized mentorship and "sign-off" by someone with experience would improve programming. Sorry I can't do your apprenticeship program. I see what you did there. Up scope! [http://www.8thlight.com/apprenticeship](http://www.8thlight.com/apprenticeship)

The problem is that this cannot be implemented at scale, and certainly will not respond to demand. One may not have the opportunity to find in person mentors, but instead have the internet and a problem to solve. You have to navigate through on your own to find the people that do it right, and you may latch on to the wrong people!

On the hiring side - for critical systems with a profit incentive and high potential, (or for a company with a unique mission that entices developers) you can afford to find and hire the bard. For other tasks, _something_ is better than _nothing_ so you get mediocre code. (there is still a HUGE market out there for that small something for small to medium businesses).

For outlying scenarios where markets have become imbalanced by regulation or law (such as government contracting) you get incentives to put butts in seats regardless of experience as long as they meet the criteria. (Java cert = signed pilot's card right?)

Certification is hard to get right, as is mastery. I applaud you for creating an environment to provide guidance and make mistakes and would welcome a larger scale effort to do so.

</comment><comment><USER30> Hoard == a secret stash Horde == a large group

</comment><comment><USER26> As the guy who formulated SOLID principles, co-created the Agile manifesto, and formulated the red-green-refactor process of doing TDD, I'd say that we should listen to what he has to say.

Why do we keep training programmers in university to bang out low-level unstructured code? We know better and some schools like MIT with SICP have been following a different approach, but why is this not more widespread?

Java is a horrible language to teach to new developers because it has traps all over the place that are best avoided. If a course started with DDD for a month before the first line of code is written, then perhaps Java would be OK.

I'd still like to see all developers learn some machine coding and assembler but that should be something that you leave to 2nd or 3rd year after you have a grounding in how to structure programs.

</comment><comment><USER31> I think he is basically arguing for a professional organization of programmers, which would give out certifications and (wink, wink) make sure their salaries won't get too low by limiting competition. (I don't necessarily disagree, just saying.)

</comment><comment><USER32> Press the G key while you're on the website and you'll see their layout grid.

EDIT: it's this: [https://github.com/dotjay/hashgrid](https://github.com/dotjay/hashgrid)

</comment><comment><USER33> Don't hire and mentor a newbie or a graduate of a coding school, just hire a master coder+pilot. Perhaps the consultancy team at 8th Light could pick up your project for thousands of dollars a day...

</comment><comment><USER34> There is a definite argument to made for putting in-place more rigorous standards for developer education. My wife is a nurse, and there are very strict standards for getting a nursing license and graduating with a BSN degree. After all, she deals with human lives, and mistakes could be deadly. I believe such systems help ensure consistent behavior, and I agree that such a thing might be useful in certain areas of the developer world.

However, we have to be careful, because a big part of software development involves inspiration and creative work. If people aren't interested and encouraged to pursue development as a hobby or career path, where will the masters of the future come from? Think of the amateur, but not so great, photographer hobbyist who grows up to become a legend in their field.

I also have to disagree with Uncle Bob on the use of the term "hordes" to describe "many people interested in a craft". The negative connotation is indicative of the kind of snobbery that people as the top of their field may be entitled to, but certainly doesn't win people over when trying to make a convincing argument. It smacks of somebody looking down from the Ivory Tower of Enlightenment and sneering at the ignorance of the perceived mobs below...

</comment><comment><USER35> I wonder about the thought process that spawns articles like these.

I'm a novice but I think I do pretty well for myself. I also didn't write my first line of code when I was very young. I didn't get any thrills or anything from programming until I started in my 30s.

Obviously you need hordes of novices. What a preposterous, pretentious thing to say. It's the ultimate "first world problem" of career fields. "We have too many people who want to do this job because the pay is so good, career outlook is so bright, and job satisfaction is so high!"

Yes you'll probably have to work much harder on a good noise filter when hiring, and you will probably have to be ok with taking a chance on hiring "newbs", hoping to get a great one who trains up well.

This is a really geeky rant, and I don't mean that in a good way. I mean it as in totally socially tone deaf. It's like Comic Book Guy from the Simpsons wrote this. I know the author is a well-known guy in the software world but that doesn't change my opinion at all.

</comment><comment><USER36> It is probably worth noting that Uncle Bob doesn't seem to be implying that the pilot training model is exactly the model that we should use. His point if you read a bunch of his stuff is that as a profession, we should look beyond our own borders to learn lessons from doctors, accountants, lawyers, pilots, engineers, architects, etc. to advance the level of professionalism in our profession. If software is going to make the world a better place ideas like "move fast and break things" probably isn't going to end up being a net benefit overall, especially for important, life or security critical software.

If we pile in a bunch of novices without proper training and hand them projects that involve account security, personal information, etc. we are going to keep hearing about major security breaches, password hacks, etc.

The more that the software industry has major catastrophic failures costing millions/billions of dollars, the more likely that we get regulated.

<comment><USER3> And yet, go our own way too. Software is (or used to be built) like other engineering professions; big design up front, then build (and often have the actual construction done by relatively low-wage workers). Software's much more complicated though.

</comment></comment><comment><USER37> A question not asked by the piece: is what we do really "heart transplants" and Shakespearean plays? Sure, that surgeon can do the transplant like nobody else and ol' Bill can write a play like nobody else, but what if all the client actually needed was a bandaid or a quip for a greeting card?

</comment><comment><USER38> I believe there will be as many commercially created sites in the not so distant future as there will be houses.

programmers are the house builders of tomorrow, and they are needy, creating more jobs than the average bricklayer, so they drag a few non-educated along for the ride with them.

All in all a boon for all involved.

</comment><comment><USER39> I tend to view people who know the extreme basics of programming as tinkerers or "power users", not as miniature Fabrice Bellards.

I'd rather have a bunch of curious people who want to try their hand at some light automation than people who freak out when anything minor changes.

</comment><comment><USER23> It should be clear that what we need is more software developers, but people who are able to quickly rise above the level of novice.

Generally this is what the interview process is meant to weed out.

</comment><comment><USER40> You're completely right, it would be much better if they all went into finance or management. There's no place for people trying to learn real skills.

</comment><comment><USER41> Does anybody here think that healthcare.gov was put together by experts? Or was it more likely a horde of novices?

</comment><comment><USER42> I love the idea of starting people on the path to learning how to build applications. However I think he brings up a good point, I can't find on the code academy website where it says "this is a start to long process of learning". appacademy goes as far as to say 12 weeks and you're in.

</comment><comment><USER43> Should we have associations, guilds, licensing?

<comment><USER41> I would vote for associations and guilds. I'm not a fan of licensing. I don't think we know enough to license people.

</comment></comment><comment><USER44> This article is ridiculous. Someone needs to program the software obviously.</comment>


Yii framework website defaced - <AUTHOR> http://www.yiiframework.com/news/74/website-deface-details/

<comment><AUTHOR> Apparently site does not run on Yii, so users are as safe as they were before. Official response sent to users:

 _Earlier today it was discovered that the entry page on the Yii website had been defaced. The website was restored in less than an hour from discovery. The defacement was made possible by a vulnerability in the separate forum software used on the site. This vulnerability has now been fixed.

For your information, here are some details about the event:

1\. The website's index.php was compromised through a vulnerability in the separate forum software (IPB, not Yii).

2\. Neither the website's code nor Yii framework code was involved or part of the attack in any way. Hence, the security of the Yii framework remains as secure today as it was yesterday.

3\. No framework downloads were affected, as the Yii framework source code is hosted externally.

Although we're storing passwords encrypted and are salting hashes, we recommended that you change your forum password. Please also note that if you are using the same password for other services and/or websites, you should change those as well. _</comment>


Amazon EC2 Running IBM Now Available - <AUTHOR> http://aws.amazon.com/ibm/

<comment><USER2> This is a great signal to Amazon AWS customers that EC2 is endorsed for large enterprise use. I'm not saying that it is ready or that it's actually endorsed. However, that's what Blue shops will think.

I wonder if existing Websphere/DB2 users will see value in switching over given that they've already paid for their licenses. Will IBM cut a three-way deal with Amazon to reduce per-hour costs?

It's not likely that organizations considering EC2 for new development will choose IBM on EC2 -- forward thinking folk aren't too keen on $20K/server licenses when the Open Source stuff is better.

So, I'm left to conclude that Amazon is the winner here. They get credibility with organizations that value what Big Blue says, and those organizations might choose to deploy non-Blue systems on EC2.

<comment><USER3> The entry-level editions of DB2 and WebSphere Application Server are both free. They aren't open source, but you certainly don't have to pay $20K. DB2 has far superior XML support than any open source database, so forward thinking developers can get a lot of value there for certain applications. <http://www-01.ibm.com/software/webservers/appserv/community/> <http://www-01.ibm.com/software/data/db2/express/>

<comment><USER2> I agree on the merits of DB2 -- I've used it before, and it seems pretty nice.

The free versions are great until you want to scale vertically:

        * Processor: 2 cores
        * Memory: 2 GB

That's the limits unless you pay for support. It goes up from there.

</comment></comment></comment><comment><USER4> A quick way to increase your cloud expenditure by 64x - run WebSphere Portal on your EC2 instances :)

</comment><comment><USER5> ahh no AIX on the cloud??

got my hopes or fears up

<comment><USER4> I'm sure mainframes by the hour are in the pipeline.

<comment><USER2> It's my understanding that they've been there for years. IBM will install a mainframe with N cores even if a company only wants to pay for N/2 cores initially. Then, the company can ask IBM to turn on the switch (or just turn it on themselves and be honest?) and increase its capacity. No idea if they can throttle back, say after Christmas, though. Of course, it's not a perfect parallel as IBM parks the whole thing in the customer's own datacenter. I think there may also be some pay-for-mips options as well.

<comment><USER6> IBM still charges big banks CPU time on the bank's own hardware.

Big bank backend apps are written to sleep as much as possible, and then do everything all at once in order to save on CPU costs.</comment></comment></comment></comment>


Making the transition from Delicious to Evernote - <AUTHOR> http://blog.evernote.com/2010/12/16/making-the-transition-from-delicious-to-evernote/ <comment><USER2> When you're selling a hammer, you're in the business of convincing people everything they see is a nail.

<comment><USER3> This is pretty low of them. Almost as low as their 4.0 update requiring me to reboot my machine. Really now? What hooks did you need to embed this time, Evernote?

</comment></comment><comment><USER4> I'm a big fan of Evernote. But if you require people to take 5 steps to export bookmarks. You haven't tried hard enough.

In <http://trunk.ly>, you just enter your username/password and you're done! We'll pull down all bookmarks, notes, index and index them.

<comment><USER5> I have no interest in Evernote, but those instructions are hardly daunting. They could be reduced to two steps.

1\. Export your delicious data.

2\. Drag the file onto Evernote.

What if I don't want to give you my username and password for a site that you don't control? I'm assuming that trunkly has a similar import process in that case, right?</comment></comment>


Turntable.fm: Where Did Our Love Go? - <AUTHOR> http://www.inc.com/magazine/201205/burt-helm/turntable-founders-sxsw-where-did-our-love-go.html <comment><USER2> Articles like this make me glad I don't have a startup so I don't have to go to SXSW.

A lot of these 'ideas' seem cute or quirky at first but then I wonder what kind of people would need to see someone else's mouse cursor or want to get messages from strangers, or leave sad lonely notes at random places to people they'll never meet.

Also, a reflection: _"I had convinced myself that start-ups are a young person's game, that I should get away from the Silicon Valley echo chamber"_

Why should young people spend their time in an echo chamber? If the wisdom of our elders is that Silicon Valley is a bunch of yes-men, why the hell should we go there? .... Oh, that's right. Money.

<comment><USER3> I guarantee you that if you do an enterprise technology (or even a "hard tech" startup of any kind, or infrastructure, or most kinds of b2b), your investors will not ask you to go to SXSW.

</comment></comment><comment><USER4> I was a big turntable user last summer. I was pretty disappointed by their interface (fixed width, terrible search, etc.). So disappointed that I built my own clone with a friend.

I recently revisited the site - almost nothing has changed. There is so much potential to add more features and polish the interface. I think this might have something to do with their user decline. They had the initial hype wave but failed to sustain+engage their users with enhancements and features.

If I was on the turntable team I would be pushing hard to add features weekly!

<comment><USER5> I agree with the fixed width thing. I whipped up a responsive turntable concept and sent it over to them, but heard nothing. Check it out here:

[http://jacksonmohsenin.com/2012/04/14/3-day-project- turntabl...](http://jacksonmohsenin.com/2012/04/14/3-day-project-turntable-fm- responsive-design/)

<comment><USER6> We saw it Jackson. Had you sent something like that to us about our site, you would have definitely heard back from us. From everything we've heard, that's a fundamental difference between us and them. We care about our users, our community and the people who give of their own time to help make our site better out of sheer love.

</comment></comment></comment><comment><USER7> Best line of the article:

 _It strikes me how bizarre this is. To a SXSW audience, Turntable is already past its prime, even though during last year's conference, the product didn't yet exist._

At least they understand the issue that Turntable was too much work if you want to participate and tricky to find a room for listening.

<comment><USER8> "Too much work," is correct. I used turntable for about a month. It was fun. Then it became tedious.

After reading this article, I logged on. It has changed. I suppose the users are less diverse now. It is hard to quantify. When it first started the rooms were very diverse. Today(or right now), it looks like dubstep is the main genre of music.

The music snobs have left.

<comment><USER9> I remember at first there were these Japanese rooms with awesome J-Pop. It was amazing, there was such an amazing energy around turntable - then users outside the US were blocked because of licensing.

<comment><USER10> I, too, lament the loss of our international users. We're working hard to allow access from outside the US, but it's a slow process. That said, there is still an active J-pop room on TT, although it's not as popular as it once was: <http://turntable.fm/jpop_jgame_anime_>

</comment></comment></comment></comment><comment><USER11> I'm Canadian. When they had to cut out international traffic they lost me, and all my friends. I loved this service, so much, but unfortunately using a proxy was just too much work for a little music.

Best of luck to the Turntable team. I hope Chasen comes around, the service has a lot of great potential.

<comment><USER12> I was a fan over here in Australia and the day they blocked the international users was the day they lost me forever! Now I'm hooked on <http://di.fm> \- Notch had a live code and I think that's what turned me onto it.

<comment><USER6> <http://plug.dj> is available everywhere, including Canada and Australia. Check us out.

<comment><USER13> plug dj is nice. If only I could understand why the heck the stuff in the chat is being translated into my language and put a stop to that it would be awesome.

<comment><USER6> You can disable Chat Translation in your User Profile, and you can rollover the translated chats to see the original message if you prefer to keep it on.

</comment></comment></comment></comment></comment><comment><USER14> I found this article to be very well-written. It's not the most intellectual topic, but I do feel like I've gotten a pretty good window into the lives of the founders.

<comment><USER10> I, too, found the article to be well-written, at least from a technical perspective. However, as a TT employee who knows the founders personally, I didn't find it to be a particularly accurate view of their lives or personalities. I suppose this is the danger of "well-written" articles.

</comment></comment><comment><USER15> I had a falling out with Turntable.fm for the following reasons:

\- Too distracting. I used it most when I was working to have music on in the background, but if I wanted to participate I was constantly tending to my playlist. Not sure _how_ to fix something like this.

\- No way to explore music outside of going into rooms. It would have been great if they had a "Top 200" tracks or a way to browse genres (just add in an option when you create a room to select a genre and have other for the fringe categories).

\- Saving music sucked. Yes, I could save stuff to other services, but the experience of doing so was daunting. For example, I love Last.FM, but taking me to the song page of the track that's playing on Last.FM is pretty weak. Why not stronger API integration? I heard a lot of music that I would have loved to put into a list, but the functionality wasn't there.

\- Becoming a DJ in any room with a decent crowd was damn near impossible. People would hover over their mouse to get that coveted slot. If I started my own room, you'd only get a handful of people to come in. The point here I guess is that it would have been nice to have some better promotional tools so people could discover different stuff. Sorry, but I don't want to listen to dubstep all day. Woh woh woh wee woh.

Easy fix: fix your features and add in some cool stuff. Send me an email or two telling me to check out something useful (not "we added in Facebook!"). I'd come back in a heartbeat if some of the stuff above was fixed.

<comment><USER16> That and their TOS just throws you under the bus

<comment><USER10> TT.FM developer here. What in particular do you find onerous about the updated TOS? We collect very little in the way of personally identifiable information and don't share it with anyone except on an opt-in basis (for contests, events etc.). I happen to think our TOS is a lot better than most sites', which state that they'll share your information with anyone they want without your permission.

</comment></comment></comment><comment><USER17> I love the _idea_ of Turntable.. I used it off and on... But it has usability problems that haven't seemed to improve.

1) It originally only allowed facebook login, or rather thats the only thing I could find. Now there is Twitter, which is better... but it's still unreasonably restrictive here.

2) The music search is a nasty broken mess. It reminds me of searching for music in the very very early days of Napster... No, wait... Napster was better. I can't search for albums very well, I can't sort the results, I can't distinguish between a good quality song an a shitty quality song often. Especially noticeable when search a song name and getting a live track instead of studio track.

3) Something as simple as "Shuffle" never showed up. I hated having to manually shuffle my list of music. Usually I'd add entire albums at once... but I didn't want to listen to all the songs in order.

4) Starting a room is frustrating because you can't listen to music by yourself. There is no way to grow a new room from me, by myself, to 100 if I can't listen. I'll simply leave the room.

5) Needs a DJ recommendation service or something. I need a way to not baby sit my list.

All of that aside, I think their service would work well as a spotify app maybe. There are other similar spotify apps now that are much nicer to use.

</comment><comment><USER18> I was annoyed at the sheer length of time it took to receive a formal invitation. They built up hype way too early. By the time it was available I didn't really care anymore, I had moved on to other things out of frustration. How are you supposed to successfully launch a site in which you interact with friends but not let anyone in (at a decent rate)?

<comment><USER19> I think the last time I looked at it, it required an invite. I didn't care enough to give them an email address. Or maybe it was the same as now: the front page has "login in with Facebook" and "log in with Twitter" as the only actions. I don't want to do either of those things. Just play me some music, then if I like it we'll talk about logins. Pandora got that right years ago.

</comment></comment><comment><USER20> I went to check out Turntable.fm, but it turns out I can't use it - I don't have a Facebook or Twitter account, so I can't login.

I understand I'm probably in the minority - or perhaps better stated, not their target audience - but you can add me to the list of folks not using the site. <shrug>

<comment><USER21> I use both Twitter and Facebook (unfortunately), but I would rather not have to link my account with either of these services just to log into your website

<comment><USER22> Did the same with tt, and it started posting stuff on my facebook account. I changed to plug, where i also had to use facebook to sign up. But it never posted anything on itself or did anything, just by clicking the share button in the room i could post it on facebook. So it's safe to use i guess.

</comment></comment></comment><comment><USER23> I started using <http://plug.dj> the past few weeks and I'm liking it much more than turntable. For one, it's international and you can stream/watch YouTube videos and play SoundCloud in the room. There's also an option to import your Turntable playlist.

<comment><USER24> Brilliant. One of those ideas that seems so obvious. As crazy as it sounds, I'm hard pressed to believe that there is a better music source than Youtube. Spotify, pandora, and soundcloud are shit in comparison. Youtube has _EVERYTHING_ \- I can get any song I want (popular or not) whenever I want it, for free.

The reason I love turntable is that there's constantly new music, and it's curated for me. I mostly absorb, but I can contribute when I want to. The barrier is that I don't have much good music on my hard drive and turntable's catalog often doesn't have what I'm looking for.

The reason I love youtube is that the music collection is nearly unlimited, but I often find myself listening to songs on repeat because I'm too busy/lazy to curate a list of my own.

Plug.dj merges the best of both. And it looks nice too. I'm excited.

<comment><USER3> When/why did youtube become such a good music service, vs. the other services? A lot of people seem to be saying this.

<comment><USER24> Sheer quantity of music. I have yet to see another music service come close in content to youtube. Spotify is okay, but there's a lot they don't have. And their commercials are annoying as hell. Pandora is great, but their model doesn't allow for selecting specific songs. Soundcloud is awesome for original and underground tunes, but not mainstream and classic songs.

Youtube has (almost) everything.

</comment></comment></comment></comment><comment><USER25> I got annoyed when I got into a disagreement with a moderator and was kicked out of a room repeatedly.

I am not sure how many others had a similar experience but I just left the site after that. It made the site feel unwelcoming.

<comment><USER26> I had the exact same experience. Moderators would boot/ban you if you downvote songs, or if you criticize anything ever. I havent touched turntable in months.

Simple solution. Moderators should be able to mute users. But not kick them from the channel. What's the point of kicking if we're just here to listen to music?

If they fix this, I think I'd go back.

<comment><USER10> TT developer here. Any user can "mute" any other user - just go to Settings > Ignored Users and add their username to your ignored list. Hope to see you back on the site soon!

<comment><USER27> No, what he's saying is that mods need to only be able to mute users, not kick them. Kicking someone out of the room they want to be in only hurts your service -- not the room -- because they won't have any interest in visiting the other rooms and they're not going to bother going back into a room they've been kicked out of. There is truly no reason anyone should be _kicked_. It leaves a sour taste in the user's mouth, especially if -- like those of us posting here -- it was for no other reason than the mod's ability to do so.

Anyone in the room to troll or flood (by the way, your 'flood' methodology sucks - I type fast, I shouldn't be reprimanded for it) will be put off of the room and move on to the next, at which point, a certain amount of mutes in a certain amount of time should set a flag that puts a global mute on that person for a set amount of time.

<comment><USER26> mnicole nailed exactly what i was trying to say. Thanks!

</comment></comment></comment></comment></comment><comment><USER28> I was pretty addicted to Turntable for a solid 3 weeks last summer. Maybe 4.

Like others have mentioned, I do think one of the reasons they're flattening out is due to lack of updates, but I stopped logging in for two reasons.

One: It was _too_ engaging. I enjoyed every minute I was on it, but my productivity started to slip. Drastically. Suddenly it's 5am and I'm having a great chat and listen with some blokes from the UK. Dashing good time, but not the best way to spend a Wednesday night.

Two: It was too hard to find (or create/maintain) a room that played the kind of music I wanted to listen to. This speaks to their lack of updates more than anything else, as they could have fixed this pretty easily: index rooms on songs played and allow users to find rooms that recently played a specific song. Or three.

<comment><USER29> I 100% agree on your second point. When I created a room, with a specific music genre name on it, I would get other user coming in, playing different music and down voting/skipping my music. That was very frustrating, and that is why I stopped using it. I'd rather listen to friends' Spotify playlist

</comment></comment><comment><USER30> I love Turntable. You can upload your own music if it's missing from their library. And they have an iPhone app that is nearly feature-paired with the web version. Plus they were the first app to make possible live sharing DJ queues on the web (right?). Thanks Turntable folks!

</comment><comment><USER31> Too much effing dubstep. When a kid comes in and starts spinning that garbage, the fans fly away.

<comment><USER32> This might not just be a problem with Turntable.fm.

</comment></comment><comment><USER33> Interesting that the "marketing guy" wanted him to lead off his SXSW talk by discussing how turntable's traffic was down. That just seems crazy to me and Chasen rightly ignored this advice and deemed it a "defensive" way to start of his talk.

</comment><comment><USER34> Isn't turntable.fm a video game? Most video games have a fad cycle. Game developers realise this and cash in on their hits immediately. The 'gain users first and patiently monetise' strategy has no place in the world of gaming.

<comment><USER35> I've never used turntable, thought it was dumb, but did it ever make $? Did they ever even have a plan to make $? Seemed like a giant fad to me and can't believe they raised $ successfully - especially with having to deal with music licensing.

</comment></comment><comment><USER36> First, this was a very well-written article -- if you only skimmed the first page, go back and read the rest! I think it describes an interesting founder (well, chairman-founder) dynamic.

Second, was anyone else slightly reminded of Steve Jobs in his earlier days? Maybe it's because I just read the Steve Jobs biography, but Chasen seems to demonstrate a lot of the same characteristics: desire for complete control over the product, strong vision, disregard for more practical matters (marketability, cost), belief that the product qualifies as art, and mild tendency to be reclusive, stubborn, or uncommunicative.

</comment><comment><USER37> Eh, I still use it. For me, it's incredibly fun to get 5-10 friends in a (private) room and share the DJ spots. (I've never really bothered with the public rooms and thus have not heard a barrage of dubstep.)

</comment><comment><USER38> The real question is, how their new product Kiwi going to stand for itself against other spotify apps. I know a number of music startups, and a lot of them are making apps gunning for deeper social integration on spotify, which seems what Kiwi might be.

Also, I also hope that listmaking is a passive activity, where turntable just makes playlists for me, of what my friends are listening to. Make the decisions for me so I can focus on other things, like not DJing online.

</comment><comment><USER39> I liked turntable but it I felt like it required you to be a bit active to get the full benifit, whereas I think I'm usually a bit more passive in my music listening.

<comment><USER40> I learned that about myself as well. I was very active initially but, after a while, my playlist would start to repeat and then I'd get kicked from DJ'ing once it repeated twice. That meant I'd have to load my playlist, day after day, with new songs. It was _work_ and I just lost interest.

</comment></comment><comment><USER41> There is a behavioral disconnect on the site:

A fix is to have 2 listening modes. 1\. Passive like radio 2\. Active with chat(capacity 150)

<comment><USER42> That's a solution to a problem, yes, but only to a tertiary problem. By splitting it to listeners and cave spinners, you'd find most people are oly listeners. The level of engagement would plummet.

</comment></comment><comment><USER43> A lot of people are talking about getting active to get all the benefits. So I created a C++ app that bring turntable chat "alwaysOnTop" <https://github.com/alaingilbert/ttchat> Pretty usefull ! Let me know what you guys think about it.

</comment><comment><USER44> I joined the site pretty early when it was filled with mostly music snobs like me. every room filled to the brim with people playing mostly less heard tracks as it got bigger and more and more new users joined a lot of the snobs left making it less fun for me.

</comment><comment><USER45> Does anyone think it would benefit turntable to also present itself as an app inside Spotify?

</comment><comment><USER46> I ended up switching to Pandora + Grooveshark + Soundcloud. I can get all my music, mixes, and discovery through these three services.

<comment><USER47> Yes, except now you're stuck with Grooveshark's hideous "stop what you're doing and watch this ad or I'm taking my ball and going home" nonsense. I gave Spotify a go, but I'm not a big fan of having to download a native client for what can clearly be done online.

</comment></comment><comment><USER48> Screw them for publishing stuff to my facebook feed, and not allowing me to listen otherwise. It's terrible, but I still but up for it for some unknown reason. I have no sympathy.

<comment><USER10> Publishing to your Facebook feed can be turned off by going to the lobby page > Settings > Contact Settings. This has been the case from the first day we published FB feed stuff, and we tried to inform users about it with a yellow banner at the top of the lobby page.

<comment><USER48> Thank you, this should be opt-in, not opt out.

</comment></comment></comment><comment><USER49> You blocked Australia, so you tell me. :\

<comment><USER6> <http://plug.dj> is available in Australia. In fact, our backend developer lived in Brisbane until recently.

</comment></comment><comment><USER35> Who didn't see this coming... Hype... funding... doa.

</comment><comment><USER50> Simple, you are expendable. Give your user's a reason to say. Give them a product they're willing to pay for and can't live without.</comment>