<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[choo - Medium]]></title>
        <description><![CDATA[Choo choo, here comes the medium train - Medium]]></description>
        <link>https://medium.com/choojs?source=rss----7d99235af3ff---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>choo - Medium</title>
            <link>https://medium.com/choojs?source=rss----7d99235af3ff---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Thu, 25 Jun 2026 05:33:59 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/choojs" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Choo Weekly #7 2018: nanocomponent-cache, showrunner.io & cssnext]]></title>
            <link>https://medium.com/choojs/choo-weekly-7-2018-nanocomponent-cache-showrunner-io-cssnext-578e2aa19b08?source=rss----7d99235af3ff---4</link>
            <guid isPermaLink="false">https://medium.com/p/578e2aa19b08</guid>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[css]]></category>
            <category><![CDATA[choo-weekly]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Yoshua Wuyts]]></dc:creator>
            <pubDate>Thu, 15 Feb 2018 13:59:45 GMT</pubDate>
            <atom:updated>2018-02-15T13:59:45.237Z</atom:updated>
            <content:encoded><![CDATA[<p>Another week, another Choo weekly! This week’s a short one, because, well, we’ve been working on a lot of stuff — but not releasing much.</p><p>Also happy Valentines Day! — we hope you had a good date with whatever you love most. In our case we really like food, and had a bunch — so that was pretty excellent.</p><p>Anyway, frontend. Let’s dive into our shortest Choo Weekly so far!</p><p><em>If this is your first time you’re hearing about Choo: we’re the tiny frontend framework you’ve always wanted to use. True story. Check out </em><a href="https://github.com/choojs/create-choo-app"><em>create-choo-app</em></a><em> to have your first application working 5 minutes from now.</em></p><h3>nanocomponent-cache v1.1.0</h3><p><a href="https://twitter.com/uhhyeahbret">Bret Comnes</a> released v1.1.0 of <a href="https://github.com/bcomnes/nanocomponent-cache">nanocomponent-cache</a>. This is a great module to keep track of component instances between runs. This is currently one of the solutions we’re considering for Choo’s component system going forward.</p><h3>Bret Comnes on Twitter</h3><p>🎉 Released class-cache and nanocomponent cache 1.1.0 🎉 🏃‍♂️ Added automatic (optional) LRU cache ejection 📚 More examples! https://t.co/H5pQMU38QK 🚂🚃🚃🚃🚃 #choo</p><p><a href="https://github.com/bcomnes/nanocomponent-cache">bcomnes/nanocomponent-cache</a></p><h3>Showrunner.io beta is live!</h3><p>The wonderful folks over at <a href="http://scripto.computer/">Scripto</a> have released the beta for the new <a href="http://showrunner.io">Showrunner</a>: an application to help write TV shows. We’re really excited about this, as it’s probably one of the most complex Choo apps in production at the time of writing.</p><p>If you’re looking to work with Choo, and live in the US: they’re currently looking for <a href="https://showrunner.io/careers.html">a new engineer</a> on their team!</p><p><a href="https://showrunner.io/">Showrunner</a></p><h3>sheetify-cssnext v2.0.0</h3><p>One of the oldest modules Sheetify ecosystem was recently updated to be compatible with the latest Sheetify. If you’re looking to try out the latest CSS syntax, today — give sheetify-cssnext a spin!</p><h3>choo on Twitter</h3><p>sheetify-cssnext v2.0.0 has been released. Updated to the latest cssnext https://t.co/GwC0ESiCrW</p><h3>Wrapping Up</h3><p>And that’s it for this week! We’re currently working on (experimental) async rendering in Bankai, so pretty stoked about that. Also there’s some more general quality-of-life improvements coming through in Bankai, and we’re really excited for them!</p><p>Anyway, this is goobye. Catch y’all again next week!</p><p><em>If you’re working on something cool using Choo, let us know on </em><a href="https://twitter.com/4kilobytes"><em>@4kilobytes</em></a><em> or </em><a href="https://www.irccloud.com/irc/freenode/channel/choo"><em>Freenode#choo</em></a><em> ✌️.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=578e2aa19b08" width="1" height="1" alt=""><hr><p><a href="https://medium.com/choojs/choo-weekly-7-2018-nanocomponent-cache-showrunner-io-cssnext-578e2aa19b08">Choo Weekly #7 2018: nanocomponent-cache, showrunner.io &amp; cssnext</a> was originally published in <a href="https://medium.com/choojs">choo</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Choo Weekly #6 2018: thank you!]]></title>
            <link>https://medium.com/choojs/choo-weekly-6-thank-you-53eb3e5f8d3?source=rss----7d99235af3ff---4</link>
            <guid isPermaLink="false">https://medium.com/p/53eb3e5f8d3</guid>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[choo-weekly]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Yoshua Wuyts]]></dc:creator>
            <pubDate>Thu, 08 Feb 2018 14:16:49 GMT</pubDate>
            <atom:updated>2018-02-15T11:23:29.913Z</atom:updated>
            <content:encoded><![CDATA[<p>A new week, a new weekly! Let’s skip the introductions this time around, and dive straight in!</p><p><em>If this is your first time you’re hearing about Choo: we’re the tiny frontend framework you’ve always wanted to use. True story. Check out </em><a href="https://github.com/choojs/create-choo-app"><em>create-choo-app</em></a><em> to have your first application working 5 minutes from now.</em></p><h3>5000 stars on GitHub!</h3><p>On Tuesday May 10th we made the first commit to Choo. Now 1 year and 9 months later we’ve passed 5000 stars on GitHub! We’re grateful for everyone that’s come along on this journey; it means the world to us.</p><p>We also recently found out we crossed the 100.000 downloads mark on npm. That means we’ve had about 150–200 downloads a day on average for as long as we’ve existed! Thank you!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/504/1*2mT0suLfvaqPkze4wdfRxA.png" /><figcaption>5067 stars!</figcaption></figure><h3>Reference → Docs</h3><p>The response to our docs release last week has been great! We’re real happy that people are responding so well; it’s been a long way coming.</p><p>However, a piece of feedback we received was that choo.io/reference wasn’t the most intuitive url for docs. So our docs are now available on <a href="https://choo.io/docs!">https://choo.io/docs!</a> We feel this makes more sense, and are happy to have made the change!</p><p>Speaking of docs tho: we’re excited to finish the work we’ve been doing on our guides. Stay tuned for more on that!</p><h3>Faster HTML parsing with hstream</h3><p>As part of our effort to speed up Bankai, we noticed that in particular our HTML parsing wasn’t performing well. In particular the <a href="https://github.com/substack/hyperstream">hyperstream package</a> was starting to show its age.</p><p>So to improve that, <a href="https://medium.com/u/84872f9b6902">Renée Kooi</a> has created <a href="https://github.com/stackhtml/hstream">hstream</a>, a library to efficiently stream HTML templates. It’s already live in Bankai today. Check it out on <a href="https://github.com/stackhtml/">github.com/stackhtml</a>.</p><p><a href="https://github.com/stackhtml/hstream">stackhtml/hstream</a></p><h3>create-choo-app v1.11.0</h3><p>Improvements sometimes take a bit of time to come through. So too did our work on <a href="https://github.com/choojs/create-choo-app/">create-choo-app</a>. But last week we’ve revisited it with the help of <a href="https://twitter.com/yerko_palma">Yerko Palma,</a> and applied a much-needed layer of polish!</p><p>create-choo-app now has service workers enabled by default for all new apps. This is cool, because it means that by default all your apps should be passing as <a href="https://twitter.com/yoshuawuyts/status/959956572637188096">100/100/100/100/100</a> on <a href="https://developers.google.com/web/tools/lighthouse/">Google’s Lighthouse audit!</a></p><p>Also check out the new default Choo app we create for you. We’ve included a screenshot below, but there’s also a live website if you want to see it in action yourself! <a href="https://welcome.choo.io">https://welcome.choo.io</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*OBHHkzp7QyiwBw3KaJRPDg.png" /><figcaption>welcome.choo.io</figcaption></figure><h3>Nanostate v1.2.0</h3><p><a href="https://github.com/choojs/nanostate/">Nanostate</a> now has support for hierarchical state machines. Adding hierarchy to state machines is a form of composition that allows matching states if a particular state doesn’t match.</p><p>In nanostate it looks like this:</p><pre>var nanostate = require(&#39;nanostate&#39;)<br><br>var machine = nanostate(&#39;green&#39;, {<br>  green: { timer: &#39;yellow&#39; },<br>  yellow: { timer: &#39;red&#39; },<br>  red: { timer: &#39;green&#39; }<br>})<br><br>machine.event(&#39;powerOutage&#39;, nanostate(&#39;flashingRed&#39;, {<br>  flashingRed: { powerRestored: &#39;green&#39; }<br>}))<br><br>machine.emit(&#39;timer&#39;)<br>console.log(machine.state)<br>// =&gt; &#39;yellow&#39;<br><br>machine.emit(&#39;powerOutage&#39;)<br>console.log(machine.state)<br>// =&gt; &#39;flashingRed&#39;<br><br>machine.emit(&#39;powerRestored&#39;)<br>console.log(machine.state)<br>// =&gt; &#39;green&#39;</pre><p>Shout out to <a href="https://medium.com/u/70b7f604fd47">Jonathan Dupré</a> for all the hard work put into making this happen!</p><p><a href="https://github.com/choojs/nanostate/#hierarchical">choojs/nanostate</a></p><h3>choo-notification</h3><p>If you’ve ever interacted with the Web notification API, you might have noticed that it requires a good amount of boilerplate to set up permissions right. And once it works, you’ll probably need to wrap it for logging and other things.</p><p>To make the Notification API easier to use with Choo, we’ve released choo-notification! It’s a thin wrapper around the Notification API, exposing it entirely through Choo’s emitter API.</p><p><a href="https://github.com/choojs/choo-notification">choojs/choo-notification</a></p><p>As an added bonus: we recorded authoring this plugin entirely on stream. Check out the recording below!</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FsOVa7fCDRBM%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DsOVa7fCDRBM&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FsOVa7fCDRBM%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/be237e6a726ff561f2f646b417dd3f13/href">https://medium.com/media/be237e6a726ff561f2f646b417dd3f13/href</a></iframe><h3>New Sites this week</h3><p>There’ve been a few new sites created with Choo this week. Check it out!</p><ul><li><a href="http://eleven.yoshuawuyts.com/">eleven.yoshuawuyts.com</a> (<a href="https://github.com/yoshuawuyts/eleven">GitHub</a>)</li><li><a href="https://yoshuawuyts.com">yoshuawuyts.com</a> (<a href="https://github.com/yoshuawuyts/memex">GitHub</a>)</li><li><a href="https://bankai.choo.io/">bankai.choo.io</a> (<a href="https://github.com/choojs/bankai-website">GitHub</a>)</li><li><a href="https://lesspass.alhur.es/">lesspass.alhur.se</a></li></ul><h3>Wrapping up</h3><p>And that’s it for this week! Thanks for reading it all, and see you again next week. Happy hacking y’all!</p><p><em>If you’re working on something cool using Choo, let us know on </em><a href="https://twitter.com/4kilobytes"><em>@4kilobytes</em></a><em> or </em><a href="https://www.irccloud.com/irc/freenode/channel/choo"><em>Freenode#choo</em></a><em> ✌️.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=53eb3e5f8d3" width="1" height="1" alt=""><hr><p><a href="https://medium.com/choojs/choo-weekly-6-thank-you-53eb3e5f8d3">Choo Weekly #6 2018: thank you!</a> was originally published in <a href="https://medium.com/choojs">choo</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Choo Weekly #5 2018: documentation is live, GitHub robots & smaller Bankai builds!]]></title>
            <link>https://medium.com/choojs/choo-weekly-5-2018-documentation-is-live-github-robots-smaller-bankai-builds-4b0571327525?source=rss----7d99235af3ff---4</link>
            <guid isPermaLink="false">https://medium.com/p/4b0571327525</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[choo-weekly]]></category>
            <dc:creator><![CDATA[Yoshua Wuyts]]></dc:creator>
            <pubDate>Wed, 31 Jan 2018 16:08:26 GMT</pubDate>
            <atom:updated>2018-01-31T16:08:26.032Z</atom:updated>
            <content:encoded><![CDATA[<p>Heyyy everyone! — happy end of January! We hope you’re having a great 2018 so far. We definitely are!</p><p>This week we’ve got some fun things for y’all! Our docs are finally live, we’ve added a (small) armada of GitHub robots to our repos — and we shrinkified Bankai. Let’s dig in!</p><p><em>If this is your first time you’re hearing about Choo: we’re the tiny frontend framework you’ve always wanted to use. True story. Check out </em><a href="https://github.com/choojs/create-choo-app"><em>create-choo-app</em></a><em> to have your first application working 5 minutes from now.</em></p><h3>Documentation is Live!</h3><p>For the past few months we’ve been hard at work to bring Choo’s documentation online, and last Thursday it went live! <a href="https://medium.com/u/bcc46ac64be1">Jon-Kyle</a>’s doc designs are now available for everyone to enjoy. Check it out now on <a href="https://choo.io/reference">choo.io/reference</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/1*9EGSkqnQ91Pgnb3aE8pL3Q.gif" /><figcaption>A screen capture of crolling through the new Choo documentation</figcaption></figure><p>We have another 4 guides currently being worked on, so expect updates to come down soon!</p><p>We’d be keen to hear which guides you’d like to see; let us know and we’ll make it happen!</p><h3>Robots on our GitHub org</h3><p>Managing GitHub repositories is tricky. On an average day about 20 new issues pop up, varying between questions, support, issues and features. While we try and reply to everything, we can’t always get around to replying to everyone.</p><p>Luckily automation can help us with managing issues! By employing robots, we can check notify people of changes that happened, and ask them if issues are still relevant.</p><p>So we’re happy to share that starting this week, we’ll be employing <a href="https://github.com/apps/release-notifier">release-notifier</a> full-time, and will be starting a trial with <a href="https://probot.github.io/apps/stale/">stale-bot</a>.</p><p>We hope you’ll enjoy these new bots! — We definitely want to hear from you how you’re finding the experience. We’re always looking to improve, and feedback is invaluable!</p><h3>Smaller Bankai Installations</h3><p><a href="https://medium.com/u/84872f9b6902">Renée Kooi</a> released a new version of browser-flat-pack , which brings the total size of Bankai on-disk to under 100MB! This should speed up installation times, and make Bankai even more pleasant to work with!</p><h3>Renéeeee on Twitter</h3><p>browser-pack-flat@3.0.7 removes 10MB worth of unused files from the published package, finally bringing a full bankai install down to &amp;lt;100MB! https://t.co/aFp0NghEFp</p><h3>Wrapping up</h3><p>And that’s it again for this week. We’re super excited Choo docs are now live! — this was about two years overdue; but better late than never haha.</p><p>In other news: we’ve been experimenting with http/2 push while in Singapore, and it’s looking quite promising. We have nothing to show yet, but there’s a good chance this might turn out to be a big deal. Haha, well it’s all hypotheticals for now tho.</p><p>Anyway, sometimes the time to say goodbye is now. So, err, goodbye. Catch you next week!</p><p><em>If you’re working on something cool using Choo, let us know on </em><a href="https://twitter.com/4kilobytes"><em>@4kilobytes</em></a><em> or </em><a href="https://www.irccloud.com/irc/freenode/channel/choo"><em>Freenode#choo</em></a><em> ✌️.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4b0571327525" width="1" height="1" alt=""><hr><p><a href="https://medium.com/choojs/choo-weekly-5-2018-documentation-is-live-github-robots-smaller-bankai-builds-4b0571327525">Choo Weekly #5 2018: documentation is live, GitHub robots &amp; smaller Bankai builds!</a> was originally published in <a href="https://medium.com/choojs">choo</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Choo Weekly #4 2018: Bankai Sponsorship, Community Highlights]]></title>
            <link>https://medium.com/choojs/choo-weekly-4-2018-bankai-sponsorship-community-highlights-47cf91e394bb?source=rss----7d99235af3ff---4</link>
            <guid isPermaLink="false">https://medium.com/p/47cf91e394bb</guid>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[choo-weekly]]></category>
            <category><![CDATA[frontend]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Yoshua Wuyts]]></dc:creator>
            <pubDate>Wed, 24 Jan 2018 13:23:20 GMT</pubDate>
            <atom:updated>2018-01-25T03:44:28.988Z</atom:updated>
            <content:encoded><![CDATA[<p>Hi from Singapore! We’re hanging out at <a href="https://twitter.com/jsconfasia">JSConf Asia</a> this week — hit us up on <a href="http://twitter.com/4kilobytes">Twitter</a> if you’re interested in chatting about frontend or some free stickers!</p><p>This week we have lots of work from people in the community. Maps, videos, sketches, and apps — it’s all here!</p><p><em>If this is your first time you’re hearing about Choo: we’re the tiny frontend framework you’ve always wanted to use. True story. Check out </em><a href="https://github.com/choojs/create-choo-app"><em>create-choo-app</em></a><em> to have your first application working 5 minutes from now.</em></p><h3>nearForm is sponsoring Browserify &amp; Bankai development</h3><p><a href="https://medium.com/u/4d2ed76cb5eb">nearForm</a> has been sponsoring Choo for a couple of months now. One of the largest projects we’ve published since has been <a href="https://medium.com/choojs/bankai-the-friendly-web-compiler-35f1916679cc">Bankai v9</a>: an optimizing web compiler. Many of its features, such as code splitting and bundle flattening were implemented by <a href="https://medium.com/u/84872f9b6902">Renée Kooi</a>.</p><p>We’re thrilled to announce <a href="https://medium.com/u/4d2ed76cb5eb">nearForm</a> has agreed to sponsor Renée part-time to continue their work on Bankai &amp; Browserify! We’re excited for the future is going to hold, and thankful to nearForm for their continued support!</p><h3>Let’s read some code! Choo Stores</h3><p><a href="https://medium.com/u/e8d87292c1a3">Josh Johnston</a> started a walkthrough of how Choo’s internals work! Check out how Choo’s store abstraction is implemented!</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FWEhplbC-lLw%3Fstart%3D17%26feature%3Doembed%26start%3D17&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DWEhplbC-lLw&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FWEhplbC-lLw%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/3183eeaff3a5e8e3e15a2c6415f0b8b7/href">https://medium.com/media/3183eeaff3a5e8e3e15a2c6415f0b8b7/href</a></iframe><h3>State Machines drawing</h3><p><a href="https://medium.com/u/408458b1f6aa">Irina Shestak</a> drew a pretty great visualization of how State Machines work. Check it out on her Twitter:</p><h3>ira. on Twitter</h3><p>a quick little drawing on FSMs 💻 ✨</p><h3>3D Maps</h3><p><a href="https://medium.com/u/3928bb3ec14b">substack</a> has been creating 3D map sculptures using <a href="https://regl.party">Regl</a> and Choo. Check out <a href="https://substack.neocities.org/seamount/">Hawaii &amp; Seamount</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PQHk2QLuY19iqC7XLEapuw.png" /><figcaption>Hawaii in three dimensions</figcaption></figure><h3>Hypercast</h3><p><a href="http://twitter.com/louiscenter">Louis Center</a> has been working on p2p video using <a href="https://github.com/datproject/dat">Dat</a> and Choo! Pretty cool if you want to share (live) video without relying on a central provider.</p><h3>LOUIS on Twitter</h3><p>a new WIP, now ready to play with: hypercast, p2p livestreaming for @BeakerBrowser → https://t.co/CxX0VjCPei https://t.co/jDCxK875Zd</p><h3>Electron Feed Reader</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*U6UUdvCKvHoGGdIEFwNI-w.png" /></figure><h3>Wrapping up</h3><p>Thanks for making it this far! We’re excited by the work folks have been making with Choo!</p><p>We hope y’all have a great week!</p><p><em>If you’re working on something cool using Choo, let us know on </em><a href="https://twitter.com/4kilobytes"><em>@4kilobytes</em></a><em> or </em><a href="https://www.irccloud.com/irc/freenode/channel/choo"><em>Freenode#choo</em></a><em> ✌️.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=47cf91e394bb" width="1" height="1" alt=""><hr><p><a href="https://medium.com/choojs/choo-weekly-4-2018-bankai-sponsorship-community-highlights-47cf91e394bb">Choo Weekly #4 2018: Bankai Sponsorship, Community Highlights</a> was originally published in <a href="https://medium.com/choojs">choo</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Choo Weekly #3 2018: Routing Changes, Sheetify 7.0.0 & Parallel Nanostate]]></title>
            <link>https://medium.com/choojs/choo-weekly-3-2018-routing-changes-sheetify-7-0-0-parallel-nanostate-20841c9f716d?source=rss----7d99235af3ff---4</link>
            <guid isPermaLink="false">https://medium.com/p/20841c9f716d</guid>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[choo-weekly]]></category>
            <category><![CDATA[frontend]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Yoshua Wuyts]]></dc:creator>
            <pubDate>Wed, 17 Jan 2018 15:54:02 GMT</pubDate>
            <atom:updated>2018-01-17T15:54:01.711Z</atom:updated>
            <content:encoded><![CDATA[<p>Happy Wednesday everyone! Another week, another round of updates. This time around we’ll be talking about a few (internal) routing changes for Choo, a new version of Sheetify, and some production applications that were in the news recently. Let’s dig in!</p><p><em>If this is your first time you’re hearing about Choo: we’re the tiny frontend framework you’ve always wanted to use. True story. Check out </em><a href="https://github.com/choojs/create-choo-app"><em>create-choo-app</em></a><em> to have your first application working 5 minutes from now.</em></p><h3>Choo Routing Changes</h3><p>One of the main appeals of Choo is that you understand how it works, you can implement it yourself from scratch in a couple of hours. After all: our main source is <a href="https://github.com/choojs/choo/blob/master/index.js">about 200 lines</a>.</p><p>One of the hardest parts at the moment is the way our router interacts with the rest of the app. Luckily, thanks to the efforts of <a href="https://medium.com/u/5ba812d5bae">Marc Bachmann</a> the last little bits of complexity will soon be ironed out.</p><p>A minor release with these changes should be landing this week!</p><p><a href="https://github.com/choojs/choo/pull/613">Separate route matching from rendering by marcbachmann · Pull Request #613 · choojs/choo</a></p><h3>Sheetify 7.0.0</h3><p>Sheetify has been the way we figured people might want to use CSS. Being able to import stylesheets from npm, defining them inline, but also in local .css files: Sheetify does it all!</p><p>Our latest release is 7.0.0 which brings the configuration in line with <a href="https://github.com/browserify/browserify">browserify</a> and <a href="https://github.com/stackhtml/documentify/">documentify</a>. Instead of --use, you can now do --transform. A small breaking change that warranted a major bump, but an important one at that!</p><p>Sheetify 7.0.0 should be landing in <a href="https://github.com/choojs/bankai">Bankai</a> soon too. So keep an eye out for updates!</p><p><a href="https://github.com/stackcss/sheetify">stackcss/sheetify</a></p><h3>Bankai 9.2.0</h3><p>Speaking of Bankai: we <a href="https://medium.com/choojs/choo-weekly-02-18-rust-in-bankai-docs-and-development-live-streams-70aabe8ee67c">mentioned last week</a> we’d be releasing a new Bankai version, and we did! Bankai 9.2.0 comes with all sorts of goodies!</p><p>We’ve improved our source map logic, making source maps more reliable. And we’ve improved our installation times using <a href="https://github.com/dropbox/rust-brotli/">rust-brotli</a> — so no more compilation times when installing!</p><p>Go ahead and install Bankai 9.2.0 today!</p><pre>$ npm install bankai@9.2.0</pre><p><em>If you’re never heard about Bankai: it’s the easiest way to compile your frontend projects. With two commands it takes care of all tooling for both production &amp; development. Check out </em><a href="https://github.com/choojs/bankai"><em>https://github.com/choojs/bankai</em></a><em> to learn more.</em></p><h3>Parallel Nanostate</h3><p>Thanks to the work of <a href="https://twitter.com/brunoskonrad">konrad.min.js</a>, <a href="https://github.com/choojs/nanostate/">Nanostate</a> now has parallel support! You can now hook up multiple state machines into a single interface, making it easier to interact with.</p><pre>var nanostate = require(&#39;nanostate&#39;)<br><br>var machine = nanostate.parallel({<br>  bold: nanostate(&#39;off&#39;, {<br>    on: { &#39;toggle&#39;: &#39;off&#39; },<br>    off: { &#39;toggle&#39;: &#39;on&#39; },<br>  }),<br>  underline: nanostate(&#39;off&#39;, {<br>    on: { &#39;toggle&#39;: &#39;off&#39; },<br>    off: { &#39;toggle&#39;: &#39;on&#39; },<br>  }),<br>  italics: nanostate(&#39;off&#39;, {<br>    on: { &#39;toggle&#39;: &#39;off&#39; },<br>    off: { &#39;toggle&#39;: &#39;on&#39; },<br>  }),<br>  list: nanostate(&#39;none&#39;, {<br>    none: { bullets: &#39;bullets&#39;, numbers: &#39;numbers&#39; },<br>    bullets: { none: &#39;none&#39;, numbers: &#39;numbers&#39; },<br>    numbers: { bullets: &#39;bullets&#39;, none: &#39;none&#39; }<br>  })<br>})<br><br>machine.emit(&#39;bold:toggle&#39;)<br>console.log(machine.state)<br>// =&gt; {<br>//   bold: &#39;on&#39;,<br>//   italics: &#39;off&#39;,<br>//   underline: &#39;off&#39;,<br>//   list: &#39;none&#39;<br>// }</pre><p>Install nanostate@1.1.0 to get started today!</p><p><a href="https://github.com/choojs/nanostate/">choojs/nanostate</a></p><h3>Composable Views Documentation</h3><p>We’re trying our best to write documentation for Choo. This not only means covering the basics, we also want to provide people with patterns &amp; modules to use. After all: this is how people work on a day-to-day basis, and we want to make this available for everyone.</p><p>One of the patterns people have been wondering about in Choo, is how to reuse large parts of a view when you have a lot of similar views. We made a PR exactly to address this!</p><p><a href="https://github.com/choojs/website/pull/43">composable views by yoshuawuyts · Pull Request #43 · choojs/website</a></p><p>We’re thrilled that we’re able to put out more docs. We’d love to hear from you if you had trouble doing something, because there should be docs for that!</p><h3>United Nations Website</h3><p><a href="https://medium.com/u/1b6d07bb6dc2">code and conspire</a> made a website for the United Nations using Choo. They’ve also committed to sponsoring Choo on OpenCollective! We couldn’t be more grateful.</p><p>Check out the website for the United Nation’s 2030 sustainability goals!</p><p><a href="https://www.globalgoals.org/">Overcoming the World&#39;s Challenges - The Global Goals</a></p><h3>Scripto in the New Yorker</h3><p>Last week Scripto got a feature in the New Yorker about how they’re transforming the way late night shows are made in the US. We’re really excited for them!</p><p>Scripto have been using Choo since the beginning. Their challenges have helped shape Choo into what it is today — shout out to <a href="https://medium.com/u/7171d7b455ae">a pile of moss,</a> Scripto’s CTO!</p><p><a href="https://www.newyorker.com/tech/elements/how-scripto-the-app-that-stephen-colbert-helped-build-became-a-fixture-of-late-night-comedy-news">How Scripto, the App That Stephen Colbert Helped Build, Became a Fixture of Late-Night Comedy News</a></p><h3>Components Progress</h3><p><a href="https://medium.com/u/8dc5d6ee64b">Seth Thompson</a> made a nanolru, a small module to keep track of component instances with garbage-collection built-in. This should help us progress components nicely.</p><p>More updates to follow soon!</p><h3>Wrapping Up</h3><p>Thanks a lot for making it this far. Hope you’re catching enough sleep and are staying hydrated. We hope you have a great rest of the week! Catch you next time!</p><p><em>If you’re working on something cool using Choo, let us know on </em><a href="https://twitter.com/4kilobytes"><em>@4kilobytes</em></a><em> or </em><a href="https://www.irccloud.com/irc/freenode/channel/choo"><em>Freenode#choo</em></a><em> ✌️.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=20841c9f716d" width="1" height="1" alt=""><hr><p><a href="https://medium.com/choojs/choo-weekly-3-2018-routing-changes-sheetify-7-0-0-parallel-nanostate-20841c9f716d">Choo Weekly #3 2018: Routing Changes, Sheetify 7.0.0 &amp; Parallel Nanostate</a> was originally published in <a href="https://medium.com/choojs">choo</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Choo Weekly #2 2018: Rust in Bankai, Docs and Development Live Streams!]]></title>
            <link>https://medium.com/choojs/choo-weekly-02-18-rust-in-bankai-docs-and-development-live-streams-70aabe8ee67c?source=rss----7d99235af3ff---4</link>
            <guid isPermaLink="false">https://medium.com/p/70aabe8ee67c</guid>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[choo-weekly]]></category>
            <category><![CDATA[rust]]></category>
            <dc:creator><![CDATA[Yoshua Wuyts]]></dc:creator>
            <pubDate>Wed, 10 Jan 2018 20:40:29 GMT</pubDate>
            <atom:updated>2018-01-17T14:35:56.614Z</atom:updated>
            <content:encoded><![CDATA[<p>Heya, another week, another update. This time around we’re releasing this on a Wednesday. If you’re reading this at home: we’ve been live streaming Choo development on Twitch! Anyway, more on that in a bit. Let’s dig in for the second Choo Weekly of 2018!</p><p><em>If this is your first time you’re hearing about Choo: we’re the tiny frontend framework you’ve always wanted to use. True story. Check out </em><a href="https://github.com/choojs/create-choo-app"><em>create-choo-app</em></a><em> to have your first application working 5 minutes from now.</em></p><h3>Rust in Bankai</h3><p>Now that Bankai 9 has been released, one of our goals is to make it even easier to use. Node modules are convenient, but when installing native code (C++), installation can take a while.</p><p>So in order to speed up Bankai installations, we’ve switched out the native <a href="https://github.com/MayhemYDG/iltorb">Iltorb</a> module, with <a href="https://github.com/dropbox/rust-brotli/">Dropbox’s Rust Brotli</a> package. We use this in Bankai by compiling it to WebAssembly, which can be published directly to npm, and loaded without any further compilation steps.</p><p>The upcoming bankai v9.2.0 will be including this. Yay!</p><p><em>If you’re never heard about Bankai: it’s the easiest way to compile your frontend projects. With two commands it takes care of all tooling for both production &amp; development. Check out </em><a href="https://github.com/choojs/bankai"><em>https://github.com/choojs/bankai</em></a><em> to learn more.</em></p><p><a href="https://github.com/choojs/bankai/issues/358">WASM Brotli · Issue #358 · choojs/bankai</a></p><h3>Docs</h3><p>We’ve been hard at work on documentation over the past week. A few new PRs have landed with docs on Forms, and State Machines! All in addition to previous docs on routing, views and more. Check out the latest here:</p><ul><li><a href="https://github.com/choojs/website/pull/39">server rendering by yoshuawuyts · Pull Request #39 · choojs/website</a></li><li><a href="https://github.com/choojs/website/blob/master/content/reference/forms.md">choojs/website</a></li><li><a href="https://github.com/choojs/website/pull/38">State machines by yoshuawuyts · Pull Request #38 · choojs/website</a></li></ul><h3>Components Update</h3><p>We’ve mentioned before that we’re working on bringing components to Choo. We had a call about this on Tuesday 09/01, and it went well! It’s looking like we’ll be able to figure out how to move this forward real soon. So stay tuned, more news to follow!</p><h3>Development Stream on Twitch</h3><p>We’ve started livestreaming Choo development &amp; GitHub maintenance on Twitch. If you’re interested in seeing how Choo is made, come and hang out!</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fplayer.twitch.tv%2F%3Fchannel%3Dyoshuawuyts%26autoplay%3Dfalse&amp;url=https%3A%2F%2Fwww.twitch.tv%2Fyoshuawuyts&amp;image=https%3A%2F%2Fstatic-cdn.jtvnw.net%2Fjtv_user_pictures%2Fyoshuawuyts-profile_image-909480082c056b61-300x300.jpeg&amp;key=d04bfffea46d4aeda930ec88cc64b87c&amp;type=text%2Fhtml&amp;schema=twitch" width="620" height="378" frameborder="0" scrolling="no"><a href="https://medium.com/media/6c8d99c9f314fd3d269c4d8262ebfc8a/href">https://medium.com/media/6c8d99c9f314fd3d269c4d8262ebfc8a/href</a></iframe><h3>Wrapping up</h3><p>And that’s all for this week! Expect work on docs to continue well into next week, also probably some changes regarding routing coming up. Oh and Bankai v9.2. That’s actually quite a lot, hah.</p><p>Thanks a lot for reading it so far. Hope everyone has a great week, and catch you again soon!</p><p><em>If you’re working on something cool using Choo, let us know on </em><a href="https://twitter.com/4kilobytes"><em>@4kilobytes</em></a><em> or </em><a href="https://www.irccloud.com/irc/freenode/channel/choo"><em>Freenode#choo</em></a><em> ✌️.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=70aabe8ee67c" width="1" height="1" alt=""><hr><p><a href="https://medium.com/choojs/choo-weekly-02-18-rust-in-bankai-docs-and-development-live-streams-70aabe8ee67c">Choo Weekly #2 2018: Rust in Bankai, Docs and Development Live Streams!</a> was originally published in <a href="https://medium.com/choojs">choo</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Choo Weekly 01/18: Bankai 9.1, Roadmap & New Website]]></title>
            <link>https://medium.com/choojs/choo-weekly-week-01-18-bankai-9-1-roadmap-new-website-fdbfac05496b?source=rss----7d99235af3ff---4</link>
            <guid isPermaLink="false">https://medium.com/p/fdbfac05496b</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[choo-weekly]]></category>
            <category><![CDATA[frontend]]></category>
            <category><![CDATA[nodejs]]></category>
            <dc:creator><![CDATA[Yoshua Wuyts]]></dc:creator>
            <pubDate>Wed, 03 Jan 2018 14:44:13 GMT</pubDate>
            <atom:updated>2018-01-03T14:55:33.955Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Dx71rN4WYhVHFGvSFiObYw.png" /><figcaption><a href="https://choo.io">https://choo.io</a> landing page</figcaption></figure><p>Happy New Year! We’ve been on hiatus for the last two weeks — but back this week with lots of goodies!</p><h3>New Website Preview</h3><p>We have a new website! <a href="https://medium.com/u/bcc46ac64be1">Jon-Kyle</a> has been hard at work during December to get this running. It’s still in early preview; we’ll continue to release features during the coming weeks (*ahem* docs), so stay tuned!</p><p><a href="https://choo.io">https://choo.io</a></p><h3>Choo now accepts multiple arguments in the emitter</h3><p>We fixed a bug in Choo that prevented multiple events from being accepted. This means you can now send multiple events down in your event emitters. This should make it easier to work with multiple data entries.</p><pre>emitter.emit(&#39;calc&#39;, 1)          // old<br>emitter.emit(&#39;calc&#39;, 1, 2, 3, 4) // new</pre><p><a href="https://github.com/choojs/choo/pull/615#pullrequestreview-85884227">https://github.com/choojs/choo/pull/615</a></p><h3>Bankai 9.1</h3><p><a href="https://github.com/choojs/bankai/">Bankai</a> v9 was released. It includes a few small changes for performance, but also two neat changes:</p><ul><li>We now have a better story on how to handle the Babel configuration of dependencies (<a href="https://github.com/choojs/bankai/pull/352">bankai#352</a>).</li><li>bankai build now checks if files already exist before writing them to disk. This should make asset-heavy builds a lot faster (<a href="https://github.com/choojs/bankai/pull/355">bankai#355</a>).</li></ul><p>To get the latest bankai, run npm install bankai@9.1 .</p><h3>Yo-yoify source map fixes</h3><p>Source maps have been a bit of an issue in Bankai for a while now. But thanks to the efforts of <a href="https://medium.com/u/84872f9b6902">Renée Kooi,</a> we’re getting a few steps closer to fixing them!</p><p><a href="https://github.com/shama/yo-yoify/pull/60/files">https://github.com/shama/yo-yoify/pull/60</a></p><h3>2018 Roadmap</h3><p>New year, new plans. Well not really, but we wanted to share what we’ve been up to. We feel that Choo is a solid choice for building applications, but we want to step it up even further in 2018.</p><p>The goal of Choo is to make modern web applications easy to build. Using thin wrappers around new technologies, we want to make browsers accessible to everyone. The web evolves, and so do we.</p><ul><li><strong>Choo component system</strong>. When building UIs, it’s often easier to start with stateful components, and work towards stores later. We recognize this, and want to introduce a component system for Choo. We’re almost done with this, and it should be landing in a few weeks!</li><li><strong>Async routing</strong>. We want people to be able to asynchronously load any part of their application, with no effort. We want to optimize applications out of the box, so it stays fast — no matter what stage of development you’re in.</li><li><strong>Better diffing performance</strong>. While Choo is quite fast right now, there’s plenty of room to improve the performance of our diffing algo. There are new web specs landing for DOM diffing too, so this is going to be interesting!</li><li><strong>First class i18n support. </strong>The web is international, and so should our copy be. We want to create a great story for internationalization — so it no longer becomes an afterthought, but something you can do as you build out your applications.</li><li><strong>Better docs. </strong>Building websites should be easy. The web platform offers so much functionality — so much that it can become easy to overlook things. We want to create concrete guides on how to do things. Forms, architecture, translations, mouse events — all of these should have concrete answers. We’re working on creating better documentation for Choo, it’s ecosystem, and everything in between!</li><li><strong>HTTP/2 &amp; ES modules. </strong>As HTTP/2 and ES modules are landing in Node, we’re going to be digging deeper into this. There’s a lot of fun optimizations that can be done using HTTP/2 push, so this is one to look out for!</li></ul><p>Annddd a lot more! We’re committed to improving Bankai, Create-choo-app and our other modules throughout the year. They’re probably going to be less of features, and more of gradual fixes. But hopefully at the end of 2018 we’ll be able to look back with a smile to how far we’ve come.</p><h3>Wrapping up</h3><p>Thanks all for reading this far. We’re super excited for 2018! We hope you have a great time building projects, taking naps &amp; otherwise having fun. Oh and stay healthy. And stay warm. (Just kidding, we’re a framework — not your parents.)</p><p>Anyway, it was good catching up again. Happy hacking!</p><p><em>If you’re working on something cool using Choo, let us know on </em><a href="https://twitter.com/4kilobytes"><em>@4kilobytes</em></a><em> or </em><a href="https://www.irccloud.com/irc/freenode/channel/choo"><em>Freenode#choo</em></a><em> ✌️.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fdbfac05496b" width="1" height="1" alt=""><hr><p><a href="https://medium.com/choojs/choo-weekly-week-01-18-bankai-9-1-roadmap-new-website-fdbfac05496b">Choo Weekly 01/18: Bankai 9.1, Roadmap &amp; New Website</a> was originally published in <a href="https://medium.com/choojs">choo</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Choo Weekly 49/17: Networking, Audio Playback & Speech Synthesis]]></title>
            <link>https://medium.com/choojs/choo-weekly-49-17-networking-audio-playback-speech-synthesis-6ff959bebe4d?source=rss----7d99235af3ff---4</link>
            <guid isPermaLink="false">https://medium.com/p/6ff959bebe4d</guid>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[audio]]></category>
            <category><![CDATA[choo]]></category>
            <category><![CDATA[choo-weekly]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Yoshua Wuyts]]></dc:creator>
            <pubDate>Mon, 04 Dec 2017 00:09:56 GMT</pubDate>
            <atom:updated>2018-01-03T14:51:49.728Z</atom:updated>
            <content:encoded><![CDATA[<h3>Writing to you from Japan</h3><p>Surprise! Another Choo weekly 🎉. This edition is brought to you from Tokyo, Japan.</p><p>This time around we’re highlighting some great modules created by <a href="https://medium.com/u/de96bd8fc56">Yerko Palma</a>. We’ll be talking about browser networking, speech synthesis &amp; audio playback. Oh, and more docs! Strap in, and let’s go!</p><p><em>If this is your first time you’re hearing about Choo: we’re the tiny frontend framework you’ve always wanted to use. True story. Check out </em><a href="https://github.com/choojs/create-choo-app"><em>create-choo-app</em></a><em> to have your first application working 5 minutes from now.</em></p><h3>Documentation</h3><p>The first few pieces of documentation have been written! We got:</p><ul><li><a href="https://github.com/choojs/website/blob/master/content/reference/views.md">Views</a> — Everything on how to render to the DOM.</li><li><a href="https://github.com/choojs/website/blob/master/content/reference/stores.md">Stores</a> — Dive deep into Choo’s data abstraction.</li><li><a href="https://github.com/choojs/website/pull/27">Routing</a> —Straight forward routing for projects of any size (wip).</li></ul><p>Now that the basic guides are done, we can start work on some of the more in-depth ones. At the top of our list are <em>Forms</em>, with <em>Data Management </em>coming in as a close second. <em>Components </em>are a high priority too, but we have to land a patch before we can start expanding on how to use it properly. Stay tuned!</p><h3>Networking</h3><p>Most web apps talk to servers. And by doing to so they require to use the network.</p><ul><li><a href="https://github.com/YerkoPalma/choo-sse">YerkoPalma/choo-sse</a></li><li><a href="https://github.com/YerkoPalma/choo-websocket">YerkoPalma/choo-websocket</a></li></ul><h3>Sound in the browser</h3><p>Not all websites make use of sound — and that’s probably a good thing. It can be hard to get things right at times. But when done carefully, adding sound can be a great way to enrich a site’s experience.</p><p>Some sites are entirely based around playing audio. For example <a href="http://soundcloud.com/">soundcloud.com</a> and <a href="http://audiograph.xyz/">audiograph.xyz</a>.</p><p>Thanks to choo-audio, playing audio with Choo is not hard either:</p><pre>var choo = require(&#39;choo&#39;)</pre><pre>var app = choo()<br>app.use(require(&#39;choo-audio&#39;)())</pre><pre>app.use((state, emitter) =&gt; {<br>  emitter.emit(&#39;audio:load&#39;, &#39;/assets/music.wav&#39;)<br>  emitter.emit(&#39;audio:play&#39;)<br>  setTimeout(emitter.emit, 1000, &#39;audio:pause&#39;)<br>})</pre><p><a href="https://github.com/YerkoPalma/choo-audio">YerkoPalma/choo-audio</a></p><h3>Speech Synthesis and Voice Recognition</h3><p><a href="https://www.designbetter.co/principles-of-product-design/guess-less">designbetter.co</a> recently created a rich series of articles recently, bundled together to form an online library. Not only is the site brimming with illustrations &amp; animations — each chapter is available as an audiobook too.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Rl3aQPMfCmERM28fA8docQ.png" /><figcaption>Press “listen to chapter” to turn the site into an audio book</figcaption></figure><p>However, not everyone is in a position to have professional voice actors read out their work. Luckily thanks to advances such as <a href="https://deepmind.com/blog/wavenet-generative-model-raw-audio/">Google’s WaveNet paper</a> speech, synthesis is becoming a lot better (check it out, the demos are seriously cool!).</p><p>And as audio synthesis technology advances, so will the implementations that power browser APIs. You can use the speech APIs with Choo, today:</p><pre>var choo = require(&#39;choo&#39;)</pre><pre>var app = choo()<br>app.use(require(&#39;choo-tts&#39;)())<br>app.use(require(&#39;choo-stt&#39;)())</pre><pre>app.use((state, emitter) =&gt; {<br>  emit(&#39;stt:start&#39;)<br>  emit(&#39;tts:speak&#39;, &#39;I&#39;m listening!&#39;)<br>  emitter.on(&#39;stt:result&#39;, (res) =&gt; {<br>    emit(&#39;tts:speak&#39;, res)<br>  })<br>})</pre><ul><li><a href="https://github.com/YerkoPalma/choo-stt/">YerkoPalma/choo-stt</a></li><li><a href="https://github.com/YerkoPalma/choo-tts/">YerkoPalma/choo-tts</a></li></ul><h3>Wrapping up</h3><p>Thanks all for making it this far. There won’t be a Choo Weekly next week, but we’ll be back the week after. We hope you enjoyed reading up about some of the cool third party modules we have in our ecosystem. Perhaps even enough to take them for a spin? We definitely hope so!</p><p>It was good catching up again. Happy hacking!</p><p><em>If you’re working on something cool using Choo, let us know on </em><a href="https://twitter.com/4kilobytes"><em>@4kilobytes</em></a><em> or </em><a href="https://www.irccloud.com/irc/freenode/channel/choo"><em>Freenode#choo</em></a><em> ✌️.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6ff959bebe4d" width="1" height="1" alt=""><hr><p><a href="https://medium.com/choojs/choo-weekly-49-17-networking-audio-playback-speech-synthesis-6ff959bebe4d">Choo Weekly 49/17: Networking, Audio Playback &amp; Speech Synthesis</a> was originally published in <a href="https://medium.com/choojs">choo</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Choo Weekly 48/17: Bankai v9, Rustify, Component Preview & Nanostate]]></title>
            <link>https://medium.com/choojs/choo-weekly-48-17-bankai-v9-rustify-component-preview-nanostate-576e681dd9df?source=rss----7d99235af3ff---4</link>
            <guid isPermaLink="false">https://medium.com/p/576e681dd9df</guid>
            <category><![CDATA[choo-weekly]]></category>
            <category><![CDATA[choo]]></category>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[rust]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Yoshua Wuyts]]></dc:creator>
            <pubDate>Mon, 27 Nov 2017 17:08:42 GMT</pubDate>
            <atom:updated>2017-11-27T17:08:41.946Z</atom:updated>
            <content:encoded><![CDATA[<p>It’s Monday, and oh boy have we been busy. This week’s update includes the brand new version of Bankai, writing inline Rust (!), state machines, and more. Swooosh!</p><p><em>If this is your first time you’re hearing about Choo: we’re the tiny frontend framework you’ve always wanted to use. True story. Check out </em><a href="https://github.com/choojs/create-choo-app"><em>create-choo-app</em></a><em> to have your first application working 5 minutes from now.</em></p><h3>Bankai v9</h3><p>After 3 months of work, we finally released <a href="https://github.com/choojs/bankai">Bankai 9</a> last week! The positive feedback has been overwhelming!</p><p>At the time of writing, our release post has over 11000 views, and 5000 reads. That’s a lot for us! Read the Bankai 9 release post if you haven’t already:</p><p><a href="https://medium.com/choojs/bankai-the-friendly-web-compiler-35f1916679cc">Bankai, the friendly web compiler</a></p><h3>HTTPS Docs in create-choo-app</h3><p>Sometimes doing the right thing, isn’t the easiest. For example, enabling HTTPS for local development isn’t easy, especially if you’re new to development. To help people get started, we’ve added docs on how enable HTTPS locally to create-choo-app and Bankai. Yay for docs! 🎉</p><p><a href="https://github.com/choojs/create-choo-app/">choojs/create-choo-app</a></p><h3>yo-yoify v4.2.0</h3><p>Choo uses ES6 template literals to create HTML elements. This is great, because it allows you to write inline HTML directly from JavaScript.</p><p>But parsing HTML takes time. So in order to speed it up, it’s great if we can statically generate the output inside a transform. That’s what yo-yoify does.</p><p>And with yo-yoify v4.2.0, we’ve improved our template output even further. We now include our helper libraries only when they’re used, which should help make small apps even smaller!</p><p><a href="https://github.com/shama/yo-yoify">shama/yo-yoify</a></p><h3>Choo component preview</h3><p>Ever since we started work on <a href="https://github.com/choojs/nanocomponent">Nanocomponent</a>, we’ve been thinking of how to make it part of Choo. Because Choo is modular, standards based, and explicit, this turned out to be slightly tricky.</p><p>Through the discussion in <a href="https://github.com/choojs/choo/issues/593">choojs/choo#593,</a> we’ve come up with a way to integrate components. We’ve <a href="https://github.com/yoshuawuyts/choo-component-preview/">released a Choo plugin</a> that enables a preview of this integration. If this turns out to work well, we’ll patch it into a future release of Choo.</p><p>This is what using the new component API in Choo views is going to look like:</p><pre>var Article = require(&#39;./components/article&#39;)<br>var Header = require(&#39;./components/header&#39;)<br>var Footer = require(&#39;./components/footer&#39;)<br><br>module.exports = function (state, emit, render) {<br>  return html`<br>    &lt;body<br>      ${render(Header)}<br>      ${state.articles.map(article =&gt; render(Article, article))}<br>      ${render(Footer)}<br>    &lt;/body<br>  `<br>}</pre><p><a href="https://github.com/yoshuawuyts/choo-component-preview/">yoshuawuyts/choo-component-preview</a></p><h3>Nanostate</h3><p><a href="https://medium.com/choojs/choo-weekly-45-17-choo-v6-6-web-crawling-small-bundles-preact-ed4332cf7187">Last week</a> we talked a bit about Finite State Machines. We’ve been tinkering a bit since then, and came up with a friendly state machine library.</p><p>Nanostate allows you to create state machines with just a few lines of code. This should help with writing maintainable code, and preventing bugs from being written in the first place.</p><pre>var nanostate = require(&#39;nanostate&#39;)<br><br>var machine = nanostate(&#39;green&#39;, {<br>  green: { timer: &#39;yellow&#39; },<br>  yellow: { timer: &#39;red&#39; },<br>  red: { timer: &#39;green&#39; }<br>})<br><br>machine.emit(&#39;timer&#39;)<br>console.log(machine.state)<br>// =&gt; &#39;yellow&#39;<br><br>machine.emit(&#39;timer&#39;)<br>console.log(machine.state)<br>// =&gt; &#39;red&#39;<br><br>machine.emit(&#39;timer&#39;)<br>console.log(machine.state)<br>// =&gt; &#39;green&#39;</pre><p><a href="https://github.com/choojs/nanostate/">choojs/nanostate</a></p><h3>Rustify</h3><p><a href="https://www.rust-lang.org/en-US/">Rust</a> recently stabilized their WebAssembly compiler target. This means it’s possible to write Rust code that runs natively in Browsers.</p><p>Rust is great because it provides strong guarantees about the code. If you want to write critical software (crypto, video transmuxers, arithmatic), it’s worth using a language that helps get it right, faster.</p><p>In order to make the Rust WASM target easy to use for Choo projects, we’ve created Rustify: a Browserify transform that work with Bankai.</p><p>To use it, all you need to do is include Rustify in your package.json :</p><pre>{<br>  &quot;name&quot;: &quot;my-project&quot;,<br>  &quot;browserify&quot;: {<br>    &quot;transform&quot;: &quot;rustify&quot;<br>  },<br>  &quot;dependencies&quot;: {<br>    &quot;rustify&quot;: &quot;~1.0.0&quot;<br>    }<br>  }<br>}</pre><p>And you can then start writing Rust code, either inline or as separate files:</p><pre>var rust = require(&#39;rustify&#39;)<br><br>var wasm = rust`<br>  #[no_mangle]<br>  pub fn add_one(x: i32) -&gt; i32 {<br>    x + 1<br>  }<br>`<br><br>WebAssembly.instantiate(wasm, {})<br>  .then(function (res) {<br>    var addOne = res.instance.exports.add_one<br>    console.log(addOne(41))<br>    console.log(addOne(68))<br>  }).catch(function (e) {<br>    console.error(&#39;Creating WASM module failed&#39;, e)<br>  })</pre><p><a href="https://github.com/browserify/rustify">browserify/rustify</a></p><h3>Wrapping up</h3><p>And that’s it for this week! We’ll probably be off next week, and possibly the week after (yay, vacation!), but should be back the week after that! Until then we’re going to be writing more docs, working on Bankai &amp; using components.</p><p>Thanks for catching up with us. Happy hacking!</p><p><em>If you’re working on something cool using Choo, let us know on </em><a href="https://twitter.com/4kilobytes"><em>@4kilobytes</em></a><em> or </em><a href="https://www.irccloud.com/irc/freenode/channel/choo"><em>Freenode#choo</em></a><em> ✌️.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=576e681dd9df" width="1" height="1" alt=""><hr><p><a href="https://medium.com/choojs/choo-weekly-48-17-bankai-v9-rustify-component-preview-nanostate-576e681dd9df">Choo Weekly 48/17: Bankai v9, Rustify, Component Preview &amp; Nanostate</a> was originally published in <a href="https://medium.com/choojs">choo</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Bankai, the friendly web compiler]]></title>
            <link>https://medium.com/choojs/bankai-the-friendly-web-compiler-35f1916679cc?source=rss----7d99235af3ff---4</link>
            <guid isPermaLink="false">https://medium.com/p/35f1916679cc</guid>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[choo]]></category>
            <category><![CDATA[frontend]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[tools]]></category>
            <dc:creator><![CDATA[Yoshua Wuyts]]></dc:creator>
            <pubDate>Wed, 22 Nov 2017 21:22:53 GMT</pubDate>
            <atom:updated>2017-11-23T01:48:44.249Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XyMJ5qouO91cxB5wl5TAIg.png" /></figure><p>The Web Platform is doing amazing! We have a multi-language, standardized Virtual Machine with a graphical layer running on virtually every device. If you want to share your things with an audience, there’s nothing with a wider reach!</p><p>However, building the Web is by no means simple. There’s a lot that’s possible, which means there’s a lot to learn. But that shouldn’t prevent it from being <a href="https://www.infoq.com/presentations/Simple-Made-Easy">easy</a> to build things.</p><p>And that’s where Bankai comes in. We wanted to have a tool that makes it easy to build things for the web. And as the Web evolves, it figures out how to apply the latest optimizations to your project. You shouldn’t need to be an expert to do the right thing.</p><p>The same goes for tooling though. A lot of tools come with options, flags and switches everywhere. It can take a while to learn. Bankai does away with all this, exposing 3 commands to perform 3 different tasks.</p><blockquote>You shouldn’t need to be an expert to do the right thing.</blockquote><p><a href="https://github.com/choojs/bankai">choojs/bankai</a></p><h3>Getting started</h3><p>Every story needs a beginning. Installing Bankai can be done through npm.</p><pre>$ npm install --save-dev bankai</pre><p>And once it’s done installing, you can add it to your package.json scripts as:</p><pre>{<br>  &quot;name&quot;: &quot;my-project&quot;,<br>  &quot;scripts&quot;: {<br>    &quot;start&quot;: &quot;bankai start&quot;,<br>    &quot;build&quot;: &quot;bankai build&quot;,<br>    &quot;inspect&quot;: &quot;bankai inspect&quot;<br>  }<br>}</pre><h3>Starting a dev server</h3><p>Bankai’s first command is bankai start, which starts an application development server. It detects all of your application’s files (service workers included), compiles, and serves them up. Once it’s started you can visit your brand new site on https://localhost:8080 using HTTP/2.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/783/1*JZmsf5oNAgyH4jijzT2CJA.gif" /><figcaption>bankai start shows a neat little interface</figcaption></figure><h3>Optimizations</h3><p>bankai build doesn’t look like much, right? You’re right, that’s because it shouldn’t. It’s doing a <em>lot </em>of optimizations though. Here’s a small list of what our little command is doing.</p><ul><li>Remove unused code from both CommonJS and ES6 modules using a <a href="https://github.com/browserify/common-shakeify"><strong>tree shaking algorithm</strong></a><strong> </strong>.</li><li><a href="https://github.com/goto-bus-stop/browser-pack-flat"><strong>Flattens bundles</strong></a>, which reduces the size and makes them faster to parse.</li><li>Exposes a <a href="https://github.com/glslify/glslify"><strong>module system for WebGL shaders</strong>,</a> removing the need to copy/paste code.</li><li>Allows <a href="https://github.com/stackcss/sheetify"><strong>CSS to be imported from npm</strong></a>, and declared inside JavaScript; with zero runtime overhead.</li><li>Removes unused CSS, inlines critical CSS and preloads the rest.</li><li>Server renders <a href="https://github.com/choojs/choo"><strong>Choo applications</strong></a><strong> </strong>(with more frameworks to follow).</li><li>Sets up a live reload environment with no dependencies.</li><li>Applies <a href="https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity"><strong>subresource integrity</strong></a> (sha512) checks for all scripts and styles.</li></ul><p>And probably about 30 more optimizations we don’t want to bore you with. We help you optimize your application, so you don’t have to worry about it.</p><h3>Writing to disk</h3><p>Once you’re done building your project, you probably want to host it somewhere. If your site doesn’t require a server, all it now takes is 1 command: bankai build.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/783/1*3o-0JsM5zHThg36Q30_ULQ.gif" /><figcaption>bankai build writes your site to disk</figcaption></figure><p>Using a content provider such as <a href="https://www.netlify.com/">netlify</a>, it becomes trivial to redeploy your site on each git push. And because we’re writing content to unique directories, it should play nice with <a href="https://developer.mozilla.org/en-US/docs/Glossary/CDN">CDNs</a> too.</p><p>But that’s not all, because we’re write compressed versions to disk, reverse proxies such as <a href="https://www.nginx.com/">Nginx</a> will be able to serve smaller files with little effort based on Accept headers.</p><h3>Usage as a library</h3><p>But not all sites are static. Sometimes we need to render pages dynamically on the server. Because Bankai is a native Node program, it can be used with any server framework to render pages.</p><pre>var bankai = require(&#39;bankai/http&#39;)<br>var http = require(&#39;http&#39;)<br>var path = require(&#39;path&#39;)<br><br>var compiler = bankai(path.join(__dirname, &#39;example&#39;))<br>var server = http.createServer(function (req, res) {<br>  compiler(req, res, function () {<br>    res.statusCode = 404<br>    res.end(&#39;not found&#39;)<br>  })<br>})<br><br>server.listen(8080, function () {<br>  console.log(&#39;listening on port 8080&#39;)<br>})</pre><p>You can combine bankai build with a CDN for the primary layer of content delivery. And if the first layer can’t handle the request, it can be redirect it to Bankai inside a Node service to render pages. This multi-layered system should perform rather well, and shouldn’t be overly complex to setup!</p><h3>Babel</h3><p>Not all browsers support all of the Web Platform’s features. So in order to use newer features on older browsers, we have to find a solution. The best solution out there at the moment is Babel.</p><p><a href="https://babeljs.io/">Babel</a> is a plugin-based JavaScript compiler. It takes JavaScript in, and outputs JavaScript based for the platforms you’ve decided to target. In Bankai we target the last 2 versions of FireFox, Chrome and Edge, and every other browser that’s used by more than 1% of people on earth. This includes IE11. And if you have different opinions on which browsers to use, Bankai respects .babelrc files.</p><h3>Analyzing projects</h3><p>While devtools are great, they don’t always provide all the information we need. bankai inspect allows you to peek inside your bundle to figure out what’s happening inside your bundle(s).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1s6L6OrHYmMK2qaggZxMng.gif" /><figcaption><em>bankai inspect</em> lets you peek inside your modules</figcaption></figure><h3>What’s next?</h3><p>Version 9 was released today, but that doesn’t mean we aren’t looking to the future. We think that HTTP/2 push, and ES modules are going to be an important part of the web’s content delivery in the future. We’re quietly experimenting with cache digests, and it’s looking promising.</p><p>We’re also looking into WebAssembly, per-page CSS splitting, further optimizing assets (WebM, WebP!), and improving Bankai’s own performance. If any of this sounds interesting, we’d love for you to get involved!</p><h3>Wrapping up</h3><p>And that’s about everything we have to say for now. We could probably dive deep into the internal architecture &amp; design decisions, but that probably deserves its own writeup.</p><p>Also special thanks to everyone that’s helped out. This release wouldn’t have been possible without <a href="https://medium.com/u/84872f9b6902">Renée Kooi,</a> <a href="https://medium.com/u/d3daaefa3776">Dan Flettre,</a> and everyone else in the <a href="http://webchat.freenode.net/?channels=choo">Freenode#choo channel</a>. Also special thanks to <a href="https://medium.com/u/4d2ed76cb5eb">nearForm</a> for sponsoring the project, and <a href="https://medium.com/u/bcc46ac64be1">Jon-Kyle</a> for making that cool graphic at the start. 🎉</p><p><em>We hope you have fun using Bankai, Choo, &amp; friends! If you haven’t tried any of it before and would like to start, check out </em><a href="https://github.com/choojs/create-choo-app/"><em>create-choo-app</em></a><em>. It creates a fresh Choo app for you, and uses Bankai out of the box.</em></p><p>Thanks for catching up &amp; have a great week! ✌️ —<em> Team Choo</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=35f1916679cc" width="1" height="1" alt=""><hr><p><a href="https://medium.com/choojs/bankai-the-friendly-web-compiler-35f1916679cc">Bankai, the friendly web compiler</a> was originally published in <a href="https://medium.com/choojs">choo</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>