{"id":865,"date":"2016-05-31T00:14:26","date_gmt":"2016-05-31T00:14:26","guid":{"rendered":"https:\/\/www.joelonsoftware.com\/?p=865"},"modified":"2018-04-23T21:59:09","modified_gmt":"2018-04-23T21:59:09","slug":"introducing-hyperdev","status":"publish","type":"post","link":"https:\/\/www.joelonsoftware.com\/2016\/05\/31\/introducing-hyperdev\/","title":{"rendered":"Introducing HyperDev"},"content":{"rendered":"<p>One more thing\u2026<\/p>\n<p>It\u2019s been awhile since we launched a whole new product at Fog Creek Software (the last one was <a href=\"https:\/\/trello.com\/\">Trello<\/a>, and that\u2019s <a href=\"http:\/\/www.forbes.com\/sites\/alexkonrad\/2016\/05\/23\/trello-get-serious-about-big-businesses-as-it-passes-1-1-million-daily-users-and-triples-sales\/#fed92956ce27\">doing pretty well<\/a>). Today we\u2019re announcing the public beta of <a href=\"https:\/\/hyperdev.com\/\">HyperDev<\/a>, a developer playground for building full-stack web-apps fast.<\/p>\n<p>HyperDev is going to be the fastest way to bang out code and get it running on the internet. We want to eliminate 100% of the complicated administrative details around getting code up and running on a website. The best way to explain that is with a little tour.<\/p>\n<p>Step one. You go to hyperdev.com.<\/p>\n<p>Boom. Your new website is already running. You have your own private virtual machine (well, really it\u2019s a container but you don\u2019t have to care about that or know what that means) running on the internet at its own, custom URL which you can already give people and they can already go to it and see the simple code we started you out with.<\/p>\n<p>All that happened just because you went to hyperdev.com.<\/p>\n<p>Notice what you DIDN\u2019T do.<\/p>\n<ul>\n<li>You didn\u2019t make an account.<\/li>\n<li>You didn\u2019t use Git. Or any version control, really.<\/li>\n<li>You didn\u2019t deal with name servers.<\/li>\n<li>You didn\u2019t sign up with a hosting provider.<\/li>\n<li>You didn\u2019t provision a server.<\/li>\n<li>You didn\u2019t install an operating system or a LAMP stack or Node or operating systems or anything.<\/li>\n<li>You didn\u2019t configure the server.<\/li>\n<li>You didn\u2019t figure out how to integrate and deploy your code.<\/li>\n<\/ul>\n<p><span class=\"side\"><a href=\"https:\/\/i0.wp.com\/www.joelonsoftware.com\/wp-content\/uploads\/2016\/05\/hyperdev_ss1.png?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" class=\"sideimg\" src=\"https:\/\/i0.wp.com\/www.joelonsoftware.com\/wp-content\/uploads\/2016\/05\/hyperdev_ss1-thumbnail.png?w=730&#038;ssl=1\" alt=\"\" \/><\/a><\/span>You just went to hyperdev.com. Try it now!<\/p>\n<p>What do you see in your browser?<\/p>\n<p>Well, you\u2019re seeing a basic IDE. There\u2019s a little button that says SHOW and when you click on that, another browser window opens up showing you your website as it appears to the world. Notice that we invented a unique name for you.<\/p>\n<p>Over there in the IDE, in the bottom left, you see some client side files. One of them is called index.html. You know what to do, right? Click on index.html and make a couple of changes to the text.<\/p>\n<p>Now here\u2019s something that is already a little bit magic\u2026 As you type changes into the IDE, without saving, those changes are deploying to your new web server and we\u2019re refreshing the web browser for you, so those changes are appearing almost instantly, both in your browser and for anyone else on the internet visiting your URL.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.joelonsoftware.com\/wp-content\/uploads\/2016\/05\/hyperdev_ss2.gif?resize=600%2C273&#038;ssl=1\" alt=\"\" width=\"600\" height=\"273\" border=\"0\" \/><\/p>\n<p>Again, notice what you DIDN\u2019T do:<\/p>\n<ul>\n<li>You didn\u2019t hit a \u201csave\u201d button.<\/li>\n<li>You didn\u2019t commit to Git.<\/li>\n<li>You didn\u2019t push.<\/li>\n<li>You didn\u2019t run a deployment script.<\/li>\n<li>You didn\u2019t restart the web server.<\/li>\n<li>You didn\u2019t refresh the page on your web browser.<\/li>\n<\/ul>\n<p>You just typed some changes and BOOM they appeared.<\/p>\n<p>OK, so far so good. That\u2019s a little bit like jsFiddle or Stack Overflow snippets, right? NBD.<\/p>\n<p>But let\u2019s look around the IDE some more. In the top left, you see some server side files. These are actual code that actually runs on the actual (virtual) server that we\u2019re running for you. It\u2019s running node. If you go into the server.js file you see a bunch of JavaScript. Now change something there, and watch your window over on the right.<\/p>\n<p>Magic again\u2026 the changes you are making to the server-side Javascript code are already deployed and they\u2019re already showing up live in the web browser you\u2019re pointing at your URL.<\/p>\n<p>Literally every change you make is instantly saved, uploaded to the server, the server is restarted with the new code, and your browser is refreshed, all within half a second. So now your server-side code changes are instantly deployed, and once again, notice that you didn\u2019t:<\/p>\n<ul>\n<li>Save<\/li>\n<li>Do Git incantations<\/li>\n<li>Deploy<\/li>\n<li>Buy and configure a continuous integration solution<\/li>\n<li>Restart anything<\/li>\n<li>Send any SIGHUPs<\/li>\n<\/ul>\n<p>You just changed the code and it was already reflected on the live server.<\/p>\n<p>Now you\u2019re starting to get the idea of HyperDev. It\u2019s just a SUPER FAST way to get running code up on the internet without dealing with any administrative headaches that are not related to your code.<\/p>\n<p>Ok, now I think I know the next question you\u2019re going to ask me.<\/p>\n<p>\u201cWait a minute,\u201d you\u2019re going to ask. \u201cIf I\u2019m not using Git, is this a single-developer solution?\u201d<\/p>\n<p>No. There\u2019s an Invite button in the top left. You can use that to get a link that you give your friends. When they go to that link, they\u2019ll be editing, live, with you, in the same documents. It\u2019s a magical kind of team programming where everything shows up instantly, like Trello, or Google Docs. It is a magical thing to collaborate with a team of two or three or four people banging away on different parts of the code at the same time without a source control system. It\u2019s remarkably productive; you can dive in and help each other or you can each work on different parts of the code.<\/p>\n<p>\u201cThis doesn\u2019t make sense. How is the code not permanently broken? You can\u2019t just sync all our changes continuously!\u201d<\/p>\n<p>You\u2019d be surprised just how well it does work, for most small teams and most simple programming projects. Listen, this is not the future of all software development. Professional software development teams will continue to use professional, robust tools like Git and that\u2019s great. But it\u2019s surprising how just having continuous merging and reliable Undo solves the \u201cversion control\u201d problem for all kinds of simple coding problems. And it really does create an insanely addictive form of collaboration that supercharges your team productivity.<\/p>\n<p>\u201cWhat if I literally type \u2018DELETE * FROM USERS\u2019 on my way to typing \u2018WHERE id=9283\u2019, do I lose all my user data?\u201d<\/p>\n<p>Erm\u2026 yes. Don\u2019t do that. This doesn\u2019t come up that often, to be honest, and we\u2019re going to add the world\u2019s simplest \u201cbranch\u201d feature so that optionally you can have a \u201cdev\u201d and \u201clive\u201d branch, but for now, yeah, you\u2019d be surprised at how well this works in practice even though in theory it sounds terrifying.<\/p>\n<p>\u201cDoes it have to be JavaScript?\u201d<\/p>\n<p>Right now the server we gave you is running Node so today it has to be JavaScript. We\u2019ll add other languages soon.<\/p>\n<p>\u201cWhat can I do with my server?\u201d<\/p>\n<p>Anything you can do in Node. You can add any package you want just by editing package.json. So literally any working JavaScript you want to cut and paste from Stack Overflow is going to work fine.<\/p>\n<p>\u201cIs my server always up?\u201d<\/p>\n<p>If you don\u2019t use it for a while, we\u2019ll put your server to sleep, but it will never take more than a few seconds to restart. But yes for all intents and purposes, you can treat it like a reasonably reliably, 24\/7 web server. This is still a beta so don\u2019t ask me how many 9\u2019s. You can have all the 8\u2019s you want.<\/p>\n<p>\u201cWhy would I trust my website to you? What if you go out of business?\u201d<\/p>\n<p>There\u2019s nothing special about the container we gave you; it\u2019s a generic VM running Node. There\u2019s nothing special about the way we told you to write code; we do not give you special frameworks or libraries that will lock you in. Download your source code and host it anywhere and you\u2019re back in business.<\/p>\n<p>\u201cHow are you going to make money off of this?\u201d<\/p>\n<p>Aaaaaah! why do you care!<\/p>\n<p>But seriously, the current plan is to have a free version for public \/ open source code you don\u2019t mind sharing with the world. If you want private code, much like private repos, there will eventually be paid plans, and we\u2019ll have corporate and enterprise versions. For now it\u2019s all just a beta so don\u2019t worry too much about that!<\/p>\n<p>\u201cWhat is the point of this Joel?\u201d<\/p>\n<p>As developers we have fantastic sets of amazing tools for building, creating, managing, testing, and deploying our source code. They\u2019re powerful and can do anything you might need. But they\u2019re usually too complex and too complicated for very simple projects. Useful little bits of code never get written because you dread the administration of setting up a new dev environment, source code repo, and server. New programmers and students are overwhelmed by the complexity of distributed version control when they\u2019re still learning to write a while loop. Apps that might solve real problems never get written because of the friction of getting started.<\/p>\n<p>Our theory here is that HyperDev can remove all the barriers to getting started and building useful things, and more great things will get built.<\/p>\n<p>\u201cWhat now?\u201d<\/p>\n<p>Really? Just go to <a href=\"https:\/\/hyperdev.com\/\">HyperDev<\/a> and start playing!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One more thing\u2026 It\u2019s been awhile since we launched a whole new product at Fog Creek Software (the last one was Trello, and that\u2019s doing pretty well).&hellip; <span class=\"read-more\"><a class=\"more-link\" href=\"https:\/\/www.joelonsoftware.com\/2016\/05\/31\/introducing-hyperdev\/\" rel=\"bookmark\">Read more <span class=\"screen-reader-text\">&#8220;Introducing HyperDev&#8221;<\/span><\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[7,2],"tags":[],"class_list":["post-865","post","type-post","status-publish","format-standard","hentry","category-fog-creek-story","category-news"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p83KNI-dX","_links":{"self":[{"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/posts\/865","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/comments?post=865"}],"version-history":[{"count":3,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/posts\/865\/revisions"}],"predecessor-version":[{"id":3409,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/posts\/865\/revisions\/3409"}],"wp:attachment":[{"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/media?parent=865"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/categories?post=865"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/tags?post=865"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}