Where does a wannabe hacker begin? - <AUTHOR> Prior to coming across Paul's essays I had relegated myself to never being able to have a start up. I'm an Economics major in college right now, and I suppose I assumed a tech start up was for the comp sci guys.
Reading Paul's essays along with some other stuff -- like the fact that two of the founders of Auctomatic didn't know how to hack prior to starting it -- has been pretty empowering. In one of Paul's essays he mentioned that someone who's smart could probably pick up hacking within about 6 months to a year, which was definitely much shorter than I imagined.
All of it has really piqued my curiosity. I have some free time over the summer and I thought there's probably no better time to learn something new, but I can't even figure out where to begin!
So I come to you, the hackers of YC News! If you were completely new to programming and you hoped to some day try your hand at a web start up, what route would you take? What language would you learn? How would you learn it? If there's anything else you think is noteworthy, I'd be extremely grateful if you could share it! <comment><USER3> Your first challenge: take a generic PC (or a Mac, for that matter). Install Linux, Apache, MySQL, and PHP. Get Wordpress running and put up a simple blog. Make a post or two. Smile.

Bonus points for using Drupal instead of Wordpress.

You might prefer to do this exercise using a webhost like Slicehost. They'll hand you a VPS for $20 a month. The advantage here is that, when you're done, you'll have a public website instead of just a local PC that nobody can visit.

Read up on basic security and set up a firewall on your web server. Read up on DNS and get that working. Get a mail provider, like gmail, and wire up your new domain's email.

This exercise is actually really easy, nowadays. But it's a start. It will teach you a bunch of fundamentals, like how to use Google to solve all your problems ;). You will learn how much you enjoy tinkering with web technologies. And, for the purposes of many, many profitable online businesses, you'll be almost done. :)

\----

When it comes to actually learning programming: Try Ruby or Python. Although I still never find time to use it, I will once again plug Hackety Hack at hacketyhack.net. Consider learning Rails by using Heroku: <http://heroku.com/> .

If you want to impress folks around here with your earnestness, read SICP. Just Google "SICP". You can even find free online lectures from the MIT class that SICP is for. If you read it, you'll know Lisp, and you'll be well launched on your career of bluffing your way through computer science. As an economist, you might be enough of a math guy that you'll fall in love with Lisp. It does happen.

Oh, and two key words: emacs. git. Buy and read _Learning emacs_ ; it's worth it. And learn about version control -- I do recommend git, but it's still kind of confusing to learn, despite the best efforts of the Peepcode screencast guy and Randal Schwartz. You may find better intro material for Subversion: google for "svn book".

<comment><USER4> Two more keywords: vim. mercurial.

;)

<comment><USER5> Well, if he's going to learn to be a hacker he might as well learn about all of the age-old flamewars too.

</comment></comment></comment><comment><USER6> I'm self-taught. My recipe:

1 - Find something you _want_ to build

2 - Learn everything you need along the way

3 - ????

4 - <USER2>

I built a pop-up blocker and privacy suite this way (as a single founder) and earned more than I was making at my day job, so I eventually quit.

I see a lot of "things you should know" in other posts, but in my experience, they won't be interesting until you need them. You'll have to go step-by-step, though. I'd probably start with HTML and work my way out if you're interested in web apps.

<comment><USER6> Some tips:

To see how something works, break it and unbreak it in many different ways. Sometimes the part you _think_ does something isn't it. You don't know code well until you know how it acts when broken. Seeing what error messages mean will help you recognize them in your own code. Hotkeys are good. Ctrl-Z (undo) and Ctrl-Y (redo) are great for breaking/unbreaking code. Version control will be useful at some point.

Change one thing at a time when fixing bugs, or you'll never know what fixed it. Afterwards, explain what happened.

Do not make changes without a reason--that's a short path to cargo-culting. Read the doc, then use the scientific method--hypothesize something, then test. Rinse, lather, repeat. Otherwise, you're just guessing and will waste infinite time, like a Shakespeare-typing monkey.

When borrowing code, understand it, or it will cost you in the long run. Stripping code to the bare minimum or adapting it is a good way to know what parts do what, even if you just use the original.

Remove lines you "think" you need in your solutions and see if they still work. If a line of code isn't necessary, but is not hurting anything, remove it anyway.

I have no idea how people coded before Google, and it scares the crap out of me. Paste in your errors with variable names removed. Invest time to become a Google search pro.

If you haven't tested it, it's best to consider it broken.

</comment></comment><comment><USER7> I think putting together a startup and becoming a hacker are completely different things.

A hacker is someone who likes to play with the world around them. I don't even know if it's possible to become a hacker. If you've never been inclined to take apart your VCR or walkman then I'm not sure if hacking is for you.

If you just want to start something up, learn PHP and MySQL. It's easy and can run on just about any hosting account. Actually depending on what you're looking to do, a CMS like Drupal could work if your startup was just a news and review site or something.

<comment><USER8> i agree. being a hacker is more of an attitude toward the world than any one set of skills. skills can be learned easily, adjusting your entire outlook on life takes alot more work.

</comment></comment><comment><USER9> If I were to lose all programming knowledge tomorrow, I'd send the following to my future self:

0) If you feel confused at any step, use Google.

1) Make an HTML page with Hello World.

2) Add an image to the page.

3) Position the image on the page by adding a CSS style to it.

4) Add a JavaScript script to the page that creates another image element, with another src URL, adds it to the page, and positions it.

5) Learn the principle behind the URLs of tiles at OpenStreetMap (<http://openstreetmap.org>) by using "View Image Source" in the browser. Hint: the numbers are zoomlevel/x/y.

6) Add a script in your page that creates some new image elements with OSM tiles, sitting seamlessly next to each other.

7) Learn about event handlers in JavaScript (onmousedown/onmousemove/onmouseup), and try to make the resulting map draggable. In Firefox first, then IE.

Congratulations, you're now a passably good client-side webdev.

</comment><comment><USER10> Perry, how do you know that the two of the founders actually do lots of programming in Auctomatic?

They could've helped the team in other areas such as:

1) Strategy

2) Marketing (newsletter, beta invitation, etc)

3) UI design (but not UI coding)

4) Sys/Net/DB-admin

5) Legal issue

and let the Collison brothers do the actual programming without having to worry of these stuffs. The Collisons are one of the kind. Prodigy is the right word to describe them both.

If you look at their About page: <http://auctomatic.com/about> , there are 2 more people beside the 4. At least one of the two is of technical type.

Summer is 4 months long, I'm sure you can learn something. But I don't think you'll be anywhere near the people in this website in terms of technical ability.

The more you ask technical questions from News YC, the more you "dig" yourself deeper in the technical side of the world and the less time you will focus on your startup.

But don't be discourage, anyone can start anything at this day and age.

You can:

1) Learn PHP/MySQL/JavaScript/HTML/CSS and ignore advices

2) Learn Back-end (PHP/MySQL/AJAX) and outsource front-end

3) Outsource everything to India/China/Russia/East Europe

There are the News YCombinator kind of startups.

There are the Google, Microsoft, Amazon, Yahoo! kind of startups.

There are also the kind of iContact, "Ben Casanova", PlentyOfFish kind of startups.

I wish you the best on whatever the path you chose.

</comment><comment><USER11> I am usually a Java developer, with years of experience, so my outlook might be different. But I just started a Ruby On Rails project, and my impression is that "Programming Ruby" and "Agile Web Development With Rails" should be sufficient to get you going (OK, and maybe some HTML tutorial somewhere, don't know which ones are good in english).

I think "Agile Web Development With Rails" has been dissed by the "rails community", but my impression is good. It shows exactly the examples you'll need (like how to create a login form).

</comment><comment><USER12> Good read would be "How to become a Hacker" - <http://catb.org/~esr/faqs/hacker-howto.html>

Anyway since most of the startups are built using Open Source software, beginning to hacking with them would take you to the edge.

<comment><USER13> Eric Raymond is an excellent writer and you can't go wrong reading this article.

Also, learn how to do mathematical proofs. I don't know what the best way to do this is. I learned from 10th-grade Euclidean geometry class. Maybe you can pick up a good book on Euclidean geometry that has a lot of exercises in it.

Finally, pick up a good book on Lisp that has a lot of exercises in it and do all the exercises in it. Winston and Horn is good. "The Little Lisper" is also good.

</comment></comment><comment><USER14> A fellow econ major?

I'll echo most of the advice already given here, but because your an econ major, I'll add something else just for fun: Try to do a research project or paper or whatever on some trend in the IT industry, like the history of the OS market or even the respective market territories of different programming languages. This won't teach you to hack, but it may help you set priorities as you learn, and it will help you if you attempt a startup.

</comment><comment><USER15> If you want to get a taste of the whole thing:

1\. Install Ubuntu.

2\. Start using emacs (maybe with "Learning Emacs", O'Reilly, as mechanical_fish suggests).

3\. Learn some Python (maybe with "Learning Python", O'Reilly too).

4\. Use webpy (<http://webpy.org>) to develop a simple web application.

5\. Learn how to program SQLite (and thus basic SQL) using Python and make your web application use a database.

6\. Make your application public (<http://vpslink.com> might be enough, $7.95/month).

The 4th and 5th are "minimalistic" (for a web framework and a DB engine), least "complication", because the goal should be (I think) completing a simple project in a few months. From this you might get a glimpse of "the forest", or "connect the dots" (of web programming).

After that, if you want more, you can now go learn all of what others have very appropriately suggested: SICP, some system administration, PostgreSQL, Ruby (+ on Rails), git (or Bazaar), Data Structures, Algorithms, Test Driven Development, PHP, etc.

</comment><comment><USER16> The best way to do this, is whatever idea you have, try and build it using Ruby on Rails. You may make some mistakes, but the best thing about Rails is that many of the architectural decisions are made for you. You only really need to worry about the syntax once you get the hang of it.

Lots of the other advice on here, about learning C, and SICP, and emacs and CS fundamentals is nice but not necessary. Learning it will be very hard for an absolute newbie to get anything out of. It could demoralize you.

Thats why I'd advise to actually start building whatever it is you have a startup idea for. It will give you traction. You will definately struggle, but at least you'll have something concrete to show for your efforts. And I'd use Rails. If you run into problems you can always go the rubyonrails IRC channel or even ruby-lang. You'll get the hang of it. If you are going to take this route I'd recommend the Rails book by DHH.

</comment><comment><USER17> Perry, i decided to learn how to program about a week ago. tuesday night i started with HTML (dont laugh). i think it is important to know those basics before you go on and learn server side scripting. i tried hackety hack before and php, but the problem is you want instant gratification so you wont stop. thursday night i stayed up an extra 3 hours past my normal time and created a nice html document with my pictures linked from tumblr, added an email form, comment form and submit buttons. off course the form did not submit anything to the server, but now i am hoocked, and instead of pinging developers and killing them with "what's the status" now i know within a few months i will be able to start creating simple web apps. so start small, then once you got html, xhtml and css locked, move to server side scripting.

</comment><comment><USER18> Once you start coding, start sitting in on some CS classes at your college to get some fundamentals down.

Data Structures (bonus points if it's in a functional language), Algorithms, Systems, and Architecture are all a must.

<comment><AUTHOR> Great advice, thanks. I'll have to see what my school's policy is on that.

<comment><USER19> Or just do it, and ask for forgiveness later, as necessary. Your chance of being "caught" in a medium-to-large lecture is pretty low.

<comment><USER20> Most school charge roughly 50% of regular tuition rates to audit a course (attend lectures without earning credits.) They will usually allow you to complete all the coursework and get feedback as part of the auditing arrangement. Getting caught attending lectures without being enrolled can have implications beyond just being kicked out...you're essentially "stealing" an education. They can charge you with theft or criminal trespass. As someone who has a criminal record for trespassing, I'd advise you to just enroll in any course you really want to attend ;-)

<comment><USER19> Interesting. I guess I shouldn't have been so flippant.

</comment></comment></comment></comment></comment><comment><USER21> Learn a free Unix - like Linux or BSD. Really. A huge part of hacking IMHO is taking an open system that is sometimes quite complex (like an OS), shedding your fear of breaking things, and tinkering. When things do break, you will learn so much from fixing them. =) It is a lot of fun, free, and will get your feet wet with some of the other stuff that mechanical_fish mentioned.

I also recommend Emacs. I haven't worked with git just yet, but I use Mercurial all the time (and I will eventually get around to using git). Avoid CVS like the plague.

</comment><comment><USER22> At the same time you pick up a C++ book, go to <http://www.topcoder.com/tc> and start up the arena (after reading the instructions, of course). Then practice, both the language and some problems, for about 2-3 weeks. Once you are able to solve the easiest (but not always trivial) problems regularly, you will be more than ready to easily pick up a markup language like HTML or a scripting language like Python. This will help you to be more comfortable with programming in general and to get some problem solving skills. These skills are useful when you develop software because it increases your productivity and helps you to write better code. This is not the only place you can get this kind of practice from, but everything is already set up so that you can go ahead and get started. I believe things will be easier afterwards if you get these skills first. It's also a good idea to be able to think recursively, but you can work on this later on, and when you do you can try SICP, which is a very good resource. I hope this helps.

</comment><comment><USER23> Start here:

<http://mitpress.mit.edu/sicp/>

No, seriously. If you've never programmed before, this will teach you far more than you'll need, initially, but later on you'll realize that you picked up a lot of really good habits and never needed to unlearn the bad ones.

Try it. If you like it, you won't look back. If not, perhaps a career in finance isn't such a bad idea anyways.

<comment><USER24> If the OP is interested in learning to hack, in the sense of making computers do great things, then this is the best resource suggested on this thread. In addition, MIT published videos of the lectures by the authors of this book ([http://swiss.csail.mit.edu/classes/6.001/abelson-sussman- lec...](http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/)). They are spectacular.

</comment></comment><comment><USER25> <http://catb.org/~esr/faqs/hacker-howto.html>

If you want to be more of an Admin I recently wrote this:

to start do 4 os installs, centos, debian, gentoo, and freebsd in that order. install apache, mysql, bind and postfix on each. set up joomla, drupal, and word press on each. make sure all 4 systems will come up with all services working on reboot. get a free subdomain from someone like dtdns.com. set bind up to use it. make sure that you can view the web pages and send emails to the machine from an external machine, doesn't have to be at a remote location, and that it continues to work on reboot (without your intervention). drupal, word press, and joomla must be working at the same time. by the time you are done you will have an ok understanding of the the various _nix's and_ nix itself, and the tasks common for a sys admin. if you need help you can probably ask for it on the distributions forum/mailing list or the softwares forum/mailing list.

it's a good start even if you want to be a programmer.

</comment><comment><USER26> If you're hoping to get into web development, then you'll need to learn quite a lot of pieces of technology. For a professional, the minimum knowledge base is TCP/IP networking, HTTP, HTML, Javascript, the DOM, SQL, a bit of UNIX shell, and at least one general-purpose programming language like Python, Ruby, or PHP.

As a hobbyist, you can start smaller than that, of course. Learning HTML and a bit of Javascript is a great start -- if you can build simple client-side dynamic apps, moving into server-side scripting is a lot easier. Configuring a basic Linux server to host web applications (even if it's just a virtual machine, or a spare PC under your desk) is a big step forward, too.

As an economist who _may_ want to do some web development, though, you might gain as much from learning a general-purpose language like Python as you will from web development. Being able to toss out a quick script to do your simulations or mine an existing data set may prove substantially more valuable to you than an in-depth understanding of PHP and Apache configuration.

</comment><comment><USER27> Regularly read Wikipedia articles on computer science, programming, logic, and perhaps mathematics and/or linguistics topics. Get Firebug and inspect the code of sites you like. Start building something with HTML, CSS, and JavaScript. Constantly improve what you're working on, and don't be afraid to ditch what you've got and start something new.

Focus on JavaScript. Watch the SICP lectures, read Doug Crockford, Raganwald, John Resig, and pg's Arc source. Learn the ins and outs of emacs, vim, TextMate, or Eclipse. Play with Lisp, Python, Ruby, and Io and read others' code in those languages, then apply what you like to your style of writing JavaScript. Try out the major JS frameworks (jQuery, Prototype, MochiKit) and settle on one of them. Then rig up a server-side JavaScript solution (Jaxer, Helma). Pick an interesting domain and learn about it until you find an overlooked problem you can solve, then capitalize on it.

</comment><comment><USER28> The 'C' Programming Language.

if you do not like C programming,

"How to Think Like a Computer Scientist: Learning with Python" to learn python.

available for free on the net

<comment><USER29> C is not the path of least resistance for the OP. He is neither trying to make a career out of software engineering nor hack on a UNIX kernel.

He wants to be at the fringe of business and software and these days if that's where you want to be you can "get by" knowing only a high-level language really well and hiring/partnering with more specialized engineering talent as needed if the business-side requires it.

Mastering the high-level language is arguably as difficult as mastering C but the leverage you get from the high-level language is huge relative to C for the sort of business/software problems that will be of interest to him.

<comment><USER28> Yes, I am in complete agreement with you. Which is why I suggested C.

You only realise the huge productivity jump when you first program a small application in C and then do the same thing in Python / <your favourite language here>.

Hence the C recommendation.

<comment><USER29> We can't possibly be in complete agreement if we are drawing opposite conclusions.

I think the difference might be that I assume the OP is heavily concerned with _efficiency_.

Given his background and goals it is not efficient [1] for the OP to learn C when in the same amount of time he could learn a high level language and then directly accomplish his goals, and never _need_ to learn another language for the rest of his life.

[1] achieving maximum productivity with minimum wasted effort or expense (O.A.D.)

<comment><USER28> My personal experience has been that I am much more productive when programming in python. More gets done easily, and the code is very readable.

However, I realised this only after I had spent order of magnitude more time on doing the same thing in C, and burnt myself plenty of times during the process. My point is that you find out how productive you can be in one language when you have used another language to do the same thing - then a comparison becomes somewhat meaningful. I had _read_ a lot about how python makes you more productive, but I _experienced_ it only when I started coding in python to achieve tasks that I used to code in C earlier.

The same goes for shell scripts that make my life easier. Shell scripting became a hellish experience when I was using a solaris machine for some time - but by writing a python script instead of a shell script, I could be pretty sure that it would run in linux / solaris / any other *nix.

So, I still believe that we are essentially in agreement regarding productivity. Efficiency is another matter though - inspite of psyco etc, python tends to be slower in some tasks and it might be well worth the time to code them in C.

<comment><USER29> I think we're speaking different languages (despite the fact that it appears we're both speaking English). :)

I know you can reduce development time using a high level language to solve problems like this. So do you. And now so does he because we told him. No need to have him waste time proving it for himself.

And to be 100% clear when I said "efficient" I mean efficient as relative to life/goal achievement. I did not mean efficient as relative to CPU time or memory usage. One of my assumptions is that if this guy implements something successful in Python he'll be able to hire or partner with someone who has a real engineering background and can make "it" go fast using every trick in the book.

</comment></comment></comment></comment></comment></comment><comment><USER30> Choose something that you want to make, even if it's just a clone of an existing site or service. Then figure out what database, language, CMS etc you need and start hacking it together. You'll be much more motivated with a goal in mind than just trying to learn a language from a book.

</comment><comment><USER31> You can do it if you work hard. I did econ / accounting @ UCLA and took a couple of C++ courses that was enough to get me hungry for building a web app rather than a desktop app.

I am self taught and was stubborn enough to learn to setup a load balanced web cluster in linux, a postfix mail server, and write the code for my web app.

The secret, like others have said, is to build out an idea you have. Once you finished that project you will most likely have dozens of ideas you want to work on. Right around that time read The Dip by Seth Godin so you learn to know when to hold em and when to fold em.

</comment><comment><USER32> Given your econ major, surely there must be some interesting problems you have come across that you would like to attack by writing some programs?

Python is a great language to dive into. Easy to learn because it intentionally left out most of the boiler-plate fluff from other languages and lets you just express your solution in a direct, concise fashion.

If you get to the point where you need to crunch large number sets, check out scipy and numpy (just google). Takes a slight effort to set up initially, but then allows you to quickly process lots of numbers. Linear algebra, optimization, etc.

</comment><comment><USER33> A lot of these descriptions are very specific. It doesn't matter what kind of computer you have or what tools you use. You just need a computer, a text editor, and to choose a language to start in. I highly recommend Python. Its a really simple one to learn and is great for web dev.

Download it here: <http://code.enthought.com/download.shtml>

And here's a nice beginner's guide: <http://wiki.python.org/moin/BeginnersGuide>

</comment><comment><USER34> Assuming knowledge of basic computing, I would say the progression for a beginner is as follows: html, css, javascript, backend language of your choice (php,asp,etc.), databases/SQL. You can stop here if all you want to do is build a website, just keep in mind that web programming is only one branch on the massive tree of computer programming.

It should also be noted that building a website is also an exercise in graphic design, writing, and user interaction design. Anyone of those other facets can be equally difficult to learn and master.

<comment><USER8> Not sure I agree with that order. I personally know people who have learned SQL before php or other backend language. You make a good point about the other elements in website building. It can be invaluable to have a good designer/user interface expert type on your team. In my experience _most_ hacker types are weaker in those areas, myself included.

</comment></comment><comment><USER35> Not everyone needs to code in a startup. It's good to have someone that is more inclined to bizdev than hacking.

You should however be familiar with the hacker's arsenal of tools like Trac, Subversion, Eclipse, etc.

The first order of business in a startup is to build something that people want (after PG). More and more that something should solve some real business problem - not just another me-too social network .

I'd think your economics background could be put to good use in today's climate. Do feel that you have to be a coder - but find someone that can. You'll have a good team.

Cheers

<comment><USER35> s/Do/Don't

</comment></comment><comment><USER36> If I had a fledgling hacker under my wing I would show him how I develop, which, for me, is the laziest and most productive way I have yet found.

gentoo, sbcl, emacs, slime, weblocks, ec2, git.

YMMV.

</comment><comment><USER37> I would suggest you to start at the client side. this is where all server technologies are willing to end up at. Therefore start in this order: 1) (X)Html. 2) CSS. 3) JavaScript + toolkit library such as jQuery or Prototype. 4) Python. 5)SQL (and SQLite).

In between read about theories and patterns in software design (Wikipedia is a great resource).

And do not ever be shy to ask whatever you do not understand.

good luck.

</comment><comment><USER38> I'm in the same boat. I'm a communication major, but I discovered Unix via Mac OS X, and I was hooked. Like a lot of geeks, however, I programmed in BASIC as a kid.

First, I'd start off with an open source Unix, probably Ubuntu if you don't have one installed already. Just learning to work the shell will give you some useful programming experience. Then I would start learning Python.

</comment><comment><USER39> <http://www.textfiles.com/hacking/statemind.txt> I feel this hits the definition. There are differences at levels between 'hacker' and 'programmer' and 'open source developer', but the universe is visible in a grain of sand. Forget not to read dabblers and blowhards at www. idlewords.com

</comment><comment><USER40> From your passions, try to do what you like at your best. The rest will follow automagically :)

</comment><comment><USER41> If your goal is to become a surgeon, don't start by learning to cast your own surgical instruments. Same principle applies here - hang with the econ, then hire a guy with stains all over his shirt when you're ready.

<comment><USER23> Not a bad idea by any stretch, but it helps to know what you're looking for when you do hire someone.

Plus, if you just have a little itch to scratch, it can be a lot less work to implement the damn thing yourself, regardless of whether it's elegant or scalable or perfect. Microsoft's original product was built on your model (Gates farmed out the compiler IIRC) but he certainly had a good idea of what qualities he was looking for in a programmer.

</comment></comment><comment><USER42> I recommend folks jump in with PHP. Rename a webpage .php and you are rocking- and-rolling. Start with a project idea, buy a few books and start hacking!

</comment><comment><USER43> why lose time? you are not going to learn programming in 1 day anyways, neither in 1 month...except if thats the only thing you are doing...

it's better that you find an idea in your knowledge domain (economics that is), find someone to do the hacking for you, (learn a few programming stuff while starting up) and contribute to the company your knowledge...

</comment><comment><USER44> <http://norvig.com/21-days.html>

<comment><USER5> I think that Norvig's point in this article is that to really learn to use a language, along with all of its specific idioms and everything (so that you're not just writing "Java in Python"), one needs to study and use it for far longer than the learn-quick books would suggest.

I think you're misunderstanding what the OP is looking to do.

</comment></comment><comment><USER45> Perl.

</comment><comment><USER46> Hello.

A lot of people here recommended emacs, but it might not be the most suitable tool for you personally, or not the most suitable tool for a given task.

For example, if you want to code in Java, the best tool for that job is IntelliJ IDEA.

If you want to code in Common Lisp, the best tool for that job is emacs - mostly because it offers the best integration with Lisp (with an add-on).

Emacs and Vim both have their followers, and they have fought many religious wars over their editors' merits.

The point is that your choice of an editor need not be between emacs and vim. They just happen to be the preferred tools for most of "the big boys" around these circles.

Since you're aiming for web-development in a business environment, in your situation, you're probably more interested in making code appear on your screen than hard-core editor wizardry.

Don't spend too much time worrying about emacs or vim.

If you do want to settle in one of those camps, choose after you've tried or investigated both, and have a good idea of why you would prefer one of them over the other.

As for a programming language, I'd say that Python should be a safe bet.

It's a relatively elegant, mature language, which should be useful for all kinds of development.

One of the most popular web-frameworks, Django, also happens to be written in (and for) Python. It looks like a sensible and practical tool, and I suggest you check it out.

As a sidenote, PHP is not very highly regarded as a language by serious programmers. Its merit is getting stuff happening quickly.

Just like others have said, you need to learn HTML, CSS, JavaScript, and SQL too.

Using something like Slicehost would probably be a good idea too, so you'd get accustomed to the maintenance side of things.

I wish you good luck! :)

</comment><comment><USER47> i don't want to discourage you because any technical learning will help you in the future - but just in case if you find this things very technical or boring or not interested then don't get disappointed (and dont give-up either) because u can still become a webpreneur - a startup is about many things and not only hacking, its about building a business from scratch it requires skills, knowledge, experience of sales, marketing, finance, HR, market research, project management etc.

Also if you have terrific idea then u dont have to wait to learn those technical skills rather you start looking for hacker co-founder or hire a hacker or outsource it to a freelancer - this is because there might be someone who has the same idea and is planning a startup, so u better keep balance between speed, gaining knowledge and time spent on learning hacking ONLY.</comment>


China Bitcoin Roundtable Votes for SegWit2x and New York Agreement - <AUTHOR> http://bitsonline.com/china-bitcoin-roundtable-segwit2x/ <comment><USER2> So they are moving forward and trying to stay compatible. That might make Bitcoin even more expensive.</comment>


This Article Is Spying on You - <AUTHOR> https://www.nytimes.com/2019/09/18/opinion/data-privacy-tracking.html <comment><AUTHOR> I give credit to the NYT for allowing this to run on their site. Doesn't change what they're doing, but at least they're acknowledging it.

<comment><USER2> Don't give them credit.

It is a very crafty "limited hangout"[1]. It is designed to distract that they are doing the exact thing they are crying foul about, under the guise of being "open" re their opinion section.

My opinion: If you (or others) still think NYT is the "good guy", you are in for some massive disappointment. Or maybe not? Ignorance has always had a nice element of bliss derived from it.

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

<comment><USER3> Just becaude NYT had never been either very truthful or very honest doesn't mean that the "other guys" aren't actually bad.

<comment><USER2> I didn't say that. There are no good guys in media. It's all trash.

<comment><USER3> Who said anything about the media? Big Tech is worse.

<comment><USER2> Tech aside, NYT is clearly in the realm of "the media".

<comment><USER3> Yes, but wasn't the initial comment about NYT's rather consistent complaints about "big tech" when they aren't exactly blameless themselves?

</comment></comment></comment></comment></comment></comment></comment><comment><USER4> The vast majority of internet and smartphone users have no idea whatsoever

1) how much information is being collected on them

2) what that information is being used for

3) how much harm could be done with it

4) how little governmental regulation there is in this whole space.

If they knew, then I think we would see some action.</comment>


Liberals and Conservatives React in Wildly Different Ways to Repulsive Pictures - <AUTHOR> https://www.theatlantic.com/magazine/archive/2019/03/the-yuck-factor/580465/ <comment><USER2> I wouldn't be surprised if this also correlated with openness to experience, the "O" in the big five personality traits ("OCEAN"). There is a high prevalence of "O" among my liberal communities.</comment>


Show HN: Datasets.co – Share and discover new machine learning datasets - <AUTHOR> http://www.datasets.co/ <comment><USER2> A couple things I would suggest. Besides places like Stanford's SNAP, I would check out Socrata's OpenData portal [0], which is a place where anyone can post datasets, and the Open Data Network portal [1], which searches across all of the Socrata city portals...it's stunning what's out there. The NYPD's release of felony data is nice (if many years late), but it's nothing compared to what cities such as Chicago, Dallas, and Los Angeles have, in terms of quantity of records and detail (and the NYPD's stop-and-frisk data -- which the ACLU forced them to release -- is also much more voluminous).

I would consider providing numbers about the datasets in the default view, such as number of observations and variables. That's probably the biggest weakness, IMO, of current data portals (including data.gov)...you have to click through every link to then find out there's not much data in the set. In your situation, this applies to several of the things you've included...that Gun Ownership and Crime Rates set, for example...unless I'm missing something, but that has fewer than 40 observations, and relies on highly questionable numbers from the FBI [2] on a nationwide level...that can't possibly be of any use in a machine learning context, can it? I'm surprised it's even the basis for an academic paper (though kudos to the authors for posting their work). If you still think it's worth keeping that dataset, it'd be nice to know # of observations before having to click through.

[0] [https://opendata.socrata.com](https://opendata.socrata.com)

[1] [http://www.opendatanetwork.com/](http://www.opendatanetwork.com/)

[2] [http://www.jsonline.com/watchdog/watchdogreports/fbi- crimere...](http://www.jsonline.com/watchdog/watchdogreports/fbi- crimereporting-audits-are-shallow-infrequent-cg5uvel-166665516.html)

<comment><AUTHOR> Was a bit quick comment last time. Yes, having the amount of observations is a very natural feature to add. Shiuld be fairly simple as well, so it'll be added soon!

</comment></comment><comment><USER3> I was skeptical when I first saw this because there seem to be many other efforts to collect datasets.

But most of those efforts are pretty poor because they're unnecessarily difficult to understand.

I like how the data is clearly described with "Feature/Description/Example", that gives me most of what I want to know at a first glance.

<comment><AUTHOR> Thanks! Would you also be interested in having a 'data preview' feature, where you'd see a tiny part of the data in the browser?

</comment></comment><comment><USER4> It would be nice to have some estimate of the data size (e.g. number of rows).

<comment><AUTHOR> Hey, on datasets added from now on, this'll be an option. Check it out in action here (displayed under the image).

[http://www.datasets.co/dataset/All-UFC- Fights](http://www.datasets.co/dataset/All-UFC-Fights)

Was that what you were thinking?

<comment><USER4> Yes, it's what I meant.

But in this case there are 19 features (as said) or 10 features (no of columns)?

<comment><AUTHOR> It's avtually 19, I just didn't understand all of them to be able to write proper descriptions.

<comment><USER4> Then it is better to write all columns, even if some with "(unknown)" desc.

</comment></comment></comment></comment></comment><comment><AUTHOR> Hey all!I built this site because I think it should be easier and more fun to discover new datasets. I'd love hear your thoughts, suggestions and critisism!

</comment><comment><USER2> Awhile ago I put together a list of big (100,000+ rows) and public datasets...not all of them are ideal for machine learning applications but you'll probably find a few worth sharing:

[http://cjlab.stanford.edu/2015/09/30/lab-launch-and-data- set...](http://cjlab.stanford.edu/2015/09/30/lab-launch-and-data-sets/)

<comment><AUTHOR> Awesome list, thanks!

</comment></comment><comment><USER5> Good datasets source .. one point - you can register an empty data set . You might want to fix that.. rest all looks great .. good job

</comment><comment><USER6> This is awesome, as someone who is currently playing with ML this is a great resource for playing with Datasets. Thanks to everyone involved in this project. Keep it up.</comment>


Silicon Cowboys - <AUTHOR> http://filmrise.com/silicon-cowboys/ <comment><USER2> No way to buy-to-own (and more importantly, download an offline copy), which is a pity.

<comment><AUTHOR> Yeah, I was bitten by this too. I had pre-ordered on iTunes using my iPhone not thinking about how I might want to watch it. When it was released, I wanted to watch it on my TV, which has a Chromecast. Needless to say, I watched it on my iPhone and kicked myself for not ordering it on Google Play instead.

I would have held out for DVD/BluRay, but I wanted to pre-order to support the film and send a signal that I'm willing to pay for this type of content.

<comment><USER3> We need an industry mechanism for cross-format "upgrades", i.e. upselling of an existing customer. The challenge is that walled gardens don't want to share customer information with content (media,software) creators, in case the upsell/upgrade takes place outside the walled garden. Maybe they would allow it with (a) consumer opt-in, (b) a cut of the upsell revenue, paid by the creator to the first walled garden that introduces the customer to the content.

This would be like advertising attribution, except for, you know, actual purchases vs. possible influence on future purchases.

</comment></comment></comment><comment><USER4> I have been wondering for a while what if Intel bought Compaq back in 1991. If you don't know, this is around the time Rod Canion left Compaq. Compaq seems to have bought DEC back in 1998.

</comment><comment><USER5> Damn, those Compaq bios floppies! I can still feel the heavy weight of those desktops!

</comment><comment><USER6> Also see "halt and catch fire", whose 1st season is roughly based on the history of Compaq.

<comment><USER7> and season 3 is roughly based on typical housewife's idea of what computers (ibm mainframe booting into dos for example) and coders (fat smelly fratboys) looks like.

</comment></comment><comment><USER8> I worked for Compaq for awhile in Houston. They built this fantastic houston campus, full of high rise buildings surrounded by woods. It was my first experience of a corporate tech campus, and while it was nothing compared to the Ski Lodge mentality of later (still 1990s) Microsoft Campus it was impressive to me.

At around the 2nd or 3rd story there was a tunnel between the buildings, making a big ring. You could run/walk the tunnel all the way around the campus, including thru the manufacturing area (yes, they actually made their computers on site in Houston, this was back when you didn't get everything made in asia.)

This company was the most paranoid I worked for. There were multiple levels of code names. EG: the code name for our product that my manager used with me was different than the code name that she used with her boss.[1] So she once started talking about a product but was using the wrong code name and I was completely confused! The product we were making was a printer driver. Nothing you would think needed to be that secret (and at this point the printers were increasingly commoditized- the job ended when Compaq got out of the business entirely.) And in fact there were different code names for the different versions, so I had to use multiple code names. We all knew the real product name too, so it was kinda silly.

I remember the really rough searches we had to go thru - the Compaq security guards seemed to be all assholes. Prototypes of todays TSA. You had to be searched when coming in and when leaving. (we were going to smuggle software out in a pocket??! didn't matter, there was manufacturing going on on the premises, we could be stealing Intel CPUs.)

At one point I discovered a woman from my high school graduating class was also working there (this was a big company at this point!) and we just met up one day in the tunnels and went to lunch. (also a woman in tech, I tell you it was no big deal until people started giving them a stigma.)

But it was great- in the stifling heat of Houston, to have that tunnel between the buildings, that was air conditioned, you could go anywhere in the company via those tunnels and you had a great view-- it was a sea of tree tops, with a few high rises sticking up. (Compaq was up north of houston, away from the Houston Sprawl.)

I wonder what happened to that campus.[2]

[1] Yes, back in the 1990s, females were about %50 of the tech population, their proportions dropped when people started telling young girls that tech was hostile to females. My mother is a programmer, for instance, and her team was %60 female, %40 male- in part due to sexism, women were perceived as being more appropriate for "sitting around typing all day" so she was able to hire females more than "ruining a guys career" by hiring guys. But that was because her company was old school. Tech companies like compaq were much better.)

[2] Here's a picture showing the tunnels I was talking about. Looks like 2nd floor but I think it varied by building elevation: [http://www.lagunabeachbikini.com/shoebox/1991/Compaq-1991/bi...](http://www.lagunabeachbikini.com/shoebox/1991/Compaq-1991/bin/images/large/DSC_5394.jpg)

<comment><USER3> The tunnels are likely still there at the HP (whichever division owns PCs) campus in Houston. They were there in late 2000s.</comment></comment>


Possibility of Disinfection of SARS-CoV-2 (Covid-19) in Human Respiratory Tract - <AUTHOR> https://arxiv.org/abs/2003.12444 <comment><USER2> > (Submitted on 15 Mar 2020)

I feel like if this would work, it would mean one could inhale vaporized alcohol efficiently enough to get drunk on the vapor alone. And if that were a thing people could do, one would certainly expect it to be familiar from some terrible frat culture shenanigans. ...On the other hand, should be simple enough to get a trial together.

<comment><USER3> I don't see this idea working, but normally alcohol also has sugars in it. Even distilled alcohol has sugars. Inhaling sugar sounds like a great way to cause other problem. If this were to have any success the alcohol would have to be extremely pure.

also alcohol would also dry out the airways I bet.

As to why its not been tried recreationally before. Lower proof alcohol beverages don't vaporize as easily. So other methods would probably work better. Although there is stuff like everclear.

<comment><USER4> Any source on this? I'd be surprised if sugar would be in the distillate. It might lower the vapor pressure of alcohol itself but it shouldnt vaporize and recondensate

<comment><USER3> What do you thinks gives various distilled spirits there various flavours. Otherewise, you would just use the cheapest sugar to ferment. Also oils and tannins can get distilled too with the alcohol.

Its why distilling has what they call different cuts. That depend on temperature and where in the distillation you are in. A vodka would have very little while a brandy will include cuts that have traces of things for flavour.

<comment><USER4> This [0] does not suggest that anything but ethanol/water and potentially some other volatile compounds are in the distillate. I'm not familiar with brewing and flavoring distilled spirits, but quite familiar with distillation and doubt that even oil would be in the distillate.

[1] suggests that tannins are present in the distillate, but I have not found a tannin that is volatile and [2] names one that isn't in beer

Flavor seems to be added after distillation from what i can see (and is potentially influenced by the volatile impurities)

[0] [https://www.compoundchem.com/2016/06/08/vodka/](https://www.compoundchem.com/2016/06/08/vodka/) [1] [https://vinepair.com/spirits-101/how-distilling- works/](https://vinepair.com/spirits-101/how-distilling-works/)

</comment></comment></comment></comment></comment><comment><USER5> Bravo for serious science, especially when it could easily be mistaken for a Onion piece where the gag is that even if you don't kill the virus, you'll get drunk trying.

<comment><USER6> I mean stranger things have happened, but it seems highly unlike this could be effective.

<comment><USER7> There's a traditional Romanian cold remedy which involves inhaling vapours of hot liquor (Țuică fiarta) before drinking it.

</comment></comment></comment><comment><USER8> As already stated by the other commenters, the author had already submitted the paper to arXiv in mid of March. So, I don't think that it falls in anyway under April's fool (and I don't think that in this serious situation any researcher should do a April's fool paper).

Back to its contents, the authors describe the potential destructive action of alcohol on SARS-CoV-2 and its possible application in the respiratory tract, thus, nose, nasal cavity and further. He bases his ansatz on a theoretical approach on diffusing the alcohol from a alcoholic vapor in to the respiratory system. However, as theoretical it may sound, I think it could prove usable, if it is done in a controlled way and may deliver a simple approach to help infected people and saving those.

<comment><USER9> The usual approach is to use salt, not alcohol. The virus does indeed not like alcohol based sanitizers, but then all respiratory virus illnesses would be treatable with that, and the common treatment is with saltwater. I just got a small tinnitus, which looks like a cold, and for sure I'll be treating it with salt, not whiskey

</comment></comment><comment> grayed-down It's not 4/1 where I'm sitting, and this paper looks somewhat legit on first skim.

Anyway, here's a story: My college roommate was a force of nature. So one weekend night I'm feeling a big cold coming on and I want to stay in and rest.

He was having none of that, so he goes to the kitchen and gets a spoon and a bottle of vodka and proceeds to snort a spoonful up both nostrils. It was horrifying. Then he gives the spoon to me.

I don't know how exactly, but he convinced me to do the same. It wasn't pleasant, but within a few hours and along with a few gin and tonics, there was no runny nose, no sore throat or headache.

I've done this several times over the years and when it works, it works well. Am I recommending this? Hell no, don't do it!

<comment><USER10> > He was having none of that, so he goes to the kitchen and gets a spoon and a > bottle of vodka and proceeds to snort a spoonful up both nostrils. It was > horrifying. Then he gives the spoon to me. I don't know how exactly, but he > convinced me to do the same.

Cool story, thanks for sharing.

> Am I recommending this? Hell no, don't do it!

Alcohol fumes are also useful for treating tuberculosis and pneumonia. I don't recommend the spoon method, it's much gentler to use an evaporation chamber.

</comment></comment><comment><USER11> Could this work with a more commonly vaporized alcohol, Ether?

[https://en.m.wikipedia.org/wiki/Ether_addiction](https://en.m.wikipedia.org/wiki/Ether_addiction)

</comment><comment><USER12> I can't tell if this is real

<comment><USER13> [https://groups.oist.jp/qwmu/tsumoru- shintake](https://groups.oist.jp/qwmu/tsumoru-shintake)

This does indeed appear to be a serious researcher.

</comment></comment><comment><USER14> | wonder if diethyl ether would work similarly - its a shorter acting chemical

</comment><comment><USER15> What about inhaling eucalyptus against SARS-CoV-2 (or influenza)?

</comment><comment><USER3> if it was not submitted on the 15th I would probably think this was an April fools joke.

<comment><USER9> The joke via backdating the Cornell site could be a prank by both. Just change 3 dates.

Whiskey, Sake, come on. Just the Wodka and Russian coauthor are missing.

</comment></comment><comment><USER16> Can vape pens be used for this ?

</comment><comment><USER9> April 1st, well done

</comment><comment><USER17> Need testing

</comment><comment><USER18> April 1st

<comment><USER13> see above, paper was submitted mid-march.

</comment></comment><comment><USER19> I wonder if this will get to Mitch McConnell, he'd be promoting the hell out of it (Three of his top five individual donors have ties to the Kentucky-based maker of Jack Daniel's whiskey).

<comment> grayed-down JD is distilled in TN, but there are other fine KY bourbons that will do just fine. And Cocaine Mitch better promote his states distilleries along with all the other fine business located down there in KY.</comment></comment>


A better way to search YouTube for music - <AUTHOR> http://tunesicles.com/hn

<comment><USER2> Some criticism and suggestions, in no particular order:

\- If I click in the main search field when there is already something in there, my input disappears.

\- What is the Ti column in the playlist? If it is the play time then there is something broken: I see 388, 0:0, 4:6, among sensible times.

\- The playlist is seems non-interactive, I found double-click and drag-and- drop functionality by accident.

\- The player controls are missing, took me a while to see them on the bottom of the screen.

\- No full screen for video.

\- The on/off button in the corner needs at least a label.

\- The menu items About and Contact don't change the cursor to a pointer.

\- The sidebar with explanations disappeared after a reload.

\- All sorts of misalignments and layout oddities, like height of the playlist, see this screenshot <http://i.imgur.com/Sy8RP.png>

\- Clicking two separate "add to playlist" links for to albums, the individual tracks are intermixed, also some track numbers are duplicated.

PS: I wrote this comment hours ago, could only submit it now.

<comment><AUTHOR> Thanks for the feedback. And yeah TI stands for track length. The others will be added. Thanks!

</comment></comment><comment><USER3> A nice feature to add would be a highlighted or bold title for the official music video. Youtube video titles are often misleading, sometimes titles even include "Official" when they are actually dubstep remixes or cover versions.

I honestly can't think of how this could be automated though. Maybe integrate some sort of crowd-curation with Official videos being verified by users of the site.

<comment><USER4> If the user of the video is <usernam>VEVO, then it is official. There are other copies of "official" videos out there. Those will have to be crowdsourced like you say though.

<comment><USER5> But again you may not want to listen to anything from VEVO even if it is official. Every track they upload starts with a full minute advertisement for me.

</comment></comment></comment><comment><USER6> For the lazy I also mashed up last fm database & youtube .. <http://fmix.heroku.com> .. enter artist or artist and song.

</comment><comment><USER7> Out of curiosity, where do you get your album and artist information (<http://tunesicles.com/autocomplete/daft%20punk>, for example)? It looks like you are using MusicBrainz and Last.fm in your "About" modal.

Have you found you need to take an aggregate of the two?

How does the quality and completeness of each database compare?

<comment><AUTHOR> Yes so if you do a search you will see that there is an option for "view top songs". That data comes from last.fm. Everything else comes from musicbrainz (<http://musicbrainz.org/>). I have fount that service pretty complete. There are a few others but MB is pretty large and has a good API.

</comment></comment><comment><USER8> Is there really anything better for searching youtube for music than just using google?

<comment><AUTHOR> Well, yes. The poor thing about youtube is you cant search for songs while one is playing without having a bunch of tabs. So I just made it so all can happen in the dropdown.

</comment></comment><comment><USER9> I'm going to shamelessly plug my YouTube Audio streaming app on the store for your iPhone or iPod Touch, as some of you may be interested: <http://youtuneslive.com/download>

<comment><AUTHOR> Nice. That is what I was gonna call my application originally :P

</comment></comment><comment><USER10> @Jonovono How do you ensure that your search is constrained over music videos only?

<comment><AUTHOR> I don't really. I can't remember if I am able to only search music videos from the youtube API or not. I'll check it out now and edit. But right now I basically just search youtube with the song name, artist and album and use the time.

</comment></comment><comment><USER11> The view is broken on Safari (OS X, and I believe other platforms). Also I found this app very confusing, there are so many details/features and I couldn't figure out what to do with this app. The point is not made clear.

<comment><AUTHOR> Thanks for the heads up. And did you watch the demo video? :P. I tried to make it fairly friendly. And the point I guess is to be able to get a bunch of songs playing so you can search for new ones and add them without stopping the music which you can't on youtube.

</comment></comment><comment><USER12> Site appears broken in Chrome on Android ( <http://i.imgur.com/Y9178.png>)

Can't scroll to the right at all.

<comment><AUTHOR> Yeah, have no optimized for mobile. I think id make an app if anything for mobile phones.

</comment></comment><comment><USER13> <http://www.youtify.com/> does Youtube + Soundcloud with a nicer UI.

<comment><AUTHOR> Cool. Doesn't do the artist / album thing though. But I want to implement Soundcloud too.

</comment></comment><comment><USER14> Widgetpocalypse! <http://db.tt/dOgE9XtO>

<comment><AUTHOR> hah that looks amazing :P. I admit, need to work on mobile. I think the easiest would just to have an app for it though.

</comment></comment><comment><USER15> Name sounds like testicles, which is fitting since the site looks like balls in chrome.

<comment><USER7> Are you on Android? I am on Win7, Chrome 20 and things work great and look in order.

<comment><USER16> It is all jacked up in Chrome 20 on a mac lion.

<comment><AUTHOR> Interesting. Im on Chrome on Snow Leopard. Ill see what I can do.

</comment></comment></comment></comment><comment><USER17> Nice.

It's funny to think that two years ago, while in a travel to Sweden, Youtube had a similar feature (not for music, but you could search without stopping the current playing video). When I got back home the feature was gone, so I assume they were testing the feature in different countries?

Does anyone recall this?

<comment><AUTHOR> Interesting I did not know this. Do you recall how it was executed?

<comment><USER17> If I recall correctly, I did a search while a video was being played. Then, when I pressed enter on the query, a list of results appeared on top | bottom of the video.

If I selected one of the videos on the search results, they were auto-added on a right playlist. If you wanted to move to the next video, you could select it on the right playlist.

I found it really intelligent and useful, but at the start it felt a little weird.

My assumption was that it was too difficult for everyone, and Youtube decided to keep playlists as they were.

As for in which period of time I remember this, I was in Uppsala from 28 Apr 2010 to 04 May 2010</comment></comment></comment>


Show HN: A Guide to TDD'ing React Components - <AUTHOR> https://github.com/zpratt/react-tdd-guide

<comment><USER2> So it begins:

        Why io.js instead of node.js? The latest versions of jsdom only work with io.js

<comment><USER3> Have you tried jsdom-node? Its a node-compatible fork of jsdom. Be warned though that jsdom in general is deprecated, everyone is using dom.js now. (However it requires ES6.)

(kidding)

<comment><AUTHOR> I had not seen node-jsdom. I see that it is forked from jsdom 3.x, which still works with node.js. Do windows users mind having to install the visual c++ compiler?

<comment><USER4> As a windows user, I avoid developing with node on windows machines, because building dependencies caused me trouble many times. pg, socket.io, bcrypt, jsdom, countless others.

If it's just the vc++ compiler, chances are node devs already have it installed anyway if they do in fact work on a windows machine.

<comment><USER3> Ok, this is just unbelievable. My original post was a complete fiction. I just made it up. I made up jsdom-node, I made up the fact that it was a node.js compatible fork, I made up dom.js, I made it all up as satire to poke fun at the javascript community. I thought these two replies about the C++ compiler were just continuing the joke. Honestly.

Imagine my shock to realize that the fake jsdom-node project I made up actually exists (in the form of node-jsdom) and actually exists for the reason I made up. What. The. Fuck.

[https://www.npmjs.com/package/node-jsdom](https://www.npmjs.com/package/node- jsdom)

</comment></comment></comment></comment></comment><comment><USER5> The tests generate a _random_ number of items. How it is a "good example" of TDDing react components?

It will fail or pass based on something random so you might thing you're good to go but in fact your test fails.

It also doesn't test how something will be _used_ but directly what it is checking ".textContent" equality.

Overall this is nothing like what UI tests should look like IMO and it's the sort of thing that causes people to hate testing UI.

<comment><USER6> Asking as someone who knows extremely little about testing or TDD but hopes to learn, why should one avoid using randomness in tests? What would be a better approach?

<comment><USER7> The great value of unit testing is reproducibility. You can't always find the cause of the bug just from failed test logs. You might need to re-run the test to debug and tweak the code. And if your test is randomly failing, it would be quite tricky to do that.

Randomness is OK. Just make sure that RNG yields the same values each time test run. For example in Java the class Random is guaranteed to yield the same values for the same seed. I'm not sure that JavaScript has this class, probably you'll have to write your own version or find it in some library.

<comment><USER8> I would argue the opposite. Running a passing test over and over again when a piece of code hasn't changed doesn't actually gain you anything (though if you are refactoring it will). Using randomness will test a lot more cases.

<comment><USER9> You're right, but I would at least class that as a different sort of testing – it's much closer to e.g. fuzzing than unit testing. Both are valuable though.

<comment><USER10> My thoughts exactly. Randomness has a place in tests, but not in _unit_ tests.

</comment></comment></comment></comment></comment></comment><comment><USER11> I cannot respect a TDD guide that is dependent on your editor. Doing tdd is about code structure and implementations decisions imho. If you need to check some box in a dialog window of a certain editor in order to run your tests, your test runner isn't good enough.

<comment><AUTHOR> It's not dependent upon my editor. Maybe I should move this up higher in the readme: [https://github.com/zpratt/react-tdd-guide#running-the- tests-...](https://github.com/zpratt/react-tdd-guide#running-the-tests-for-a- section) . All I was adding for Webstorm was a note for the convenience of people who choose to use it, which I might be able to move into a mocha.opts.

</comment></comment><comment><USER12> Is a Jest version planned? I'd love to see a tutorial based on how the fb team does it.

<comment><AUTHOR> If there is enough interest from the community, I will work on a jest version as well. Please add an issue to the repo so this can be tracked.</comment></comment>


Apple tells retailers to stop selling the Galaxy Nexus and Tab - <AUTHOR> http://venturebeat.com/2012/07/13/apple-injunction-letters/

<comment><USER3> Apple should focus on competing on the quality of THEIR product. Not rely on lawyers and back room deals to cripple the competitions products.

There doesn't seem to be any information stating whether or not Apple made any attempt to tell retailers they could sell these products again after the injunction was lifted.

This is as anti-competitive behavior at its worse. Before we know it Apple will have formed the OAAA (Only Apple Association of America) and be lobbying congress to force consumers to pay a fee just for owning non-Apple products.

<comment><USER4> _force consumers to pay a fee just for owning non-Apple products._

People already pay a fee for owning non-Apple products. All the crashes, malware, borked phones, wireless never working quite right, external monitors never working quite right, and various circles of driver hell aren't free.

<comment><USER5> I assume Microsoft's patent extortion is included in the price of my Android tablet... sigh...

<comment> mkr-hn Licensing is a fair, non-monopolistic way to settle patent infringement. The fact that Android thrives despite the fee is proof of that. Microsoft is using the system as intended. The validity of the patent is another matter, but the companies paying the fee don't seem to be interested in settling it.

<comment><USER6> >the companies paying the fee don't seem to be interested in settling it.

I think most of the companies are not interested in a protracted legal battle with _a partner_ many of them still rely on for licensing arrangements in other businesses. Microsoft is just playing "good cop" to Apple's existential "bad cop" threat. Doesn't mean they like paying tolls to Redmond.

<comment> mkr-hn I'll take that over weaponized patents. Microsoft is showing restraint, even if it's only because of their mutual interest in knocking Apple down a peg. I'll criticize Microsoft as soon as they use those patents to block competitors.

<comment><USER7> Extorting fees for every Android device sold shows _restraint_? Maybe by comparison to Apple, but I prefer not to grade on a curve.

And as for blocking competitors, how many vendors have looked at Android and reconsidered due to the current litigation environment and imposed fees? I don't have an exact number, but I'd bet on "at least one". So, please criticize away. :)

<comment> mkr-hn Is it every device? I haven't been able to find a good overview that lists companies that have signed on and companies that haven't, or details on the specific patents. I couldn't speculate on what might have been without more information.

<comment><USER7> Set your spin filters to maximum and try this Microsoft article from last year: [https://blogs.technet.com/b/microsoft_on_the_issues/archive/...](https://blogs.technet.com/b/microsoft_on_the_issues/archive/2011/10/23/microsoft- s-new-patent-agreement-with-compal-a-new-milestone-for-our-android-licensing- program.aspx?Redirected=true)

I think they've sued a few more vendors into joining since then.

<comment> mkr-hn I don't see much in the way of details. It looks like a blanket license, which isn't a bad thing if Microsoft has something other companies want. By that understanding, a licensee could use Metro or something derived from it.

My understanding is that patent-related legal services are extremely expensive. A few dollars per device is easier to deal with than months of patent research every time a manufacturer wants to change something. Especially if a company with patents has one the manufacturer wants to use.

<comment><USER6> If only settling with Microsoft indemnified ODMs from future litigation risk!

This is not about providing a cheap alternative to patent-related legal services, it's about a dynastic enterprise using the threat of a flawed patent system against it's partners and former partners to regain lost competitive advantage in the market place!

The silver lining is still a silver lining just for Microsoft. Sales of Windows phone 7 speak for themselves (and the ODMs)

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> Ignoring the obvious patent ridiculousness, I'm a little bit surprised and dismayed to see Apple going so hard after Android in this way.

1) As a consumer, competition in this space is overwhelmingly positive. You can already see a number of improvements Apple has made to iOS as a result of Android, and a strong Android OS will continue to keep them on their toes.

2) You have to wonder if it is even good for Apple to win in the long run. They have so much control over the iPhone ecosystem, getting too much market share in the mobile/tablet space would very likely garner unwanted attention from the DOJ. It is possible Android is a significant buffer against an anti- trust action similar to what Microsoft saw in the 90's.

<comment><USER9> This just tells me to go out and buy one of these, since Apple sees it as a threat. Which means its probably a decent device. They haven't pulled a stunt like this on all the other crappy tablets that have come out.

<comment><USER8> Like briandear mentioned, this is more directed towards Samsung in particular (although Android itself is a big part of it, and this is part of a broader war on Android), but at least part of the reason I think Apple is going after the Galaxy Tab so strongly is that is that, from a physical perspective, it looks quite a bit like the iPad. When a few of my co-workers got them and had them sitting on their desks, I sort of assumed that they were iPads - <USER2> very closely resemble them.

While I think Apple would still be pursuing them without the physical resemblance, at least some of the strong reaction you're seeing is due to it, so I wouldn't necessarily take their reaction as an endorsement of the Tab (although I have heard it is quite good).

<comment><USER9> My guess if it looked like the iPad but provided a sub-par experience, Apple would be laughing in their Ivory Tower about how cute it is they think rounded tablet edges make all the difference.

</comment></comment></comment></comment><comment><USER10> Everyone talks about how innovative Apple is and how innovative Steve Jobs was and how he changed 'the world'. But no one talks about how much innovation Apple has crippled more than they had contributed.

For example, a recent broad patent called Universal Search was used by Apple to sue Android OEM's and the end result? The feature was removed from certain Android phones to avoid litigation. And mind you, Universal search had long existed before Apple had patented it. This is just one example, but there are many many broad patents that Apple uses to cripple innovation. The end result is that the users lose more than these companies because they are missing out a lot of features that their devices are capable of implementing. Funny how this is something that is not written much about by these tech Journalists. You never see someone writing how Apple crippled innovation, but only how 'cool' Apple is or how 'innovative' they are. Pathetic.

We need a better, unbiased source for technology news. The current set of tech journalists sound more like Apple sales men. We live in a world where we are forced to read what the journalists think of the news rather than just the news itself. Hope someone from HN builds such a platform.

<comment><USER11> I love the fact that the huge legal teams from Samsung, HTC, Google etc can't find prior art for Apple's "universal search" patent but you can.

Or maybe if you actually read the patent you would realise it is for a specific client side, plug-in based implementation which at its time definitely didn't exist on any OS.

<comment><USER12> Wait, no prior art was found? Did I miss an announcement, a failed patent suit, or some other piece of news, or are you just assuming things there?

If the original patent is specific enough to cover only Apple's particular method of searching a phone, then how could Android's unified search be found to be infringing without some sort of reverse engineering or source code examination? If this examination had been done, surely we'd have the results published somewhere.

On the other hand, if the patent was general enough to cover _any_ search across multiple components on a device, then surely it should not have been granted and we should not be cheering for a company that exercises such a monopoly?

If this unified search patent can be used to stop a phone from searching through multiple data types and components, do you actually think that's something that should stand up in court in the first place? Or are you just going to argue that Apple is just making use of the monopolies granted by the system, the rules of the game, and should be excused anyhow?

</comment></comment></comment><comment><USER13> It's quite sad to see this. How many people here are using the Galaxy Nexus? Google just pushed the 4.1 update and it is simply an awesome device and os. It definitely serves a more technical audience than the iPhone, but the power and customizability is amazing. I like the iPhone, but I just prefer the flexibility of the Nexus and the fact that no contract is required. The direct from Google model and Android's open philosophy simply works better for me. Choice is a good thing, the last time I checked.

<comment><USER14> Thanks for the recommendation. AT&T contract just expired, and I'm looking into getting an Android.

<comment><USER13> Besides the nice hardware on the Nexus (although not quite as powerful as the Galaxy S III), you get almost instant OS updates. Other devices have to wait a few months (if they ever get the updates) since the carriers control the updates and have custom themes on top of Android.

<comment><USER15> I don't really care about "powerful" hardware, but I have heard bad things about the GPS and camera in the Nexus, which, combined, are about 80% of the reason I use a smart phone. I'm going to give the GS3 a shot and just hope that the wonderful folks at Cyanogen will work their magic.

</comment></comment></comment></comment><comment><USER16> Being Sicilian I'm well placed to know how to name this kind of acts: mafia.

The only difference with traditional mafia is that in this case the act is dressed with the clothes of a big corporation but the underlying meaning of this kind of acts is just the same.

<comment><USER17> You mean outside of the physical coercion, eh? That seems like a big difference in my head.

If I petition the city to have my neighbor trim back his tree, it is one thing. If I beat him and threaten his family as an encouragement to trim the tree and give me $20, it is another thing altogether.

<comment><USER16> Actions can be mafia even without physical violence.

As everyone can see the notice was sent by Apple itself not by an US institution like a tribunal or a governmental agency.

Even juridical acts can be a form of violence expecially if they came from a big organization against a small retailer. The fact that there is no physical violence put them in another plan but violence and intimidations are always of the same nature and qualifies this act as mafia (in my point of view).

<comment><USER11> Seriously. What ARE you talking about ?

Governments don't send notices like this. Lawyers do. Which is exactly what happened in this situation.

<comment><USER18> I've gotten letters like this from the IRS...

</comment></comment></comment></comment></comment><comment><USER19> It's sad to see what Apple is becoming.

They can not win this war, probably not even delay the outcome by a measurable margin.

Meanwhile Android begins to leapfrog them not only on hardware (which has been the case for a while, short of tablets) but also on software and the holy grail of user-experience.

They still have quite an edge on the UX-front but that is destined to fade if they don't come to their senses really soon now.

<comment><USER20> The way I understand it, they're not doing it for profit. They're doing it to scare the hell out of Google, Samsung and HTC not to copy the design of Apple's products. They're just making an example of Samsung to show that they're ready to whatever necessary to protect their IP, even at the cost of tarnishing their own brand.

</comment></comment><comment><USER21> Patent Trolling by Apple. This is just silly, do they really believe they can keep their edge this way? Intimidating 3rd party vendors?

<comment><USER22> If Apple really felt their product was superior, I'm sure they wouldn't need to worry about their competition enough to sue them.

<comment><USER23> That's reading a bit too much into it.

Apple's lawyers have always been busy. In the "PC era", Apple sued businesses that dared to use an apple as its logo.

<comment><USER24> What I have gathered from US law is that they have to do it in order to protect their trademark. If they don't sue, it's same as giving up the trademark. Please correct if I'm wrong.

<comment><USER25> You get a trademark for a specific context.

If Apple's trademark was restricted to the context of computing (likely), then suing anyone who dared using an Appple in their logo was beyond the score of necessary protection.

<comment><USER26> One problem Apple computer had is that it's trademark was limited to computing. That caused problems when they branched out to other markets such as 'computers that can do MIDI'

In particular, they had quite a few disagreements with Apple Records about doing audio. Even though more or less the only people who know Apple Corps/Records think "of the Beatles' records", they took action against Apple even as early as 1978 (<http://en.wikipedia.org/wiki/Apple_Corps_v_Apple_Computer>)

I think those lawsuits may have affected company culture at Apple Computer, now Apple Inc.

</comment></comment></comment></comment></comment></comment><comment><USER27> It may just be my perverse nature, or some variant of Streisand Effect... but this just makes me want to buy one.

[disclosure: I'm long AAPL]

</comment><comment><USER28> I remember reading in a 1st Circuit (I think) opinion that something like 60% of challenged patents are invalidated. This strategy strikes me as quite dangerous for Apple. They risk losing on average a bit over half of the patents at issue, and they could lose everything. Worse, even if they win, the patents at issue will be worked around and it will be a temporary setback. Apple really gets very little out of this fight.

So yeah, given that reality it would probably be smarter to try to focus on, well, actually trying to dominate in the marketplace rather than in the courtroom.

<comment><USER29> > They risk losing on average a bit over half of the patents at issue

And the other half get significantly strengthened.

<comment><USER28> define "strengthened."

I don't know what percentage of patents survive by being read narrowly by a court.

The thing is that three things can happen to a patent when it is challenged:

1) The court can say "that's not a valid patent" kind of like the Supreme Court recently did in Mayo v. Prometheus (Prometheus patented how to interpret test results. The Supreme Court said you couldn't patent the results of the test, just the method of testing.)

2) The court can say "Ok, so the following is legitimate prior art, and additionally if we read this broadly, it can't be patentable, and so what's left when we read it narrowly and leave out the areas covered by the prior art is yours." In this case the patent is "strengthened" in the sense that everyone has a better idea of what will happen next time in court but it is also narrowed.

3) The court can let the patent stand as-is.

The problem is that while the latter two seem like they strengthen the legal position the next time around, where a patent was previously unknown or disputed, they also weaken the market impact because they provide larger reasons to work around the patent.

So I don't know. I don't see an upside for Apple here other than a very, very temporary edge in the marketplace.

</comment></comment></comment><comment><USER30> What did we think they were going to spend millions in court trying to remove competitors then not act on it ?

</comment><comment><USER31> I love the British legal system... _a U.K. judge said the tablet is "not as cool," and thereby doesn't infringe on the iPad._

<comment><USER32> Potentially a smart judgment, because if Apple were to try and overturn it they'd have to argue that their competitors are as cool as they are.

</comment></comment><comment><USER5> Someone should introduce Tim Cook and judges Posner and Alsup. I'd love to watch the ensuing conversation.

<comment><USER33> Throw in Jesus and Zappa. As likely to happen.

</comment></comment><comment><USER34> Apple's suing on "form factor" ???? We need to curtail the Patent Industry, not Samsung.

<comment><USER28> Evidently Apple has patented the rectangle and working their way up to the wheel....

<comment><USER18> To be fair, no. They argument is not that the device is rectangular. Their argument is that very specific elements of the device and its packaging are virtually identical to Apple's designs.

</comment></comment></comment><comment><USER35> Samsung DID straight up copy Apple. Apple isn't going after other manufacturers, just this specific one for these specific devices. Here's a little side-by-side comparison of what Samsung did: [http://atomicsupersky.com/post/26275796849/on-the-samsung- ga...](http://atomicsupersky.com/post/26275796849/on-the-samsung-galaxy- injunction)

This all could have been avoided if Samsung didn't blatantly copy Apple. I mean, they even copied the same color for the phone icon. If you go into Photoshop and compare the two greens, they are identical. You don't accidentally do that. Samsung had the intent to copy. It isn't even about the under-the-hood aspects (which can be another discussion,) this is about the clear and obvious ripoff of Apple design.

Samsung did this to themselves. The point of this injunction is that consumers could be confused. After all, even Samsung's own lawyers couldn't distinguish the Galaxy from the iPad at a distance of 10 feet.

<comment><AUTHOR> You're confusing trademarks with patents. Trademarks are supposed to avoid consumer confusion. In fact, in trademark lawsuits it's required that you establish that there's consumer confusion, or else you have no case. It's common on these lawsuits that consumers are interviewed and asked if they're confused by the products. Apple would've done this if they had a trademark case against Samsung. In any other IP case which isn't trademark, pointing confusion, as in the Samsung lawyer example, is just a meaningless gimmick that serves no real purpose. [1] But Apple isn't suing Samsung for trademark infringement, they're suing for patents. Which means to stop Samsung for using Apple's technological "inventions". So your argument is invalid, Apple is not trying to establish confusion. They're going specifically after Samsung simply because they're by far the biggest target. And the examples in your blog are blatant cherry-picking. [2]

[1] <http://www.bonkersworld.net/obvious-similarities/>

[2] <http://www.bonkersworld.net/great-artists-steal/>

<comment><USER11> You might want to do a bit of research on something called a "design patent".

<comment><AUTHOR> You might want to read before posting. There are no design patents being used in the Galaxy Nexus ban. Their argument is Samsung copied "unified search".

<comment><USER11> The person you were replying to was talking about the Galaxy tab which did infringe on Apple's design patent.

</comment></comment></comment></comment></comment><comment><USER36> Ordered one a minute ago in protest.

</comment><comment><USER37> If you're in the US and near the Canadian border both are available here in Canada, I think.

<http://www.bell.ca/Mobility/Products/Galaxy_Nexus>

I don't know if is the new one or not: [http://www.futureshop.ca/en- CA/product/samsung-samsung-10-1-...](http://www.futureshop.ca/en- CA/product/samsung-samsung-10-1-16gb-galaxy-tab-2-tablet-with-wi-fi-silver- gt-p5113/10206558.aspx?path=7aa588628d2a99afb02dedcf012646b2en02)

</comment><comment><USER38> Wasn't the temporary ban on the Galaxy Nexus lifted? Apple is still sending these takedown notices right now, even though the ban was lifted?

<comment><AUTHOR> According to the article, Apple was sending the takedowns before the lift.

"Apple began sending those notices associated with the Galaxy Nexus on June 3, the same day U.S. Judge Lucy Koh turned down Samsung's appeal on the injunction. Three days later, however, Judge Koh suspended the injunction."

The Verge probably makes this part more clear:

"According to Samsung, several sellers received letters ordering them to cease selling the two devices in late June and early July, before the ban on the Galaxy Nexus was stayed."

\- [http://www.theverge.com/2012/7/13/3157505/apple-retailer- gal...](http://www.theverge.com/2012/7/13/3157505/apple-retailer-galaxy-nexus- tab-10-1-takedown-order)</comment></comment>


Modern Garbage Collection - <AUTHOR> https://medium.com/@octskyward/modern-garbage-collection-911ef4f8bd8e#.je48qjxug <comment><USER2>
      "As Go is a relatively ordinary imperative language with value types, its memory access patterns are probably comparable to C# where the generational hypothesis certainly holds and thus .NET uses a generational collector."

Where the generational hypothesis holds, compilers will also find more opportunities to allocate objects on the call stack, especially in languages with stronger value semantics. That means more object management will be implicitly handled by function call instrumentation.

Stronger value semantics also means fewer small objects in the presence of optimization. Not to mention that AoT compilation also tends to reduce the number of objects overall, especially with whole-program optimization.

Also, people underestimate the cost of runtime magic. Lua 5.2 added a generational collector but then removed it from Lua 5.3. They gave a year or two of warning, but nobody chimed in with use cases where the difference mattered. Removing the generational collector dramatically simplified the GC, which in practice was the better optimization on modern CPUs for real-world workloads where Lua was typically used (which includes server workloads). And this was apparently despite the fact that Lua creates tons of small objects and doesn't implement any fancy runtime optimizations like stack allocation. (The biggest optimization in Lua is probably string interning, though that actually simplifies much of the implementation.)

Over twenty years of Java and people are still far too credulous of the technological feats that JVM implementors promise. Optimizations that make sense in the abstract, even ones based on empirical studies, rarely pan out as expected. The benefits are likely to be fewer and more varied, and those same studies rarely explore possible alternatives or discount alternatives too heavily.

Look, the pressure to publish "results" in computer science is no less intense than elsewhere. When a paper comes out declaring a possible cure for cancer, many people have learned to be highly skeptical and to intuitively understand the inherent limitations and qualifications to such claims. Those same people, though, read computer science publications which much less skepticism than they should.</comment>