The Designer Fund will invest in startups where the founders are designers - <AUTHOR> http://www.thedesignerfund.com/

<comment><USER2> As a designer, I have to say this is great news. But it's probably easier to build a startup as a programmer with no design experience than as a designer with no development experience.

So it will be interesting to see how the funded companies manage to actually build their product.

<comment><USER3> Actually, I think this is fantastic due to the fact that there are brilliant designers with great ideas - and while it was hard to find developers to become technial co-founders with simply a design - now they can show they have some funding which may push the devs over the cliff.

Further - it would be interesting if the fund adds development resources to the offering.

For example - they could hire full time devs to help the funded designers get prototypes up and running in lieu of further cash.

This would be a great type of incubator who works as an enabling tech boutique.

<comment><USER2> But for me the key question is – as a designer, how will you convince investors to fund you? With just an idea? With your portfolio? With a business plan and strategy?

<comment><USER3> Well, since that is just a landing page, and appears to be founded by one of the guys behind 500 startups -- I think i will be a matter of having a good idea, having a sound design for implementing that idea and getting them to believe that if you were empowered with funding you could see that idea, based on your design developed.

I belive that having a good idea/design and the credibility of some funds behind you, you should be able to pay/convince a tach co-founder to work with you.

What would really be of value, as I mentioned, would be if this incubator provided you with some development hours. Further it would be great if they provided good development estimations based on your design.

So then they could say "You idea and design should cost about $XXX to get it to stage 1 2 or 3"

Stages 1 2 and 3 being, MVP, Beta, Market respectively.

</comment></comment></comment></comment><comment><USER4> Carbonmade was started by my co-founder and designer, Dave Gorum. Harvest, a startup also in our building in NYC, was founded by two designers as well. It's fairly common in NYC.

</comment><comment><USER5> Thank you all for the comments, questions, and feedback... it's not about me, Dave McClure, any individual designer in residence or even 500 Startups, it's about creating an ecosystem of great designer founders and designers with specialized talent in the startup game.

And we want more but the startup designer path is broken. Just look at the thousands of responses on Quora for hints... I don't even have to ask and bet that many of your companies are looking to hire a designer.... but the problem is, designers are being taught outdated education, not being mentored by other startup designers, and there's intense competition. If you think the problem is bad here, it gets worse globally.

We see this trend growing as more consumer startups are succeeding because of replicable methods for great core product idea discovery and continuously well executed user experience, not just pretty pixels. In fact we've invested in a number designer founders including Votizen's Jason Putorti, ColourLovers (also YC), WorkersNow, Slideshare, Forrst, Foodspotting, Punchd, MotionMath, Visual.ly...

So the question is how do we create more designers like Jason Putorti, who not only have the more traditional visual ability to make things look pretty, but more importantly have the engineering and development skillz along with business sense to effectively launch startups and be successful.

This begs the follow up question, so where do these great designers go? Many of my top designer friends are at agencies and big tech companies where they hone their craftsmanship and are respected. However, too few take the leap to venture out on their own and become founders/leaders, even when they get frustrated being mercenaries and trading their time for cash that doesn't scale...but some actually risk leaving the cush job...

Like consultants from Adaptive Path. On their website they actually embrace designers like Jeff Veen who sold his company to Google and Ryan Freitas one of our mentors, who sold his company to AOL. So how can we create an environment for folks like this to take the entrepreneurial leap...

They can take The d.fund path. We aim to remove this activation barrier with hand pick designers from top schools, tech companies, freelancers, even globally, to help foster a new generation of designer founders. In the process we also will create more designers available for hire and develop specialized design consulting for startups as a means to train and stay alive, not an end.

We've been growing up & to the right with hand picked and filtered designers by being radically collaborative with other groups and internally teaching our own design bootcamp and curriculum inspired by the Stanford dschool, Janice Fraser's LUXr and the whole lean startup movement. We also plan to host an even better WarmGun conference to bring together more designers and developers later this year in NYC...

More top designers are joining our community everyday because it's not about Dave, me or any one designer in residence...it's about a scalable designer ecosystem that is committed to helping produce designers that solve meaningful problems in our world, not one trick ponies & pseudo attention sucking innovation...

Many of you may have seen the YC post that got thousands of views about how it's like the Marines...which makes me wonder what happens when you combine an empathetic Jedi Designer with an elite Marine Hacker...I think you get an amazing force of real innovation....

So, help create the best path for startup designers by joining us and not just investing at least $50k in a designer founder to participate in our next accelerator batch in Mid May, but more importantly... provide the education, mentorship & especially engineering skills to make the startup designer ecosystem healthy & sustainable...

</comment><comment><USER6> How about funding where founders (3) are

1\. understands/responsible for design.

2\. understands/responsible for technology development.

3\. understands/responsible for business development.

Edit - I personally do not agree to have _artificial_ requirements of "one founder must be designer" or such sorts (including the above mentioned) for creating innovating/successful startups.

<comment><USER7> Could you explain the difference between "understands design" and being a designer?

<comment><USER3> I like the color green.

</comment></comment></comment><comment><USER8> What's the definition of a designer?

I am a recent CS grad who is making an HTML5 Canvas games site in my spare time. I'm doing everything myself so it is taking a long time.

I have never used Ruby or Rails before this project. I only recently learned Canvas and Javascript.

I have however done site design before and done art all my life. I am probably going to end up doing the layout of my site as well as all the artwork for (at least) the first game.

Am I a designer?

<comment><USER9> If you are a designer, you know it. Doesn't hold the other way though ("knowing" is required but not sufficient).

</comment></comment><comment><USER10> I think it's great to encourage designers to be founders. The arguments against commodification of design (i.e. crowdsourcing) usually include that it "devalues design."

I think more designers should take advantage of the incredible value they can create – practically for free – by being entrepreneurs instead; instead of worrying about clients that "don't understand the value of good design."

</comment><comment><USER11> Very good idea. I'm starting to really see the meaning behind "all you need is an angle". I guess you can recycle virtually anything.

</comment><comment><USER12> Sounds great, but I'd really like to more information and some demonstration of value before I sign up for some email list.

The language of the signup page, "Sign up if you want to help" also seems aimed more at people who want to help them, rather than designers who want to get funded.

<comment><USER13> I couldn't agree more. Without a tangible list of how I could even possibly be benefited, you probably are not getting my email. Even just telling me your going to send out newsletters would be enough.

</comment></comment><comment><USER14> This is a great idea. We designers are very confident about creating, designing and executing an idea with a great visual look and user experience not so much build it. So this will be a great opportunity to fund beautiful looking projects.

</comment><comment><USER15> They'd be better off rephrasing the question on the front page "what do these companies have in common" to "what do these products have in common." Android is not a company.

</comment><comment><USER16> At a cursory look, this reminds me of the hedge fund-of-funds (right before the big bust) that marketed itself as only investing in funds that were managed by women.

<comment><USER17> To my knowledge that's still around. I've heard that the prominent reason some funds tout themselves as woman-led is because some studies showed that women tended to get consistent although smaller returns then men-led funds. Had to do with not taking big risks and making more calculated decisions. This is all anecdotal of course.

</comment></comment><comment><USER18> From whois - Enrique Allen registered domain. According to his linkedin / crunchbase profile he is a Stanford researcher / TA, and founding member 500 startups. Sounds interesting.

Also, [http://venturebeat.com/2011/04/06/500-startups-designer- fund...](http://venturebeat.com/2011/04/06/500-startups-designer-fund/)

Edit: thanks for correction. Sincere apologies for silly oversight.

<comment><USER19> Enrique = he. And he is cool - he's the designer-in-residence at 500 Startups and a very chill guy to talk to.

</comment></comment><comment><USER20> When the founder starts with an innovation in user experience, good things usually happen.

</comment><comment><USER21> I assume this means product designers and is not explicitly just for graphic designers.

graphic design != product design

I'm excited about this fund, unless they are just looking for graphic artist founders explicitly.</comment>


The Spanish Prisoner (2005) - <AUTHOR> https://www.newyorker.com/magazine/2005/10/31/the-spanish-prisoner <comment><USER2> "Such discoveries have been enough to persuade some writers on Spain that the right side won."</comment>


LLDB 3.3 and beyond - <AUTHOR> http://blog.llvm.org/2013/06/lldb-33-and-beyond.html

<comment><USER2> "Python is currently embedded inside of LLDB and available through an interactive interpreter." Nice. [http://lldb.llvm.org/python- reference.html](http://lldb.llvm.org/python-reference.html)</comment>


Ancient Artists Carved Camels in Saudi Desert's Stone - <AUTHOR> https://www.nytimes.com/2018/02/15/science/camels-sculptures-desert-saudi-arabia.html <comment><USER2> Hard to get a sense of scale from some rocks...

<comment><USER3> There was a car in the background. The images were huge.

<comment><USER2> Life size actually - the article has been changed, there's a picture with a person in it now.</comment></comment></comment>


SRI's Micro Robots Can Now Manufacture Their Own Tools - <AUTHOR> http://spectrum.ieee.org/automaton/robotics/industrial-robots/sri-micro-robots-can-now-manufacture-their-own-tools <comment><USER2> It's another step towards a von Neumann - Bracewell probe. I'd like to see self-replication soon!

</comment><comment><USER3> Add this flexible assembling mechanism to 3D printing and some traditional robotics... and you have a very interesting builder-thing indeed.

Highly complex machines such as drones could be rapidly manufactured or repaired from some raw materials in the field, so long as pre-manufactured pieces such as microprocessors, optics, motors, etc. were in place.

</comment><comment><USER4> But they're not really robots though? Just actuators.

<comment><USER5> I challenge you to come up with any definition of "robot" that isn't hotly contested by someone in robotics. (Disclaimer: I'm a career roboticist.)

The most succinct definition I've ever heard: A robot is a machine that doesn't work; as soon as it starts working, it's called something else (vacuum cleaner, autonomous car, dishwasher, Rosey, etc.)

<comment><USER6> Your definition of robotics is similar to one I've heard for artificial intelligence. As soon as AI works for something, it's renamed (machine learning, computer vision, natural language processing, etc.)

</comment></comment></comment><comment><USER7> DIY version by mikeselectricstuff (Apr 2014)

[https://www.youtube.com/watch?v=7_Wh6i8Hb6c](https://www.youtube.com/watch?v=7_Wh6i8Hb6c)

</comment><comment><USER8> On the magnetic levitation at the end: how's that going to work? Like [https://en.wikipedia.org/wiki/Magnetic_levitation#Servomecha...](https://en.wikipedia.org/wiki/Magnetic_levitation#Servomechanisms) ?

</comment><comment><USER9> My friend works on this project at SRI and I've had the fortune of seeing the little robots in action. It's quite a marvel seeing structures getting built in this distributed fashion via a group of robots.

</comment><comment><USER10> Wow, those videos are mesmerizing. Impressive work, feels like the future!

</comment><comment><USER11> I wonder if it could be used for recycling of electronic component which at the moment is incomplete and/ or unprofitable process

</comment><comment><USER12> seeing DARPA on the title screen of the video naturally cross connects it with the other news about Pentagon drone swarms - lets SRI robots have "weapons" instead of tools, and swarm of carbon fiber bodied Piranya or killer bees with titanium teeth or stingers with high voltage contacts naturally come to mind :)

<comment><USER13> The robots are controlled by the surface they're traveling on, they don't work outside of it, much like how you can't glide an air hockey puck down I-5.</comment></comment>


A Brief Look at Grid-Based Layouts in Web Design - <AUTHOR> http://sixrevisions.com/web_design/a-brief-look-at-grid-based-layouts-in-web-design/ <comment><USER2> > A Brief Look at Grid-Based Layouts in Web Design

Yes, most certainly "brief". Somehow the author managed to write the entire article without once showing an example of the HTML/CSS markup one would use to create a grid. Here's a bit more depth:

[http://designshack.net/articles/css/rolling-your-own-grid- la...](http://designshack.net/articles/css/rolling-your-own-grid-layouts-on- the-fly-without-a-framework/)

It turns out that Microsoft has created their own vendor-specific version of grid CSS, all elements of which are prefixed with -ms- (as in -ms-grid). But I recommend that people avoid the vendor variations on the grid system, and I'm not the only one making this recommendation:

[http://www.quirksmode.org/blog/archives/2010/03/css_vendor_p...](http://www.quirksmode.org/blog/archives/2010/03/css_vendor_pref.html)</comment>


30C3 Keynote with Glenn Greenwald - <AUTHOR> http://media.ccc.de/browse/congress/2013/30C3_-_5622_-_en_-_saal_1_-_201312271930_-_30c3_keynote_-_glenn_greenwald_-_frank.html

<comment><USER2> One of the very first points Greenwald makes is that encryption software is ridiculously hard to _install_ and _use_ for even versed users, nevermind the general populace. I didn't check the rest of the conference materials, but i've no doubt that nobody picked up on that; even though it represents a very hard but very worthwhile problem to pursue and solve.

<comment><AUTHOR> A piece of encryption software for mobile instant messaging that is relatively easy to install and use is Threema [https://threema.ch/en/](https://threema.ch/en/). It appears to be quite popular among 30C3 attendees this year. I was also able to convince about 20 of my non-geek friends to use it instead of WhatsApp.

It doesn't support group chat on Android yet (on iOS it does), but it's under development.

The security section on the FAQ page might be interesting to HN readers: [https://threema.ch/en/faq.html](https://threema.ch/en/faq.html)

(I'm not affiliated with Threema)

<comment><USER3> I'm noticing this app is not open-source in anyway.

That's game-over with the types of threats HN is concerned about these days.

Of course to some degree, the smartphone is so compromised in so many different ways that it's basically not even worth _trying_. Your SIM card runs code against you, the OS reports back in dozens of ways to 2-3 different entities, app stores can't be trusted, advertisers...

<comment><AUTHOR> The app itself is not, but the crypto part is. Also see [https://threema.ch/validation/](https://threema.ch/validation/)

</comment></comment></comment></comment><comment><USER4> It was a great keynote, for anyone wondering. I think Greenwald can be a bit dull to listen to - probably the legal background - but he struck a nice balance and even included some ever-so-rare self-deprecation. :)

</comment><comment><USER5> The video has a English and German audio track, I couldn't figure out how to get English in Firefox, but it was simple to switch with VLC.

</comment><comment><USER6> No idea what this site is or what the keynote's about. A little background please?

<comment><USER7> The CCC is one of the oldest hacker-oriented computer conferences in Europe. Many wonderful things have sprung from this font of hackerdom.

Glenn Greenwald is the guy who broke the Edward Snowden/NSA story this year. He was invited to do the keynote address at CCC, and he gave us all many important things to think about. I strongly suggest you take the 30 minutes to watch the keynote, and gain your own understanding of the issues he brings up - this is vital to our future.

<comment><USER8> Why take 30 minutes to watch it when you can read it in something like 5? [https://news.ycombinator.com/item?id=6984525](https://news.ycombinator.com/item?id=6984525)</comment></comment></comment>


Ask HN: What are improvements that can be made on Paired Programming? - <AUTHOR> With the new current state of work being more distributed and remote, I find myself on more than a few long paired programming sessions that feel like a time sink and/or chore. I was wondering anything that I can introduce to make it better? Does anyone have experience pair programming online a lot? <comment><USER2> A great thing would be all sides involved being able to use their own stack of tools to write and navigate the code.

Usual remote control/vnc limit you to use whatever the other person is using, which makes it more difficult when that person isn't using the same stack you are used to (different terminal emulator, shell, editor, OS)

If there was a way for me to edit a file using vim and the other person to use vscode, for example, that would be a good step forward, all while still being able to see where the other's cursor and selections are.

<comment><AUTHOR> Yeah, if only there was a plugin for code sync between editors. It would help to be more engaged from both parties.

<comment><USER2> Look! Someone made just that cross-editor sync: Gitduck [https://news.ycombinator.com/item?id=24228826](https://news.ycombinator.com/item?id=24228826)

</comment></comment></comment><comment><USER3> I've noticed that in my role as team lead i spend more time watching screen shares etc.

What I prefer is using VS Code to Live Share as it makes it much easier to talk through and show what I mean or review in real time.

Its hard, but it is worth the time when two devs can work together in such a manner.

<comment><AUTHOR> We're pretty locked into the JetBrains licensing scheme, but I'll look for stuff related to LiveShare in IntelliJ

</comment></comment><comment><USER4> PP is counterproductive enough in person. Doing it over Zoom seems like a sadistic corporate (and corporal) punishment. Divide up the work like a normal dev team, and program in solitude as G-- intended.</comment>


Screen shots of source code seen in TV and film - <AUTHOR> http://moviecode.tumblr.com/

<comment><USER2> Does anyone know what monospace font is used in Elysium? I thought while watching it that it was a really good looking font. I'd love to use it myself.

Screenshot from the blog: [http://25.media.tumblr.com/03cdd6a57e4e8227386f5affce47c627/...](http://25.media.tumblr.com/03cdd6a57e4e8227386f5affce47c627/tumblr_mytx7hFJaC1tognpro1_1280.png)

<comment><AUTHOR> FF Isonorm Monospaced

[http://www.identifont.com/show?3K3](http://www.identifont.com/show?3K3)

</comment></comment><comment><USER3> Now I need one of those glass screens to code on.

<comment><USER4> Me too, maybe we can start a kickstarter project to make that happen!</comment></comment>


Loopt offers its service to Sprint users - <AUTHOR> http://online.wsj.com/article/SB118463593061968439.html?mod=technology_main_whats_news/ Unfortunately you need to be signed in the read the rest of the article. <comment><USER2> Sam Altman is one of the nicest Silicon Valley entrepreneurs I have ever met in my life.

</comment><comment><USER3> Apparently Boost Mobile is a Nextel subsidiary, and now that Sprint owns Nextel, it explains why Sprint/Nextel is the next logical carrier. This also makes you wonder if AT&T or TMobile would ever support it.

</comment><comment><USER4> Will the "Business Version" Iphone have GPS? With their "buddy buddy" relationship with Google you'd think this would be a must.

</comment><comment><USER5> Congrats!

I'm not a fan of apps like that and would never use it but I can see why someoene else might.

</comment><comment><USER6> Those dudes need to be all over Apple and AT&T to be able to run on the iPhone.

<comment><USER7> 1\. The iphone doesn't have GPS

2\. The existing loopt software is j2me, which the iphone conspicuously doesn't support.

3\. Loopt does have a website, not sure how well it works on n iphone, but since the iphone is basically acting like a small computer (no gps, has a mouse) it seems like the proper channel to the service.

<comment><USER8> If the iPhone doesn't have GPS, the carriers should be all over Loopt, because it's one of the few things they can offer that Apple+ATT can't.

<comment><USER9> Apple's decision not to include GPS may be indicative of phones relying more and more on wifi and 2G/3G networks for "cloud" based approaches to location and mapping.

I can't think of many problems that require GPS.

<comment><USER10> > I can't think of many problems that require GPS.

It's extremely valuable in all sorts of applications. Google maps + GPS would be amazingly useful and would severely damage Garmin's market. I would use it for mapping my bike paths and "geomarking" great restaurants.

<comment><USER11> You can partially compensate the lack of GPS using cell id and user generated data to bind it to objects of interest in proximity. You can even add real GPS coordinates from phones that have the capability. It is a startup idea I chose not to pursue.

<comment><USER7> This is maybe useful to figure out what city you are in, which might save a click or two here and there, or might save some time loading up a high level map. It's not that exciting, and like I said earlier apple would need to be fairly convinced it will "just work" to deploy it.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> Congrats to the Loopt guys!

<comment><USER13> Yes, congrats - this is great news!

</comment></comment><comment><USER14> when can i get this? been waiting for a while for this announcement...

<comment><USER15> I went into "Get New Applications" and searched for loopt and didn't find anything. I think the WSJ's announcement is only saying that Sprint will be offering Loopt soon, not that it's available for download right now.</comment></comment>


Show HN: Convert CSV files into MySQL insert scripts - <AUTHOR> http://database-import-scriptor.appspot.com/ <comment> pi-rat Or just do something like:

      LOAD DATA INFILE 'data.csv' INTO TABLE mytable
        FIELDS TERMINATED BY ',' ENCLOSED BY '"'
        LINES TERMINATED BY '\r\n'
        IGNORE 1 LINES;

<comment><USER2> If you're fortunate enough to be able to put `data.csv` on the MySQL server, that is.

<comment><USER3> Add LOCAL (as in, "LOAD DATA LOCAL INFILE") and the path is looked up in the client's filesystem, with the file uploaded through the connection before the command is run.

<comment><USER2> Cool. I swear that didn't exist the last time I looked at the docs for LOAD DATA INFILE...

</comment></comment></comment></comment><comment><USER4> In my experience, this is actually not that difficult or novel, but kudos on trying new things. Keep it up :)

<comment><USER5> I'm surprised by how many things that aren't that difficult or novel end up on the front page. CSV related projects come to the fore every week.

<comment><USER4> Heh, maybe I should start submitting some of my more trivial projects and rack up the HN karma ;)

i.e. "A testing utility for database migrations"

</comment></comment></comment><comment><USER6> I am not putting 1TB+ per table dumps of data into a strangers website what can be done with a bit of sed or a script in ${LANGUAGE}.

Loader from Several Nines, is a tool for doing parallel loads of CSV into MySQL and MariaDB [https://github.com/severalnines/loader](https://github.com/severalnines/loader)

Mydumper is a threaded dump and load tool for MySQL/MariaDB. [https://launchpad.net/mydumper](https://launchpad.net/mydumper)

Tungsten Replicate can do batch load replication into any external datasource [http://docs.continuent.com/tungsten- replicator-3.0/deploymen...](http://docs.continuent.com/tungsten- replicator-3.0/deployment-batchloading.html) So long as you have a script for it: [https://code.google.com/p/tungsten- replicator/source/browse/...](https://code.google.com/p/tungsten- replicator/source/browse/branches/replicator-3.0.0/replicator/samples/scripts/batch/mysql.js)

EDIT: A fun extra, [https://mariadb.com/kb/en/mariadb/documentation/storage- engi...](https://mariadb.com/kb/en/mariadb/documentation/storage- engines/connect/connect-table-types/connect-table-types-data-files/#csv-and- fmt-table-types)

<comment> digital-rubber think it would be actually funny if you did, bogus data that is of course.

But uploading your files to some site that reformats plain text, this does not belong on hacker news imho.

</comment></comment><comment><USER7> MySQL already supports loading CSVs directly, why convert them first? [http://dev.mysql.com/doc/refman/5.1/en/load- data.html](http://dev.mysql.com/doc/refman/5.1/en/load-data.html)

<comment><USER8> There are occasions where you can't just do a straight insert. Perhaps you need to conditionally create a foreign record, or you want to format a value on insert instead of doing it directly in the CSV.

That said, I can't see how the OP actually helps me with that.

<comment><USER9> LOAD DATA INFILE can't conditionally create a foreign record, but you can certainly format a value on insert by using the SET clause, for example:

        LOAD DATA INFILE 'people.txt'
        INTO TABLE Person (@first, @last, date_of_birth)
        SET full_name = CONCAT(LEFT(@first, 1), '. ', @last);

You can even do funky stuff like lookups:

        LOAD DATA INFILE 'projects.txt'
        INTO TABLE Projects(@first, @last, project)
        SET person_id =
         (SELECT id FROM people
          WHERE name = CONCAT(@first, ' ', @last) LIMIT 1);

<comment><USER10> Cool! I wasn't aware you could do that sort of thing with LOAD DATA INFILE. Thanks :)

<comment><USER8> I didn't know that either - thanks for sharing.

</comment></comment></comment></comment></comment><comment><USER11> This submits to your server. If I have sensitive data, I sure as hell don't want that going somewhere where it might be stored.

Why isn't this just done client-side in Javascript?

<comment><USER12> why isn't this a trivial bash script more like it.

<comment><USER11> Indeed, but that's already been done.

</comment></comment></comment><comment><USER13> The first python script I ever wrote does csv to SQL: [https://github.com/elidickinson/csv- tools/blob/master/csv2sq...](https://github.com/elidickinson/csv- tools/blob/master/csv2sql.py) It's very rough, but I actually still use it on occasion. The Python csv library is quite good. There's a lot that can go wrong that LOAD DATA can't handle.

</comment><comment><USER14> I actually have some code (.Net) that loads xml, csv, ... into objects.

There is also a visual drawing to help you connect the dots between the properties of the uploaded file vs. the properties of the objects.

This way, all information gets loaded into the db from a single import, in the correct table.

I could seperate it in a opensource project i suppose, if anyone is interested.

<comment><USER15> I would be interested in looking at that if you opensource it.

<comment><USER14> You're a .Net developer then?

</comment></comment></comment><comment><USER16> I submitted the following file (note the blanks): $ cat testblanks.csv 1997, Ford, E350

The following was returned: CREATE TABLE testblanks (Column_1 NUMERIC(32, 16),Column_2 VARCHAR(5) CHARACTER SET utf8,Column_3 VARCHAR(5) CHARACTER SET utf8); INSERT INTO testblanks VALUES (1997,' Ford',' E350');

That was in accordance with [http://tools.ietf.org/html/rfc4180](http://tools.ietf.org/html/rfc4180)

Cool!

But the CSV format has a lot of "gotchas." See, for example, [http://discuss.fogcreek.com/joelonsoftware3/default.asp?cmd=...](http://discuss.fogcreek.com/joelonsoftware3/default.asp?cmd=show&ixPost=99824&ixReplies=25). Especially the rant about the Microsoft version of CSV.

<comment><USER3> > But the CSV format has a lot of "gotchas."

In the wild, CSV is less a format and more a meta-format (and a subset of the *SV family) with plenty of variability between dialects.

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

Can I suggest another idea? Take JSON files, and convert them into MySQL, postgres etc insert/update scripts. There is a need for this. For example, I run this hobby site [http://kivatools.com](http://kivatools.com) that imports tons of data from kiva.org - their data dumps are in json/xml format. so I've a script that refreshes the db every night, with a couple of gigs of data. It would be very useful if there was a service that can take a url (or file), and convert json/xml into mysql scripts.

</comment><comment><USER18> I think it can be done in few lines of ruby/python/whatever code. Without submitting sensitive data to remote unknown server. IMHO it would be much better idea to release code as opensource.

</comment><comment><USER19> You should be able to do this entire thing in-browser. Going further, leveraging WebSQL or SQL.js, it should be possible to pump the queries into a client-side database and run queries.

Shameless plug: I built an in-browser tool to generate SQL queries from Excel XLS/XLSX/XLSB files: [http://sheetjs.com/sexql/](http://sheetjs.com/sexql/)

Discussion: [https://news.ycombinator.com/item?id=7392665](https://news.ycombinator.com/item?id=7392665)

</comment><comment><USER20> Tried it with a file containing this:

        Field1,Field2,Field3,Int,Float,Quoted
        This,is,a,12,1.2,"""file"""

...and it returned an empty textarea.

</comment><comment><USER21> This is great! People should have better and faster ways of handling CSV -> DB interactions. We recently added native CSV loading into blaze for MySQL, PostgreSQL, and SQLITE, [https://github.com/ContinuumIO/blaze/blob/master/blaze/data/...](https://github.com/ContinuumIO/blaze/blob/master/blaze/data/sql.py#L283)

MongoDB is coming soon.

</comment><comment><USER22> Here's one I made a few years ago:

[http://utilitymill.com/utility/csv_to_create_table/](http://utilitymill.com/utility/csv_to_create_table/)

You just paste the content from excel or a csv.

It actually tries to figure out the data types and creates a table for you as well.

</comment><comment><USER23> Tested it out with GeoIPCountryWhois.csv from Maxmind, seems to work ok. However selecting the output is almost impossible, locks up Chrome. This isn't your apps fault of course. Usually I use Sequel Pro for this, which allows me to map csv fields to db columns

</comment><comment><USER24> I've found phpMyAdmin's CSV insert feature has been very useful.

Allows for quite a few options.

</comment><comment><USER25> [http://neilb.bitbucket.org/csvfix/manual/csvfix16/sql_insert...](http://neilb.bitbucket.org/csvfix/manual/csvfix16/sql_insert.html)

</comment><comment><USER26> So does this work with CSV?

</comment><comment> digital-rubber What is this for ridiculous product/ attempt?

HACKER news, not noobs-that-cant-do-shit.

<comment> digital-rubber Quite amusing, people down voting my 'minimal worded critique', apparently really like this tool and see a benefit that is non-existing. Apparently can't think beyond a solution to a problem.

Reformatting of ascii/text data, a csv, is not rocket science. Nor 'hacker (news) quality'.

And i hope that nobody afterwards realises that they should not have uploaded their csv file to your website hosted by nsa friendly google. Also adding a warning that people are submitting their data to (google, 3rd party servers you don't control) servers, would be nicer, and makes people perhaps aware that their data goes further then only their own browser.

<comment><USER12> you were not elegant or polite, but are in fact correct</comment></comment></comment>


New Language for Programming in Parallel - <AUTHOR> http://www.technologyreview.com/computing/38149/?ref=rss&a=f

<comment><USER2> Development and code examples of ParaSail:

<http://parasail-programming-language.blogspot.com/>

</comment><comment><USER3> Is it too much to provide a link to a project page or download? I've found the blog, forum, and examples and still haven't managed to find out how I can actually try this thing.

I'm interested, but only if I can actually try it. Yes, I know it's early and likely will change. That's fine, for my experimentation purposes.

</comment><comment><USER4> Can anyone give a tl;dr summary of what this brings to the table that languages like, say, Erlang (or even Verilog/VHDL if you want to go down that far and specific) don't have?

<comment><USER5> It is more like C/C++.

</comment></comment><comment><USER6> A prototype compiler will be released in the next month or so. It will be announced on the ParaSail blog and the ParaSail google group. -Tuck</comment>


I secretly started a backpack company in my bedroom - <AUTHOR> https://imgur.com/gallery/ptknq <comment><USER2> I'm in the market for a new back pack so I took a look at the shop page you posted in the comments. You may want to include more pictures. A shot into the different compartments would be nice.

And a note about your note: "Note: Backpack comes with brand woven label on front that´s not pictured."

I would kill to not have the label. It's been so hard trying to find a backpack that doesn't have a logo right in the center of it.

Shop page for those that want it: [https://urban-unbound- inc.myshopify.com/](https://urban-unbound-inc.myshopify.com/)

</comment><comment><USER3> Why secret?</comment>


Ask HN: Best channel to sell online course? - <AUTHOR> <comment><USER2> Gumroad is good, and I've heard good things about Podia as well.</comment>


Why the most popular rule of weight loss is completely wrong - <AUTHOR> http://www.washingtonpost.com/news/wonkblog/wp/2015/07/28/why-the-most-popular-rule-of-weight-loss-is-completely-wrong/?tid=sm_fb

<comment><USER2> The headline is misleading and clickbait-y.

The rule in question (3500 calories deficit results in one pound of weight loss) is mostly true, even if oversimplified. The fact that your metabolism drops as your weight drops just means that the calorie/day input needs to drop correspondingly to maintain the same deficit.

As the article states, the fact that the weight loss isn't entirely fat is a minor error. Thus, the 3500 calorie guideline is maintained, as long as you remember that it is a deficit and not a static amount.

<comment><USER3> Not to mention that the article confounds calories, a physical unit of energy, Calories, a unit of nutritional energy, and kilojoules, the preferred physical unit of energy.

At one point, it indicates that 3,500 calories corresponds to a pound of body weight, then later indicates this came from research suggesting that 3,500 kJ corresponds to a pound of body weight and that this is where the 3,500 calories figure comes from.

Problem is, 3,500 kJ = 836 520.076 calories = 836.520076 Calories. So which is it? 3,500 kJ per pound of body weight, 3,500 Calories, or 837 Calories, or something else?

FYI: A nutritional Calorie is actually a kilocalorie (1,000 calories). One Calorie = 4.184 kJ.

<comment><USER4> According to the Hacker's Diet [1], 3.500 Calories is equivalent to a pound.

[1] Admittedly poor reference, but in tone with the Hacker News. Also, the author most probably sources from the same reference the article does for the traditional conversion and I trust him to not mess up with units.

<comment><USER3> Hmm, OK. Doesn't explain how the "3,500 kJ per pound" got in there - perhaps I still have optimistically high expectations, but I would have hoped that somewhere along the line the author or their editor would have noted that a pound cannot be equivalent to both 3.5 Mcal and 3.5 MJ. But mayhaps I wax pedantic.

<comment><USER4> You're right, I was also very surprised by this error and have commented on it as soon as this was posted. I just wanted to elucidate the correct value.

</comment></comment></comment></comment></comment><comment><USER4> Wow, that is a blatant error in the very beginning of the article:

>> it was 3,500 kilojoules, otherwise known as calories

NO! Although calories and joules are indeed two measures of the same physical quantity (energy), there is a conversion factor of 4 between them: 1 calorie = 4.18400 joules.

As a side note, the usual nutritional calorie (or "Calorie", with uppercase 'C'), is actually 1000 calories, or 4184 Joules.

</comment><comment><USER5> This doesn't inspire confidence in the rest of the article: "...and found that it was 3,500 kilojoules, otherwise known as calories."

[http://www.google.com/search?q=3500+kilocalories+in+kilojoul...](http://www.google.com/search?q=3500+kilocalories+in+kilojoules)

</comment><comment><USER6> Is this the most popular rule? I'd think that it's "eat below your TDEE".</comment>


On the origin of modern humans: Asian perspectives - <AUTHOR> http://science.sciencemag.org/content/358/6368/eaai9067.full <comment><USER2> A paywalled article is completely useless for most people.

</comment><comment><USER3> t$;dr</comment>


APFS conversion is mandatory for SSD-equipped Macs - <AUTHOR> https://support.apple.com/en-us/HT208018 <comment><AUTHOR> Key quote:

"When you upgrade to macOS High Sierra, systems with all flash storage configurations are converted automatically. Systems with hard disk drives (HDD) and Fusion drives won't be converted to APFS. You can't opt-out of the transition to APFS."

I personally suspect there will be a hidden option to skip the automatic conversion (which I plan to use), but still--this is an aggressive rollout. Very impressive, but also a bit scary.

</comment><comment><USER2> APFS is designed to work more effectively on flash based storage.</comment>


Show HN: Cirquik - 360 degree feedback simplified - <AUTHOR> http://cirquik.com/

<comment><AUTHOR> This is my weekend project, scratching a personal itch and addressing some of the complexity in HR tools I'm used to seeing.

The stack consists of Rails, MongoDB and nginx, and represents my first public-facing service with that stack. Along the way I wrote a JQuery plugin for managing a dynamic number of fields in a fieldset which I might throw on GitHub if there's interest.</comment>


Get all your scripts with one request using Jazzcat and Mobify.js - <AUTHOR> http://www.mobify.com/dev/introducing-jazzcat/?utm_source=hackernews&utm_medium=Blog&utm_campaign=jazzcat

<comment><AUTHOR> TL;DR - Mobify.js fires off one request to Jazzcat, which grabs all of your scripts and returns back a single concatenated file. As for how it actually works, we use the DOM pre-parsing capabilities of Mobify.js to grab script URLs and remove the scripts from the source document before it's rendered by the browser. THEN a request is made for the single javascript file from Jazzcat.

The feature currently only works for Mobify.js projects. Soon, you will be able to use this service on any website by adding a single line of Javascript into your existing site.</comment>


CSS3 Generator  - <AUTHOR> http://css3generator.com/

<comment><USER2> Seems _extremely_ buggy.

I chose box-shadow, 5px horizontal, 5px vertical, 3px blur, #fff color, and it gave me invalid CSS:

      -webkit-box-shadow: px 3px ;
      -moz-box-shadow: px 3px ;
      box-shadow: px 3px ;

<comment><USER3> A couple of sites that have similar functionality:

<http://css3please.com> <http://www.css3maker.com>

</comment></comment><comment><USER4> No -webkit-border-radius?

<comment><USER5> Doesn't seem to be needed in recent webkit builds (for example, an up to date Chrome/Chromium works fine with plain old border-radius). Can anybody comment on if it's still a good idea to include that rule or not, perhaps for older webkit versions?

<comment><USER6> What version of Chrome do you run? I still can't get "border-radius" to work in Chrome. That being said I still shove that -webkit tag everywhere.

<comment><USER2> Current stable release (7.0) doesn't require -webkit prefix for border-radius.</comment></comment></comment></comment>


Feature request: list of all articles that I have given karma to.  - <AUTHOR>

<comment><USER2> Isn't that this?

        http://news.ycombinator.com/saved?id=<your-username>

</comment><comment><USER3> The following is the place to put feature requests: <http://news.ycombinator.com/item?id=363>

And yes, I've made this exact mistake, and so have many others, so don't feel too bad about it. ;)

<comment><USER2> That post now has 1105 comments. Is that really a workable system for feature requests?

<comment><USER3> Your point has been debated here numerous times, but the basic answer is "yes" --hence the reason such an old thread is still open for new posts and votes.</comment></comment></comment>


Ready,Set,Fly - <AUTHOR> https://medium.com/@helenakikov/flyzen-here-where-its-all-began-bf60a23c81a1 <comment><USER2> I'm not sure this is a problem, the post seems fairly dramatic.Typically you can talk to the gate agent or customer service and receive some information about the cause of a delay.

<comment><AUTHOR> While it is not a matter of life or death, it is a painful problem, that we're working to minimize. There are endless articles on the web on this topic, here are a couple:

[https://www.thestar.com/news/canada/2017/05/08/pearson- fligh...](https://www.thestar.com/news/canada/2017/05/08/pearson-flight- delays-due-to-construction-taking-toll-on-passengers.html)

[https://www.bloomberg.com/news/articles/2016-08-23/blame- the...](https://www.bloomberg.com/news/articles/2016-08-23/blame-the-airlines- not-the-weather-for-most-u-s-flight-delays)</comment></comment>


Show HN: Burner API - <AUTHOR> http://developer.burnerapp.com <comment><AUTHOR> A succinct overview, from our docs. We're excited to see what comes of this and would love to hear feedback.

\--- The Burner API enables programmatic access to core telephony functions like sending and receiving messages and media, as well as the "business logic" layer we've spent years building.

Key Burner features include per-line configuration and settings, contact management, blocking and muting, content filtering, text auto-responses, and more.

Full API access to Burner means developers can now build integrations that enhance and extend Burner's messaging and application capabilities in ways that we believe represent the future of smart phone numbers.

Developers can also take advantage of this API to embed Burner's basic and enhanced calling and messaging experiences into their apps via OAuth. Your users get all the benefits and features of our top-rated voice and messaging client (and the support and business functions that stand behind it), while you get all the benefits of controlling the phone number at the network level. In effect, you can treat the Burner app itself as a service, rather than building your own "last mile" on top of a bare-bones telephony API.

We also offer incoming and outgoing webhooks that can be used in conjunction with API access or enabled per Burner Line via our Developer Connection.</comment>


How Not to Land an Orbital Rocket Booster - <AUTHOR> https://www.youtube.com/watch?v=bvim4rsNHkQ <comment><USER2> All very entertaining, but watch this one:

[https://www.youtube.com/watch?v=bvim4rsNHkQ#t=118](https://www.youtube.com/watch?v=bvim4rsNHkQ#t=118)

Same YouTube video, but 118 seconds in.</comment>


What's it like to have your emails investigated? - <AUTHOR> http://www.bbc.com/news/magazine-35311890 <comment><USER2> _What it was was an article from a news website. It described how protesters in St Petersburg had painted a giant penis on a bridge, so that when it was raised it could be seen over a wide area. It was just a jokey news story shared with a colleague._</comment>


FiveThirtyEight: When to Freak Out About Shocking New Polls - <AUTHOR> http://fivethirtyeight.com/features/election-update-when-to-freak-out-about-shocking-new-polls/ <comment><USER2> > _There's less to fight about when polls show similar results. But that > doesn't necessarily mean they'll turn out to be more accurate. Instead, that > consensus may reflect herding — pollsters suppressing results that they deem > to be outliers, out of fear of embarrassment._

And there goes my entire faith in the process. Deciding which polls to release based on the results is absurd. If the media is going to focus so much on polls (and see my other comment for what I think about that) then they should only source them from pollsters that share _all_ results, not just the ones the pollster deemed "correct" because it fit with their expectations.

Nate Silver's strategy for dealing with it isn't encouraging either:

> _In fact, you should trust a pollster more if it's willing to publish the > occasional "outlier." Clinton probably isn't winning Colorado by 13 > percentage points right now or losing Pennsylvania by 6 points. But the fact > that Monmouth and Quinnipiac are willing to publish such results are a sign > that they're letting their data speak for itself._

It sounds like he's admitting he doesn't even know what the practices of each pollster are. For all we know, a pollster could be so sure in a Hillary or Trump lead that they don't publish the outliers in the _other_ direction. How can Nate Silver aggregate these results with any certainty whatsoever?

</comment><comment><USER2> Not hating on FiveThirtyEight for the interesting work they do--and I understand that covering this angle of things is their main purpose--but I can't help but feel that the intense focus on poll numbers by the media throughout the entire race is upside-down. The poll that matters is on November 8th and we'll all get the chance to participate in it. Until then, maybe we should focus on informing ourselves about the candidates and the issues, and less on who's winning the rat race each morning.

<comment><USER3> But it's not a poll, it's a race with weird rules. Polls are a huge part of that race: if you are winning state X by double-digit margins, there is no point in flying there to campaign; whereas the swing state where you're down by 1% needs ad-hoc policy announcements and lots of time spent on the ground.

Paying attention to the polls will often tell you where a candidate will stand on certain issues, so it's part of the whole "understanding" bit.</comment></comment>


The Internet Archive Wants to Digitize 40,000 VHS and Betamax Tapes (2014) - <AUTHOR> http://www.fastcompany.com/3028069/the-internet-archive-is-digitizing-40000-vhs-tapes <comment><USER2> I worked on the digital archiving project at the Library of Congress. In that case, it was mostly wire spool recordings, wax cylinders, and LPs, but many of the same principles apply:

\- This media can be fragile. Less so with VHS or Betamax, but it's something to keep in mind.

\- It's not usually just a single copy and drop it into an archive. Most of the time, they'll want a super high quality, uncompressed master for long term preservation. This is with the hope that they never have to go back to the physical media.

\- Once they have that copy, they create lower quality versions for day to day display, usage, study, etc.

\- When you consider the "work" (in the artistic/archival sense, not the effort sense), it's not just the video. Quite often they'll want image scans of the media itself, container, etc. This is because the video itself may have been suffered damage due to physical damage.

\- Next, you need to document the whole process down to the brand and settings of every single device. If it's known (or discovered later), that a particular piece of equipment distorts media (plays faster/slower, changes color palettes, etc), you need to know that and _potentially_ correct for it at a later time.

\- And finally, don't forget the metadata! A collection isn't useful if someone doesn't capture the who, what, and when. This is often the most painful part because the settings above are often set once and forgotten. This requires manually transcribing information written on the media, watching it, or a variety of other methods. Most libraries farm this out to interns. My new company - Clarify.io - hopes to help with this aspect.

If you're interested more in the mechanics, please feel free to let me know.

<comment><USER3> Would you consider doing a reddit AMA? HN doesn't quite seem like the right place/format for it.

Although, I'm gonna cut right in line and ask: what's the most interesting thing you've archived? If you're not sure what we'd find interesting, some suggestions are - content, medium and difficulty.

<comment><USER2> I've considered it before but wasn't sure anyone would care. Now as I'm seeing more of these archiving efforts discussed, I'll consider it. :)

For the most interesting thing, I'll share two answers:

\- First, there were the truly historic pieces of media. Things like Thomas Edison's first motion pictures and reporters' wire spool recordings of D-Day hours after the invasion "ended" were always the most amazing. You read about this stuff, but hearing it is something else entirely.

\- On the other end of the spectrum, you have to remember that everything that has a registered copyright has been sent to the Library of Congress. That includes porn. My group didn't archive it but the group down the hall had to catalogue it. No, they didn't have private offices. ;)

<comment><USER4> Wow what an interesting coincidence...I just moved to Austin and am working on preserving some extremely historic recordings. Emailing you now!

<comment><USER3> Could y'all try to find a way of getting an AMA link back to HN if you end up doing one? This is fascinating stuff.

<comment><USER4> I'll definitely be doing an AMA about my specific project. I'm not at all an expert in the field but I'll share the story and my experiences.

</comment></comment></comment></comment></comment></comment><comment><USER5> Hmmm, I thought there might be more information on what programs are included. And was also expecting some sort of probably sad discussion on content ownership.

On a side note, the Internet Archive HQ building is pretty cool: [https://www.google.com/maps/place/300+Funston+Ave,+San+Franc...](https://www.google.com/maps/place/300+Funston+Ave,+San+Francisco,+firstname.lastname@example.com,-122.471903,3a,75y,85h,90t/data=!3m7!1e1!3m5!1shGwqNTJFL21Clj5EwZey6Q!2e0!6s%2F%2Fgeo0.ggpht.com%2Fcbk%3Fcb_client%3Dmaps_sv.tactile%26output%3Dthumbnail%26thumb%3D2%26panoid%3DhGwqNTJFL21Clj5EwZey6Q%26w%3D374%26h%3D75%26yaw%3D85%26pitch%3D0%26thumbfov%3D120%26ll%3D37.782264,-122.471903!7i13312!8i6656!4m2!3m1!1s0x80858717ad44722f:0xe43bf935ed8ed372!6m1!1e1)

</comment><comment><USER6> Why does it cost $12 per tape to digitize it? I recently digitized a giant pile of old home movies, and all it took was an $80 usb video capture device, $20 thrift store VCR, and a few minutes each. About every dozen tapes I had to take the cover off and clean the heads, but that was no big deal.

Some older tapes will need a time base corrector to rebuild the sync signals, but they aren't that expensive.

<comment><USER7> $12 per tape is cheap to make it available to everyone...

<comment><USER6> Despite my message, I am very happy that these tapes are being made available.

</comment></comment></comment><comment><USER8> This seems like a trivially parallelisable problem. You can buy used VCRs by the pallet cheaply[1], although servicing and possibly retrofitting them into good condition is probably the major bottleneck here.

[1] [https://govdeals.com/index.cfm?fa=Main.Item&itemid=1045&acct...](https://govdeals.com/index.cfm?fa=Main.Item&itemid=1045&acctid=2489)

<comment><USER9> Many of the tapes are BetaMAX.

<comment><USER10> There are maybe about 100 betamax VCRs for sale on ebay at the moment.

[http://www.ebay.com/sch/VCRs-/15088/i.html?_nkw=betamax](http://www.ebay.com/sch/VCRs-/15088/i.html?_nkw=betamax)

</comment></comment></comment><comment><USER11> I envisage much grainy audio of intellectual (or pseudo intellectual?) discussions featuring on soundcloud sad-core and post rock accounts.</comment>


Go Interrupt: Easily Handle Signals with Contexts - <AUTHOR> https://github.com/Noah-Huppert/gointerrupt <comment><AUTHOR> I made this to handle graceful shutdown of a net/http.Server and other similar components.

I found myself implementing the same pattern over and over again, hope people can benefit from this simple small library.</comment>


California state law mandates female board directors by 2019 - <AUTHOR> https://www.reuters.com/article/us-california-board-women/california-state-law-mandates-female-board-directors-by-2019-idUSKCN1MB172 <comment><USER2> This is possibly a duplicate:

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

</comment><comment><USER3> I've always considered myself a liberal, but I've become so frustrated by what seems to be passing for "liberal solutions" in the past few years.

For example, I believe having more women on boards is a desirable, admirable goal, but this mandate has to be about the dumbest way to accomplish it. It's similar to what I feel about the housing crises in big cities. I'm very much in favor of increasing affordable housing, but things like rent control (coupled with relatively small numbers of government funded affordable housing units) are so probably counter-productive it's laughable.

<comment><USER4> How is rent control counterproductive?

<comment><USER5> The California model of rent control limits the amount you can raise rent on a tenant, and the reasons you can evict someone. Surprisingly, you can often transfer a lease to a family member, leading to situations where someone is living in a rented house originally rented to their grandparent.

It also leads to situations where an empty nester has spare bedrooms but cannot afford to move into a smaller rental unit, effectively taking bedrooms off the market and making prices higher for everyone. Presumably AirBNB relieves some of this pressure, though I seem to recall some landlords running sting operations in order to evict long term tenants and reset the market rate.

Over the past 30 years of SF rent control, this dynamic has created a group of people for whom in-fill redevelopment would be disastrous: they'd lose their rent control, and definitely can't live here anymore. Much of SF is pretty low density, and housing supply would come from building up. Doesn't need to be a 60 tower millenium tower deal. But you'll need to tear up some buildings to make it happen, and the cheapest properties are the ones under rent control. So anyone campaigning on a 'build baby build' platform is more or less running a platform of evicting the poor and/or elderly.

At it's core, rent control is treating the symptom of high prices rather than the disease of tight supply.

</comment></comment></comment><comment><USER6> I have lived in California for about 30 years. Yesterday I took my kids to the Barnes and Nobles in San Luis Obispo. The kids section is next to the bathrooms. Inside the bathroom a homeless guy was smoking meth and another was using the sink and paper towels to give himself a bath. On the ride home I noticed that there was literally no less than one homeless guy per block on both sides of the road.

It has not always been like this and it's getting worse.

This is on top of all the other issues California has. Ridiculous housing prices, horrible schools and a wildly business unfriendly environment, etc.

My point is: The governor was working on mandating public companies have female board members instead of the laundry list of catastrophes that are destroying this state. Think about who you vote for this upcoming election in CA.

<comment><USER2> California has about 25% of the nation's homeless population. It's quite bad and there are complex reasons for it.

One contributing factor is the lovely California weather that makes it much less of a hardship to "sleep rough" than it is in most parts of the continental US.

<comment><USER7> i cab imagine there are much more lovely weather than in SF, yet it's the city with the largest number of homeless i've ever seen ( and i live in europe).

<comment><USER2> The San Francisco Bay Area is the only part of the US with a Mediterranean climate.

As I said, there are many factors, weather being just one.

<comment><USER8> > The San Francisco Bay Area is the only part of the US with a Mediterranean > climate.

No, it's not. A significant fraction of California outside of the Bay Area, and some of Oregon and, IIRC, Washington also does.

<comment><USER2> I stand corrected:

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

</comment></comment></comment></comment></comment></comment><comment><USER9> Well this won't stand court challenges hopefully. It's dreadful that they ever passed this law. It's demeaning to women and simply will make people think that any woman on a board of directors is there for the sake of being the token woman to fulfill the requirements of the law.

EEOC: [https://www.eeoc.gov/laws/types/sex.cfm](https://www.eeoc.gov/laws/types/sex.cfm)

> The law forbids discrimination when it comes to any aspect of employment, > including hiring, firing, pay, job assignments, promotions, layoff, > training, fringe benefits, and any other term or condition of employment.

Even if they argue a loophole "directors aren't employees thus aren't subject to discrimination law" then that will simply result in companies outside California (and considering most corporations are registered as Delaware C-Corporation, that's most of them) openly legally discriminating in selection of board members.

<comment><USER10> This law was about symbolism, the Governor says so himself.

The bill passed the House and Senate, and was signed by the Governor. His signing was purely symbolic and is aware of the serious legal concerns.

So although a court challenge would put it on shaky ground, it actually might be politically tenuous to pursue the case at all!

And plus, the Equal Rights Amendment will nix it anyway (but too bad the 50 year red supreme court will nix that)

<comment><USER9> Why are we signing and creating laws purely for symbolism?

</comment></comment></comment><comment><USER11> I was against this for a long time going against meritocracy, fairness and makeing a company weaker.

Now I think this is a good idea to kickstart more women into top management, as one reason people want to make a career and see it achievable are role models, which there currently aren't too many.

This should be limited to a kickstart period, say 5y.

<comment><USER12> I got down voted into oblivion on the previous dupe of this post for saying pretty much the same thing with regard to a sunset clause. I think it is a very reasonable idea.

The argument that this goes against meritocracy only makes sense if you inherently think men are better at the role. If you think men and women are likely to be equally as good, it makes more sense that men are currently in the privileged position of getting a role that could be filled by a more qualified woman.

As an aside, on the dupe, there are 40 posts or so arguing against this move. Literally every positive post was downvoted, none with a single argument in response. There are clearly a few toxic down voters on HN, particularly when it comes to issues of male privilege.

</comment></comment><comment><USER13> I cant wait to see a law requiring hospitals to have 50% male nurses. Because equality!</sarcasm>

</comment><comment><USER14> ok, so we will waste money on A: token female board members or B: a female board member who is under qualified because the company couldn't find a better qualified woman to fill the role; when that male candidate had to be passed up because of his gender.

Hmm.

</comment><comment><USER15> Isn't this illegal? Gender based employment opportunity?

</comment><comment><USER16> An essential step in the right direction. If one can use the legal system to grab a board seat, maybe they will stop paying them so much.</comment>


Show HN: Keeping.com – Turn Gmail into a helpdesk - <AUTHOR> http://www.keeping.com/

<comment><USER2> Great idea to build this into existing email workflow. It's smart when developers build on top of Gmail.. speeds adoption

<comment><AUTHOR> yap, you got it

</comment></comment><comment><AUTHOR> Keeping™ is a Gmail extension that adds helpdesk functionalities to any Gmail or Google App email accounts. What do you think?</comment>


Ask HN: If I wanted to make a web browser, where would I start? - <AUTHOR> <comment><USER2> I'd think about it like this :-

1) Write socket code to retrieve the page from a server

2) Get it to draw the text in a window.

3) Write code to look for tags and start diving up the retrieved file into a proper DOM tree. Perhaps start by creating an object for each paragraph. Then maybe look for <b> tags, then <div> tags

4) Change the rendering code to draw the screen for the data structure you created above.

5) Iterate a lot. Add support for parsing more and more tags into the data model. Start adding annotations for various attributes.

6) Start improving the layout code. Draw things in <b> tags in bold. Draw things in <div> tags under each other and <span> tags separately.

7) Add limited CSS support. Allow just width and height and border sections. make the code read the css file and attach the attributes to the correct sections of the DOM document you are creating.

8) Improve the layout code to look at the width and height tags on each element, and where tags are nested to propogate the width and height information up and down the tree as needed. Draw borders if the css tells you to. Look at font weight etc.

9) Iterate. Add one feature at a time. Repeat for a year until you have an browser that can render basic pages.

10) Iterate some more. Read specs. Rewrite your document to DOM tree parse a number of times perhaps using a more formal grammar. You'll probably be on about year 8 by now.

11) Add javascript support... :P

Perhaps my point is though that this seems something where its very easy to start small, just render the text of a page, and incrementally add features and improve the layout. It will take a long time though as there are so many features to add.

<comment><USER3> Is it still even doable for a single person to write a new rendering engine from scratch? I'm getting the impression that right now it's all about Webkit, Gecko and IE and given how complex things got, I imagine that it would cost an enormous sum of money to write something that, say, can display top 10 Alexa web pages. Things just got too complex.

Perhaps it would be better to have some effort in documenting Webkit code so that more hackers could actually read it and hack on it?

<comment><USER4> It shouldn't be too much for a single person to take on if they're truly dedicated to the task. A small team is still probably more ideal, but the browser isn't overly complex, it simply has a lot of capability that it can pull off with its feature set. All of a browsers moving parts are designed to be quite generic, which allows quite complex interactions to arise out of a small handful of simpler components.

Things used to be a lot harder 5 years ago, but the renewed focus on standards means that many smaller browsers can focus on just that, and ignore a lot of the weird quirks found in major browsers safely. (The death of Internet Explorer is finally bringing about the necessary changes in websites that have clung to its quirks mode so blindly for so many years.)

I think starting with a manually written parser is a necessary first step if you're writing a web browser. It's tempting to want to pull in Webkit or V8 or Gecko or Chakra, but if you're writing a web browser, you need to understand what these tools are actually doing for you before you use them. Writing your own versions, even if that's time consuming, will teach you why these other frameworks have become so popular, and educate you about their shortcomings so you can hopefully code around those too. If you do it write, and your codebase is appropriately modular, it should be straightforward to modify the project down the road to use a different parser, or even an entirely different DOM tree implementation.

</comment></comment></comment><comment><USER5> You have mainly two options: do everything from scratch or reuse. Starting from scratch is almost impossible to do alone, just Chrome was developed by different teams with different expertises, some of them acquired from other companies.

The second option is reusing a web component or browser and modify it for your purposes. Building on top of Chrome or Firefox (or their variants) is a good choice. I think Chrome is better engineered than Firefox and the code is clear. Obviously this is just an opinion.

Now the question is what do you want to add to such browser? Is this something you can add via an extension or is something that requires a new direction?

<comment><USER6> >Chrome was developed by different teams with different expertises, some of them acquired from other companies.

To expand on this, Chrome and Safari use webkit as their rendering/layout engine which is a fork of KDE's KHTML. IE came from NCSA Mosaic-> Spyglass -> Microsoft IE.

To be clear on my suggestions below, let's clarify what a browser actually is. The browser manages things like the navigation bar, bookmarks, download/mime handling, etc. This is known as the "chrome" or GUI. The layout engine handles HTML parsing, rendering, possibly is coupled with a Javascript engine like V8.

If you are trying to write a browser, the answer is to use webkit2 in whatever language you like. It's fast, light, and portable. If you are trying to write a layout engine (rendering engine), do as another poster suggested and write one to target HTML 3.2.

<comment><USER7> Note that Chrome is actually using Blink now, which itself is a fork of webkit

</comment></comment></comment><comment><USER8> This series of blog posts might be a good place to start: [https://limpet.net/mbrubeck/2014/08/08/toy-layout- engine-1.h...](https://limpet.net/mbrubeck/2014/08/08/toy-layout- engine-1.html)

<comment><USER9> This series was really well-written and fun to work through! I second this recommendation.

</comment></comment><comment><USER10> As somebody already wrote "Starting from scratch is almost impossible to do alone". However you could set a first goal of doing some basic rendering of plain HTML, even text based. That should make you familiar with the hurdles of a rendering engine. Then apply some CSS. Even writing a browser for HTML 3.2 from scratch and no JavaScript should be an exercise to be proud of [https://www.w3.org/TR/REC-html32](https://www.w3.org/TR/REC-html32) (1997). Then start looking at modern browsers using the links others provided. You should have the experience to understand all the moving parts by then.

This is similar to writing the very first web application without using any framework, maybe even interfacing directly with the web server. I remember decoding CGI arguments in C in 1994 before discovering Perl's CGI.pm. Then you understand the magic inside frameworks and don't get burned by surprises.

</comment><comment><USER11> I did this once back in 2003. It was text only rendered, with mouse support so you could click on the links instead of tabbing around like Links.

I built it off of the IE object model (Internet Explorer Browser Extensions? Can't recall). I think I just used the object model for connectivity settings. If you could get to the net using IE, my browser would work as well.

I think I coded to HTML 1.1 specs, and had it working after 2 months (with a few minor rendering issues). It did not support scripting, CSS or really much of anything (although it could POST), but it was surprising how much of the web was accessible. And it was really fast. Not because of my skillz, but when you cut out the garbage, it's amazing how fast a page will load.

Anyway, I would not recommend this approach, but I would offer you encouragement. HTML parsing isn't really that big of a deal, and you could get something very minimal (text rendering) working in short order. It would at least give you a feeling of what you are up against.

</comment><comment><USER12> My 2 Cents:

Start out with a solid base: (for example)

\- [https://cefbuilds.com/](https://cefbuilds.com/)

\- [https://crosswalk-project.org/](https://crosswalk-project.org/)

\- [http://electron.atom.io/](http://electron.atom.io/)

\- [http://nwjs.io/](http://nwjs.io/)

or you try to help with existing projects: (for example)

\- [https://github.com/breach/thrust](https://github.com/breach/thrust) (started out with [https://github.com/breach/breach_core](https://github.com/breach/breach_core) a "javascript"-Browser (core is not js))

[https://github.com/minbrowser/min](https://github.com/minbrowser/min)

<comment><USER13> Breach seems like a poor choice since the project has been inactive for ~2 years.

<comment><USER12> Maybe you're right, a project like servo ([https://github.com/servo/servo](https://github.com/servo/servo)) looks like a better fit.

easy bugs to hunt: [https://github.com/servo/servo/labels/E-easy](https://github.com/servo/servo/labels/E-easy)

</comment></comment></comment><comment><USER14> Browser Engine [https://limpet.net/mbrubeck/2014/08/08/toy-layout- engine-1.h...](https://limpet.net/mbrubeck/2014/08/08/toy-layout- engine-1.html)

How to Create your Own Internet Browser in 5 Minutes! - [https://www.youtube.com/watch?v=Bn22JBRC1UI](https://www.youtube.com/watch?v=Bn22JBRC1UI)

Chrome's Engine [http://www.chromium.org/blink](http://www.chromium.org/blink)

</comment><comment><USER15> "If you wish to make a web browser from scratch, you must first invent the universe."

</comment><comment><USER16> There is a "Building a Web Browser" course on udacity[1]. Maybe someone who has taken the course comment on it.

[1] [https://www.udacity.com/course/programming-languages-- cs262](https://www.udacity.com/course/programming-languages--cs262)

</comment><comment><USER17> If you are seeking tutorials, or UI libraries etc, sorry, I can't help you with that as I am unaware of those things. However, if you are asking from which aspect to start building one from scratch, I would say start with layouting. Try implementing a tiny subset of div related things like position and display and see if this is what you want to spend your time working on. Even if you can crack this thing easily, remember, this is just the tip of the iceberg. I am not discouraging you, but know that you would have to digest the entire DOM and HTML spec, not to mention have a JavaScript engine and implement all the security related intricacies, at the least, for your software to become a web browser.

<comment><USER18> I'm curious: is there a ready-to-use set of tests for a layout engine that checks conformance with the specs? Something that you could, without much effort, run against a toy layout engine you'd write?

I know Webkit/Blink have humongous test suites, but these probably aren't easy to adapt to a toy layout engine.

<comment><USER19> There's something like Acid3, but it doesn't give you information as to what failed when you get a less-than-perfect score. (Test: [http://acid3.acidtests.org/](http://acid3.acidtests.org/) | Information: [http://www.webstandards.org/action/acid3/](http://www.webstandards.org/action/acid3/))

There are also all those other browser benchmarks (e.g. [http://peacekeeper.futuremark.com/](http://peacekeeper.futuremark.com/)), but those include things other than the layout engine, such as javascript performance, webGL, etc. You could try poking around a few of them and only looking at the CSS and DOM sections though ([http://web.basemark.com/](http://web.basemark.com/)).

</comment></comment></comment><comment><USER20> Back when I did CS 101 this was our final project; the teacher made the HTML- parser, and we students did the renderer and UI.

The HTML-parser is probably the part it makes sense to do first.

What language and platform do you plan to use? I think a modern OO-language will be helpful.

</comment><comment><USER21> Just a note: The browser as we use it today is a result of 20+ years of human work and innovation. It's what you would call a killer application.

<comment><USER22> Equally - the car we drive today is a result of 130 years of human work and innovation. But after all that time we're seeing a real shake with the electric car. Things change when people try. I say good luck to the girl/guy - perhaps they'll create something incredible :-)

<comment><USER23> Even the electric car didn't start from scratch - it'll use the same component manufacturers as the rest of the car industry - e.g. tyres, brakes, suspension, interior, safety systems.

<comment><USER24> You and parent poster both make good points.

</comment></comment></comment></comment><comment><USER25> Well, this is what I could do in that (or almost any) case:

1) Setting features, key points, points to avoid, and goals of the project.

2) Choosing the toolchain to use, for resolving the points at 1)

3) Coding the features with that toolchain

Step 2, may involve: to read a lot (doc, rfc's, specifications, using search engines with keywords, search for "problems", etc) to look at other people's source code of similar programs, to try other people's tools and libraries and evaluate and compare them, to make integration tests, and to make Proofs Of Concept prototypes.

The toolchain (programing language, user GUI, etc) comes with an ecosystem (I hope you don't aim at rewriting also your $lang libraries for validate XML or interact with devices), so you have to choose looking at both.

To separate steps 2 and 3, use iterations, while you have resources.

If you find an opensource product that full-fills all your definitions of point 1), except a few of them, you can evaluate to start by a patch and a pull-request to them, or a fork :P

</comment><comment><USER26> If you wanted to choose how to build the UI, one starting point is here [https://news.ycombinator.com/item?id=12376242](https://news.ycombinator.com/item?id=12376242)

</comment><comment><USER27> Do you want to build a web browser or a web browser engine?

If you just want to build a web browser, here's my request for a new browser for iOS since web browsing on iOS is a second or third rate experience:

\- Built-in ad-blocking.

\- A way to disable JavaScript immediately for any website.

\- A desktop mode that actually works, so that YouTube, Reddit, Imgur and other sites don't redirect me to their crappy mobile site without asking.

\- Launches a completely separate app for private browsing.

Right now I use Dolphin browser on iOS and despite being in desktop mode, I still have to refresh every YouTube page that I land on in order to get the desktop style native HTML5 video player that allows me to go full-screen. On Imgur, gifv files don't play - I have to change the extension to gif and then wait 60 seconds as it downloads. Lots of other sites have similar types of issues. Meanwhile, gifv files work fine in Brendan Eich's "Brave" browser. It could be as easy to fix as just changing the user-agent.

Dolphin has good ad-blocking, but there is no way to quickly turn off JavaScript for a given page or domain (ala Quick JavaScript Switcher for Chrome).

The thing that really annoys me though about Dolphin is that Private Browsing does not work at all. That's probably because they want you to buy Dolphin Zero for $2.99.

<comment><USER28> I checked out Brave yesterday for the first time and I think it does most of those things.

<comment><USER27> Brave has a desktop mode that mostly works and a built-in adblocker.

It does not have a `quick JS disable` button.

It also doesn't have a speed dial that I can manually add items to, which is one very important item that I forgot to mention earlier.

What I really want to do is make an open source browser that I can compile and put on my iOS devices myself too, without going to the app store. Then I could add all sorts of features and extensions without having to ask Apple.

</comment></comment></comment><comment><USER29> I'd say, if you have the opportunity and want to go wild skip the DOM and create an equivalent model using OpenGL. All the other Web platform features like the distribution model, resource streaming etc can still be used. It's just that the DOM is the great bottleneck and most of the hours devoted to improve the Web are being wasted on sorting quirks related to the DOM. Maybe yours will be the starting point towards a DOM-free Web! :)

</comment><comment><USER30> Well, what are your goals?

</comment><comment><USER31> You can accept entered URLs and fetch & display web pages quite easily nowadays. You should, depending on the vertical, be very concerned about security.

What are your goals (to a greater degree than "web browswer")?

</comment><comment><USER32> 1\. Write a webassembly interpreter/vm; (main step)

2\. Using webassembly, write an html interpreter/renderer;

3\. Using webassembly, write an css, js ... interpreter/renderer;

4\. Keep doing this for all w3c standards for the rest of your life.

Chances are that by the time you are somewhere in the middle of step 2, people will have written the other interpreters in webassembly and the result of step 1 will be a functional browser already.

</comment><comment><USER33> [https://curl.haxx.se/dev/source.html](https://curl.haxx.se/dev/source.html)

</comment><comment><USER34> Step one: Build AI or machine learning or genetic code to build a browser by replicating the results of a real world browser.

Step two: run it!

</comment><comment><USER35> I'm working on one right now. I'm using the electron shell because im not worried about the backend source (chromium) I'm just working on a new ui and a reader feature. Email at email@example.com if you want to get a beta

<comment><USER36> I sent you an email.

</comment></comment><comment> c-smile Well, I did exactly that.

Sciter ( [http://sciter.com](http://sciter.com) ) is an embeddable HTML/CSS/script engine that has all components of a browser - html, css, svg, script and networking (http,ajax,websockets,etc).

Work started in 2002 when I decided to create WYSIWYG HTML editor for my wife. So [http://blocknote.net/](http://blocknote.net/) was born. That was pure HTML (no CSS) rendering and editing engine. 9 months for one developer - myself.

After its publishing joined initial EverNote team to create WYSIWYG editor for EverNote. Three of us (developers), + Stepan Pachikov that generated the idea of the EverNote, created first published version of the EverNote (v 2.0). That was also done in 9 months (I am pretty sure that 9 months is not a coincidence but rather a law for new projects - optimal period when developers are excited of what they are doing).

While working on it, and being a UI-in-all-its-incarnations developer/architect, I've discovered that HTML and CSS are quite convenient format for defining UI layouts and elements. So next step was wrapping it as a reusable component and so HTMLayout engine was born ( [http://htmlayout.com](http://htmlayout.com) ).

Almost immediately discovered that plain C++ is not quite convenient for handling complex UI cases - "on click here hide that and expand those". UI objects ownership graph is quite complex and contains loops. Something with GC is definitely required. So decided to add scripting to it. Considered quite many existing languages including JS for the "language behind UI". At the end decided to roll my own tiscript ( [http://www.codeproject.com/Articles/33662/TIScript- Language-...](http://www.codeproject.com/Articles/33662/TIScript-Language-A- Gentle-Extension-of-JavaScript) ) that essentially is JavaScript++. So 7 years ago I had what we will have in ES6 in next couple of years.

At the mean time I participated in HTML5 spec. development at W3C as an invited expert. And worked as an architect / team lead in several Web Application projects that required deep understanding of the platform - knowing Web UI stack from inside-out helped that a lot.

As Sciter works on all major desktop and mobile platforms I've created core engine wrappers for Windows API, MacOS CoreFoundation, Linux/XWindows/GTK and some others. Sciter core is written in C++ with Objective C fragments in Apple's wrappers. GFX technologies: GDI, GDI+, AGG, Direct2D, CoreGraphics, GTK, OpenGL, DirectX and others.

Script in Sciter is not quite a JS so I've created ports of jQuery (zepto feature set) and AngularJS alike data-binding mechanism based on Object.observe() that Sciter has.

More of Sciter's history: [http://sciter.com/10-years-road-to- sciter/](http://sciter.com/10-years-road-to-sciter/)

At the moment Sciter code works on around 350 mln PCs and Mac's worldwide as part of various products.

Advice: all this is really possible if you have _real_ motivation to do all this. Estimate that first. Split the task on 6-9 months periods. Start from creating basic DOM and CSS rendering. You can do that without parsers initially. Parser are boring - postpone them for the moment when you will have something breathing. Just a small trick for self-motivation.

Other than that it is doable, yes. For the simple reason: as smaller dev team as higher its productivity. Solo developer has highest productivity possible. Some conditions apply of course.

</comment><comment><USER37> By giving up? ;-)

</comment><comment><USER38> Instrument an existing browser and synthetize a new layout engine with machine learning and superoptimisation.

</comment><comment><USER39> Sounds like a pretty good interview question. Better than asking you to invert binary trees or similar WTF. They're testing your judgment and asking you to assess your own skills and possibly they're interested in the actual assessment results assuming you're any good at assessment.

Most people would generally break the task chronologically or kinda data flow oriented. Probably. Now should you start at the part you're familiar with or less familiar or unfamiliar with? My philosophy is its a bathtub shaped curve and if you know the topic dead cold or have absolutely no idea how to do it, start there because those will be your constraints, either you are an industry expert on a topic and can define the constraints with the best of them in which case you should definitely start there unless you suspect a trick question (LOL you thought we meant HTML browser, actually we're passing you DB2 ISAM files and COBOL PIC statements), or you have absolutely no idea what you're doing in which case you should start there to begin to discover your constraints and APIs and interfaces and data structures. Never start at a point where you have intermediate level of knowledge, the impact when you smack into the unknown is going to be painful so start in the unknown to begin with.

Basically, it boils down to try not to paint yourself into a corner, so either start painting in the most obvious safe area to start or the most mysterious area on the assumption escape will be the easiest. But never, ever start to paint a floor by just dumping the can out in the middle of the floor.

If you have a flat level of skill across the entire project (yeah not likely) then if its a "simple" project like a viewer/browser where you've seen all the parts before, start in the middle and work both directions at once if you can handle the inevitable mystifying weirdness at both ends simultaneously, and if its a "complex" project like replace the entire air traffic control system then start at one edge and work to the other to minimize simultaneous confusion. Yeah yeah I know I just said never start painting in the middle of the floor, well if you think there's a perfectly flat skill level you probably haven't analyzed the problem enough so the real answer is not to start at all, and instead to think about it a lot more.

Of course half the fun is defining the starting point. Do they give you a working example to clone as a goal, access to all RFCs, no docs and cleanroom reimplement using a protocol analyzers traces, can you use a language you like, can you use language libraries that implement some fraction of the problem, does it have to be a 1995 level of browser or 2015 or 2035 level of browser ...

To some extent its a meta interview question where they want to see if you start talking like you're a system architect or systems analyst type like above or if you're a security guy you'd probably start with "review all the latest exploits and avoid all of them simultaneously (good luck lol)" or if you're a code monkey maybe you'd start with a rant about your favorite font to use in Eclipse and how nice your mechanical keyboard is or maybe you're not even a programmer in which case the response will sound like the dude from the office space movie in the scene arguing about his radio "well I was informed this was a programming test and I got permission to list the integers from 1 to 100 and print fizz when they're a multiple of ..." and so on.

</comment><comment><USER40> [Disclaimer: I'm not an expert on developing browsers] It depends on what exactly you'd want to implement, since a (modern) browser is really a huge piece of software with several aspects and components in it. Looking at it from one angle, you could split it into chrome (not Google Chrome, but the UI, like tab bar, bookmarks, menus, extensions management, etc.) and content (the rendering engine).

You'd most likely get bogged down if you start writing your own rendering engine (processing HTML, CSS and JS, and processing image formats, video and sound formats, even not including any plugins), unless it's a very limited scope toy browser that can handle some simple stuff. In this case, start with base HTML support, including handling incomplete tags and quirks like that have been carried over for decades (the amount of cruft in rendering engines for backward compatibility and handling undocumented but accepted quirks would itself take a long time to develop). Then try a little bit of CSS support. I'd assume JS support could be quite challenging since that moves out of the already challenging "paint the screen" part into an even more challenging part on interpreting code, running it, optimizing it, etc., which is a lot more complex when you consider there would be several JS files loaded on most websites.

Something a little more easier (only comparatively) would be developing the chrome around an existing rendering engine and seeing how to handle tabs, background loading, foreground loading, bookmarks, private/incognito browsing, etc., and if you feel adventurous enough, adopt a particular process or threading model for a multi-tab browser.

Another alternative here is to create a WebView application and see which parts you could improve. For example, Chrome on iOS and Firefox on iOS are just the chrome for the built-in rendering engine in iOS, but address many things like tabs, networking, incognito mode, bookmarks, sync and other features. You could try creating a similar one on iOS, latching on to the work done by FoxBrowser [1] or Firefox for iOS [2]. On Android, you could try building on top of Firefox for Android [3].

If you'd like to work on a web browser rendering engine that's a bit more closer to "from scratch", I'd recommend working with the Servo [4] team and seeing how you can help. It's a long drawn project that has already made huge strides, but you'd get an inside view of the complexity of developing a browser engine. What's more, you could also learn Rust while doing this. [5]

[1]: [https://github.com/graetzer/Foxbrowser](https://github.com/graetzer/Foxbrowser)

[2]: [https://github.com/mozilla/firefox- ios](https://github.com/mozilla/firefox-ios)

[3]: [https://developer.mozilla.org/en- US/docs/Mozilla/Developer_g...](https://developer.mozilla.org/en- US/docs/Mozilla/Developer_guide/Build_Instructions/Simple_Firefox_for_Android_build)

[4]: [https://servo.org/](https://servo.org/)

[5]: [https://www.rust-lang.org/](https://www.rust-lang.org/)

</comment><comment><USER41> TempleOS</comment>


From Python to Ruby: week one of utter irritation with Rails - <AUTHOR> https://gist.github.com/4227884/

<comment><USER2> (I commented on your gist but I'll comment here as well for completeness.)

It might be a bit easier for your brain if you think of specs not as "Ruby- language scripts", but as "RSpec-language scripts", a language which is a superset of Ruby.

RSpec is a DSL — domain-specific language — on top of Ruby. It _purposely_ pollutes the top-level namespace with shorthand methods so that you don't have to qualify them. Yes, the range of what is available is essentially something you will need to hunt down in the documentation. And yes, the available shorthands are also dependent on what RSpec extensions you have installed; things like WebMock extend the namespace with its own methods.

After the confusion settles I think you will find that the reduced syntax is very helpful. It removes boilerplate to a large extent. In a more verbose test framework such as Test::Unit, developers always move common boilerplate (eg., test setup, common mocks) into test-wide helpers. RSpec just sets the table in a way that also reduces common test boilerplate.

For example, surely `describe Foo` is better than `class FooTest < Test::Unit::TestCase` — even if you don't understand what `describe` really does or where it comes from. You don't need to if you accept it's RSpec syntax.

And surely you will agree that this:

        get "/"
        last_response.status.should eq 200

...more concisely expresses the intent of the test than this:

        request = Net::HTTP.get('localhost', '/')
        response = http.request request
        assert_equal response.code, 200

I personally quite like writing assertions as infix-style expressions (`x.should y`) rather than assertions (`assert_equal`). One reason is the wonderful flexibility in choosing what goes on the left and right sides:

        lambda {
          client.connect!
        }.should_not raise_error(Client::ConnectionError)

Or:

        stub = stub_request(:get, '/template').with({
          query: hash_including(name: 'signup'),
          headers: {
            'Content-Type' => 'application/json'
          }
        })
        get "/signup"
        stub.should have_been_requested

</comment><comment><USER3> You are going about this all wrong. If you are still struggling with ruby the language, you shouldn't be learning at the same time one of the most opinionated DSLs around (rspec), because it will confuse the hell out of a beginner rubyist

<comment><AUTHOR> I agree with you that RSpec is confusing as hell - thus the blog post.

A lot of my frustration with Ruby tutorials is that a large pack of them are geared for someone who has never, ever coded before. Syntactically, Ruby isn't that bad. I tried a few courses in Ruby and eventually just switched them off for being too slow.

Part of my issue with Ruby (currently) is that the language can be so flagrantly violated with a gem. I am sure that Python could receive similar treatment... but it would be difficult to pull off, and the community would rip it apart for not being "Pythonic." There's not as strong of a "Ruby-ic" approach to doing things as there is with Python, from my first interactions with the language.

<comment><USER3> In the Ruby webdev community, RSpec and Devise are considered to be the most Ruby-ic gems around. The idea, much as with Lisp, is to transform the language into something that describes the problem at hand as naturally as possible. RSpec is considered to be a fine example of a language designed for writing software specifications, and it _still_ happens to be valid Ruby.

One of the take-aways from this is that within the Python community, "Pythonic" means "keep close to the language as envisioned by GVR", and within the Ruby community, "Ruby-ic" means "the closer you can get it to English and still keep the code executing, the better."

I personally dislike RSpec, but that's a minority opinion. I dislike the general aim to make everything look as natural as possible, because that approach hides too much complexity, a lot of which leaks often in unpredictable ways. Nevertheless, when it comes to pumping out websites, Ruby is my language of choice, and my efficiency in Rails smokes my efficiency in everything else out of the water.

<comment><AUTHOR> Your second paragraph was huge for me. I think that's a critical learning point for someone making the jump from Python to Ruby.

I'll probably still have some frustrations, but knowing that gems are written to look natural by design rather than by accident will likely keep me from throwing my computer at the wall. Two completely different communities operating here.

<comment><USER3> I happen to think that people that say "ruby and python are really similar languages, I don't understand what the arguing is about" almost willfully ignore the fact that in modern (aka Lego) programming, a language doesn't exist on its own, but it is surrounded by a huge community, and in case of Ruby vs Python, the communities couldn't be more different.

</comment></comment></comment></comment></comment><comment><USER4> You don't have to use the rspec controller matches if it's outside of what you're used to/how you understand it. You can use response.status.should == 200.

<comment><AUTHOR> Thanks for the feedback. It looks like there were plenty of approaches to doing easy unit tests... which is part of why I kept scratching my head with "why the hell did they do that..."</comment></comment>


Why Solving Climate Change Will Be Like Mobilizing for War - <AUTHOR> http://www.theatlantic.com/science/archive/2015/10/why-only-a-technocratic-revolution-can-win-the-climate-change-war/410377/?single_page=true <comment><USER2> How convenient, another goal to rally people to sacrifice. Perhaps THAT was always the goal of global warming.

</comment><comment><USER3> The IPCC is total bullshit.</comment>


Ask HN: Inverse of Product Hunt? - <AUTHOR>

Does the 'inverse' of Product Hunt exist, where posts are business problems solvable by software and upvotes are money users are willing pay for a solution? A rough equivalent could be a one-to-one relationship (1 biz to one dev) as established by a freelancing marketplace (e.g. odesk, elance, etc.), but I'm thinking along the lines of a many-to-one (many businesses to one dev). <comment><USER2> I can't say I've heard of one, but I'm guessing these problems would be posted by businesses that are mid-development?

<comment><AUTHOR> A user could be any business with a software-fixable problem they would be willing to pay for. I don't think the size or stage of the business has to qualify them.

</comment></comment><comment><USER3> i think producthunt said they would be working on that</comment>


Patent Troll or Industry Creator? Nathan Myhrvold and His Skeptics - <AUTHOR> http://www.xconomy.com/seattle/2010/02/18/nathan-myhrvold-shares-plan-to-create-invention-capital-industry-but-skeptics-abound/

<comment><USER2> 1000+ shell companies to hide litigation...</comment>