<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: web-development</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/web-development.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2025-05-31T14:23:35+00:00</updated><author><name>Simon Willison</name></author><entry><title>No build frontend is so much more fun</title><link href="https://simonwillison.net/2025/May/31/no-build/#atom-tag" rel="alternate"/><published>2025-05-31T14:23:35+00:00</published><updated>2025-05-31T14:23:35+00:00</updated><id>https://simonwillison.net/2025/May/31/no-build/#atom-tag</id><summary type="html">
    &lt;p&gt;If you've found web development frustrating over the past 5-10 years, here's something that has worked worked great for me: give yourself permission to avoid any form of frontend build system (so no npm / React / TypeScript / JSX / Babel / Vite / Tailwind etc) and code in HTML and JavaScript like it's 2009.&lt;/p&gt;
&lt;p&gt;The joy came flooding back to me! It turns out browser APIs are really good now.&lt;/p&gt;
&lt;p&gt;You don't even need jQuery to paper over the gaps any more - use &lt;code&gt;document.querySelectorAll()&lt;/code&gt; and &lt;code&gt;fetch()&lt;/code&gt; directly and see how much value you can build with a few dozen lines of code.&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html"&gt;html&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frontend"&gt;frontend&lt;/a&gt;&lt;/p&gt;



</summary><category term="css"/><category term="html"/><category term="javascript"/><category term="web-development"/><category term="frontend"/></entry><entry><title>Some Go web dev notes</title><link href="https://simonwillison.net/2024/Sep/27/some-go-web-dev-notes/#atom-tag" rel="alternate"/><published>2024-09-27T23:43:31+00:00</published><updated>2024-09-27T23:43:31+00:00</updated><id>https://simonwillison.net/2024/Sep/27/some-go-web-dev-notes/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://jvns.ca/blog/2024/09/27/some-go-web-dev-notes/"&gt;Some Go web dev notes&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Julia Evans on writing small, self-contained web applications in Go:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In general everything about it feels like it makes projects easy to work on for 5 days, abandon for 2 years, and then get back into writing code without a lot of problems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Go 1.22 &lt;a href="https://go.dev/blog/routing-enhancements"&gt;introduced HTTP routing&lt;/a&gt; in February of this year, making it even more practical to build a web application using just the Go standard library.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/go"&gt;go&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/http"&gt;http&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/julia-evans"&gt;julia-evans&lt;/a&gt;&lt;/p&gt;



</summary><category term="go"/><category term="http"/><category term="web-development"/><category term="julia-evans"/></entry><entry><title>What's the cheapest or free stack solution to deploy and experiment with a realtime application in 2016?</title><link href="https://simonwillison.net/2016/Aug/16/whats-the-cheapest-or/#atom-tag" rel="alternate"/><published>2016-08-16T09:02:00+00:00</published><updated>2016-08-16T09:02:00+00:00</updated><id>https://simonwillison.net/2016/Aug/16/whats-the-cheapest-or/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Whats-the-cheapest-or-free-stack-solution-to-deploy-and-experiment-with-a-realtime-application-in-2016/answer/Simon-Willison"&gt;What&amp;#39;s the cheapest or free stack solution to deploy and experiment with a realtime application in 2016?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Heroku have a good free tier, and comprehensive support for deploying both Python and Node.js. If you are mainly interested in realtime I would suggest starting out with Node.js on Heroku. Depending on the complexity of your project you might even be able to use raw Node.js without adding something like Express.&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;a href="https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction"&gt;Getting Started on Heroku with Node.js&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/hosting"&gt;hosting&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webapps"&gt;webapps&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/websockets"&gt;websockets&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/heroku"&gt;heroku&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="hosting"/><category term="programming"/><category term="webapps"/><category term="web-development"/><category term="websockets"/><category term="quora"/><category term="heroku"/></entry><entry><title>Why is snapEDA.com slow? Is it because it uses Django?</title><link href="https://simonwillison.net/2016/May/10/why-is-snapedacom-slow/#atom-tag" rel="alternate"/><published>2016-05-10T09:04:00+00:00</published><updated>2016-05-10T09:04:00+00:00</updated><id>https://simonwillison.net/2016/May/10/why-is-snapedacom-slow/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Why-is-snapEDA-com-slow-Is-it-because-it-uses-Django/answer/Simon-Willison"&gt;Why is snapEDA.com slow? Is it because it uses Django?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;No, it's not slow because it uses Django.&lt;/p&gt;&lt;p&gt;Evidence: there are plenty of large scale, highly performing sites that use Django.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="django"/><category term="python"/><category term="web-development"/><category term="quora"/></entry><entry><title>Are traditional web frameworks and languages like RubyOnRail, Spring Boot and PHP dying now when new fast reactive pure JavaScript frameworks and services like Meteor, Node, Angular 2.0 and Firebase are breaking ground?</title><link href="https://simonwillison.net/2015/May/24/are-traditional-web-frameworks/#atom-tag" rel="alternate"/><published>2015-05-24T09:33:00+00:00</published><updated>2015-05-24T09:33:00+00:00</updated><id>https://simonwillison.net/2015/May/24/are-traditional-web-frameworks/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Are-traditional-web-frameworks-and-languages-like-RubyOnRail-Spring-Boot-and-PHP-dying-now-when-new-fast-reactive-pure-JavaScript-frameworks-and-services-like-Meteor-Node-Angular-2-0-and-Firebase-are-breaking-ground/answer/Simon-Willison"&gt;Are traditional web frameworks and languages like RubyOnRail, Spring Boot and PHP dying now when new fast reactive pure JavaScript frameworks and services like Meteor, Node, Angular 2.0 and Firebase are breaking ground?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/java"&gt;java&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="django"/><category term="frameworks"/><category term="java"/><category term="javascript"/><category term="programming"/><category term="programming-languages"/><category term="web-development"/><category term="quora"/></entry><entry><title>How does one decide which Javascript framework (e.g. Node, Backbone, Angular) to use on any given project?</title><link href="https://simonwillison.net/2014/Mar/11/how-does-one-decide/#atom-tag" rel="alternate"/><published>2014-03-11T17:08:00+00:00</published><updated>2014-03-11T17:08:00+00:00</updated><id>https://simonwillison.net/2014/Mar/11/how-does-one-decide/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/How-does-one-decide-which-Javascript-framework-e-g-Node-Backbone-Angular-to-use-on-any-given-project/answer/Simon-Willison"&gt;How does one decide which Javascript framework (e.g. Node, Backbone, Angular) to use on any given project?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you are just learning JavaScript, I suggest trying to work without any frameworks or libraries at all. Starting with something like Angular will make it much harder for you to learn the core language and browser APIs.&lt;/p&gt;

&lt;p&gt;Once you've worked with raw JavaScript for a while, it's worth starting to learn jQuery - it's the basis of most of the popular JavaScript frameworks out there and understanding how it works will help reinforce a bunch of core JavaScript concepts.&lt;/p&gt;

&lt;p&gt;If your priority is learning though, it's a good idea to start without jQuery. There are a surprising number of JavaScript developers out there who only really know how to program JavaScript using jQuery.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/nodejs"&gt;nodejs&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webapps"&gt;webapps&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/angular"&gt;angular&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="frameworks"/><category term="javascript"/><category term="nodejs"/><category term="programming"/><category term="webapps"/><category term="web-development"/><category term="quora"/><category term="angular"/></entry><entry><title>Should I use Django forms or pure HTML in order to do not establish borders for the growth of my app?</title><link href="https://simonwillison.net/2014/Feb/23/should-i-use-django/#atom-tag" rel="alternate"/><published>2014-02-23T11:39:00+00:00</published><updated>2014-02-23T11:39:00+00:00</updated><id>https://simonwillison.net/2014/Feb/23/should-i-use-django/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Should-I-use-Django-forms-or-pure-HTML-in-order-to-do-not-establish-borders-for-the-growth-of-my-app/answer/Simon-Willison"&gt;Should I use Django forms or pure HTML in order to do not establish borders for the growth of my app?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Use Django forms. Django scales horizontally on the front-end, so if your site needs to handle large amounts of traffic you just need to run multiple front-end servers - your form handling code will scale up just fine.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="django"/><category term="web-development"/><category term="quora"/></entry><entry><title>What is the best way one can expand his or her professional network?</title><link href="https://simonwillison.net/2014/Jan/26/what-is-the-best/#atom-tag" rel="alternate"/><published>2014-01-26T14:47:00+00:00</published><updated>2014-01-26T14:47:00+00:00</updated><id>https://simonwillison.net/2014/Jan/26/what-is-the-best/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-is-the-best-way-one-can-expand-his-or-her-professional-network?no_redirect=1"&gt;What is the best way one can expand his or her professional network?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Go to events - local meetups, conferences, tradeshows... there's no better way of expanding your professional network than to attend events and build in-person relationships with people.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/facebook"&gt;facebook&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/linkedin"&gt;linkedin&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/networking"&gt;networking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/social-networks"&gt;social-networks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/india"&gt;india&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="facebook"/><category term="linkedin"/><category term="networking"/><category term="social-networks"/><category term="web-development"/><category term="quora"/><category term="india"/></entry><entry><title>What are the best free tutorials on HTML5?</title><link href="https://simonwillison.net/2014/Jan/24/what-are-the-best/#atom-tag" rel="alternate"/><published>2014-01-24T13:16:00+00:00</published><updated>2014-01-24T13:16:00+00:00</updated><id>https://simonwillison.net/2014/Jan/24/what-are-the-best/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-are-the-best-free-tutorials-on-HTML5/answer/Simon-Willison"&gt;What are the best free tutorials on HTML5?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;span&gt;&lt;a href="http://diveintohtml5.info/"&gt;Dive Into HTML5&lt;/a&gt;&lt;/span&gt; and &lt;span&gt;&lt;a href="http://www.html5rocks.com/en/"&gt;HTML5 Rocks&lt;/a&gt;&lt;/span&gt; are both outstanding.
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tutorials"&gt;tutorials&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="html5"/><category term="tutorials"/><category term="web-development"/><category term="quora"/></entry><entry><title>In simple terms, what is node.js?</title><link href="https://simonwillison.net/2014/Jan/22/in-simple-terms-what/#atom-tag" rel="alternate"/><published>2014-01-22T12:48:00+00:00</published><updated>2014-01-22T12:48:00+00:00</updated><id>https://simonwillison.net/2014/Jan/22/in-simple-terms-what/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/In-simple-terms-what-is-node-js?no_redirect=1"&gt;In simple terms, what is node.js?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It's server-side programming, like PHP. The language you write the server-side code in is JavaScript (specifically the JavaScript version supported by Google's V8 JavaScript engine, which was originally written for the Chrome web browser).&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/nodejs"&gt;nodejs&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="javascript"/><category term="nodejs"/><category term="programming-languages"/><category term="web-development"/><category term="quora"/></entry><entry><title>Why did Twitter move away from being a single-page application?</title><link href="https://simonwillison.net/2014/Jan/3/why-did-twitter-move/#atom-tag" rel="alternate"/><published>2014-01-03T12:35:00+00:00</published><updated>2014-01-03T12:35:00+00:00</updated><id>https://simonwillison.net/2014/Jan/3/why-did-twitter-move/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Why-did-Twitter-move-away-from-being-a-single-page-application/answer/Simon-Willison"&gt;Why did Twitter move away from being a single-page application?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Twitter is still a single page application, it's just built properly now (one result of which is that you can't easily tell).&lt;/p&gt;

&lt;p&gt;When Twitter first went single page, the only way to do so while still maintaining functioning hyperlinks and a working back button was to use a vile hack involving fragment URLs - things like &lt;span&gt;&lt;a href="https://twitter.com/#!simonw/status/419261896957505536"&gt;https://twitter.com/#!simonw/sta...&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;This works, but comes with a whole bag of downsides:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Anyone who clicks a link to Twitter has to download several megabytes of JavaScript before the site can figure out what information it should be displaying. In the case of a tweet permalink that's several megabytes downloaded just to display a 140 character tweet!&lt;/li&gt;&lt;li&gt;Pages don't work at all without JavaScript.&lt;/li&gt;&lt;li&gt;A single JavaScript bug in an obscure mobile phone browser only available on Chinese handsets can prevent the site from loading any content at all.&lt;/li&gt;&lt;li&gt;Screen readers may fail to understand what's going on.&lt;/li&gt;&lt;li&gt;Only some search engines can index the pages, again &lt;span&gt;&lt;a href="https://support.google.com/webmasters/answer/174992?hl=en"&gt;using a nasty hack&lt;/a&gt;&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;These aren't "real" hypertext URLs. If you perform a GET operation against them you don't get the content the URL refers to, you just get the Twitter homepage. This is bad for the health of the Web.&lt;/li&gt;&lt;li&gt;One relevant example: Quora's feature where a URL pasted in is automatically converted to the title of that page can't work if the URL doesn't point at real HTML, rather than a homepage and a big chunk of JavaScript.&lt;/li&gt;&lt;li&gt;These links start to spread. Other sites have to use them in links to Twitter, which means that even if Twitter gets rid of them they'll need to keep some JavaScript on their homepage that knows how to handle them &lt;i&gt;forever&lt;/i&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;These hashbang URLs are nasty, nasty hacks.

&lt;p&gt;Thankfully the hashbang hack isn't necessary any more, thanks to a neat part of HTML5 called the &lt;span&gt;&lt;a href="http://diveintohtml5.info/history.html"&gt;History API&lt;/a&gt;&lt;/span&gt;. This allows JavaScript to update the visible URL in the browser's URL bar without actually navigating to a completely new page - essentially, it allows a single page application to pretend that it's a real website.&lt;/p&gt;

&lt;p&gt;How does this fix the problems above? It means that Twitter can start serving real webpages again. Try running this command:&lt;/p&gt;

&lt;code&gt;curl "https://twitter.com/simonw/status/419261896957505536"&lt;/code&gt;

&lt;p&gt;It returns HTML! In fact, it returns the exact HTML needed to display a page that shows the content of that tweet. Then, at the very bottom of that HTML it includes a single script tag (loaded after the page has been displayed in the browser) which loads a huge bunch of JavaScript and converts that beautiful, light HTML page in to a giant single page web app.&lt;/p&gt;

&lt;p&gt;Now, when you click on a link on the page, Twitter can fetch the new page contents using JavaScript and display it to you without doing a complete reload of the whole UI - but they can use the HTML5 history API to update the URL in the page so that, as far as you can tell, you've navigated somewhere else. It's a signle page web application hiding in plain sight.&lt;/p&gt;

&lt;p&gt;But what about browsers that don't support HTML5 history, like older versions of IE? Here's the smart part: they don't get the fancy new JavaScript, they just get links which, when clicked, navigate them to a brand new page. This means that even browsers that don't support JavaScript at all can access and navigate Twitter, but browsers with JavaScript get a much enhanced experience.&lt;/p&gt;

&lt;p&gt;Dan Webb, an engineer at Twitter, wrote some very insightful pieces about this issue. In &lt;span&gt;&lt;a href="http://danwebb.net/2011/5/28/it-is-about-the-hashbangs"&gt;It's About The Hashbangs&lt;/a&gt;&lt;/span&gt; (May 2011) he explained why he believed Twitter's hashbang implementation was the wrong way to go. A year later in May 2012 he published &lt;span&gt;&lt;a href="https://blog.twitter.com/2012/improving-performance-twittercom"&gt;Improving performance on twitter.com&lt;/a&gt;&lt;/span&gt; on the official Twitter blog explaining the new history technique they were using and how it had dramatically improved the performance of the site.&lt;/p&gt;

&lt;p&gt;In fairness to Twitter, I should point out that when they launched their hashbang single page app back in 2010 the HTML5 history API wasn't widely available - IE didn't support it at all, and I seem to remember Safari 2.0 had a bug which made their implementation unusable. Thankfully this is no longer the case today.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/twitter"&gt;twitter&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webapps"&gt;webapps&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="twitter"/><category term="webapps"/><category term="web-development"/><category term="quora"/></entry><entry><title>Are Django versions released too often?</title><link href="https://simonwillison.net/2013/Dec/17/are-django-versions-released/#atom-tag" rel="alternate"/><published>2013-12-17T09:52:00+00:00</published><updated>2013-12-17T09:52:00+00:00</updated><id>https://simonwillison.net/2013/Dec/17/are-django-versions-released/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Are-Django-versions-released-too-often/answer/Simon-Willison"&gt;Are Django versions released too often?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The Django release process is well documented (see &lt;span&gt;&lt;a href="https://docs.djangoproject.com/en/dev/internals/release-process/"&gt;Django’s release process&lt;/a&gt;&lt;/span&gt;) and has been specifically designed to address the concerns of developers who don't want to have to spend too much time keeping up to date with the latest version.&lt;/p&gt;

&lt;p&gt;Minor releases happen roughly every nine months, and introduce new features usually without breaking backwards compatibility. If a feature is deprecated, it will raise a warning in the version that deprecates it, a louder warning in the next version (9 months later) and will be removed in the version after that (1.5 years after the feature removal was first announced).&lt;/p&gt;

&lt;p&gt;If even that is too fast for you, you can stick with a "Long-term support" release, which get security fixes applied for 3+ years. Django 1.4 is the most recent of these, and will be supported until at least March 2015.&lt;/p&gt;

&lt;p&gt;Read &lt;span&gt;&lt;a href="https://docs.djangoproject.com/en/dev/internals/release-process/"&gt;https://docs.djangoproject.com/e...&lt;/a&gt;&lt;/span&gt; for more information. Personally (and I've had no input at all in to the release process design) I think it's all extremely well thought out.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webapps"&gt;webapps&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="django"/><category term="webapps"/><category term="web-development"/><category term="quora"/></entry><entry><title>As a non-technical single founder for a web startup, is it better to hire a design firm to build the prototype, or find a technical co-founder?</title><link href="https://simonwillison.net/2013/Dec/4/as-a-non-technical-single/#atom-tag" rel="alternate"/><published>2013-12-04T11:17:00+00:00</published><updated>2013-12-04T11:17:00+00:00</updated><id>https://simonwillison.net/2013/Dec/4/as-a-non-technical-single/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/As-a-non-technical-single-founder-for-a-web-startup-is-it-better-to-hire-a-design-firm-to-build-the-prototype-or-find-a-technical-co-founder?no_redirect=1"&gt;As a non-technical single founder for a web startup, is it better to hire a design firm to build the prototype, or find a technical co-founder?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Find a co-founder. The problem with using an outside agency to build your initial prototype is that you won't really start learning about your product until &lt;i&gt;after&lt;/i&gt; you have launched it. You need to have the talent available in-house to then make changes and improvements based on the feedback you get from real users.&lt;/p&gt;

&lt;p&gt;Don't put yourself in a position where you've spent all of your money on external development before you learn that you haven't built the right thing. Launching the prototype is just the &lt;i&gt;start&lt;/i&gt; of your development process.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/entrepreneurship"&gt;entrepreneurship&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/prototyping"&gt;prototyping&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/startups"&gt;startups&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="entrepreneurship"/><category term="prototyping"/><category term="startups"/><category term="web-development"/><category term="quora"/></entry><entry><title>Is there a substantial difference between using a Mac or a Windows machine for web development (particularly RoR)?</title><link href="https://simonwillison.net/2013/Dec/4/is-there-a-substantial/#atom-tag" rel="alternate"/><published>2013-12-04T09:54:00+00:00</published><updated>2013-12-04T09:54:00+00:00</updated><id>https://simonwillison.net/2013/Dec/4/is-there-a-substantial/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Is-there-a-substantial-difference-between-using-a-Mac-or-a-Windows-machine-for-web-development-particularly-RoR/answer/Simon-Willison"&gt;Is there a substantial difference between using a Mac or a Windows machine for web development (particularly RoR)?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;No matter if you are on Mac or Windows you should be using a Linux virtual machine for development, ideally running the same operating system as you deployment environment (I like Ubuntu for this). Vagrant is a popular tool for managing this kind of setup.&lt;/p&gt;

&lt;p&gt;That said, for web development you should be on a Mac, with Windows running in a virtual machine. You need the Mac in order to test in desktop Safari and use the iOS simulator to test in Mobile Safari on iPhone and iPad.&lt;/p&gt;

&lt;p&gt;I don't think it is possible to run OS X in a VM on Windows without using cracked versions of the installation disks, and you have no guarantees that technique you use will continue working for later OS versions.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rails"&gt;rails&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="programming"/><category term="rails"/><category term="web-development"/><category term="quora"/></entry><entry><title>Is greater comfort with Windows a good enough reason to switch from PHP to ASP.NET?</title><link href="https://simonwillison.net/2013/Dec/4/is-greater-comfort-with/#atom-tag" rel="alternate"/><published>2013-12-04T09:45:00+00:00</published><updated>2013-12-04T09:45:00+00:00</updated><id>https://simonwillison.net/2013/Dec/4/is-greater-comfort-with/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Is-greater-comfort-with-Windows-a-good-enough-reason-to-switch-from-PHP-to-ASP-NET/answer/Simon-Willison"&gt;Is greater comfort with Windows a good enough reason to switch from PHP to ASP.NET?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Learning Linux really isn't that hard, and it will dramatically increase your potential horizons as a programmer. Install Ubuntu on a virtual machine on your laptop and start running through some tutorials.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/aspnet"&gt;aspnet&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/php"&gt;php&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="aspnet"/><category term="php"/><category term="programming"/><category term="web-development"/><category term="quora"/></entry><entry><title>What is the ways to view the examples without download the example files in github?</title><link href="https://simonwillison.net/2013/Dec/1/what-is-the-ways/#atom-tag" rel="alternate"/><published>2013-12-01T17:55:00+00:00</published><updated>2013-12-01T17:55:00+00:00</updated><id>https://simonwillison.net/2013/Dec/1/what-is-the-ways/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-is-the-ways-to-view-the-examples-without-download-the-example-files-in-github/answer/Simon-Willison"&gt;What is the ways to view the examples without download the example files in github?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you can view the file on &lt;span&gt;&lt;a href="http://raw.github.com"&gt;raw.github.com&lt;/a&gt;&lt;/span&gt; you can drop the first dot to view it on &lt;span&gt;&lt;a href="http://rawgithub.com"&gt;rawgithub.com&lt;/a&gt;&lt;/span&gt; - a free proxy service.&lt;/p&gt;

&lt;i&gt;Updated with more details:&lt;/i&gt;

&lt;p&gt;Consider &lt;span&gt;&lt;a href="https://github.com/zurb/joyride"&gt;joyride&lt;/a&gt;&lt;/span&gt; for example. They have demo code in a demo directory on Github.&lt;/p&gt;

&lt;p&gt;Browse to the HTML demo page, here: &lt;span&gt;&lt;a href="https://github.com/zurb/joyride/blob/master/demo/demo.html"&gt;https://github.com/zurb/joyride/...&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Click the "raw"button to get to here: &lt;span&gt;&lt;a href="https://raw.github.com/zurb/joyride/master/demo/demo.html"&gt;https://raw.github.com/zurb/joyr...&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Now edit the URL in your browser and change the host to&lt;/p&gt;

&lt;p&gt;http://rawgithub.com/zurb/joyride/master/demo/demo.html&lt;/p&gt;

&lt;p&gt;And you can see the demo without downloading the code.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/github"&gt;github&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="github"/><category term="open-source"/><category term="programming"/><category term="web-development"/><category term="quora"/></entry><entry><title>I've been working alone for about a year, how do I get out of this feeling of loneliness because no one is around me?</title><link href="https://simonwillison.net/2013/Nov/26/ive-been-working-alone/#atom-tag" rel="alternate"/><published>2013-11-26T14:28:00+00:00</published><updated>2013-11-26T14:28:00+00:00</updated><id>https://simonwillison.net/2013/Nov/26/ive-been-working-alone/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Ive-been-working-alone-for-about-a-year-how-do-I-get-out-of-this-feeling-of-loneliness-because-no-one-is-around-me/answer/Simon-Willison"&gt;I&amp;#39;ve been working alone for about a year, how do I get out of this feeling of loneliness because no one is around me?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is why co-working spaces exist. I don't know which country you are based in but here in the UK most cities and many larger towns now have at least one tech-focused co-working space where you can rent a desk on a month-to-month basis and have a work environment outside your home with other freelancers with whom you can socialize.&lt;/p&gt;

&lt;p&gt;I used to frequent a co-working space in Brighton, UK which was a hive of activity, and great for business as the freelancers there were always sub-contracting to each other and forming temporary teams to get larger projects finished.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/entrepreneurship"&gt;entrepreneurship&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/startups"&gt;startups&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/careers"&gt;careers&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="entrepreneurship"/><category term="startups"/><category term="web-development"/><category term="quora"/><category term="careers"/></entry><entry><title>How log in my e-mail and send sms via php?</title><link href="https://simonwillison.net/2013/Nov/25/how-log-in-my/#atom-tag" rel="alternate"/><published>2013-11-25T15:09:00+00:00</published><updated>2013-11-25T15:09:00+00:00</updated><id>https://simonwillison.net/2013/Nov/25/how-log-in-my/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/How-log-in-my-e-mail-and-send-sms-via-php/answer/Simon-Willison"&gt;How log in my e-mail and send sms via php?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you want to send SMS via PHP I suggest taking a look at &lt;span&gt;&lt;a href="http://www.twilio.com"&gt;www.twilio.com&lt;/a&gt;&lt;/span&gt; - they are pretty inexpensive and ridiculously easy to get started with.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/php"&gt;php&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sms"&gt;sms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="php"/><category term="sms"/><category term="web-development"/><category term="quora"/></entry><entry><title>What's involved in making a site like JibJab go from conception to reality?</title><link href="https://simonwillison.net/2013/Nov/25/whats-involved-in-making/#atom-tag" rel="alternate"/><published>2013-11-25T11:27:00+00:00</published><updated>2013-11-25T11:27:00+00:00</updated><id>https://simonwillison.net/2013/Nov/25/whats-involved-in-making/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Whats-involved-in-making-a-site-like-JibJab-go-from-conception-to-reality/answer/Simon-Willison"&gt;What&amp;#39;s involved in making a site like JibJab go from conception to reality?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I'm afraid you don't get to create a hit website just by having an idea: You have to have the skills and focus to actually make it happen.&lt;/p&gt;

&lt;p&gt;In the case of JibJab the two founders were brothers. One was a talented animator and artist, while the other had an MBA. It took them nearly five years to achieve "overnight success" with their John Kerry and George Bush animation, and they very nearly went bust on the way there: &lt;span&gt;&lt;a href="http://mixergy.com/jibjab-history-gregg-spiridellis/"&gt;http://mixergy.com/jibjab-histor...&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Ideas alone are worth almost nothing. Ideas plus the ability to execute them are what counts. &lt;span&gt;&lt;a href="http://sivers.org/multiply"&gt;http://sivers.org/multiply&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="web-development"/><category term="quora"/></entry><entry><title>Why doesn't Google use their resources to improve coding languages?</title><link href="https://simonwillison.net/2013/Nov/24/why-doesnt-google-use/#atom-tag" rel="alternate"/><published>2013-11-24T17:31:00+00:00</published><updated>2013-11-24T17:31:00+00:00</updated><id>https://simonwillison.net/2013/Nov/24/why-doesnt-google-use/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Why-doesnt-Google-use-their-resources-to-improve-coding-languages/answer/Simon-Willison"&gt;Why doesn&amp;#39;t Google use their resources to improve coding languages?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Google invest vast resources in to language improvements, and have been doing so for over a decade now. Just off the top of my head...&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;They have employed many of the Python core team (including creator Guido van Rossum) and supported their work on Python&lt;/li&gt;&lt;li&gt;Their Android team wrote and support an entirely new open source JVM, called Dalvik&lt;/li&gt;&lt;li&gt;They sponsored one of the creators of C to create a brand new systems programming language, Go.&lt;/li&gt;&lt;li&gt;They sponsored major improvements to HTML, including the WHAT-WG which was crucial to the creation of HTML5.&lt;/li&gt;&lt;li&gt;Many of their employees work full time contributing to international standards groups.&lt;/li&gt;&lt;li&gt;As part of Chrome they supported the creation of V8, an astonishingly powerful JIT JavaScript implementation which sparked enormous improvements across rival engines. V8 is also the core of Node.js&lt;/li&gt;&lt;li&gt;Through Google Summer of Code they financially support projects that benefit dozens of open source languages, libraries and frameworks&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;That's just the stuff I can think if without doing any additional research - it's the tip of the iceberg.
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/google"&gt;google&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/java"&gt;java&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming-languages"&gt;programming-languages&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="google"/><category term="java"/><category term="programming"/><category term="programming-languages"/><category term="web-development"/><category term="quora"/></entry><entry><title>What would be a good web application framework to use for running a small online retail business?</title><link href="https://simonwillison.net/2013/Nov/23/what-would-be-a/#atom-tag" rel="alternate"/><published>2013-11-23T11:50:00+00:00</published><updated>2013-11-23T11:50:00+00:00</updated><id>https://simonwillison.net/2013/Nov/23/what-would-be-a/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-would-be-a-good-web-application-framework-to-use-for-running-a-small-online-retail-business/answer/Simon-Willison"&gt;What would be a good web application framework to use for running a small online retail business?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I'd look at hosted SaaS solutions rather than running your own. I haven't tried it myself but I've heard excellent things about &lt;span&gt;&lt;a href="http://www.shopify.com"&gt;www.shopify.com&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/startups"&gt;startups&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webapps"&gt;webapps&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ecommerce"&gt;ecommerce&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="startups"/><category term="webapps"/><category term="web-development"/><category term="quora"/><category term="ecommerce"/></entry><entry><title>PostgreSQL: How can I store images in a database? What existing products makes it easy for a user to upload photos into a general database?</title><link href="https://simonwillison.net/2013/Nov/19/postgresql-how-can-i/#atom-tag" rel="alternate"/><published>2013-11-19T15:06:00+00:00</published><updated>2013-11-19T15:06:00+00:00</updated><id>https://simonwillison.net/2013/Nov/19/postgresql-how-can-i/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/PostgreSQL-How-can-I-store-images-in-a-database-What-existing-products-makes-it-easy-for-a-user-to-upload-photos-into-a-general-database/answer/Simon-Willison"&gt;PostgreSQL: How can I store images in a database? What existing products makes it easy for a user to upload photos into a general database?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As a general rule, it's a bad idea to store images in a database. This is due to the large amount of space they take up, which can affect database read performance and will greatly increases the size of your backups, making them both take longer and cost more to store.&lt;/p&gt;

&lt;p&gt;Instead, it's best to store the images elsewhere and then store a reference to them in your database. These days the easiest way of doing this is generally to use Amazon S3, which can cheaply and reliably store an unlimited number of images. Save them to S3, then store the S3 URL (or the bucket + key combination) in a string in your database row.&lt;/p&gt;

&lt;p&gt;If you're determined to store them in a database you can do so using a BLOB field, or by base64 encoding them and storing them in a large text field (which will even further inflate the size of your tables).&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/databases"&gt;databases&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/photos"&gt;photos&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/postgresql"&gt;postgresql&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webapps"&gt;webapps&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="databases"/><category term="photos"/><category term="postgresql"/><category term="webapps"/><category term="web-development"/><category term="quora"/></entry><entry><title>What are some ways that brought your proficiency of CSS to another level?</title><link href="https://simonwillison.net/2013/Nov/17/what-are-some-ways/#atom-tag" rel="alternate"/><published>2013-11-17T11:37:00+00:00</published><updated>2013-11-17T11:37:00+00:00</updated><id>https://simonwillison.net/2013/Nov/17/what-are-some-ways/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-are-some-ways-that-brought-your-proficiency-of-CSS-to-another-level/answer/Simon-Willison"&gt;What are some ways that brought your proficiency of CSS to another level?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;An exercise I found useful when I first learned CSS was to implement CSS versions of the designs of popular sites. This was back when most sites still used tables for layout.&lt;/p&gt;

&lt;p&gt;If you do this, it's not necessarily a good idea to publish your work (though it may be tempting). It's a great learning exercise though.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frontend"&gt;frontend&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="css"/><category term="web-development"/><category term="quora"/><category term="frontend"/></entry><entry><title>Why can't I do style="padding: 20px" and a border in the same div?</title><link href="https://simonwillison.net/2013/Nov/11/why-cant-i-do/#atom-tag" rel="alternate"/><published>2013-11-11T09:12:00+00:00</published><updated>2013-11-11T09:12:00+00:00</updated><id>https://simonwillison.net/2013/Nov/11/why-cant-i-do/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Why-cant-I-do-style-padding-20px-and-a-border-in-the-same-div/answer/Simon-Willison"&gt;Why can&amp;#39;t I do style=&amp;quot;padding: 20px&amp;quot; and a border in the same div?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You can't have two style attributes on the same element - but you can have two styles rules inside the same attribute. Try this instead:&lt;/p&gt;

&lt;p&gt;&amp;lt;div id="secondcontent" style="padding:20px; border:solid"&amp;gt;&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/html"&gt;html&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="html"/><category term="web-development"/><category term="quora"/></entry><entry><title>What are tips for keeping website up on Black Friday? (due to large number of hits)</title><link href="https://simonwillison.net/2013/Nov/10/what-are-tips-for/#atom-tag" rel="alternate"/><published>2013-11-10T13:42:00+00:00</published><updated>2013-11-10T13:42:00+00:00</updated><id>https://simonwillison.net/2013/Nov/10/what-are-tips-for/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-are-tips-for-keeping-website-up-on-Black-Friday-due-to-large-number-of-hits/answer/Simon-Willison"&gt;What are tips for keeping website up on Black Friday? (due to large number of hits)&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Serve as much of your site as possible using Varnish, and/or consider a dynamic content CDN such as &lt;span&gt;&lt;a href="http://www.fastly.com"&gt;www.fastly.com&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="web-development"/><category term="quora"/></entry><entry><title>What's best the site to visit to START building a website?</title><link href="https://simonwillison.net/2013/Nov/8/whats-best-the-site/#atom-tag" rel="alternate"/><published>2013-11-08T11:28:00+00:00</published><updated>2013-11-08T11:28:00+00:00</updated><id>https://simonwillison.net/2013/Nov/8/whats-best-the-site/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Whats-best-the-site-to-visit-to-START-building-a-website/answer/Simon-Willison"&gt;What&amp;#39;s best the site to visit to START building a website?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There are two ways to approach this: you can try and learn HTML yourself, or you can use tools that will help you build websites quickly without needing to code.&lt;/p&gt;

&lt;p&gt;If you want to learn HTML (which is absolutely worth doing - it's a skill that will serve you for many years) a good starting point is the Mozilla Developer Network's &lt;span&gt;&lt;a href="https://developer.mozilla.org/en-US/learn"&gt;Learn How to Make Websites&lt;/a&gt;&lt;/span&gt; portal.&lt;/p&gt;

&lt;p&gt;If you just want to get a site up quickly there are plenty of options. I suggest taking a look at the following:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;a href="http://www.wix.com/"&gt;WIX&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;a href="http://www.squarespace.com/"&gt;Squarespace&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;a href="http://Wordpress.com"&gt;WordPress.com&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;a href="http://www.weebly.com/"&gt;Weebly&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/startups"&gt;startups&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="programming"/><category term="startups"/><category term="web-development"/><category term="quora"/></entry><entry><title>Wrapping block elements in anchor tags? I know this wasn't valid markup in HTML4 but has this changed or is the only option through JS?</title><link href="https://simonwillison.net/2013/Nov/4/wrapping-block-elements-in/#atom-tag" rel="alternate"/><published>2013-11-04T09:44:00+00:00</published><updated>2013-11-04T09:44:00+00:00</updated><id>https://simonwillison.net/2013/Nov/4/wrapping-block-elements-in/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Wrapping-block-elements-in-anchor-tags-I-know-this-wasnt-valid-markup-in-HTML4-but-has-this-changed-or-is-the-only-option-through-JS/answer/Simon-Willison"&gt;Wrapping block elements in anchor tags? I know this wasn&amp;#39;t valid markup in HTML4 but has this changed or is the only option through JS?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is a new thing in HTML5: &lt;span&gt;&lt;a href="http://html5doctor.com/block-level-links-in-html-5/"&gt;“Block-level” links in HTML5&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="css"/><category term="html5"/><category term="web-development"/><category term="quora"/></entry><entry><title>My contract with web developer says a) she will create a unique description for each page, AND b) that she is not responsible for writing or inputting any content. Now she wants me to compose the page descriptions, citing (b). What do you think? Edit...</title><link href="https://simonwillison.net/2013/Oct/31/my-contract-with-web/#atom-tag" rel="alternate"/><published>2013-10-31T15:48:00+00:00</published><updated>2013-10-31T15:48:00+00:00</updated><id>https://simonwillison.net/2013/Oct/31/my-contract-with-web/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/My-contract-with-web-developer-says-a-she-will-create-a-unique-description-for-each-page-AND-b-that-she-is-not-responsible-for-writing-or-inputting-any-content-Now-she-wants-me-to-compose-the-page-descriptions-citing-b-What-do-you-think-Edit-this-is-re-the-meta-description-tag/answer/Simon-Willison"&gt;My contract with web developer says a) she will create a unique description for each page, AND b) that she is not responsible for writing or inputting any content. Now she wants me to compose the page descriptions, citing (b). What do you think? Edit: this is re. the &amp;lt;meta&amp;gt; description tag.&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You should write the copy. Copy is important - you don't want it to be written by someone who believes it isn't even their responsibility, and will hence probably do a poor job of it.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-developers"&gt;web-developers&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="web-development"/><category term="quora"/><category term="web-developers"/></entry><entry><title>What is the Hacker News technology stack?</title><link href="https://simonwillison.net/2013/Oct/30/what-is-the-hacker/#atom-tag" rel="alternate"/><published>2013-10-30T13:37:00+00:00</published><updated>2013-10-30T13:37:00+00:00</updated><id>https://simonwillison.net/2013/Oct/30/what-is-the-hacker/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-is-the-Hacker-News-technology-stack/answer/Simon-Willison"&gt;What is the Hacker News technology stack?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It's written in Arc, a Lisp variant created by Paul Graham. I believe it uses the file system for storage rather than a dedicated database.&lt;/p&gt;

&lt;p&gt;There appears to be a copy of an old version of the site included in the Arc download as example code - there's a mirror of that on GitHub here: &lt;span&gt;&lt;a href="https://github.com/wting/hackernews"&gt;https://github.com/wting/hackernews&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/hacker-news"&gt;hacker-news&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/paul-graham"&gt;paul-graham&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="hacker-news"/><category term="paul-graham"/><category term="web-development"/><category term="quora"/></entry><entry><title>What design techniques does Apple use in the introduction page of iPad Air?</title><link href="https://simonwillison.net/2013/Oct/29/what-design-techniques-does/#atom-tag" rel="alternate"/><published>2013-10-29T13:13:00+00:00</published><updated>2013-10-29T13:13:00+00:00</updated><id>https://simonwillison.net/2013/Oct/29/what-design-techniques-does/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-design-techniques-does-Apple-use-in-the-introduction-page-of-iPad-Air/answer/Simon-Willison"&gt;What design techniques does Apple use in the introduction page of iPad Air?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Apple used the same technique on their &lt;span&gt;&lt;a href="http://www.apple.com/mac-pro/"&gt;Apple - Mac Pro&lt;/a&gt;&lt;/span&gt; page. I first saw this trick used on the &lt;span&gt;&lt;a href="http://2011.beercamp.com/"&gt;BeerCamp at SXSW 2011&lt;/a&gt;&lt;/span&gt; page.&lt;/p&gt;

&lt;p&gt;It's not that hard to achieve - the basic principle is to attach a JavaScript event handler to the onscroll event.&lt;/p&gt;

&lt;p&gt;There are even a bunch of open source libraries to help you achieve this kind of effect, such as &lt;span&gt;&lt;a href="http://johnpolacek.github.io/scrollorama/"&gt;scrollorama&lt;/a&gt;&lt;/span&gt; and &lt;span&gt;&lt;a href="http://prinzhorn.github.io/skrollr/"&gt;skrollr&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/apple"&gt;apple&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/design"&gt;design&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ipad"&gt;ipad&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frontend"&gt;frontend&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="apple"/><category term="design"/><category term="html5"/><category term="ipad"/><category term="web-development"/><category term="quora"/><category term="frontend"/></entry></feed>