tag:blogger.com,1999:blog-75078694445396354392018-08-30T21:40:36.392+03:00NixtuJuho Vepsäläinennoreply@blogger.comBlogger322125tag:blogger.com,1999:blog-7507869444539635439.post-25849444897406729682017-11-06T10:44:00.000+02:002017-11-06T10:45:47.840+02:00Conference Dos and Don'ts and Maintenance BookI've been travelling a lot this year. <a href="https://survivejs.com/blog/">SurviveJS blog</a> has grown a lot and I also <a href="https://medium.com/@bebraw/how-a-month-in-vienna-changed-the-way-i-think-about-life-ba87da8c28a9">wrote about my experiences in Vienna</a>. I am also a part of the <a href="https://react-finland.fi/">React Finland</a> organization. We'll organize a React event in Helsinki, Finland late April (2018). I summed my experiences in <a href="https://medium.com/react-finland/conference-dos-and-donts-56973b82229a">a post about do's and don'ts for conference organizers</a>.<br /><br />I realised a while ago <a href="https://survivejs.com/webpack/">the webpack book</a> is too big. I found another topic within the book and split it into <a href="https://survivejs.com/maintenance/">a maintenance book</a>. The work is currently in progress but you can find an early draft online already. Feedback is most welcome.Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-16050863389564203302017-05-21T10:19:00.002+03:002017-05-21T10:19:45.431+03:00Blue Arrow Awards - Finnish Code Ambassador 2017<a href="https://survivejs.com/blog/euro-tour-2017-recap/">The first euro tour is over</a> and second is being planned (more news on that later). The more interesting news are that I was chosen as the <a href="https://survivejs.com/blog/blue-arrow-awards-winner-2017/">Finnish Code Ambassador of 2017 by Blue Arrow Awards</a>.<br /><br />It's a honorary title I carry with pride. The last three years have gone fast and it's nice to know the efforts haven't gone unnoticed!Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-65313388193558955862017-03-29T16:09:00.001+03:002017-03-29T16:09:54.793+03:00"SurviveJS - Webpack" v2.0 - Now available as a paperbackIt took an amazing amount of work but I finally got my webpack book on paper! It's almost 500 pages in its paper form and it covers a wide range of topics around webpack. I never imagined it would grow this big but you have to follow your intuition.<br /><br />Check out <a href="https://survivejs.com/blog/survivejs-webpack-20/">the official release notes</a> to learn more about the book. You can also skip straight to <a href="https://survivejs.com/webpack/preface/">the free online edition</a> to get a better idea of it.<br /><br />Note that <a href="https://survivejs.com/blog/euro-tour-2017/">I'll be touring Europe</a> next month so perhaps we'll see there.Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-6088047068760136142016-11-16T13:03:00.000+02:002016-11-16T13:03:00.388+02:00Kharkiv.js 2016 and React in BarcelonaIn my only trip of the year I visited both Kharkiv, Ukraine and Barcelona, Spain. I was invited to Kharkiv.js as a keynote speaker and I also gave a little session on webpack as a bonus. After that I spent a week with <a href="https://www.typeform.com/">Typeform</a> in Barcelona.<br /><br />Overall it was a great learning experience and best time of this year. In this post I'll try to cover some of the main points related to the trip.<br /><br /><h2 id="kharkiv-js-2016">Kharkiv.js 2016</h2><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-qKvc3CkfKiA/WCw7ldS72HI/AAAAAAAADig/Oh6QqALzNA4eG1IULuzrtpTpeGSxvpA5ACLcB/s1600/kharkiv2.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="https://2.bp.blogspot.com/-qKvc3CkfKiA/WCw7ldS72HI/AAAAAAAADig/Oh6QqALzNA4eG1IULuzrtpTpeGSxvpA5ACLcB/s320/kharkiv2.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Kharkiv.js mascot, now available as a plushie</td></tr></tbody></table><a href="http://kharkivjs.org/">Kharkiv.js</a> is one of the bigger JavaScript related events in Ukraine to my understanding. This two day event managed to attract something between 500 and 700 people this year according to my estimation.<br /><br />This was a good chance for me to meet up with some old online friends and share a couple of ideas with the public.<br /><br />On retrospect I should have arrived a couple of days earlier, spent time exploring the city, and just getting more comfortable <em>speaking</em>. It's hard after a long break. Finnish and English pronunciation just aren't compatible as they are literally from different language trees and kind of fight with each other.<br /><br /><h3 id="the-first-day">The First Day</h3><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-9geTjP46uAM/WCw7l8PDLHI/AAAAAAAADio/_roey6xLRoIsQ0J43rpL3unAmv6m1Eo9QCEw/s1600/kharkiv.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="https://2.bp.blogspot.com/-9geTjP46uAM/WCw7l8PDLHI/AAAAAAAADio/_roey6xLRoIsQ0J43rpL3unAmv6m1Eo9QCEw/s320/kharkiv.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Full house</td></tr></tbody></table>My keynote that started the event was about <a href="https://reactabular.js.org/">Reactabular</a>. I have <a href="https://presentations.survivejs.com/react-api-design">slides available online</a> for those interested. It was an expanded version of my <a href="http://www.webdevandsausages.org/">Web dev and sausages</a> talk to fit around 45 minutes.<br /><br />It was a nervous talk and I would likely organize the slides differently now. It would have been a great idea to give the talk locally to a smaller audience one more time before jumping to the shark tank.<br /><br />There were also nice QA sessions in the first day. I participated in two of them. Given most of the audience was Russian speaking I missed some points, but thankfully enough a lot was translated to English so it was fairly easy to keep up with the conversation.<br /><br />I didn't get to see any talks on the first day as I was busy discussing with people. I like the fact that they organized the talks on two tracks and showed clearly which talks were English or Russian only.<br /><br />This is good particularly international visitors in mind. There weren't too many, but maybe the event will attract more in the future due to this. It could become a crossing point of different developer communities.<br /><blockquote>As an interesting tidbit a couple of people took selfies with me during the conference. Maybe that has something to do with the local culture. Cool regardless.</blockquote><br /><h3 id="the-second-day">The Second Day</h3>The second day was more relaxed for me. In the day's talk I dug into <a href="https://presentations.survivejs.com/advanced-webpack">advanced webpack</a>. There was more content that I could fit into 45 minutes. I probably should do a condensed version of the talk or split it up somehow. It would likely work well in a workshop format split over multiple hours where you actually get to practice instead of listening.<br /><br />Speaking of workshops, maybe it would be interesting to have a separate day dedicated to workshops at Kharkiv.js. It could be a day before or after the main talks and give a nice chance to dig deeper into the topics. Given the people are already there, this would be a nice chance to serve them even better.<br /><br />I had a chance to see a couple of talks on the second days and I felt the quality was good if not great. I liked particularly Illia Klymov's talk about Flow as it made me appreciate it a little more. Denis Radin's talk made me see virtual reality related web technologies in a different light and Andrew Listochkin's talk made me worry about the future of the web (good thing).<br /><br />I would love to see some of the local speakers in Finland myself.<br /><br /><h3 id="thoughts">Thoughts</h3>I think the event was well organized. I hope they market it more to international audience in the future. Kharkiv is a little different and I've tried to list some of my main observations below:<br /><ul><li>You can exchange money in Ukraine only. There are specific spots for this.</li><li>Everything is amazingly cheap. At the time of writing you can buy hundred hryvnias (the local currency) for around 3.5 euros.</li><li>Taxis are cheap but that comes with a cost as the quality tends to vary. One even broke down as it arrived and other failed to arrive on agreed time so I had to order another one. I guess having local knowledge would help here. You have to know the right company I guess.</li><li>A lot of locals won't talk English. Ideally you would know Russian well. I expect that would open a lot of doors.</li><li>Have slack in your travel schedule to avoid surprises. You can afford to miss a taxi if you have time to order a new one.</li><li>People seemed friendly. Hotel was top notch and I don't have anything to complain about food. Some of it might take some getting used to, but that's the case always.</li></ul>Overall I was impressed by the work of the organizers and I wish Kharkiv.js the greatest luck. The organizers were responsive and it was easy to work with them. The most surprising thing was to see how vibrant developer community they have in Ukraine.<br /><br /><h2 id="week-at-barcelona">React in Barcelona</h2><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-w5UZPQE5aUs/WCw7ltWzDHI/AAAAAAAADik/_9rqSNaY3oAbXKQiq6B6FaSxwxm4oF1awCEw/s1600/arena.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="https://1.bp.blogspot.com/-w5UZPQE5aUs/WCw7ltWzDHI/AAAAAAAADik/_9rqSNaY3oAbXKQiq6B6FaSxwxm4oF1awCEw/s320/arena.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The venue. Their office was enviably nice.</td></tr></tbody></table>After a weekend in Ukraine I headed to Barcelona. I was a guest of <a href="https://www.typeform.com/">Typeform</a> for a week and we covered a variety of topics they were interested in. Admittedly I botched some of that (classic demo effect a couple of times), but I improved along the week.<br /><br />Particularly webpack bits went well as I started to find my groove. In the end we made it work and got into a productive mode quite fast after we figured out how to work effectively together.<br /><br />It would have been a good idea to spend a couple of days with the client and their code before digging into actual sessions. This would have allowed me to understand their problems better earlier while allowing me to provide real value faster. This is something I'll change in the future if similar opportunities appear.<br /><br /><h3 id="react-meetup">React Meetup</h3>I gave the keynote talk at a <a href="https://www.meetup.com/ReactJS-Barcelona/events/235239149/?eventId=235239149">local React meetup</a> organized at Typeform premises (amazing office btw!). It felt more relaxed and it felt like I got more points through.<br /><br />That said, I probably should have done a super condensed version instead of going through the development history. That would have kept it shorter while still providing value for people. On retrospect maybe some other topic would have worked a little better.<br /><br />The problem with giving a lot of talks over a short frame of time is that it's hard to keep the quality of them all high. In the future it might be a good idea to do less but do it better. Focus seems to be the keyword here.<br /><br /><h3 id="thoughts">Thoughts</h3><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="https://4.bp.blogspot.com/-X7fsFX6igUU/WCw7npVhxNI/AAAAAAAADi0/fbU5UlOAtdA8vLN1RA7wyGx3KTAgWu-egCEw/s1600/oldtown.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://4.bp.blogspot.com/-X7fsFX6igUU/WCw7npVhxNI/AAAAAAAADi0/fbU5UlOAtdA8vLN1RA7wyGx3KTAgWu-egCEw/s320/oldtown.jpg" width="213" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Old Barcelona</td></tr></tbody></table>When it comes to Barcelona, it is an amazing city. The weather was perfect all the time (roughly equal to Finnish summer or better), people were friendly, and generally spoke English. That said understanding Spanish would be a huge benefit.<br /><br />I know there's some pickpocketing going on at certain parts of the city, but I guess I got lucky and never saw any of that despite walking quite a bit (over 30 km over the weekend I spent touring). This is one of those problems I never have to think about in Finland and it was a nice to have a reminder of that.<br /><br />Maybe the weirdest thing about Spain is that they love to eat late compared to north. It likely has something to do with the time difference and the culture. Their food is excellent and affordable. I found a couple of new dishes to cook. Particularly mushrooms filled with tartar sauce hit the spot.<br /><br />Spanish work culture seems more relaxed as well even though they seem to work long days while starting later. Instead of being task/completion oriented like Finns, they seem to have a different approach. Both likely have their merits. I guess the question is could you merge them somehow while getting benefits of both.<br /><br />Overall the visit to Barcelona was great and relaxing even. There's a lot to see and the food is excellent while being affordable. It's not as cheap as Ukraine but it's still cheap from my perspective. Technological scene seems bigger than in Finland although salary level is likely worse to my understanding.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-9jF5SJl4E0U/WCw7oF3Rb9I/AAAAAAAADi0/A0Jrcro9OB8OqSxCZ1bdIEGVa2TBqhD9ACEw/s1600/olympicpark.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="213" src="https://2.bp.blogspot.com/-9jF5SJl4E0U/WCw7oF3Rb9I/AAAAAAAADi0/A0Jrcro9OB8OqSxCZ1bdIEGVa2TBqhD9ACEw/s320/olympicpark.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Olympic park. A lot to see within a couple of kilometers.</td></tr></tbody></table><h2 id="conclusion"><br />Conclusion</h2>I would say the trip was more than worth it. Of course there are things that could have gone better, but in part it's about learning. When the next opportunity appears, you know to avoid the same mistakes.<br /><br />Beginning to understand and appreciate cultural differences alone is a big part of it and it makes you see your own culture in a different light. You won't take the value of silence or nature granted anymore for instance. You also understand better that a lot of people have no idea of what a real winter is like.<br /><br />I have gathered the related material at a <a href="https://presentations.survivejs.com/">specific site</a>. You can find all my slides there. Obviously they are missing some of the points especially for the more abstract ones, but I think you might be able to get some value out of them.Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-1929616318208980552016-11-08T15:18:00.001+02:002016-11-10T09:20:27.312+02:00Book Review - Understanding ECMAScript 6 by Nicholas C. ZakasES6 (or ES2015) was the biggest change in JavaScript's history. Simply put there's a lot to learn if you want to leverage the features. Nicholas C. Zakas' "Understanding ECMAScript 6" (No Starch Press) addresses this concern. As Nicholas is the person behind <a href="http://eslint.org/">ESLint</a> and I respect his work greatly, it was interesting to delve into his book.<br /><br /><h2 id="review">Review</h2>As the book title states, the book covers ES6. It isn't a beginner level book. I would say the book fits those that already understand the basic ideas behind JavaScript and want to push their understanding a notch further.<br /><br />The book is filled with examples that explore the features in great detail. The writing style is casual enough for me without becoming too cheesy. That's just a personal preference, but I prefer my content blunt without any extra "entertainment" or an attempt at being funny. Grammar-wise the book was perfect and far better than you might expect from an average technical book.<br /><br />I would say the book works very well as reference material and thanks to it I managed to understand several features, like <code>Map</code> and the weak variant, in greater detail. It's likely I won't find use for most of the features, but that's not the point. You get these ideas in your mind that might come in handy later. It's great to have the essentials in one place.<br /><br /><h2 id="conclusion">Conclusions</h2>If you are a beginner looking to learn ES6, look elsewhere before delving into this book. If you are an intermediate or expert level that understands JavaScript well already, you have a lot to gain here even if you read the book casually now and then. The ES6 specification is fairly complex and it's easier to digest through examples as in the book.<br /><blockquote>Note that you can <a href="https://leanpub.com/understandinges6/read">read the book online</a>. Also <a href="https://github.com/nzakas/understandinges6">the source of the book</a> is available.</blockquote>Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-23578536435467979752016-05-23T14:46:00.002+03:002016-05-23T14:46:56.852+03:00Afterthoughts - Agile Coaching Camp Finland 2016I had the great privilege to take part in the first <a href="http://accfi.agile.fi/">Agile Coaching Camp held in Finland</a> (also known as <a href="https://twitter.com/search?q=%23accfi">#accfi</a>). The event was held in <strong>open space</strong> format apart from the prescheduled workshops. Around forty people showed up for the three day event although there would have been room for more. It would have been a different kind of event then, though.<br /><br />The venue, <a href="http://www.herrankukkaro.fi/">Herrankukkaro</a> (Turku archipelago), and the weather (around 20°) were in our favor. I spent a lot of time outside myself and managed to shed my nerd tan (no tan).<br /><br /><h2 id="the-open-space-format">The Open Space Format </h2><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-d5rBzYg9Gj4/V0LsRPwKa9I/AAAAAAAADd0/P3D6eC8b0JgfjASaGpgeYxBdw4U73AergCLcB/s1600/food.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="https://2.bp.blogspot.com/-d5rBzYg9Gj4/V0LsRPwKa9I/AAAAAAAADd0/P3D6eC8b0JgfjASaGpgeYxBdw4U73AergCLcB/s320/food.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">There was food. Lots of it.</td></tr></tbody></table>It was my first experience with the open space format. The idea is that rather than fixing a schedule beforehand, you'll develop it on-site.<br /><br />This means anyone can announce and contribute a session and become the host of it. In case nobody shows up, you can close down the session and move on elsewhere.<br /><br />The point is that often the best part of conferences are the informal discussions outside of the main program. If you drop the formal part, or minimize it, then you can skip straight to the valuable portion. That's the key insight here. Letting people to operate within a theme can lead to cool results as sessions are generated on demand.<br /><br />It's entirely acceptable to move between sessions and figure out what works for you at a given time. The nice thing about the format is that it allows themes to emerge. The topics people find interesting simply have more sessions about them.<br /><br /><h2 id="general-thoughts">General Thoughts</h2><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="https://4.bp.blogspot.com/-q4UG9lBOPs8/V0LsT74FDaI/AAAAAAAADd4/cMENWvXaNXMUSKU99irSLOhL9tydfGImwCKgB/s1600/scenery.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="https://4.bp.blogspot.com/-q4UG9lBOPs8/V0LsT74FDaI/AAAAAAAADd4/cMENWvXaNXMUSKU99irSLOhL9tydfGImwCKgB/s320/scenery.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Usual Finland. Not much to see here.</td></tr></tbody></table>There were roughly eight sessions going on at the best. That was plenty to choose from. This time particularly topics such as <a href="https://en.wikipedia.org/wiki/Nonviolent_Communication">nonviolent communication</a> (nvc), mob programming, and testing stood out.<br /><br />I was prepared to help people get their book projects started on a good note, but there just was no interest. You can still check out the <a href="https://survivejs.github.io/how-to-write-a-book-and-survivejs-it">slides</a> if you want, though.<br /><br />I feel the amount of people (42) was just about right. I've been to those conferences that have hundreds of people but then it gets hard to connect. With a limited amount you have more chance to build stronger connections. I'm not much of a networker myself so this definitely helped.<br /><br /><h2 id="systemic-constellations">Systemic Constellations</h2><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="https://3.bp.blogspot.com/-kdMwFc1KKyA/V0LsT_oldgI/AAAAAAAADd8/3fySfth4WjUOKx2sM-Nd0Ad1rNRSZljkQCKgB/s1600/lamp.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="https://3.bp.blogspot.com/-kdMwFc1KKyA/V0LsT_oldgI/AAAAAAAADd8/3fySfth4WjUOKx2sM-Nd0Ad1rNRSZljkQCKgB/s320/lamp.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">There was plenty of sea related decoration around.</td></tr></tbody></table>One great thing about going to conferences is that you will pick up ideas and methods you otherwise would just skip.<br /><br />Certain methods need live demonstration to truly sink in. <a href="http://www.systemicconstellations.com/">Systemic constellations</a> is one of those. It is a way to diagnose personal, professional, and organizational issues.<br /><br />The idea is that you will model the problem in terms of people. Each will represent one part of it (say "client", "developer", "manager"). You can even have persons as abstract things like "project" or "country" there.<br /><br />First you will move people into initial positions and directions to represent the issue in question. After that you will begin making changes to the constellation.<br /><br />The surprising thing is that changing the constellation yields data. You may even notice that it needs more actors. You will discover hidden connections this way and gain empathy towards the situation.<br /><br />That's the powerful part. Given people are emotional beings, they'll begin to resonate with the problem even if they are completely unrelated to it personally. This is what leads to insights that may be used to solve the underlying issue.<br /><br /><h2 id="nonviolent-communication-nvc-">Nonviolent Communication (NVC)</h2>NVC is a related topic. You could say it looks at the same problem, but from a different direction. The rough idea is that even words can be violent. The words said can be a symptom of an underlying problem that has to do with personal needs and feelings. If you realize this and become aware of the underlying motivations, you can gain empathy needed to get around the problem and resolve it.<br /><br />Again, the core point is simple. But by recognizing there's something behind what's being said helps to bring perspective to the situation. That's what systemic constellations achieve as well, they provide perspective that allows you to look at what's going on with more objective eyes.<br /><br /><h2 id="agile-games">Agile Games</h2>I participated in a variety of agile related games. One of the interesting ones was known as the "social rules game". The game models what happens when you start breaking established norms and perhaps make us more aware that norms exist. It's a discussion game where you agree on a topic and basic rules of interaction.<br /><br />It all starts out as a normal conversation within a group. It becomes more challenging as each participant is given certain rules to follow. Initially these are simple enough such as "stand up while talking" but eventually they become tough and disruptive like "go against all the rules". It's a great way to challenge the norms and get some laughs without offending anyone too much.<br /><br />There were also team building games like <a href="http://tastycupcakes.org/2011/04/non-musical-chairs/">non musical chairs</a>. We also tried variants like zombie chairs (randomized chair positioning). Simple games such as these are good for illustrating what happens to team dynamics when the environment changes. They are also nice for building team spirit.<br /><br /><h2 id="conclusion">Conclusion</h2><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-N6ZfF0YofnE/V0LsTz4-juI/AAAAAAAADeA/dBi1YnpSgvcyGedBh7B9oSbvvoxl8nlZQCKgB/s1600/sea.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="https://1.bp.blogspot.com/-N6ZfF0YofnE/V0LsTz4-juI/AAAAAAAADeA/dBi1YnpSgvcyGedBh7B9oSbvvoxl8nlZQCKgB/s400/sea.jpg" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Sunrise (yup, slept too late) before breaking myself with some yoga</td></tr></tbody></table>I think going to the event was worth the price of admission. I would be willing to pay even more now that I know the "product" is solid and I hope to participate again in the future if I get the chance. I guess this spoiled regular conferences for me, though.<br /><br />If you have an open space conference (or "unconference") nearby, consider taking part. The idea might feel a bit silly at first, but it likely works better than you think.Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-17272610963351732842016-04-04T10:18:00.000+03:002016-04-04T10:18:27.192+03:00"SurviveJS - Webpack" - Now Available<div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-kfWgnaVrgPw/VwIU4iYgoCI/AAAAAAAADdA/nQEkll6NAFwUyoV7IwcSeXpGDOHNcq6pg/s1600/title_page_small.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="https://4.bp.blogspot.com/-kfWgnaVrgPw/VwIU4iYgoCI/AAAAAAAADdA/nQEkll6NAFwUyoV7IwcSeXpGDOHNcq6pg/s320/title_page_small.png" width="247" /></a></div>Even though <a href="https://leanpub.com/survivejs_webpack_react">my first book</a> about <a href="https://webpack.github.io/">Webpack</a> and <a href="https://facebook.github.io/react/">React</a> has been a nice success, there's always hunger for more. I came to the conclusion that I must split it in two in order to go forward.<div><br /></div><div>The problem is that if you try to cover too much material in one book, it isn't doing favors to anyone. That lead me to a realization that I could extract the Webpack portion into a book of its own.</div><div><br /></div><div><h2>SurviveJS - Webpack</h2><div>This is what "<a href="https://leanpub.com/survivejs-webpack">SurviveJS - Webpack</a>" is about. I took majority of the Webpack bits from the first one and packaged them up in a nicer way. The book has a tutorial showing you how to develop an effective development and production configuration. This derives directly from the old content.</div><div><br /></div><div>There's also material that goes further and discusses more advanced Webpack related techniques. So even if there's old material, there's also something new to keep it fresh.</div><div><br /></div><div>Just like with the first book, I hope to improve the quality of the offering further as I learn more about the topic and receive feedback. In order to support development of Webpack, I'm giving Tobias Koppers, the author of Webpack, a chunk of profits (roughly ~30%). That's the least I can do to support his efforts.</div><div><br /></div><h2>Conclusion</h2><div>The buyers of the first book will receive this new book for free as I complete the split. In the meanwhile you can study <a href="http://survivejs.com/webpack/introduction/">the free online edition</a>. I also don't mind if you <a href="https://leanpub.com/survivejs-webpack">purchase the book</a>, but that's up to you.</div></div>Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-26508232863480448372016-03-01T09:07:00.000+02:002016-03-01T09:07:16.976+02:00Linkdump 27 - Business, productivity, software development, ...Time for the first link dump of the year!<br /><br /><h1 id="business">Business</h1><ul><li><a href="https://m.signalvnoise.com/employee-benefits-at-basecamp-d2d46fd06c58">Employee benefits at Basecamp</a></li><li><a href="http://www.wired.com/2013/03/ipo-man/all/">Meet the Man Who Sold His Fate to Investors at $1 a Share</a></li></ul><div><br /></div><h1 id="productivity">Productivity</h1><ul><li><a href="https://medium.com/life-tips/multitasking-is-killing-your-brain-79104e62e930">Multitasking is Killing Your Brain</a></li><li><a href="https://blog.todoist.com/user-stories/systemist-personal-workflow/">Systemist: A modern productivity workflow</a></li></ul><div><br /></div><h1 id="software-development">Software Development</h1><ul><li><a href="http://redmonk.com/sogrady/2016/02/19/language-rankings-1-16/">The RedMonk Programming Language Rankings: January 2016</a></li><li><a href="https://medium.com/@willh/how-to-level-up-as-a-developer-87344584777c">How to Level up as a Developer</a></li><li><a href="http://benjiweber.co.uk/blog/2016/01/25/why-i-strive-to-be-a-0-1x-engineer/">Why I Strive to be a 0.1x Engineer</a></li><li><a href="https://mrsharpoblunto.github.io/foswig.js/">Random Github project name generator</a></li><li><a href="https://regexcrossword.com/">Regex crossword</a></li></ul><div><br /></div><h2 id="formats">Formats</h2><ul><li><a href="http://hjson.org/">Hjson, the Human JSON</a></li></ul><div><br /></div><h2 id="git">git</h2><ul><li><a href="http://nikolay.rocks/2016-02-13-split-git-repo">The right way to split a git repository</a></li></ul><div><br /></div><h2 id="techniques">Techniques</h2><ul><li><a href="http://www.confluent.io/blog/making-sense-of-stream-processing/">Stream processing, Event sourcing, Reactive, CEP… and making sense of it all</a></li><li><a href="https://www.youtube.com/watch?v=_MJU8VK2PI4">Colorizing Black and White Movies with Neural Networks</a></li></ul><div><br /></div><h1 id="software">Software</h1><ul><li><a href="http://www.piskelapp.com/">Piskel</a> - Nice pixel art application for the web</li></ul><div><br /></div><h1 id="hardware">Hardware</h1><ul><li><a href="http://makezine.com/2016/02/28/meet-the-new-raspberry-pi-3/">The New Raspberry Pi 3</a></li></ul><div><br /></div><h1 id="information-architecture">Information Architecture</h1><ul><li><a href="http://www.uxbooth.com/articles/three-views-of-information-architecture/">The Three Views of (Information) Architecture</a></li></ul><div><br /></div><h1 id="web-design">Web Design</h1><ul><li><a href="http://uxmovement.com/thinking/why-circular-profile-pictures-accentuate-faces">Why Circular Profile Pictures Accentuate Faces</a></li><li><a href="http://fabianburghardt.de/webolution/">The evolution of web design</a></li></ul><div><br /></div><h1 id="web-development">Web Development</h1><ul><li><a href="https://jakearchibald.com/2016/link-in-body/">The future of loading CSS</a></li><li><a href="https://wiki.csswg.org/ideas/mistakes">Incomplete List of Mistakes in the Design of CSS [CSS Working Group Wiki]</a></li><li><a href="http://bulma.io/">Bulma: a modern CSS framework based on Flexbox</a></li><li><a href="http://blog.circleci.com/why-we-use-om-and-why-were-excited-for-om-next/">Why We Use Om, and Why We’re Excited for Om Next</a></li><li><a href="http://swissincss.com/">Swiss in CSS</a></li><li><a href="https://addyosmani.com/blog/using-npm-offline/">Using npm offline</a></li></ul><div><br /></div><h2 id="accessibility">Accessibility</h2><ul><li><a href="http://www.uxbooth.com/articles/4-ways-to-make-online-content-more-accessible/">4 Ways to Make Online Content More Accessible</a></li><li><a href="http://uxmovement.com/navigation/why-motor-impaired-users-need-skip-links/">Why Motor Impaired Users Need Skip Links</a></li></ul><div><br /></div><h2 id="writing">Writing</h2><ul><li><a href="http://alexjs.com/">Alex</a> - Lint inconsiderate writing</li></ul><div><br /></div><h2 id="art">Art</h2><ul><li><a href="http://blog.antonemdin.com/2014/08/mads-c-y-o-star-wars-adventure/">MAD’s Choose Your Own Star Wars Adventure</a></li></ul>Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-73135265358157152672016-02-25T17:49:00.000+02:002016-02-25T17:49:03.779+02:00"SurviveJS - Webpack and React" 2.0 - Now available through Amazon<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-zJDTBs82kc0/Vs8gh20oaTI/AAAAAAAADcA/t6IUfTZEauA/s1600/books_small.jpeg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="https://2.bp.blogspot.com/-zJDTBs82kc0/Vs8gh20oaTI/AAAAAAAADcA/t6IUfTZEauA/s320/books_small.jpeg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Paper books!</td></tr></tbody></table>I managed to reach a major milestone with my little book effort. "SurviveJS - Webpack and React" is now available as <a href="http://www.amazon.com/SurviveJS-Webpack-React-apprentice-master/dp/152391050X">a paperback through Amazon</a>!<br /><br />When I started the project, I didn't think it would come to this. But I'm happy with the result. That said there's still plenty of work ahead of me. I hope this is just a sign of things to come.<br /><br />You can find more information about the release at <a href="http://survivejs.com/blog/survivejs200/">the book release notes</a>. Remember that you can find majority of the content online if you want to see what the book is about.Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-82178248490074880912016-02-12T10:51:00.000+02:002016-06-12T18:18:17.444+03:00Discovery and Quality Services for npmThere are a lots of npm packages around these days (~240k at the time of writing). How to discover the ones you need? Also, how to know which ones are worth using? GitHub stars and forks tell something about popularity, but they don't tell a lot about quality. I've tried to list services I'm aware of in this post:<br /><br /><h2>Discovery Services</h2><br /><ul><li><a href="https://www.npmjs.com/">npmjs search</a></li><li><a href="https://npmsearch.com/">npmsearch</a></li><li><a href="http://nipstr.com/">nipstr</a></li><li><a href="https://anvaka.github.io/npmrank/online/">npmrank</a></li><li><a href="https://npmcompare.com/">NPMCompare</a></li><li><a href="https://david-dm.org/">David</a> - Scroll down for the most used dependencies</li><li><a href="https://npms.io/">npms</a></li></ul><br /><br /><h2>Quality Services</h2><div>I've used <a href="https://webpack.github.io/">Webpack</a> as an example below so you get some concrete data to study:</div><br /><ul><li><a href="https://codeclimate.com/github/webpack/webpack">Code Climate</a></li><li><a href="https://www.bithound.io/github/webpack/webpack">bitHound</a></li><li><a href="https://gemnasium.com/npms/webpack">Gemnasium</a></li><li><a href="https://nodesecurity.io/">Node Security Project</a>. They provide a tool known as <a href="https://www.npmjs.com/package/nsp">nsp</a> that can be used to check your project against known vulnerabilities.</li><li><a href="http://nodechecker.com/">NodeChecker</a> - This tool seems to have stalled. But based on the latest results, roughly only half of all packages have some sort of tests. The real figure might be lower now that npm has grown.</li><li><a href="https://anvaka.github.io/allnpmviz3d/">allnpmviz3d</a> - This services provides a 3D visualization of npm. You can use it to study dependency graphs in a visual manner.</li></ul><br /><br /><h2>Mirrors</h2><div>I managed to find only single mirror. There used to be more, including a EU one. I'm not exactly sure what happened. The current situation is a little worrying at least. Now we are relying on npm infrastructure to work always.</div><br /><ul><li><a href="http://npm.taobao.org/">Taonpm</a> - Chinese mirror maintained by <a href="http://cnpmjs.org/">cnpm</a>.</li></ul><div><br /></div><h2>Conclusion</h2><div>I feel one of the greatest challenges npm is going to face in the near future has to do with discovery and package quality. The amount of packages is growing at a scary pace. I haven't done the math, but it wouldn't surprise me if it broke the limit of 300k packages during this year. It just grows faster and faster.</div><div><br /></div><div>I hope the lists above help you to evaluate the packages you might want to use in a more objective manner. Spending some time researching can save a lot of time over longer term. Project popularity itself isn't any guarantee of quality. It just tells you that the problem it solves is an important one. Perhaps marketing worked and the project went viral. Maybe more could be done to help the consumers of the packages.</div><div><br /></div><div>It could be a neat idea to try to combine discovery and quality services in a more concrete manner. I hope we see more innovation in this space as JavaScript keeps getting more and more popular. The quality problem is a very acute one especially as you begin to see JavaScript in the enterprise space.</div>Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-87718459197998611762016-01-26T15:14:00.000+02:002016-01-26T19:14:30.298+02:00Afterthoughts on CMADFI 2016<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-nUxle2Smdzw/Vqdp3CLtpeI/AAAAAAAADaU/Glb8zT3YnKU/s1600/DSCF2544.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://3.bp.blogspot.com/-nUxle2Smdzw/Vqdp3CLtpeI/AAAAAAAADaU/Glb8zT3YnKU/s320/DSCF2544.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The venue was posh</td></tr></tbody></table>I happened to find <a href="http://communitymanagerappreciationday.com/">CMAD</a> (Community Manager Appreciation Day) a while ago by chance. As Finns tend to take things more seriously than other people, we've set up an event known as <a href="http://cmad.fi/">CMADFI</a> (Finnish only) around it. It began with fifteen people a few years ago. This year's edition managed to attract around 275 people in my home town.<br /><br />Given the event was free and conveniently located, I didn't have any good reason not to visit it. I happen to do some level of community management myself through my <a href="http://survivejs.com/">SurviveJS</a> effort, so sharpening my understanding certainly doesn't hurt. I think visiting CMADFI was worth it.<br /><br /><h2 id="theme-employee-advocacy">Theme - Employee Advocacy</h2>The event was structured around the theme of employee advocacy. Community management, or marketing in general, is something that applies within an organization itself. Especially in bigger organizations people can be absolutely clueless of what's going on at different parts of it.<br /><br />You can easily end up with silos. Silos tend to lead to wasted effort and unnecessary friction. Employee advocacy can help in this regard as it aims to lower boundaries of communication.<br /><br /><h2 id="event-format">Event Format</h2>I found the event format somewhat refreshing. Rather than having to sit through hour long lectures, event talks were fixed to 15 minute slots on a single track. I think this worked quite nicely. This allows you to get exposed to many ideas.<br /><br />Even if some talks are a bit weaker or not so relevant for you, not a lot of time is wasted. It would be very interesting to extend this model so that the audience could vote which topics to discuss in a greater detail on a second day of an event.<br /><br />I think it was a great move by the authors to compile a <a href="http://cmad.fi/ohjelma">single page with all the slides</a> (Finnish only). It would be even better to include presentation videos there (perhaps that will be done). I hope more organizers would do something like this as it's usually quite a chore to hunt down the slides.<br /><br /><h2 id="thoughts-on-talks">Thoughts on Talks</h2>Overall the quality of the talks was alright. Some might have felt a bit too commercial for my tastes. I understand that's the cost of the free entry, though. As a technical person I would have loved to see more technical talks. Now the issues were covered on a high level without providing deeper level understanding.<br /><br />Aspects, such as Twitter automation and bots, would have been fine additions. Topics, such as growth hacking or analytics, would have fit the event nicely as well. But given it was only a one day event, there's only so much you can cover.<br /><br />Given there were so many talks, I've tried to condense some of the main points I got from them below.<br /><br /><h3 id="can-information-be-used-to-alter-behavior-by-vilma-luoma-aho">Can information be used to alter behavior? by Vilma Luoma-Aho</h3><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-EmR-Wd1a1oU/Vqdp55VDwBI/AAAAAAAADaU/AUwdSruGsbA/s1600/DSCF2558.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://3.bp.blogspot.com/-EmR-Wd1a1oU/Vqdp55VDwBI/AAAAAAAADaU/AUwdSruGsbA/s320/DSCF2558.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">There was a message wall that got trolled by<br />terrorist propaganda bots</td></tr></tbody></table><ul><li>Information alone isn't enough. You have to be in a receptive mode for this to happen. The information has to be packaged in the right format and fit the pattern. Perhaps the core point here is that you need to understand your target audience well.</li><li>A lot of default filters can be bypassed by going through emotion. Incidentally this is something that internet trolls and disinformation factories rely upon.</li></ul><div><br /></div><h3 id="how-to-make-sure-your-audience-finds-your-content-interesting-by-sanna-jokiniitty">How to Make Sure Your Audience Finds Your Content Interesting? by Sanna Jokiniitty</h3><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-1xWaRg60Ag0/Vqdp6jDjRdI/AAAAAAAADaU/K-fA26jwq60/s1600/DSCF2562.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://3.bp.blogspot.com/-1xWaRg60Ag0/Vqdp6jDjRdI/AAAAAAAADaU/K-fA26jwq60/s320/DSCF2562.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">A conference without a Venn isn't a real conference</td></tr></tbody></table><ul><li>A community manager is somewhere between of the community, marketing, and business. The goal is to align all these.</li><li>The clients get influenced from many directions. Your influence is just a small part of that all.</li><li>Understanding this process can lead to a better understanding of topics to cover. Just having content isn't enough. It has to be timely and interesting.</li><li>Content ideas can be gained through analytics, client feedback, and simply by following the ongoing conversation.</li></ul><div><br /></div><h3 id="content-dj-by-janne-gylling">Content-DJ by Janne Gylling</h3><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-UwYPoEGQeCo/Vqdp6tmf_KI/AAAAAAAADaU/cSI-EFUA10M/s1600/DSCF2563.JPG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://1.bp.blogspot.com/-UwYPoEGQeCo/Vqdp6tmf_KI/AAAAAAAADaU/cSI-EFUA10M/s320/DSCF2563.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Obligatory sponsor slide</td></tr></tbody></table><ul><li>A good DJ has focus on three things: artists, record collection, and dance floor. The idea of this split is that you need those guys that produce the content, the content itself, and you need to know your audience so you know what to play and when.</li><li>Each of these three has demands of its own. Artists needs understanding, equipment, time, examples, audience, and feedback. These guys will fill the record collection, but in order to do that they will need training and they need to be committed. I think the point here is that if you aren't an artist to begin with, it can be tough to become one. Any of this doesn't matter if you don't know your audience.</li><li>You have to be able to play your records at the right volume. It's fine to play the same record many times. You just have to be a little careful not to crank it up too loud or else your audience might end up getting a tinnitus and leave you behind.</li><li>In order to stay in the game, a good DJ should be able to follow the trends as you probably want to produce as many hits as possible. Analytics can help. Taking your artists to a tour can be beneficial as well. Reward success and connect your artists with wider audience.</li></ul>I liked this presentation as it gave a good analogy for content related work. The analogy works well for larger organizations where you want to get the people involved in content production. But the same ideas are valid even if you work alone.<br /><br /><h3 id="community-managers-at-the-crux-of-organizational-development-by-liinamaria-hakola">Community Managers at the Crux of Organizational Development by Liinamaria Hakola</h3><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-55AIhywJcgU/Vqdp6xaI07I/AAAAAAAADaE/9C6DcJDzvIc/s1600/DSCF2565.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="213" src="http://2.bp.blogspot.com/-55AIhywJcgU/Vqdp6xaI07I/AAAAAAAADaE/9C6DcJDzvIc/s320/DSCF2565.JPG" width="320" /></a></div>This talk was about Liideri, a goverment driven program that helps companies to help renew their business. The themes of the program are participation, newer ways of working, and leadership. I guess it's nice to have these kind of programs around.<br /><br />I suppose the question is why aren't the businesses interested in doing this type of work without external funding? Improving operating efficiency leads to better profits after all.<br /><br /><h3 id="the-power-of-visual-communication-in-marketing-a-brick-and-mortar-store-by-viivi-hein-nen">The Power of Visual Communication in Marketing a Brick and Mortar Store by Viivi Heinänen</h3><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-C2yQKQ5xUPk/Vqdp72Ns4HI/AAAAAAAADZk/44WQPgl1Db4/s1600/DSCF2568.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://3.bp.blogspot.com/-C2yQKQ5xUPk/Vqdp72Ns4HI/AAAAAAAADZk/44WQPgl1Db4/s320/DSCF2568.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Buns. Me like.</td></tr></tbody></table>Even if you happen to have a tiny brick and mortar store middle of nowhere, it can still be fun to get noticed. This is what the talk was about. Harjun Paperi, a local paper product shop, has managed to do this somewhat effectively.<br /><br />The strange thing is that they don't actually have a web shop at all. You literally have to visit the shop in order to buy something. This doesn't seem to be a problem, though.<br /><br />The goal of their marketing is to create a positive outlook for their company. I got the feeling they know their target market well. I'm not that interested in Facebook or Instagram myself, but it seems like it's working out for them. Given they sell paper products, this works well with marketing that has its focus on visuals. Just increasing sales isn't their only goal, they want to make their followers feel good.<br /><br />They've managed to activate their following by encouraging them to share pictures of the products at their home. In addition, they've run competitions where this theme seems to be prevalent. A good example of this is a "taping competition" where you were supposed to make something fun by taping, then take a picture of that, and finally share it under a certain hashtag.<br /><br />I think by not branching into web fully, they might be missing out on some business. But this may be a conscious choice. Maybe not providing a web shop is a way to make the business more personal as you are actually forced to visit their shop to buy something.<br /><br /><h3 id="thousand-and-one-youtubes-by-sanna-rousi">Thousand and One YouTubes by Sanna Rousi</h3><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-c-AV4z34poM/Vqdp8VfawyI/AAAAAAAADYQ/R2443f8H0uw/s1600/DSCF2569.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="213" src="http://1.bp.blogspot.com/-c-AV4z34poM/Vqdp8VfawyI/AAAAAAAADYQ/R2443f8H0uw/s320/DSCF2569.JPG" width="320" /></a></div>Especially millennials have picked up YouTube. In Finland YouTube is more popular amongst young people than traditional TV channels. The older generations rely on older mediums still and don't understand what the buzz is amount, but apparently this is changing as people get older.<br /><br />If you are targeting younger people, running a right kind of campaign through YouTube can be highly effective. This is particularly true if you can tie it to some already popular figures by getting them on your campaign.<br /><br />Traditional marketing approaches don't work on YouTube. You have to be more subtle and go through meaningful content. The brand can exist there, but that's not the main point.<br /><br /><h3 id="engaging-staff-in-content-production-by-merja-heinonen">Engaging Staff in Content Production by Merja Heinonen</h3><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/--XnUqQyL12A/Vqdp88tcCwI/AAAAAAAADZ0/P7WstQ_3ni8/s1600/DSCF2572.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://2.bp.blogspot.com/--XnUqQyL12A/Vqdp88tcCwI/AAAAAAAADZ0/P7WstQ_3ni8/s320/DSCF2572.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The red cap caught my eye</td></tr></tbody></table>A local energy company known as Jyväskylän Energia decided to improve its social media outlook in 2014. Before that they ran it in a rather ad hoc manner. That's not good for business.<br /><br />They started by introducing Yammer to their organization. It's a tool that is useful for internal communication. I don't have any personal experience with it, but it sounds like a sane starting point. Before you can even begin to organize any bigger effort, you need some communication channel to reach the people.<br /><br />This development lead to the development of a social media strategy and guidelines. Through small steps and with some collaboration with the local universities, they've managed to establish a proper presence at the social media. As a part of their efforts, they've managed to crystallize their brand promises. It's not possible to guide marketing efforts properly without this type of work after all.<br /><br />They still have a lot of work ahead of them as they need to learn to measure the effectiveness of their efforts, figure out how to reach their target market better, and improve the collaboration between marketing and sales for instance. But overall, it seems like making a conscious decision to establish a proper social media presence worked well for them.<br /><br /><h3 id="as-a-employee-ambassador-at-the-university-by-janne-simonen">As a Employee Ambassador at the University by Janne Simonen</h3><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-Ae-2kccKf_U/Vqdp9NMJJTI/AAAAAAAADaI/c45YNXxy8jM/s1600/DSCF2574.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://1.bp.blogspot.com/-Ae-2kccKf_U/Vqdp9NMJJTI/AAAAAAAADaI/c45YNXxy8jM/s320/DSCF2574.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Yammer and Skype. Booyah.</td></tr></tbody></table>At least in my experience one of the biggest problems of Finnish universities is that they consist of small cells, silos, that are separate to each other. There's a lot of potential in the organizations through sheer size alone, but they lose a lot of it through rigid structures that don't promote collaboration. Janne's talk was exactly about this.<br /><br />Marketing isn't just something that's done from an organization towards outside. It's something that can happen within it. Especially in the case of an organization like an university, it could be beneficial if the others knew what you were up to. This is why Janne has been running Yammer in various organizations.<br /><br />For this to work, it is highly important to get leadership involved as that increases transparency and makes it worth for employees to use the system as well. Janne achieved this by performing queries on employees to prove the need for more effective communication. You need that leadership buy-in to push something like this forward.<br /><br />For an individual researcher, marketing can make a huge difference in terms of opportunities. Given that a lot of university research is funded through public, it also makes sense to make it accessible. The results belong to everyone.<br /><br /><h3 id="welfare-from-work-by-minna-janhonen">Welfare from Work by Minna Janhonen</h3><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-1tJc1D9eACQ/Vqdp9O9B67I/AAAAAAAADaQ/YS-nPPhYkM4/s1600/DSCF2575.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://2.bp.blogspot.com/-1tJc1D9eACQ/Vqdp9O9B67I/AAAAAAAADaQ/YS-nPPhYkM4/s320/DSCF2575.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">A lot of the slides were blue. Coincidence?</td></tr></tbody></table>According to Minna employee ambassadorship can replace marketing. Rather than having a dedicated marketing department, the role can be more embedded to an organization. I guess this can be true up to an extent. You may still want a marketing specialist around, but it's true everyone might have something to contribute.<br /><br />As shown by earlier talks, developing proper communication channels and enabling employees to participate in content production can be beneficial to an organization.<br /><br /><h3 id="leadership-in-social-intranet-by-jussi-sivonen">Leadership in Social Intranet by Jussi Sivonen</h3><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-_2bkOdpzrlc/Vqdp9WflTHI/AAAAAAAADaM/Vq9lgZLgWa8/s1600/DSCF2576.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://1.bp.blogspot.com/-_2bkOdpzrlc/Vqdp9WflTHI/AAAAAAAADaM/Vq9lgZLgWa8/s320/DSCF2576.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Blue again!</td></tr></tbody></table>The core points of Jussi's talk were close to earlier talks. If you cannot get the leadership involved, it's hard to get buy-in from others no matter how fancy technology you might use in your intranet. This goes back to the silo idea. The first step towards dismantling the silos is to build connections.<br /><br />This leads to visibility that helps in developing trust towards the organization. No doubt this helps with employee engagement and motivation as it changes the situation towards something more equal.<br /><br /><h3 id="as-a-leader-in-social-media-by-juha-harju">As a Leader in Social Media by Juha Harju</h3><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/--1WgVB6YcDA/Vqdp9uRmUNI/AAAAAAAADaA/RwdZPdV78VI/s1600/DSCF2579.JPG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://4.bp.blogspot.com/--1WgVB6YcDA/Vqdp9uRmUNI/AAAAAAAADaA/RwdZPdV78VI/s320/DSCF2579.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Green!</td></tr></tbody></table>Juha made a few interesting points:<br /><ul><li>Leadership is essentially about interaction.</li><li>When in growth mode, it's hard to manage the growth. The best you can do is to enable it. This is where communication comes in.</li><li>Social media helps you to communicate values of your company.</li><li>You can choose in which mediums you participate.</li></ul><div><br /></div><h3 id="digisyke-digital-heartbeat-to-industry-by-timo-rainio-and-jari-jussila">DigiSyke - Digital Heartbeat to Industry by Timo Rainio and Jari Jussila</h3><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-15ew9W2b4oI/Vqdp95XLITI/AAAAAAAADZA/EFz1b_Atp44/s1600/DSCF2580.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="213" src="http://4.bp.blogspot.com/-15ew9W2b4oI/Vqdp95XLITI/AAAAAAAADZA/EFz1b_Atp44/s320/DSCF2580.JPG" width="320" /></a></div>DigiSyke is a scheme which helps the industry to become more digital. It joins various government sponsored organizations and allows them to help modernize Finnish industry. This is done through training and collaboration. The main goal is to improve productivity and employee satisfaction.<br /><br />So far the progress on the field has been somewhat tool oriented. Even though tools help, it's not enough. You will need to get them to use. This reminds me of Jussi's talk and the importance of leadership buy-in.<br /><br />Given the Finnish economy is going through somewhat rough times at the moment, modernization efforts like this are valuable. At worst we'll lose our market positions even further. If we manage to improve, however, there might be something to gain. We can either set the trends or try to follow them. Even though I hope for the former, I remain skeptical.<br /><br /><h3 id="case-outward-bound-finland-by-jaana-nystr-m">Case Outward Bound Finland by Jaana Nyström</h3><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-a9aGzwcegFs/Vqdp97igm6I/AAAAAAAADZE/esj53si4asQ/s1600/DSCF2581.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="213" src="http://3.bp.blogspot.com/-a9aGzwcegFs/Vqdp97igm6I/AAAAAAAADZE/esj53si4asQ/s320/DSCF2581.JPG" width="320" /></a></div>Jaana's talk was one of the more practical ones. She went through a variety of tools she uses to manage her client cases. There were plenty of familiar ones there, such as Buffer or TweetDeck.<br /><br />Personally I expected she might rely on even more automation. You can automate Twitter content discovery and follower management after all. Not everything can be automated, but a surprisingly large part can.<br /><br /><h3 id="case-community-management-with-sitra-and-sasky-how-to-encourage-and-manage-a-community-at-the-same-time-by-pauliina-m-kel-">Case: Community Management with Sitra and Sasky - How to Encourage and Manage a Community at the Same Time? by Pauliina Mäkelä</h3><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-nWDrzZLDKWU/Vqdp9xk1j0I/AAAAAAAADZY/eGM2p3ZTHPQ/s1600/DSCF2582.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="213" src="http://1.bp.blogspot.com/-nWDrzZLDKWU/Vqdp9xk1j0I/AAAAAAAADZY/eGM2p3ZTHPQ/s320/DSCF2582.JPG" width="320" /></a></div>Pauliina's talk focused mainly on Facebook Groups. Even though they are apparently fairly easy to set up, there are still aspects you should be careful about. Pauliina suggested setting up a separate group for admins. You might need to manage the group after all. The admin group is perfect for that.<br /><br />Besides that, it's important to put time and effort in figuring out proper descriptions for the groups, deal with members (accepting, sharing content), and measuring progress (growth). Group size can be used as a part of marketing efforts. Larger groups tend to attract even more people to join. This is just the way networks effects work.<br /><br />It can be beneficial to develop an onboarding process. Sometimes this may take some physical work depending on your target market. Running a workshop is one way to get more people to join, especially if they are newbies.<br /><br /><h3 id="explain-with-graphics-by-lari-kemil-inen">Explain with Graphics by Lari Kemiläinen</h3><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-AfoFHMqxGF0/Vqdp-PfP67I/AAAAAAAADZI/g7GZrsly32c/s1600/DSCF2583.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="213" src="http://4.bp.blogspot.com/-AfoFHMqxGF0/Vqdp-PfP67I/AAAAAAAADZI/g7GZrsly32c/s320/DSCF2583.JPG" width="320" /></a></div>Infographics is one of those things that a lot of people tend to get consistently wrong. At best they can make hard to understand aspects easier to understand. At worst they mislead. Sometimes that can be purposeful and twisted to suit some specific viewpoint. You might have seen diagrams like that.<br /><br />Lari made an interesting point about mindmaps. The default form we all know isn't memorable. If we drew mindmaps literally as maps instead of trees, we could benefit from spatial memory. We have a tendency to remember locations well after all.<br /><br />The great thing about crafting infographics is that they force you to understand your subject matter well. I would say this applies to any teaching. You simply can't explain it, if you don't understand what you are doing.<br /><br />Infographics allow us to be flexible when needed. According to Lari, good infographics should be clickable, shareable, truthful, and contain attribution (source). You will want to keep them simple enough while being provocative enough so that people actually click them. Simplicity is important because that encourages sharing.<br /><br />Lari linked to <a href="http://www.informationisbeautiful.net/">Information is beautiful</a>. It's a site filled with good examples to study. For me Lari's presentation was one of the highlights and I could have easily listened for another 15 minutes or more about the topic.<br /><br /><h3 id="how-to-build-a-community-on-snapchat-by-ville-kormilainen">How to Build a Community on Snapchat? by Ville Kormilainen</h3><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-SwCbYr6cP3s/Vqdp-ZVpXaI/AAAAAAAADZU/oNxjX4dsxvk/s1600/DSCF2584.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="213" src="http://3.bp.blogspot.com/-SwCbYr6cP3s/Vqdp-ZVpXaI/AAAAAAAADZU/oNxjX4dsxvk/s320/DSCF2584.JPG" width="320" /></a></div>Snapchat is one of those services I have never used. And I don't have much incentive to do so. Still, it was interesting to hear how to grow a little community there. Ville Kormilainen did so through absurdity.<br /><br />As it happens, teens find absurd images funny. That helped Ville to amass a big following through some support from big names. Getting the content right and exposure for that worked well for Ville. This is something that applies to these platforms in general I think.<br /><br /><h2 id="conclusion">Conclusion</h2><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-wxjiT3_7mJQ/Vqdp-a_7JLI/AAAAAAAADZQ/p05KdZM4siA/s1600/DSCF2585.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://1.bp.blogspot.com/-wxjiT3_7mJQ/Vqdp-a_7JLI/AAAAAAAADZQ/p05KdZM4siA/s400/DSCF2585.JPG" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">You can find illustrated notes (Finnish only) at <a href="https://visualisointi.wordpress.com/2016/01/25/sketchnotesit-eli-piirrosmuistiinpanot-cmadfi-tapahtumasta-setti-1-cmad/">Linda Saukko-Rauta's blog (three parts)</a></td></tr></tbody></table>Overall CMADFI was definitely worth visiting. I picked up a couple of tips and tricks here and there. I will have to rethink a few things in the future and the conference contributed to that quite well.<br /><br />As with free conferences often, there were quite a few "no-shows". It's possible to solve this problem through a tiered registration (you have to confirm or you lose your spot) or by implementing a fee for not showing up. I would be happy with both. I could easily pay a bit of money to participate even. I wouldn't mind if an event like this lasted for 2-3 days and had some workshops in it.<br /><br />I liked the format of 15 minute talks. That forces people to simplify and you get exposed to a lot of topics in a short period of time. I might have cut two talks from the program and implemented a panel discussion instead. That would have given a better chance to participate than the current setup. But overall it worked quite nicely.Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-44125487042802415772016-01-23T18:13:00.002+02:002016-01-23T18:13:38.376+02:00Ask Me Anything about Webpack and ReactDo you have a Webpack or React related question in mind you would like me to answer? Now is your chance to get it done! Head to my <a href="https://github.com/survivejs/ama/issues">AMA</a> and I'll write you back.<br /><br />If those words didn't make any sense, <a href="http://survivejs.com/">read my book</a> and get back here after that.Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-46185935529704372232016-01-06T20:43:00.000+02:002016-01-08T10:30:38.107+02:00Stamplay Ripped Off My Work (resolved!)As Picasso said "Good artists copy, great artists steal.". A company known as Stamplay decided do the latter. You can guess I was surprised to see <a href="https://blog.stamplay.com/getting-started-with-react-es6-webpack/">a blog post</a> heavily derived based on <a href="http://survivejs.com/webpack_react/developing_with_webpack/">my content</a> at their blog. Personally I don't mind remixing, but if you do this sort of thing, at least an attribution would be nice.<br /><br />On other news, there's a new version of the <a href="http://survivejs.com/blog/survivejs200-rc1/">Webpack and React book</a> out now. Getting close to 2.0!<br /><br /><b>Update:</b> After going through the situation, Stamplay decided to add an attribution. Sometimes it can go this way it seems. They didn't copy the content on purpose. In the end it was just a misunderstanding.Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-34335485509159715302016-01-01T17:43:00.000+02:002016-01-01T17:43:40.527+02:00Reflecting on 2015You could say 2015 was a good year, even if it wasn't an easy one. Career-wise I made a huge change of direction. Earlier I had relied on random freelancing gigs. To be honest, I wasn't never particularly great at that. The rates are quite poor and the income is not that stable.<br /><br />I realized this wasn't something that could work over longer term. As a result, an effort known as <a href="http://survivejs.com/">SurviveJS</a> was born. That's what kept me busy during 2015. I hope 2016 will be another SurviveJS year.<br /><br /><h2 id="survivejs-what-s-it-about-">SurviveJS - What's It About?</h2><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-N9HGa9udNBQ/VoadqXEaKrI/AAAAAAAADTk/KSDp56Ym34w/s1600/title_page_small.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="320" src="http://2.bp.blogspot.com/-N9HGa9udNBQ/VoadqXEaKrI/AAAAAAAADTk/KSDp56Ym34w/s320/title_page_small.png" width="248" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">My first book!</td></tr></tbody></table>You could say the seeds of <a href="http://survivejs.com/">SurviveJS</a> were planted when I happened to comment on a blog post by <a href="http://www.christianalfoni.com/">Christian Alfoni</a>. He had written about <a href="https://webpack.github.io/">Webpack</a>, and commented on the situation (lack of docs). At the time the tool, even though valuable, was really hard to approach. To change the situation, we wrote the first version of the <a href="https://christianalfoni.github.io/react-webpack-cookbook/">Webpack/React cookbook</a>. It's an effort that became quite popular.<br /><br />This initial success made me realize there might be room for something commercial. I decided to poke an old publisher acquaintance of mine. We tried proposing a book related to the topic, but failed to get the deal. Christian got busy with some work of his own. Regardless, I decided to carry on. I chose <a href="https://leanpub.com/">Leanpub</a> as my intermediate given I didn't want to deal with the complexity of sales myself (VAT MOSS and all that).<br /><br />Suffice to say, this process led to an interesting book about Webpack and <a href="https://facebook.github.io/react/">React</a>. It's an ongoing effort. At the moment this is something that sustains itself financially allowing me to focus on the effort. This is a very good situation for everyone involved.<br /><br />If you had told me a year ago I would have sold almost thousand books by the end of 2015, I wouldn't have believed you. The book was the #1 selling book for the last week of 2015 at Leanpub. It was also a part of the <a href="http://www.reactindiebundle.com/">React Indie Bundle</a>. The bundle was a success as well.<br /><br />As I don't want to bore you with exact details, consider checking out <a href="http://survivejs.com/blog/2015-recap/">my recap of the year 2015 of SurviveJS</a>. You'll find more specific information there.<br /><br /><h2 id="personal-development">Personal Development</h2><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-sq2KH553iCY/VoaeCkM5tmI/AAAAAAAADTs/lWmLQs0HDcc/s1600/winter_fog.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://4.bp.blogspot.com/-sq2KH553iCY/VoaeCkM5tmI/AAAAAAAADTs/lWmLQs0HDcc/s320/winter_fog.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Winter fog</td></tr></tbody></table>I think this was a good year in terms of personal development. Besides beginning to understand publishing business a little better, I picked up <a href="https://500px.com/bebraw">photography</a> (Fuji X100S is great!), improved my artistic skills, and even improved my technical skills. Having to think deeply about something forces you to actually understand what you are doing and why.<br /><br />I developed a couple of semi-interesting libraries/tools during 2015. I've listed some notable ones below:<br /><ul><li><a href="https://bebraw.github.io/reactabular/">Reactabular</a> is a powerful table abstraction for React. I pushed a lot of problems to user space, but it seems to work quite fine regardless.</li><li><a href="https://bebraw.github.io/react-pagify/">react-pagify</a> is a paginator for React. This grew out of Reactabular, but isn't coupled with it in any way. I probably need to rethink the API and make the demo page nicer. The functionality is there, though.</li><li><a href="https://bebraw.github.io/react-ghfork/">react-ghfork</a> is an easy GitHub fork component for React. Not much to add.</li><li><a href="https://bebraw.github.io/react-ellipsify/">react-ellipsify</a> is a neat ellipsis component for React. It's not particularly popular, but I achieved what I wanted to technically speaking. The API is nice and it can ellipsify any content. This might come in handy later.</li><li><a href="https://antwarjs.github.io/">Antwar</a> is a Webpack and React based static site engine I developed with <a href="http://eldh.co/">Andreas Eldh</a>. It's still a little rough at places. I hope to get a solid version out there early 2016. It's just something I develop based on my own needs and it's not even meant for large scale usage. Nevertheless, there might be a thing or two to learn from the implementation.</li><li><a href="https://github.com/survivejs/webpack-merge">webpack-merge</a> was developed to address an issue showcased by my book development. I needed simple means to organize Webpack configuration. A simple variant of a standard recursive <code>merge</code> seemed to fit the problem. The library has grown since to make it even more suitable for organizing complex configuration and as a result it fills a small niche in the ecosystem.</li></ul>Overall, it was a good year and I progressed in many areas. A lot of these projects will likely go further during 2016.<br /><br /><h2 id="presentations">Presentations</h2>I gave a couple of presentations during the year. I know I should do more, but my geographical location doesn't really help with that. If I want to present, I have to spend a day or two traveling, not to mention that this tends to be expensive. I've listed my presentation slides of 2015 below (works best in Chrome):<br /><ul><li><a href="https://bebraw.github.io/jsdelivr-in-5mins">jsDelivr in 5 Minutes</a></li><li><a href="https://survivejs.github.io/react-for-awesome-people/">React for Awesome People</a> - Succinct intro to React.</li><li><a href="https://survivejs.github.io/frontend-in-2015">Frontend in 2015 - Clear the Decks</a> - I had a chance to go through the state of art. I don't think this presentation will age well. In two years it's all different.</li><li><a href="https://survivejs.github.io/how-to-write-a-book-and-survivejs-it">How to Write a Book and SurviveJS It</a> - A company known as Fraktio asked me to talk about my book effort (business/tech talk). The talk was given in Finnish and there's a <a href="https://www.youtube.com/watch?v=DrgZaiqm4YE">YouTube video</a> available. That's one of those things I won't ever watch.</li></ul>Maybe I'll do more in 2016, but this depends on luck and demand. I tend send some proposals every once in a while, but it's quite competitive these days with that.<br /><br /><h2 id="events">Events</h2><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-v-812uJXAc0/VoaeCr_-NYI/AAAAAAAADTw/GGfiEni5pQ0/s1600/winter_sun.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://2.bp.blogspot.com/-v-812uJXAc0/VoaeCr_-NYI/AAAAAAAADTw/GGfiEni5pQ0/s320/winter_sun.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Winter Sun</td></tr></tbody></table>In addition to being a talking head, I participated events as listed in my travel reports below:<br /><ul><li><a href="http://www.nixtu.info/2015/10/afterthoughts-tampere-goes-agile-15.html">Tampere Goes Agile '15</a></li><li><a href="http://www.nixtu.info/2015/10/thoughts-on-blender-conference-2015.html">Blender Conference 2015</a></li><li><a href="http://www.nixtu.info/2015/10/thoughts-on-oscon-2015-amsterdam.html">OSCON 2015</a></li><li><a href="http://www.nixtu.info/2015/12/afterthoughts-web-on-edge.html">Web on Edge</a></li></ul>I want to give special thanks to <a href="http://prospectone.pl/">Prospect One</a> and <a href="http://www.jsdelivr.com/">jsDelivr</a> for helping to sponsor the OSCON trip. If you need graphics or web performance work done, consider them. Thanks Dmitriy!<br /><br />It's fun to visit events every once in a while. They force you to get out of your shell a bit, and at least it breaks the monotony of daily grind somewhat. Sometimes spending a few days abroad is all you need. It gives you perspective and energy to push further.<br /><br /><h2 id="conclusion">Conclusion</h2>It feels like 2015 was a good year. It definitely wasn't an easy one, but at least I have a certain direction now. Especially SurviveJS is something I can, and will, push further. The best thing about the situation is that it allows me to contribute to the community while doing something I enjoy.<br /><br />I am fairly confident about 2016. 2015 put me on the right track and took some weight from my shoulders. Now I just have to make most of the momentum. Interesting times.Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-29036744588004026792015-12-27T20:57:00.000+02:002015-12-27T20:57:51.480+02:00Linkdump 26 - Business, Personal Development, Software Development, Hardware...It has been a while since <a href="http://www.nixtu.info/2015/04/linkdump-25-personal-development.html">the previous linkdump</a>. Time for a new one.<br /><h1 id="business">Business</h1><ul><li><a href="http://www.kalzumeus.com/2015/05/01/talking-about-money/">Talking About Money</a></li><li><a href="http://euvataction.org/2015/01/09/eu-vat-how-did-the-first-week-go-its-not-pretty/">EU VAT – How Did The First Week Go? It's Not Pretty…</a></li><li><a href="http://reports.weforum.org/human-capital-report-2015/economies/">Human Capital Report 2015</a></li><li><a href="http://projects.wsj.com/buzzwords2014/">Business Buzzwords Generator</a></li><li><a href="http://casjam.com/teaching-is-marketing/">What Are You Teaching Your Clients?</a></li><li><a href="http://www.theglobeandmail.com/report-on-business/small-business/sb-growth/how-i-get-my-employees-to-work-80-hours-a-week/article27047497/">How some guy gets his employees to work 80 hours a week</a></li><li><a href="http://giffconstable.com/2015/11/lessons-from-a-restaurant-kitchen/">Lessons from a Restaurant Kitchen</a></li></ul><h2 id="startups">Startups</h2><ul><li><a href="http://www.wired.com/2010/09/ff_tesla/">How Elon Musk Turned Tesla Into the Car Company of the Future</a></li><li><a href="http://www.uxbooth.com/articles/how-to-cross-the-chasm-from-idea-to-product/">How to Cross the Chasm from Idea to Product</a></li><li><a href="http://growth.tlb.org/">Startup Growth Calculator</a></li><li><a href="https://remysharp.com/2015/09/14/jsbin-toxic-part-1">The toxic side of free. Or: how I lost the love for my side project (part 1)</a></li></ul><h1 id="finland">Finland</h1><ul><li><a href="http://telefinn.blogspot.fi/2011/11/matti-nykanen-quotes.html">Finnish from Afar Blog: Matti Nykänen Quotes</a></li><li><a href="http://depressingfinland.tumblr.com/image/115825995843">Depressing Finland</a> - Trains.</li><li><a href="http://www.huffingtonpost.com/ira-kalb/its-time-to-discover-the-worlds-best-kept-secret_b_7280648.html">It's Time to Discover the World's Best Kept Secret -- Finland</a></li><li><a href="http://www.finskis.com/recipes-3/karjalanpiirakat-karelian-pies/">Karjalanpiirakat – Karelian Pies</a></li><li><a href="http://www.euronews.com/2015/07/02/finland-tops-european-countries-in-latest-happiness-survey/">Finland tops European countries in latest happiness survey</a></li><li><a href="http://www.wsj.com/articles/what-finland-can-teach-america-about-baseball-1436453947">What Finland Can Teach America About Baseball</a></li><li><a href="http://www.pauldickman.com/misc/helsinki.php">You know you’ve been in Finland too long, when...</a></li><li><a href="http://finnishnightmares.blogspot.fi/">Finnish Nightmares</a></li><li><a href="http://ar.to/2010/08/red-blood-white-snow">A Thousand Lakes of Red Blood on White Snow</a></li><li><a href="http://valtioneuvosto.fi/en/article/-/asset_publisher/suomi-julkaisee-omat-emojinsa-ensimmaisena-maana-maailmassa">Finland is the first country in the world to launch its own emojis</a></li></ul><h1 id="personal-development">Personal Development</h1><ul><li><a href="http://www.avclub.com/article/28-hour-marvel-marathon-nearly-cost-our-writer-his-218852">The 28-hour Marvel Marathon nearly cost our writer his sanity</a></li><li><a href="https://habitica.com/static/front">Habitica</a> - Habit builder service.</li><li><a href="https://medium.com/@monteiro/the-chokehold-of-calendars-f70bb9221b36">The Chokehold of Calendars</a></li><li><a href="http://www.interviewing.io/">interviewing.io</a> - Practice interviewing with top companies</li><li><a href="http://www.becomingminimalist.com/elevate/">Elevate the Important</a></li><li><a href="https://medium.com/neuroscience-internet/how-the-internet-dopamine-and-your-brain-are-working-together-to-screw-your-potential-1ac176538961">How the Internet, Dopamine and your Brain are Working Together to Screw Your Potential.</a></li><li><a href="https://grasshopperherder.com/work-life-balance-tip-go-for-flow-instead/">Work Life Balance Tip: Go for Flow Instead</a></li><li><a href="http://jamesclear.com/overrated-underrated">Overrated vs. Underrated: Common Beliefs We Get Wrong</a></li><li><a href="http://calnewport.com/blog/2015/09/07/how-louis-c-k-became-funny-and-why-it-matters/">How Louis C. K. Became Funny and Why it Matters</a></li><li><a href="http://www.theloop.ca/why-you-should-never-make-your-bed/">Why you should never make your bed</a></li></ul><h1 id="software-development">Software Development</h1><ul><li><a href="https://medium.com/javascript-scene/assessing-employee-performance-1a8bdee45c1a">Assessing Employee Performance</a></li><li><a href="https://css-tricks.com/considerations-on-bug-reporting-in-teams/">Considerations on Bug Reporting in Teams</a></li><li><a href="http://mattbriggs.net/blog/2015/06/01/the-role-of-a-senior-developer/">The role of a Senior Developer</a></li><li><a href="http://www.halfarsedagilemanifesto.org/">Manifesto for Half-Arsed Agile Software Development</a></li><li><a href="http://www.slideshare.net/allankellynet/no-projectsbeyond-projects">#NoProjects</a></li><li><a href="https://flowchainsensei.wordpress.com/2015/10/20/rightshifting-in-a-nutshell/">Rightshifting In A Nutshell</a></li><li><a href="http://www.adriancourreges.com/blog/2015/11/02/gta-v-graphics-study/">GTA V Graphics Study</a></li><li><a href="https://www.youtube.com/watch?v=AxSdWhkMB_A">Software developers describing their work in 1973 (Finnish national TV, English subs)</a></li></ul><h2 id="tools">Tools</h2><ul><li><a href="https://github.com/jlevy/the-art-of-command-line">jlevy/the-art-of-command-line</a></li><li><a href="https://github.com/git-game/git-game-v2">git-game/git-game-v2</a></li><li><a href="http://eviltrout.com/2015/06/29/an-emulator-for-tis-100.html">TIS-100: My emulator for a CPU that doesn't exist</a></li><li><a href="http://mike-solomon.com/timesheet-githook">Timesheet githook</a></li><li><a href="http://etia.co.uk/">Etia</a> - SQL for command line</li><li><a href="https://github.com/sturdynut/git-prepush-hook">sturdynut/git-prepush-hook</a></li></ul><h2 id="opinions">Opinions</h2><ul><li><a href="http://blog.toolshed.com/2015/05/the-failure-of-agile.html">/\ndy: The Failure of Agile</a></li><li><a href="http://bluefocus.com.au/now-hiring-senior-software-unicorn/">Now Hiring: Senior Software Unicorn</a></li><li><a href="https://medium.com/@johnslegers/the-decline-of-stack-overflow-7cb69faa575d">The decline of Stack Overflow</a></li><li><a href="http://randsinrepose.com/archives/a-nerd-in-a-cave/">A Nerd in a Cave – Rands in Repose</a></li><li><a href="https://www.christianheilmann.com/2015/07/17/the-full-stackoverflow-developer/">The full stackoverflow developer</a></li></ul><h2 id="techniques">Techniques</h2><ul><li><a href="https://daniel-j-h.github.io/post/intuitive-monadic-bind-kleisli-composition/">An Intuitive Use-Case For Monadic Bind And Kleisli Composition</a></li><li><a href="https://github.com/MostlyAdequate/mostly-adequate-guide">MostlyAdequate/mostly-adequate-guide</a> - Mostly adequate guide to functional programming.</li><li><a href="http://www.righto.com/2015/05/bitcoin-mining-on-55-year-old-ibm-1401.html">Bitcoin mining on a 55 year old IBM 1401 mainframe: 80 seconds per hash</a></li><li><a href="http://sdymchenko.com/blog/2015/05/29/snake-puzzle-eclipse/">Solving "Vietnam snake" puzzle with constraint logic programming</a></li><li><a href="https://github.com/blog/2019-how-to-undo-almost-anything-with-git">How to undo (almost) anything with Git</a></li><li><a href="http://plasmasturm.org/log/6debug/">Six Stages of Debugging</a></li></ul><h2 id="tutorials">Tutorials</h2><ul><li><a href="https://danielmiessler.com/study/vim/">A vim Tutorial and Primer</a></li></ul><h2 id="web-development">Web Development</h2><ul><li><a href="http://wtfhtmlcss.com/">WTF, HTML and CSS?</a></li><li><a href="http://es6katas.org/">Learn ECMAScript6 by doing it</a></li><li><a href="http://silon.slaks.net/">Silon</a> - Adders & Logic Gates in Pure CSS</li><li><a href="http://cloudwall.me/">Cloudwall</a> - Operating system for noBackend webapps</li><li><a href="http://package.json.is/">package.json Explained</a></li><li><a href="https://css-tricks.com/prefetching-preloading-prebrowsing/">Prefetching, preloading, prebrowsing</a></li><li><a href="http://blog.scottlogic.com/2014/11/07/http-2-a-quick-look.html">HTTP/2: A quick look</a></li><li><a href="https://mattwilcox.net/web-development/http2-for-front-end-web-developers">HTTP2 for front-end web developers</a></li><li><a href="https://letsencrypt.org/">Let's Encrypt</a></li><li><a href="http://tonsky.me/blog/the-web-after-tomorrow/">The Web After Tomorrow</a></li><li><a href="http://beautifulopen.com/">Beautiful Open</a> - Beautiful sites of open source projects</li></ul><h3 id="90s">90s</h3><ul><li><a href="http://studio.uxpin.com/blog/funniest-web-designs-of-the-90s/">Funniest Web Designs of the 90s</a></li><li><a href="http://zachholman.com/posts/only-90s-developers/">Only 90s Web Developers Remember This</a></li></ul><h3 id="techniques">Techniques</h3><ul><li><a href="https://css-tricks.com/visual-regression-testing-with-phantomcss/">Visual Regression Testing with PhantomCSS</a></li><li><a href="http://blog.siliconpublishing.com/2015/12/the-fall-and-rise-of-svg/">The Fall and Rise of SVG</a></li></ul><h3 id="tools">Tools</h3><ul><li><a href="https://caddyserver.com/">Caddy</a> - The HTTP/2 web server with automatic HTTPS</li><li><a href="https://github.com/minimaxir/big-list-of-naughty-strings">minimaxir/big-list-of-naughty-strings</a></li><li><a href="http://techblog.netflix.com/2015/08/falcor-developer-preview.html">Netflix Releases Falcor Developer Preview</a></li><li><a href="http://alexjs.com/">Alex</a> - Catch inconsiderate writing</li><li><a href="http://www.visionaustralia.org/business-and-professionals/digital-access-consulting/resources/tools-to-download/colour-contrast-determinator-(beta">Colour Contrast Determinator (beta)</a>)</li><li><a href="https://github.com/Huddle/PhantomCSS">Huddle/PhantomCSS</a></li><li><a href="http://codecept.io/">CodeceptJS</a> - Acceptance testing for Node.js</li></ul><h3 id="libraries">Libraries</h3><ul><li><a href="https://davidwalsh.name/3d-carousel">Crafting a 3D React Carousel</a></li><li><a href="https://bebraw.github.io/react-ellipsify/">react-ellipsify</a></li></ul><h3 id="css-techniques">CSS Techniques</h3><ul><li><a href="https://medium.com/seek-ui-engineering/the-end-of-global-css-90d2a4a06284">The End of Global CSS</a></li><li><a href="http://bitsofco.de/2015/viewport-vs-percentage-units/">Viewport vs Percentage Units</a></li><li><a href="http://digitalsynopsis.com/design/34-css-puns-web-design-funny-jokes/">34 CSS Puns That'll Make You Laugh, Even If You Aren't A Web Designer</a></li><li><a href="http://css4.rocks/selectors-level-4/">CSS4 Rocks</a></li><li><a href="https://philipwalton.github.io/solved-by-flexbox/demos/vertical-centering/">Vertical Centering</a></li><li><a href="http://code.divshot.com/geo-bootstrap/">Geo for Bootstrap, a Timeless Theme by Divshot</a></li><li><a href="http://thenewcode.com/950/Easy-Background-Reveal-Scroll-In-Pure-CSS">Background Reveal Scroll In Pure CSS</a></li><li><a href="https://jakearchibald.com/2015/anatomy-of-responsive-images/">The anatomy of responsive images</a></li><li><a href="https://hacks.mozilla.org/2015/09/the-future-of-layout-with-css-grid-layouts/">The future of layout with CSS: Grid Layouts</a></li><li><a href="https://css-tricks.com/creating-a-css-sliding-background-effect/">Creating a CSS Sliding Background Effect</a></li><li><a href="http://codepen.io/iamvdo/pen/xECmI">Progressive blur with CSS & SVGtv</a></li><li><a href="http://flexboxfroggy.com/">Flexbox Froggy</a></li></ul><h3 id="css-components">CSS Components</h3><ul><li><a href="http://cssbuttons.tumblr.com/">CSS Buttons</a></li><li><a href="http://technical.nailfashionsweden.se/web-components-that-can-be-built-purely-using-css-no-javascript/">Web components that can be built purely using css, NO Javascript</a></li></ul><h3 id="react-js">React.js</h3><ul><li><a href="http://rjzaworski.com/2015/01/putting-react-custom-proptypes-to-work">Putting React Custom PropTypes to Work</a></li><li><a href="https://www.paypal-engineering.com/2015/04/27/isomorphic-react-apps-with-react-engine/">Isomorphic React Apps with React-Engine</a></li><li><a href="https://benzhang.xyz/reactjs/isomorphic/2015/05/02/isomorphic-webapp-react-express-coffee/">Creating an Isomorphic Web Application with ReactJS and Express</a></li><li><a href="http://coenraets.org/blog/2015/03/real-time-trader-desktop-with-react-node-js-and-socket-io/">Real Time Trader Desktop with React, Node.js, and Socket.io</a></li><li><a href="https://github.com/ipselon/react-ui-builder">ipselon/react-ui-builder</a></li><li><a href="https://medium.com/@clayallsopp/your-first-graphql-server-3c766ab4f0a2">Your First GraphQL Server</a></li><li><a href="https://medium.com/@zackargyle/stop-using-react-for-everything-c8297ac1a644">Stop Using React for EVERYTHING!</a></li></ul><h2 id="ux">UX</h2><ul><li><a href="http://www.uxbooth.com/articles/cognitive-demand-not-always-by-design/">Cognitive Demand, Not Always By Design</a></li><li><a href="http://uxmovement.com/content/absolute-vs-relative-timestamps-when-to-use-which/">Absolute vs. Relative Timestamps: When to Use Which</a></li><li><a href="http://blog.invisionapp.com/why-empty-states-deserve-more-design-time/">Why empty states deserve more design time</a></li><li><a href="https://www.masseranolabs.com/how-to/websites/usability-web-development/">Usability in Web Development</a></li><li><a href="http://uxmovement.com/buttons/how-button-placement-standards-reinforce-user-habits/">How Button Placement Standards Reinforce User Habits</a></li><li><a href="http://www.uxbooth.com/articles/what-ux-designers-can-learn-from-architects/">What UX Designers can Learn from Architects</a></li></ul><h3 id="techniques">Techniques</h3><ul><li><a href="http://www.uxbooth.com/articles/creating-personas/">Creating Personas</a></li><li><a href="http://uxmastery.com/how-to-create-a-customer-journey-map/">How to Create a Customer Journey Map</a></li><li><a href="http://www.uxbooth.com/articles/how-visual-design-makes-for-great-ux/">How Visual Design Makes for Great UX</a></li></ul><h3 id="forms">Forms</h3><ul><li><a href="http://uxmovement.com/mobile/why-users-miss-form-buttons-placed-in-the-action-bar/">Why Users Miss Form Buttons Placed in the Action Bar</a></li><li><a href="http://www.uxbooth.com/articles/styling-forms-accessibly/">Styling Forms Accessibly</a></li><li><a href="http://uxmovement.com/forms/why-the-confirm-password-field-must-die/">Why the Confirm Password Field Must Die</a></li><li><a href="http://uxmovement.com/forms/research-based-tips-for-a-better-contact-form/">5 Research Based Tips for a Better Contact Form</a></li></ul><h2 id="ui">UI</h2><ul><li><a href="https://css-tricks.com/the-priority-navigation-pattern/">The Priority+ Navigation Pattern</a></li><li><a href="http://bitsofco.de/2015/the-accessibility-cheatsheet/">The Accessibility Cheatsheet</a></li><li><a href="http://uxmovement.com/buttons/making-selected-button-states-clear-for-color-blind-users/">Making Selected Button States Clear for Color Blind Users</a></li><li><a href="http://uxmovement.com/buttons/why-your-links-need-a-hover-effect/">Why Your Links Need a Hover Effect</a></li><li><a href="http://uxmovement.com/mobile/list-vs-grid-view-when-to-use-which-on-mobile/">List vs. Grid View: When to Use Which on Mobile</a></li></ul><h2 id="conversion-optimization">Conversion Optimization</h2><ul><li><a href="http://www.uxbooth.com/articles/improve-conversions-with-better-personalization/">Improve Conversions with Better Personalization</a></li><li><a href="http://www.uxbooth.com/articles/making-content-measurable/">Making Content Measurable</a></li></ul><h1 id="hardware">Hardware</h1><ul><li><a href="http://ruuvi.com/">Ruuvi</a> - Nice little IoT device.</li><li><a href="http://www.instructables.com/id/Floppy-Disk-Bag-Install-Disk-2/">Floppy Disk Bag: Install Disk 2</a></li><li><a href="https://github.com/HannahMitt/HomeMirror">HannahMitt/HomeMirror</a></li><li><a href="https://www.raspberrypi.org/blog/raspberry-pi-zero/">Raspberry Pi Zero: the $5 computer</a></li></ul><h1 id="photography">Photography</h1><ul><li><a href="https://css-tricks.com/sites-with-high-quality-photos-you-can-use-for-free/">Sites with High Quality Photos You Can Use for Free</a></li><li><a href="http://www.boredpanda.com/autochrome-photography-christina-mervyn-ogorman/">Christina In Red: Rare 1913 Color Photos Show How People Lived 100 Years Ago</a></li><li><a href="http://www.kenrockwell.com/tech/fart.htm">FART for Fantastic Photos</a></li><li><a href="http://www.boredpanda.com/zen-foxes-wildlife-photography-roeselien-raimond/">Zen Foxes: Photographer Documents Wild Foxes Enjoying Themselves</a></li></ul><h1 id="art">Art</h1><ul><li><a href="http://sub.blue/fractal-lab">Fractal Lab</a></li><li><a href="http://www.proko.com/skellyapp/">Skelly</a> - Poseable art model for iOS</li><li><a href="http://allmalepanels.tumblr.com/">Congrats, you have an all male panel!</a></li><li><a href="http://www.thisiscolossal.com/2015/08/dismaland/">Welcome to Dismaland: A First Look at Banksy’s New Art Exhibition Housed Inside a Dystopian Theme Park [Updated 8/22]</a></li><li><a href="http://www.simplecapacity.com/2015/09/this-artwork-is-probably-the-most-precise-and-scary-portrayal-of-modern-life-weve-ever-seen/">This Artwork Is Probably The Most Precise (And Scary) Portrayal Of Modern Life We’ve Ever Seen</a></li><li><a href="http://www.learning-to-see.co.uk/how-to-get-better-at-painting-without-painting-anything">How To Get Better at Painting – Without Painting Anything</a></li></ul><h1 id="comics">Comics</h1><ul><li><a href="http://blog.antonemdin.com/2014/08/mads-c-y-o-star-wars-adventure/">MAD’s Choose Your Own Star Wars Adventure</a></li><li><a href="http://www.commitstrip.com/en/2015/05/05/lost-generation/">Lost Generation</a></li><li><a href="http://joshmillard.com/garkov/">Garkov -- Garfield + Markov chains -- Josh Millard</a></li></ul>Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-54094633865870493392015-12-09T14:22:00.000+02:002015-12-09T14:22:12.919+02:00Afterthoughts - Web on the Edge<div class="separator" style="clear: both; text-align: center;"></div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-dnRzB9fxqM4/VmgbOIf9TII/AAAAAAAADNE/JQ5FbkRcs5s/s1600/DSCF2477.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://3.bp.blogspot.com/-dnRzB9fxqM4/VmgbOIf9TII/AAAAAAAADNE/JQ5FbkRcs5s/s320/DSCF2477.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The venue was dark. Just the way geeks like it.</td></tr></tbody></table>Finland is a nice place in sense that we get a cool free technical event every once in a while. Of course there's some cost as you need to endure sponsored talks, but that's not too bad. <a href="http://www.meetup.com/Helsinki-Node-js/events/226952696/">Web on the Edge</a>, sponsored by Microsoft, fits this category. They managed to get a keynote (or two actually) from <a href="https://www.christianheilmann.com/">Christian Heilmann</a> so the event was difficult to resist.<br /><br />Overall I enjoyed the event. It was nice to meet some of my readers (cheers Velmu and Tatu!) and discuss through technology. I missed the HelsinkiJS part of the event as it was simply too crowded and you couldn't hear a thing from the back. Regardless, here are my notes on the main portion.<br /><br /><h2 id="christian-heilmann-the-state-of-the-web">Christian Heilmann - The State of the Web</h2><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-_Ubyi9gW5V4/VmgbQSb_KUI/AAAAAAAADOI/UTuhu1BGNT8/s1600/DSCF2483.JPG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://1.bp.blogspot.com/-_Ubyi9gW5V4/VmgbQSb_KUI/AAAAAAAADOI/UTuhu1BGNT8/s320/DSCF2483.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Christian at the stage. Like a rock star.</td></tr></tbody></table>Christian started the day by discussing the state of the web (<a href="http://www.slideshare.net/cheilmann/the-state-of-the-web-helsinki-meetup">slides</a>). He has an interesting background as he has been in the scene for a long time and has seen its progression from the vanguard.<br /><br />He has Mozilla roots and works as a developer evangelist for Microsoft these days. In short, he gets to speak about web related topics around the world while getting paid for it. Not bad. :)<br /><br /><h3 id="hacks-upon-hacks">Hacks Upon Hacks</h3>In the early days it was just hacks upon hacks. Web developers had to work around browser quirks rather than focusing on real problems. Over time we learned to deal with this a little better and started encapsulating the hacks better. This is the reason why we ended up with solutions like jQuery.<br /><br />The idea is that we hide the problems behind abstractions and forget they exist. Ideally we'll get rid of the hacks, but according to Christian that rarely happens. We just follow the lowest denominator. The problem is that all of these hacks we build add up.<br /><br />As a result an average web site takes whopping fifteen seconds to load fully. We get something to interact with after five seconds (median), but that's still pretty bad. In addition, we are forcing our users to load massive amounts of data (2MB median) while failing to benefit even from basic image optimization techniques.<br /><br /><h3 id="even-big-vendors-fail">Even Big Vendors Fail</h3>Even big vendors, like Apple, fail at this. I agree with Christian that it's an endemic problem. The big question is, what to do about it? We can try to patch it in the user end through ad blocking for example. Or we can repackage the heavy content into a lighter format (Facebook Instant Articles, Google Accelerated Mobile Pages, Apple News). The problem with this approach is that you end up with a gatekeeper. In short, it goes against the ideals of the open web.<br /><br /><h3 id="fix-fundamentals-instead-of-patching">Fix Fundamentals Instead of Patching</h3>Rather than trying to make complex and broken sites simpler through technological means perhaps it's better to do it right in the first place? Our current culture of developing for the web doesn't lead to this direction. Instead we struggle under deadlines and "fix later". The problem is that later never comes. Rather than facing the real problems we just rely on kludges that allow us to move fast.<br /><br />It's simply amazing how much happens in JavaScript scene these days. New tooling, libraries, and frameworks come out all the time. Technology cycles tend to be quite short. Just consider the transition from Grunt to Gulp to Browserify/Webpack (complements task runners), or the way JavaScript frameworks have progressed. It all just adds to the complexity.<br /><br /><h3 id="microsoft-edge">Microsoft Edge</h3><a href="https://www.microsoft.com/en-us/windows/microsoft-edge">Microsoft Edge</a> is interesting in that it tries to push us towards a better direction. Ideally it helps to establish a new baseline for web development. Browsers like IE6 or IE8 have set us back enough so maybe this is their chance for a redemption.<br /><br />The problem is that they couldn't let go of the legacy just like that. In fact, they had to find ways to support all the quirks the web relies upon. The browsers simply cannot deprecate features as that would break the web. We can push people towards better directions, but we cannot force them to drop their hacks. I can only imagine how frustrating that is for the browser vendors.<br /><br />Even though there are standards, even standards can be broken by design. They are created by people after all. As Christian mentioned, all of this goes back to feedback loops. Web developers should communicate their needs to browsers vendors actively while browser vendors should push feedback to standard committees.<br /><br /><h3 id="solutions-">Solutions?</h3>Christian proposes that rather than building hacks upon hacks and hiding the issues we simply start dropping support for old browsers. This means using feature detection and providing decreased user experience rather than trying to hack around. Over time this allows us to drop those things that make the web slow. Instead of patching the web with JavaScript, we need to be smarter. I think this means striving for simplicity and dropping old gunk that haunts us.<br /><br />This is the reason why I believe basic technology, like static site generators, is still valid even today. You don't need to use the newest and flashiest technology always. It always comes with some cost. Perhaps this is something we are failing to notice at the moment.<br /><br /><h2 id="christian-heilmann-a-call-to-js-developers-let-s-stop-trying-to-impress-each-other-and-start-building">Christian Heilmann - A call to JS Developers - Let’s stop trying to impress each other and start building</h2><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-CyxyKSU4sdg/VmgbQXRcToI/AAAAAAAADOA/WzlTRgOtPvE/s1600/DSCF2486.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://1.bp.blogspot.com/-CyxyKSU4sdg/VmgbQXRcToI/AAAAAAAADOA/WzlTRgOtPvE/s320/DSCF2486.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">His second talk of the day. Finns like to get what they pay for.</td></tr></tbody></table>Christian's second talk (<a href="http://www.slideshare.net/cheilmann/a-call-to-js-developers-lets-stop-trying-to-impress-each-other-and-start-building">slides</a>) tied back to the first topic. According to Moore's law computers get faster, better, and cheaper every two years. May's law states that software efficiency halves every 18 months. In short, we're good at spending those hardware improvements.<br /><br /><h3 id="the-latest-and-the-newest">The Latest and the Newest</h3>Of course developers love to use the latest and newest technology. Our connectivity is great. We get paid well and we get to use amazing browsers. This breeds complacency. There is always something missing and we want to do more with less. It is no surprise there is a lot of hype and some promising new technology that will solve it all.<br /><br />Real users don't care for the hype. They just want something that works. Optimizing for developer experience in favor of user experience might not be so wise after all. Though you could claim happy developers have more time to focus on user experience. Maybe it's not so black and white.<br /><br /><h3 id="web-as-a-platform">Web as a Platform</h3>Perhaps the most amazing thing about the web is that it brings the cost of publication close to zero. You can get something out there with a minimal effort. Anybody with access to web can publish and consume content. This is something unprecedented. Earlier the market was governed by publishers. Now the situation is completely different.<br /><br />Of course, these two viewpoints are in conflict. You still have many companies clinging to their old business models trying to adapt. You can see this even in app stores. It is a walled garden by a definition. There is a middleman providing the distribution. The web eschews that. You may still need some middlemen to deal with the legislation, but that's a different dimension altogether.<br /><br /><h3 id="the-growth-potential-of-asia-and-africa">The Growth Potential of Asia and Africa</h3>As Christian stated, a lot of the web's growth will happen in Asia and Africa. This means we'll need to prepare for lower-end hardware and proxy browsers. This will be a great challenge if we focus only for the bleeding edge. In business terms it's a clear proposition, though. If you want to grow, you'll need to address these growing markets.<br /><br /><h3 id="asked-to-do-the-impossible">Asked to Do the Impossible</h3>The developers are often asked to do impossible things. The site must look the same everywhere, it needs to be easy to maintain while we want to control everything, accessibility must be taken into account due to the laws, we shouldn't spend too much time on it, and of course we must know how people are using our sites through analytics. Combining these aspects together is challenging. Often JavaScript is the answer.<br /><br />According to Christian JavaScript is too powerful for its own good. If something is wrong, we can fix it with JavaScript. This has lead to the popularity of libraries and frameworks. We just put bricks together until we have something that works without thinking about the consequences.<br /><br />Just consider how much code something simple like a tweet button requires. It has been designed to work in every possible scenario while it's doing some special things to assure good UX. Of course this means the widget itself is very bloated. This in part helps to explain the current state of the web. When even simple things are complicated, complicated things are even more so.<br /><br />In order to help with this, the developers at Microsoft have developed <a href="https://dev.windows.com/en-us/microsoft-edge/tools/staticscan/">a tool to scan your site for potential issues</a>. There is an <a href="https://github.com/MicrosoftEdge/static-code-scan">open source version</a> available as well.<br /><br /><h3 id="developer-experience-over-user-experience-">Developer Experience over User Experience?</h3>There is a massive amount of innovation going on at the moment. The cost to developers is great. Rather than optimizing user experience, you spend a lot of time trying to keep up. Often we don't think of the consequences of gluing things together. <a href="https://www.npmjs.com/">npm</a> has helped a lot in this regard. You simply pull the dependencies you need, but at what cost?<br /><br />The more we bloat our applications, the greater the cost to our users. Again, this goes back to the current state of the web. Often we are looking at things from the wrong angle. We optimize for business requirements and convenience while forgetting the person that matters, the user.<br /><br />Christian made an interesting point about replacing default behavior with something that provides the developer more control. I agree with him. Built-ins are like that for a reason. As web developers we cannot anticipate how our applications are going to be used so it's not a particularly smart idea to do such assumptions.<br /><br />It feels like a lot what's going on at the moment has to do with developer convenience. The problem is that we might be forgetting something important in the process. I don't see good developer experience and user experience as something opposite, though. Perhaps it's possible to reach both with some conscious effort.<br /><br /><h3 id="the-evolution-of-javascript">The Evolution of JavaScript</h3>Learning JavaScript has always been interesting. I think I picked it up bit by bit myself. You just learn what you need as you go. Of course there are great books and videos that can aid in the process, but it's challenging regardless.<br /><br />This year (2015) was perhaps the biggest leap JavaScript has seen so far. We are back on track development-wise and the language is moving forward at last. Of course you can argue about the direction. I would rather have a small language that does what it does particularly well. JavaScript seems to be growing, though, as it needs to cover different niches. It's not possible to remove something from a language once you add it there. This means it can only get bigger. Significant rewrites come with a major risk of splitting the community.<br /><br />ES2015 (ES6) has given us a clean slate. I see it as a revolutionary step myself. Browsers are gaining better support as we go. Bundlers will be required for now. I won't get into details. It's definitely worth it to get on board, though.<br /><br /><h2 id="perttu-tolvanen-customer-perspective-to-web-technology-choices">Perttu Tolvanen - Customer Perspective to Web Technology Choices</h2><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-mZoUVqAIU1g/VmgbQWz8nhI/AAAAAAAADOM/fjqR4R0vJRM/s1600/DSCF2489.JPG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://4.bp.blogspot.com/-mZoUVqAIU1g/VmgbQWz8nhI/AAAAAAAADOM/fjqR4R0vJRM/s320/DSCF2489.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Watch out Perttu.</td></tr></tbody></table>Perttu Tolvanen is known as the "CMS guy" of Finland. If you need to know something about CMSs, he is our go-to guy. I don't understand CMSs that well myself so it was an interesting talk.<br /><br />According to Perttu there are multiple factors you must take into account when choosing a CMS for your project. These depend on the perspective. He listed end-user, business owner, technical flexibility, and ownership perspectives.<br /><br />For example, a startup might value flexibility over other concerns given their business is still so volatile. For a big, established business it doesn't matter that much and ownership and business owner perspectives may be more crucial.<br /><br />Perttu mentioned API only CMSs, such as contentful. The idea is that you will develop a custom front-end on top of one. This will give you a great deal of flexibility at the cost of user experience. In some ways it's a step back. WordPress and such provide us great user experience but may be more difficult to customize.<br /><br />Another key point was that big business favors stability over anything else. This is in interesting contrast to the pace of innovation. This is something that established platforms provide. They might not be technically bleeding edge, but they'll get there eventually.<br /><br /><h2 id="sami-h-kkinen-wordpress-and-corporate-sites">Sami Häkkinen - WordPress and Corporate Sites</h2><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/--3TKsuoOsso/VmgbQ11p5OI/AAAAAAAADNs/1SNdUI3iMBQ/s1600/DSCF2495.JPG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://2.bp.blogspot.com/--3TKsuoOsso/VmgbQ11p5OI/AAAAAAAADNs/1SNdUI3iMBQ/s320/DSCF2495.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">WordPress. Not going to say anything I would regret later.</td></tr></tbody></table>Sami's talk was perhaps the low point of the event for me. I am not that interested in WordPress myself, and that's what the talk was about. He went through various sites his company has implemented using it. In some ways it complemented Perttu's talk, but it was just too commercial for my tastes. You can achieve commercial goals in a far more subtle way.<br /><br /><h2 id="mikko-kasanen-the-story-of-azure-for-web-developers">Mikko Kasanen - The Story of Azure for Web Developers</h2><div class="separator" style="clear: both; text-align: center;"></div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-PHiFMnaDoqg/VmgbRGJ_7nI/AAAAAAAADNw/NsryKKVZ3vw/s1600/DSCF2502.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://3.bp.blogspot.com/-PHiFMnaDoqg/VmgbRGJ_7nI/AAAAAAAADNw/NsryKKVZ3vw/s320/DSCF2502.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Yes. There was WordPress bit again.</td></tr></tbody></table>Even though Mikko's talk was another sponsored one, at least included nice demos. It was cool to see what Azure offers and how to achieve certain things with it. Especially the machine learning demo he went through was kind of neat. It reminded me of graph based systems I've worked with in the past. Graphs are cool, you tend to hit limits with them quite fast.<br /><br />I am not that excited about Azure myself, but I suppose it's good to have some competition around. Overall it was a good talk/demo even if it was a little long.<br /><br /><h2 id="anna-helminen-from-user-journeys-and-moodboards-to-implementations">Anna Helminen - From User Journeys and Moodboards to Implementations</h2><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-Dsa6EB1SMxA/VmgbRM2bhkI/AAAAAAAADN0/JrmTyF5N3CI/s1600/DSCF2504.JPG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://2.bp.blogspot.com/-Dsa6EB1SMxA/VmgbRM2bhkI/AAAAAAAADN0/JrmTyF5N3CI/s320/DSCF2504.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Four D's. Learn them by heart.</td></tr></tbody></table>Anna's talk went out of the overall theme of the conference. It had some commercial feel to it, but not too badly. It was an interesting talk, though, given I don't really do any UX work, consciously at least. The basic models she presented rang a bell. Just consider below:<br /><ul><li>Understand, Ideate, Iterate</li><li>Discover, Define, Develop, Deliver</li></ul>These sound like business development processes to me. In fact, this is how I work intuitively. They've just spelled it out into process level.<br /><br />It was cool to see how they tested out their designs in practice. This allowed them to understand how specific parts of a user journey map to user experience. They measured the user mood at each part to gain further understanding. Just having something usable isn't enough, it's better if it's pleasurable and nice to use. It is very easy to forget this point as a developer.<br /><br /><h2 id="helsinkijs">HelsinkiJS</h2><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-eKG-VX6Dc94/VmgbRqnmFqI/AAAAAAAADN8/RAxuq88cwUs/s1600/DSCF2508.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="265" src="http://3.bp.blogspot.com/-eKG-VX6Dc94/VmgbRqnmFqI/AAAAAAAADN8/RAxuq88cwUs/s400/DSCF2508.JPG" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The bar was alright.</td></tr></tbody></table>We moved out of the main venue for the last portion of the day. It wasn't as spacious so I missed the talks. There simply wasn't enough room. Instead I ended up chatting with some old friends and trying to make some new ones. Perhaps it would have been a good idea to have the talks in the same venue as well. There were likely logistical reasons for this.<br /><br /><h2 id="conclusion">Conclusion</h2>I think the trip was a success overall. Especially Christian's talks gave something to talk about. Striving towards simplicity is a worthwhile goal. Just providing enhanced experience for modern browsers is enough.<br /><br />There's no need to cater old browsers at least in the work I'm doing. This allows me to rely on modern APIs while keeping my code simpler and avoiding the bloat the web is suffering from.<br /><br />If something like this comes up again, I'll be sure to go. Even with the sponsored content, it's good. Though I would gladly pay a bit to eliminate at least some of it. Of course in a country as small as Finland it might be hard to find enough people that are willing to do that.<br /><br /><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-tcc0meBn0Pk/VmgbRVCzSwI/AAAAAAAADN4/ezZeCEdWFLA/s1600/DSCF2507.JPG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="426" src="http://4.bp.blogspot.com/-tcc0meBn0Pk/VmgbRVCzSwI/AAAAAAAADN4/ezZeCEdWFLA/s640/DSCF2507.JPG" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Blue mood shot.</td></tr></tbody></table><br />Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-27097207845213363512015-12-01T21:19:00.001+02:002015-12-01T21:19:23.081+02:00React Indie BundleIt's sort of strange how you can get things done when you put your mind to it. Starting the whole <a href="http://survivejs.com/">SurviveJS</a> thinger (my React/Webpack book business) was easily the best decision of the year. It hasn't been easy. But worthwhile things rarely are. I have learned a lot in the process and continue to do so.<br /><br />This is perhaps one of the reasons why Fraktio, a company from Helsinki, invited me to talk about the topic. I gave them a <a href="https://www.youtube.com/watch?v=DrgZaiqm4YE">presentation</a>. If you don't understand Finnish, you are welcome to go through my <a href="https://survivejs.github.io/how-to-write-a-book-and-survivejs-it/">slides</a> (in English). The presentation is very business oriented and provides you a view you don't see that often. You see only successful authors in public. But what it takes to get there? I'm not particularly successful, but I've managed to make a dent if nothing else.<br /><br /><h2>React Indie Bundle</h2><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-7nimDni6vJQ/Vl3wAIq3SzI/AAAAAAAADMo/5D5OyYxr__g/s1600/rib_banner.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://4.bp.blogspot.com/-7nimDni6vJQ/Vl3wAIq3SzI/AAAAAAAADMo/5D5OyYxr__g/s640/rib_banner.png" width="640" /></a></div><div><br /></div><div>The problem with an indie effort is that it's very hard to market. Even though I've managed quite well in this massive task, I have my limits. One way to tackle the issue is to team up. We have done this with <a href="http://www.reactindiebundle.com/">React Indie Bundle</a>. Instead of selling our offerings separately, we decided to collect them into something far more reachable.</div><div><br /></div><div>The bundle contains books, videos, and even consulting from known indie authors, me included. I hope you enjoy the bundle. I believe it's a good starting point if you want to learn React and associated technologies. In case you are a React master already, I'm sure people don't mind getting presents like this.</div><div><br /></div><div>It is available this week. Be sure to check it out and tell your friends if nothing else. A part of the earnings will go towards funding React related tool and library development. That's our way of saying thanks to the community.</div>Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-80827397223269323962015-10-30T20:13:00.001+02:002015-10-30T20:14:34.201+02:00Thoughts on OSCON 2015 (Amsterdam)<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-d9qyfmI39FM/VjOwR9deybI/AAAAAAAADMM/bG-nVxdsIo4/s1600/2015-10-26%2B09.18.47.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://1.bp.blogspot.com/-d9qyfmI39FM/VjOwR9deybI/AAAAAAAADMM/bG-nVxdsIo4/s320/2015-10-26%2B09.18.47.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The conference venue - RAI</td></tr></tbody></table>I had the privilege to attend <a href="http://conferences.oreilly.com/oscon/open-source-eu-2015">OSCON in Amsterdam</a> this year. Organized by O'Reilly, it's perhaps one of the better known conferences focusing on open source. This trip was partially sponsored by <a href="http://www.jsdelivr.com/">jsDelivr</a>. I ran a little stand at OSCON representing the project. Thanks for the opportunity <a href="https://twitter.com/jimaek">Dmitriy</a>!<br /><br />jsDelivr is a free CDN (Content Delivery Network) that allows you to consume popular open source JavaScript libraries, fonts, and CSS frameworks easily. It leverages the power of multiple commercial CDN providers. This yields excellent performance as you can see through <a href="http://www.cdnperf.com/">CDNperf</a>, a service we developed to keep track of the performance of jsDelivr and various alternatives.<br /><br />As I haven't run a stand before, it was quite an experience. I stayed at OSCON for two full days while skipping the tutorial day. Besides running a stand, I managed to attend some of the sessions. In this post I'll highlight my conference experiences. Read on.<br /><br /><h2>Booth Person - Level 0</h2><div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-eXMK-hHZHuE/VjOwTmpb7DI/AAAAAAAADK8/QsdcL6CCQzI/s1600/2015-10-26%2B13.06.50.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://3.bp.blogspot.com/-eXMK-hHZHuE/VjOwTmpb7DI/AAAAAAAADK8/QsdcL6CCQzI/s320/2015-10-26%2B13.06.50.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">My awesome booth</td></tr></tbody></table>I'll never look at booth persons the same again. It is actually hard work, especially if you aren't that extroverted to begin with. That said, it can be quite rewarding to have little conversations with people and make light bulb go on when people understand what you are actually offering.</div><div><br /></div><div>Given the scope of the conference, there were a lot of people with different backgrounds. You could actually see this in the conference programs. There were five(!) tracks. The content was split between nine topics. To say there was a lot of content would be an understatement. Not that I'm complaining.</div><div><br /></div><h3>It's About Education</h3><div>From a booth person's point of view this meant I could not expect lot. In part my work was about educating people of how CDNs work and why they are valuable for front-end developers. Only after you understand that, you can start to see the value that jsDelivr provides. To make it easier for myself, I prepared <a href="https://bebraw.github.io/jsdelivr-in-5mins">a couple of slides</a> to show (only Chrome is guaranteed to work well). As I didn't want to waste people's time, I tried to keep simple.</div><div><br /></div><h3>What Would I Do Differently?</h3><div>On retrospect I should have brought a stand banner with me. Now the stand was sort of barebones. It would have been even more so without a laptop and a minimal stand to make it pop up a little. We decided to bring some t-shirts, brochures, and stickers to share.</div><div><br /></div><div>I feel the t-shirts offered to our sponsors were very nice. Brochures were quite nice as well. Instead of 235g paper I would probably stick with 300g now as it's more substantial. I have mixed feelings on stickers. My biggest gripe with conference stickers is that they aren't useful. If I run a booth again, I'll try to be more original and perhaps bring some items tied to my culture. Originality doesn't hurt.</div><div><br /></div><h3>Conclusion</h3><div>The first day of the conference was more active at the booth as more people browsed around. The second one was obviously quieter given they had already seen the booths. I must have had tens of conversations at the booth. I took a different strategy on the second day as I knew it was quieter. Instead of waiting for people to come at the booth, I went to other booths in order to prompt discussions.</div><div><br /></div><div>Overall it was a nice experience to run a booth. It definitely leaves you less time to socialize and attend sessions. On the other hand you get to engage with people you wouldn't otherwise meet. I hope this helped more people to find jsDelivr and see the value it provides.</div><div><br /></div><h2>Thoughts on Day 1</h2><div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-PZrV-6DZQYE/VjOwRnCPJyI/AAAAAAAADKc/uZTxbg2gEGc/s1600/2015-10-26%2B09.48.28.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://1.bp.blogspot.com/-PZrV-6DZQYE/VjOwRnCPJyI/AAAAAAAADKc/uZTxbg2gEGc/s320/2015-10-26%2B09.48.28.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Morning tea</td></tr></tbody></table>I think the highlight of the conference for me were the keynotes held at the beginning of the each day. They were short and sweet meaning they got straight to the point. I simply love this format.<br /><br />I wish more conferences would adopt it given it's so effective. You could even run a single track. Given the talks are so appropriately timed, it wouldn't hurt even if every talk was a "home run" from your point of view. You always learn something.</div><div><br /></div><div>I recommend that you <a href="https://www.youtube.com/playlist?list=PL055Epbe6d5bPmYLVnApy_UwQix9RfL94">watch the keynotes through YouTube</a>. I can guarantee there's something for you to learn there. The keynote speakers were simply top notch and I have nothing to complain.</div><div><br /></div><h3>Keynotes of Day 1</h3><div>I've tried to gather some of the main points of the keynotes of the first day below:</div><div><br /></div><h4>Rebecca Parsons - The Evolution of Evolutionary Architectures</h4><div><ul><li>Be ready for the future, don't predict it. - I think this is particularly true given the technology landscape changes so fast. Architecting to allow change is valuable.</li><li>Continuous delivery allows us to focus on new features instead of avoiding screw-ups. - I feel lowering the cost of changes is an important goal.</li></ul><div><br /></div><h4>Douglas Crockford - The Seif Project</h4><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-uf-Y-rXhXXQ/VjOwSiiZLhI/AAAAAAAADMI/lQVFBebJy54/s1600/2015-10-26%2B11.28.57.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://4.bp.blogspot.com/-uf-Y-rXhXXQ/VjOwSiiZLhI/AAAAAAAADMI/lQVFBebJy54/s320/2015-10-26%2B11.28.57.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">You cannot unsee Crockford</td></tr></tbody></table><ul><li> Originally web was meant as a document retrieval system. Now we are using it to deliver applications. As a result workarounds are needed. These workarounds are out of time spent delivering value. - I share his view that there's a clear impedance mismatch.</li><li>Standards only increase complexity. - Amen.</li><li>Web is insecure by design (XSS, XSRF, clickjacking, passwords) - Quoted for truth.</li><li>Security shouldn't be an afterthought. Something else is needed: <a href="https://github.com/paypal/seifnode">Seif</a> - If I understood correctly, the point Douglas made is that we should rethink what we're doing from ground up. They're starting from Node.js level (better crypto) and working their way from there. This means using better ways to generate entropy for RNGs (Random Number Generator), and eventually even new ways to implement user interfaces. I'm a little puzzled why he mentioned Qt in this context but perhaps we'll know better in the future.</li></ul><div><br /></div><h4>Nils Magnus - Docker Security</h4><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-SqMQmEq47NA/VjOwS4tcS8I/AAAAAAAADL8/AIMgDAw7jI4/s1600/2015-10-26%2B11.42.00.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://4.bp.blogspot.com/-SqMQmEq47NA/VjOwS4tcS8I/AAAAAAAADL8/AIMgDAw7jI4/s320/2015-10-26%2B11.42.00.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Trust but verify</td></tr></tbody></table><ul><li>Containers are exciting. Despite excitement people are still skeptical about them in production. - I think this was a fair point. It's just a part of the normal hype cycle.</li><li>It is easy to overlook container security. Trust but verify. - This means we should try to keep our infrastructure as simple as possible to keep it understandable. Security-wise having less possible attack vectors is always better. Just trusting on something without understanding can have dangerous effects.</li></ul><div><br /></div><h4>Simon Phipps - Enough Foundations Already!</h4><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-uULcl_DReiI/VjOwTLk5TNI/AAAAAAAADMA/bmx0DagC0Zc/s1600/2015-10-26%2B11.57.02.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://2.bp.blogspot.com/-uULcl_DReiI/VjOwTLk5TNI/AAAAAAAADMA/bmx0DagC0Zc/s320/2015-10-26%2B11.57.02.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">I don't even remember what this was about</td></tr></tbody></table><ul><li>There are a lot of open source foundations already. It's not a good idea to set up one blindly. - I agree with his assessment. A foundation can be useful but it's a big step for a project.</li><li>Licenses are constitutions for communities. - I couldn't agree more. Essentially open source licensing allows competing entities to collaborate while serving their own interests. Of course this leads to open source politics.</li><li>Companies will try to game the system the best they can. That's just the nature of the beast. - It's not the fault of the companies that they operate for profit. Managing the games they play is a challenge.</li></ul></div><div><br /></div><h4>Sam Aaron - Programming as Performance: Live Coding with Sonic Pi</h4><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-LMAeBSZ6tzY/VjOwTWpXW2I/AAAAAAAADLA/98OzGge_Crs/s1600/2015-10-26%2B12.11.56.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://2.bp.blogspot.com/-LMAeBSZ6tzY/VjOwTWpXW2I/AAAAAAAADLA/98OzGge_Crs/s320/2015-10-26%2B12.11.56.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Sam in action. You should see him once</td></tr></tbody></table><div><ul><li><a href="http://sonic-pi.net/">Sonic Pi</a> == Turtle/Logo on Raspberry Pi but for audio - It is an amazingly affordable little machine that allows you to achieve a lot.</li><li>Perfect for education as it's easy to get started with. - It takes just a single line of code to make a sound and go from there. Better yet, Sonic Pi provides a platform for live coding.</li></ul></div><div>I discussed with Sam in detail about the project. The great thing is that he sees an intersection between teaching programming and professional audio. Sonic Pi is simple enough for students to pick up while allowing very advanced musicianship. Making the platform easy to access seems to serve the benefits of both parties. It comes with impressive documentation. It's not an afterthought like in many open source projects you see out there.</div><div><br /></div><h3>Chaos Patterns - Architecting for Future in Distributed Systems</h3><div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-9kL5jozQqOU/VjOwT0QsizI/AAAAAAAADL4/IQAHOxQ8uNg/s1600/2015-10-26%2B13.52.04.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://1.bp.blogspot.com/-9kL5jozQqOU/VjOwT0QsizI/AAAAAAAADL4/IQAHOxQ8uNg/s320/2015-10-26%2B13.52.04.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Learning about chaos engineering</td></tr></tbody></table>Chaos Patterns by Jos Boumans and Bruce Wong was an amazing talk especially for someone that hasn't received a lot of exposure to <a href="http://www.principlesofchaos.org/">chaos engineering</a>. It is a practice that has been introduced by companies, such as Netflix, to make sure their systems operate in scale.<br /><br />Even though it provides great value to them, the practices are useful even for smaller companies. I believe chaos engineering is one of those ways you can stand out amongst competition while producing more resilient software.</div><div><br /></div><div>The simple fact is that the world is a chaotic place. Essentially programming is about managing this chaos somehow. Even still, we're hit by chaos every once in a while. When AWS goes down, half the internet stops working. <a href="http://heartbleed.com/">Heartbleed</a> hit the internet even on a larger scale. Accepting chaos is one way towards more stable software. This discipline is known as chaos engineering.</div><div><br /></div><div>The great insight of chaos engineering is that instead of waiting for chaos to hit us, we can face it on the terms of our own. This means exposing our systems to chaotic situations on purpose. Instead of waiting for a service to go down, we might want to take a part of it down ourselves and see if things still work. Doing this voluntarily allows us to develop resiliency to our systems. So when the actual chaos hits us, we'll be prepared.</div><div><br /></div><div>By acknowledging chaos, we can improve the user experience. Consider something like Twitter. It prioritizes data based on accuracy. Not everything that is shown to the user has to be absolutely accurate always. Sometimes we're better off with partial data to keep the user experience good. Chaos may hit us at any time.</div><div><br /></div><div>As a result we might want to have fallback systems in place. We can, for example, use various levels of caching (localStorage, different levels at the API). Due to the way <a href="https://en.wikipedia.org/wiki/CAP_theorem">the CAP theorem</a> works, we'll have to make some compromise. For normal applications eventual consistency is enough.</div><div><br /></div><div>Having all your eggs in a single basket is never a good plan. To deal with this, it was suggested that you should split your control plane. Instead of using every service through a provider such as Amazon, you should split the risk by using other vendors. The problem is that if Amazon's whole infrastructure goes down, your service will go with it. Splitting the control plane avoids this unfortunate possibility to large extent. It's about managing the risk.</div><div><br /></div><div>Chaos engineering provides us means to be prepared for chaos. It won't protect us completely. It is still far better to inflict a little chaos on ourselves than let it hit us. This allows us to develop more resilient systems and fix potential issues earlier.</div><div><br /></div><h3>Modern Web Accessibility</h3><div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-TMZdmAJ1NRs/VjOwUAXhq4I/AAAAAAAADLI/IYpdb--t0W0/s1600/2015-10-26%2B15.59.11.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://2.bp.blogspot.com/-TMZdmAJ1NRs/VjOwUAXhq4I/AAAAAAAADLI/IYpdb--t0W0/s320/2015-10-26%2B15.59.11.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Accessibility or a11y for true nerds</td></tr></tbody></table>Accessibility is one of those aspects that is often an afterthought if it is given any thought at all. Patrick Fox's talk delved into this. There are entire specifications, such as <a href="http://www.w3.org/WAI/intro/aria">WAI-ARIA</a> and <a href="http://www.w3.org/WAI/WCAG20/glance/">WCAG 2.0</a> about the topic. Instead of going too deep into these, Patrick provided several actionable tips on how to approach accessibility.<br /><br />Just being WCAG compliant isn't enough. We need to be smart about it. Most importantly we need to have empathy towards our disabled users. I've tried to summarize Patrick's main points below:</div><div><ul><li>Minimize the use of ARIA. It's better to default to semantic code and add ARIA only if it's really needed.</li><li>Aim for the widest reader/browser support possible.</li><li>Test often, don't wait until the end. Include developers/QA in the effort.</li><li>Consider accessibility in the context of the project lifecycle.</li><li>Dynamic user interfaces (Single Page Applicationss in particular) come with particular challenges. The systems in use have been designed to work with static content!</li><li>We can use ARIA to announce content correctly. That way the screen reader can let the user know that a specific page has been reached for example. aria="live" is useful here and there should be only one of those per project to keep it simple.</li><li><a href="https://github.com/patrickfox/a11y_kit">patrickfox/a11y_kit</a> provides a good starting point.</li></ul></div><div>I am not particularly strong when it comes to accessibility. Patrick's talk gave me some idea of the issues related to it. This is one of those topics that doesn't come up in the community that often. It definitely deserves some further thought and research at a later time.</div><div><br /></div><h3>ES6 Metaprogramming Unleashed</h3><div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-SFFoFAEXiw0/VjOwUR9UYgI/AAAAAAAADLM/il-qGYGt8N0/s1600/2015-10-26%2B16.30.04.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://2.bp.blogspot.com/-SFFoFAEXiw0/VjOwUR9UYgI/AAAAAAAADLM/il-qGYGt8N0/s320/2015-10-26%2B16.30.04.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Getting meta with Javier</td></tr></tbody></table>Javier Arias Losada dug into ES6 metaprogramming. The idea itself was somewhat familiar to me. The approach is useful for developing small DSLs (think <a href="http://chaijs.com/">Chai</a> assertions for example). ES6 provides enough power for that.<br /><br />Even better, we can finally throw proper errors for invalid object access if we want. You should <a href="http://www.slideshare.net/javierarilos/oscon-es6-metaprogramming-unleashed-54390399">check out the slides for details</a>. These are good techniques to know and Javier explains the ideas well.</div><div><br /></div><h3>Building a Mobile Location Aware System with Beacons</h3><div>I know Bluetooth beacons have been a relevant topic for a while especially now that Apple has gotten involved with iBeacon. We've had global positioning for a long time. Now we're solving the remainder, local positioning. Beacons allow us to achieve this and the technology is starting to become affordable for mass consumption. Tim Messerschmidt went quite deep into this topic and it was nice to see the state of the art.</div><div><br /></div><div>Especially the development of Bluetooth Smart has helped a lot. The original implementations of Bluetooth consumed a lot of power. The newer implementations are far better. I believe this is one of the main factors that helps to drive the adoption of beacons. The basic ideas behind local positioning are simple. We can either use triangulation based on beacon locations or trilaterate based on distances to object to track. It's all very simple math.</div><div><br /></div><div>Just deploying beacons and starting to push content to consumers isn't enough. It has to be done in a tactful manner and actually deliver value. Otherwise you are just building infrastructure for nothing.</div><div><br /></div><div>Beacons come with certain limitations that it's good to be aware of. They can receive interference from various sources including microwaves, satellite connections, electrical sources, monitors and LCD displays, and anything in 2.4/5GHz (Wifi) for example. Incidentally materials and even people (mostly water after all) can cause interference and hurt results.</div><div><br /></div><h3>Writing Code that Lasts</h3><div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-h9FTFR1uWp0/VjOwU_0KM7I/AAAAAAAADLY/BD5RekIX-oc/s1600/2015-10-26%2B19.05.15.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://2.bp.blogspot.com/-h9FTFR1uWp0/VjOwU_0KM7I/AAAAAAAADLY/BD5RekIX-oc/s320/2015-10-26%2B19.05.15.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Red again. Coincidence?</td></tr></tbody></table>Rafael Dohms dug into practices that help in writing code that lasts. <a href="http://www.slideshare.net/rdohms/writing-code-that-lasts-or-writing-code-you-wont-hate-tomorrow-54396256">As his slides go into great detail about the topic</a>, I won't regurgitate those here. Let's just say that a little bit of discipline goes a long way in programming. Certain principles can help us to avoid traps.<br /><br />In my experience you develop an intuition for good code but sometimes you need a little advice to push you to the right direction. Rafael's talk was full of these little tips.</div><div><br /></div><div>The tips are quite technical in nature, though, and won't help with larger scale issues like how to know what to do and when. Developing the code is only a small part of it all. Learning to develop robust code is a good starting point of course.</div><div><br /></div><h2>Thoughts on Day 2</h2><div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-0IZBBeZlneE/VjOwVdDba0I/AAAAAAAADME/VPguuCyV0Zc/s1600/2015-10-27%2B10.08.07.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://4.bp.blogspot.com/-0IZBBeZlneE/VjOwVdDba0I/AAAAAAAADME/VPguuCyV0Zc/s320/2015-10-27%2B10.08.07.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Dutch design. Reminds me of Finland.</td></tr></tbody></table>As the first day was quite intense, I spent more of the second day at the booth and socializing in general. That is not to say the topics weren't interesting. It always comes down to making some hard choices. Just like in the first day, the keynotes of the second day were top notch. In fact, I managed to pick up several actionable ideas from there.</div><div><br /></div><h3>Keynotes of Day 2</h3><div>Just as for day 1, I've tried to gather some of the interesting points below:</div><div><br /></div><h4>Stuart Frisby - AB testing: Test your own hypotheses, and prepare to be wrong</h4><div>Especially for a big company like booking.com, it is very important they understand what they are doing and why. This is where AB testing comes in. It allows them to prove themselves wrong. Simply asking the question "this or that" enough times can provide you the confidence you need to choose between the options.</div><div><br /></div><div>It's not that hard to set up an AB test. First you need to decide what you want to test, figure out how to measure it, and then run the test and analyze the results. This is where statistics come in and you'll need to understand whether the results are statistically significant. I've done some AB testing myself but Stuart's talk made me realize I should test more to make better decisions.</div><div><br /></div><div>The problem is that often our intuition is wrong. AB testing provides us means to eliminate that bias. Instead we just need to become really good at designing and executing tests. For that to be possible you are going to need enough traffic, though, and you need to be very specific about the goals of your testing. I believe this ties back down to business metrics.</div><div><br /></div><div>Stuart mentioned several anti-patterns. You shouldn't test too much at once. Keep it simple and run one experiment at a time. The test results depend on the context and it is not a good idea to generalize too much. The great hamburger menu debate is a good example of this. Using one makes sense in certain contexts. In other contexts something else works better.</div><div><br /></div><div>AB testing ties back to the company culture. You need to be prepared to be wrong and let the data guide you. This isn't trivial. I believe this is a good way to grow an online business as instead of relying on hunches, you actually have something more solid.</div><div><br /></div><h4>Ari Gesher - Privacy: The next frontier</h4><div>To be honest, I didn't get a lot out of Ari Gesher's talk as I didn't have the correct background to appreciate it. I understood that privacy is a different problem than security. In the future we are going to need more granular ways to deal with aspects related to privacy. This potentially means stricter technological controls. I can only imagine how difficult problem it is in large scale systems where you want to make sure only the right persons have the access to the right data.</div><div><br /></div><h4>Mandy Waite - Kubernetes: Changing the way we think and talk about computing</h4><div>If I understood correctly, <a href="http://kubernetes.io/">Kubernetes</a> is something that allows you to orchestrate containers. It provides the semantics you need to control them in a large scale environment and split tasks between them so that the hardware gets utilized in a smart manner. This is a major problem for companies such as Google and it's likely the reason why they developed the system.</div><div><br /></div><h4>Ninh Bui, Hongli Lai - Bootstrapping a business around open source</h4><div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-JonhfRPYh60/VjOwVRX1Q_I/AAAAAAAADLo/Z1rSKxLwWo4/s1600/2015-10-27%2B11.45.14.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://3.bp.blogspot.com/-JonhfRPYh60/VjOwVRX1Q_I/AAAAAAAADLo/Z1rSKxLwWo4/s320/2015-10-27%2B11.45.14.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Yes, that's Shia</td></tr></tbody></table>Ninh's and Hongli's talk was one of the highlights of the conference for me. Given I'm essentially bootstrapping a little business of my own on top of open source, the talk couldn't have been any more relevant. There were several very valuable lessons in the talk:</div><div><ol><li>Beware of doing too much consulting on the side. Multi-tasking comes with a significant overhead. It will take attention from your own product.</li><li>Charge money for your products. Open source doesn't mean you cannot make money. After all that's what enables you to work on it in the first place!</li><li>Market actively. I concur with this point completely. I feel Linus' "Build it and they'll come" doesn't work for everyone, especially these days.</li><li>Focus and commitment is vital. You have to show you are willing to push your offering to new levels.</li></ol><div>On business model side there were a couple of cool points as well:</div></div><div><ol><li>Selling support contracts can be problematic as it requires sales persons and a large upfront investment. It is a business that's difficult to scale.</li><li>Ideally you should be able to produce passive income. It is even better if it is in the form of recurring revenue as that keeps the boat from sinking.</li><li>Have and open core and build value on top of that. Consider selling subscription based licensing (see 2.).</li><li>Develop paid products, avoid relying on donations. Be sure not to sell premium without any extra features.</li><li>Charging money for your software enables a future for your business.</li></ol><div>They also made a few interesting points on marketing:</div><ol><li>Word of mouth can work well with open source due to its nature and lead to organic growth.</li><li>Marketing is art of repetition.</li><li>Engineering can be seen as a marketing resource. I.e., engineering something around the current offering can lead to good results and help with the adoption of the main product.</li></ol></div><div><br /></div><div><h4>David Arnoux - Growth Hacking: Data and Product Driven Marketing</h4></div><div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-TK-UfOvRcF8/VjOwVl_pZ8I/AAAAAAAADLk/99kgtFKxXKg/s1600/2015-10-27%2B12.08.54.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://3.bp.blogspot.com/-TK-UfOvRcF8/VjOwVl_pZ8I/AAAAAAAADLk/99kgtFKxXKg/s320/2015-10-27%2B12.08.54.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Getting into growth hacking with David</td></tr></tbody></table>David Arnoux's talk was another highlight of the conference for me. There was an amazing amount of little golden nuggets in it as listed below:<br /><ul><li>Small army can beat a bigger one when using subversive tactics. In fact, the statistics work greatly in favor of the small one in this case (63.6% victory rate). I don't know where the figure comes from but the point is that tactics matter. This reminds me of the <a href="https://en.wikipedia.org/wiki/Winter_War">Winter War</a>.</li><li>People don't like to remain still. When revamping the Houston airport, just reducing the queuing time wasn't enough. They actually needed to make sure people remained in motion to make complaints go away. Solve the right problem.</li><li>Airbnb bootstrapped itself based on Craigslist data. In this case working out a creative approach lead to amazing success. That wouldn't have been legal in Finland due to the law.</li><li>As AdWords weren't working out for Dropbox and it was costing them money, they built a referral program within their product. It worked out amazingly well.</li><li>Growth hacking tactics rely on using other people's network (OPN) somehow. The problem is that a channel that might grow for a while will get saturated fast. The challenge is finding undervalued channels in which to grow.</li><li>Growth hacking is perfect when you have limited resources and you need good return on investment. It allows small companies to reach significant market share by being more agile than the incumbents.</li></ul><div>David listed several growth hacking principles:</div><div><ul><li>Build it, they don't come. - I might call this the inverse Linus' law.</li><li>Only testing shows what's successful. - This ties back to the AB testing talk.</li><li>Scale working, kill failing. - Don't get emotionally attached to ideas. Instead, work through a large amount of ideas and find those that work.</li><li>Speed. - Speed is of essence.</li></ul></div><br />Overall the talk was just great and I recommend watching it if you want to get a better grasp of the topic. It's no surprise there's a growing demand for growth hackers in the industry. You will have to master many separate disciplines to be truly effective at growth hacking. Given it's so hard for one person to have a good understanding of each, companies have begun to form growth hacking teams to push their products forward in a market driven way.<br /><br /><h3>Death to passwords - Tim Messerschmidt</h3>Even though I was aware that passwords are problematic, Tim Messerschmidt's second talk of the conference made it me even more aware of that fact. The main issue is that passwords are weak by definition. There are both technical and psychological reasons to this. If we enforced safe passwords, that would mean compromising user experience to some extent. There are some tweaks we can implement (i.e., show password on mobile, generate strong passwords, gamify password creation) but in the end they are just crutches.<br /><br />It is possible to screw up the situation on technical side as well. Every once in a while we see results of that in the news. At the very least we should perform properly salted hashing over the passwords using a safe algorithm, such as bcrypt. Just don't use weak algorithm, like SHA-1, MD5, and such.<br /><br />Tim brought up the topic of two factor authentication. I've been using Google Authenticator for a long time and lately I've been experimenting with a Yubikey. You should pick up Google Authenticator at least and hook it up with services that support it (Google and GitHub come to mind). It's cheaper than suffering a security breach.<br /><br />Other means of secondary authentication include biometrics and trusted devices. For instance, if it's possible to ascertain you are in the possession of a certain device, that's something that could be useful.<br /><br />In mobile usage it may be enough just to ask the user's email on login and send an authentication link there. This works very well and avoids the problem of passwords altogether. Of course your email can get compromised but then you are sort in trouble anyway.<br /><br />There was also discussion about a trust score assigned to a user. That can be understood as something that consists of no id, social id (think social security number), and concrete id within the system. This ties back to the topic of authentication (are you who you say you are?) and authorization (do you have permission to do something?). You might be able to perform certain operations in a system through a weaker level of authentication. Heavier operations could require heavier authentication.<br /><br />Of course OAuth and OpenID Connect were mentioned as well. Given it's an important and broad topic, standards have emerged to help with the situation. I have a feeling we still might way to go until we can ditch passwords. At the very least I recommend using some sane password manager to push the problem out of your head if nothing else.<br /><br /><br /><h3>Chris Chabot - Technology isn't interesting until it's technologically boring</h3>Chris Chabot's talk was the perfect way to end the conference (for me anyway). It's amazing how much technology we take for granted. It is just the nature of technology. Now we have generations that haven't lived a day without the internet. These so called digital natives have completely different view on the world than those that lived before. I can only imagine what the world looks like in a decade or two.<br /><br />I can only tell that the pace of technological progress has been increasing. You can see this from the speed in which technological diffusion accelerates. Each revolution happens faster than previous one and we're able to accept new technology faster and faster. Just consider something like Uber and the way it revolutionized the taxi industry. There are new Ubers on the way.<br /><br />As technology progresses and diffuses through the layers of the society, it becomes something that can be built on top of. When most of people have mobile phones, you can start selling mobile applications for them. At some points mobile phones will become obsolete and replaced with some newer technology. Rinse and repeat.<br /><br />According to Chris innovation happens at the edges. I think the real question is figuring out where that edge is. Once you know where it is, you can push progress forward. Perhaps the accelerating pace of developing tells us that people are getting better at this. As the technology landscape grows, there are more niches to exploit. This is innovation at scale.<br /><br /></div><h2>Conclusion</h2><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-hM5DRngmRiQ/VjOwWZAJLtI/AAAAAAAADLw/j7rJDAKPVew/s1600/2015-10-27%2B16.01.13.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://1.bp.blogspot.com/-hM5DRngmRiQ/VjOwWZAJLtI/AAAAAAAADLw/j7rJDAKPVew/s320/2015-10-27%2B16.01.13.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Open source camera from the hardware pavilion</td></tr></tbody></table><div>OSCON was easily the most amazing conference I've participated in. If I get a change, I'll gladly participate again. There's an immense amount to learn and the conference gives you a nice cross section of what's going on at the moment.</div><div><br /></div><div>It's not the cheapest conference but I believe you might get some good value out of it depending on how edge you prefer to be. It's definitely worth it for companies to send their people there. It gets harder to justify if you have to pay for it all yourself. You could do a worse investment, though.</div>Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-86337497628212837992015-10-29T16:15:00.001+02:002015-10-30T20:14:11.798+02:00Thoughts on Blender Conference 2015I had a chance to visit this year's <a href="https://www.blender.org/conference/">Blender conference</a> after a hiatus of a few years. The conference isn't particularly big one (~120 people) but it's a nice experience especially if you are into computer graphics. The size of the conference has remained quite static. There were a lot of new faces. Perhaps that reflects the growth and evolution of the community.<br /><br />I used Blender for 3D modeling very actively for a few years (2005-2010) and was involved in development. Blender is an interesting example of open source project success. Initially the software was closed and since becoming an open source project it has been growing solidly.<br /><br />I joined the conference on its third day. As a result I missed a large part of content. It was a nice experience regardless. You can find <a href="https://www.youtube.com/user/BlenderFoundation">the conference sessions through YouTube</a>. Read on to see what I thought about some of the sessions I participated in. Before that, I want to explain you some background as you might not know Blender that well.<br /><br /><h2>On Blender Foundation's Animation Projects </h2><div><a href="https://www.blender.org/foundation/">Blender Foundation</a> is known for its animation projects. They are funded using various sources, including public and community support. This model allows to push the software forward in a meaningful manner. Each project has managed to make the software better in its own way. That said, something the features implemented are project specific hacks that aren't useful beyond some specific purpose. But sometimes you have to do what it takes.</div><div><br /><h3>Cosmos Laundromat - The Feature Film?</h3></div><div>Initially Blender Foundation's newest project, <a href="https://gooseberry.blender.org/">Cosmos Laundromat</a>, was meant to become a feature film. That would have required a heavy amount of funding (in 2-3 million euro range). This goal was not met. Jason van Gumster has <a href="https://opensource.com/life/15/9/how-open-film-project-cosmos-laundromat-made-blender-better">dug deeper into the topic</a>.<br /><br />As a result the scope matched earlier Blender Foundation short film projects. It is possible, however, that the development will continue in an episodic manner. This depends entirely on how well they are able to resolve the funding situation.</div><div><br /><h3>Rendered Using Cycles</h3></div><div>What makes Cosmos Laundromat particularly impressive compared to the earlier efforts is the fact that it has been rendered using Cycles. Cycles is an unbiased, physically based, path tracing rendering engine designed for animations. Even though slower than traditional renderers, the progressive approach means that you can just resume a render if you want less noise. <a href="http://blender.stackexchange.com/a/5821">Stack Overflow</a> goes into great detail on what this means.</div><div><br /><h3>Cosmos Controversy</h3></div><div>For some reason Blender Foundation's projects have a tendency to cause some level of controversy. That applies to PG-13 rated Cosmos Laundromat that includes a F word and begins in a rather grim way. Technically it's an excellent piece, though, and easily the best film they have done so far. See it below.</div><div><br /></div><iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/Y-rmzh0PI3c" width="560"></iframe> <br /><br /><h2>Cosmos Laundromat - Art and Pipeline</h2><div>In the first session of the third day several key members of the Cosmos Laundromat project discussed their experiences. As you can imagine, developing new capabilities while trying to develop a short film can be somewhat challenging. Especially rendering was a great hurdle. For a short film like this they needed 17455 frames (25 fps) at 2048x858 resolution. It might not sound that bad. Unfortunately the frames could be computationally expensive due to the amount of special effects used. Especially rendering realistic grass can be a hard problem.<br /><br /><h3>Rendering with Qarnot and ANSELM</h3>As far as I understand, a significant part of the rendering effort was pushed to a company known as <a href="https://gooseberry.blender.org/qarnot-computing-renders-gooseberry/">Qarnot Computing</a>. The university of Ostrava gave access to their computing cluster (<a href="https://www.it4i.cz/?lang=en">ANSELM</a>) to help further.<br /><br />Qarnot has managed to combine the idea of radiators with compute. As computing can produce a large amount of heat, this makes perfect sense. I won't describe their system in detail here but I recommend looking up their technology. Perhaps we can replace our heaters with something smarter in the future.<br /><br /><h3>Problems During Production</h3>Besides Qarnot, Blender Foundation has a little computing cluster of its own for test renders. They encountered particular rendering related problems during the projects. I've tried to list them below:<br /><ul><li>Their rendering nodes could run out of space. I'm not exactly sure how this could happen, though. It feels like a technical issue (logrotate for rendering?).</li><li>Blender wasn't always up to date on their nodes. This could be problematic especially if some particular fix was made to make the scene being rendered work correctly. This feels like a technical issue as well. I feel performing a check against a version stored within a file before rendering would have mitigated this. At least you'll avoid wasting some effort then.</li><li>Rendering on different operating systems could lead to different results. I don't know if there's an easy solution for this. Likely having a strong test suite would help in this regard. Ideally you would have a continuous integration system in place rendering using different scenarios under different setups. It's not trivial to setup but I believe it would have helped to spot these problems earlier.</li><li>Sometimes render times could be unpredictable. This applied especially to frames that had a lot of grass in them. Assuming render times are comparable between different resolutions, I expect it would have been possible to predict this problem by performing preview renders in smaller scale first and then analyzing the results to see where possible problems might arise. You can always try to tweak the worst spots if you are aware of them.</li><li>Due to the nature of rendering used, noise could be an issue. Of course the solution is simple, just resume the rendering till its smooth enough. They implemented resuming particularly for this project and it will likely make it to the stable release sometime in the future.</li></ul><div>They tackled these problems by implementing extensive logging, increasing the amount of available computing power, and reducing scene complexity where it made sense. They likely applied some technical solutions as well. I imagine implementing features, such as LOD (level of detail) checks based on the distance to camera, could lead to nice improvements. Computer graphics is all about cheating after all. If it looks good, it is good.</div><div><br /></div><div>To keep their computing power manageable, they implemented a system known as <a href="http://www.flamenco.io/">flamenco</a>. It supports only Blender for now and it's in early stages development-wise. That said, it's nice to see projects like this to grow out of Blender Foundation projects. Hopefully more people will find it.</div><div><br /></div><h2>UI Team - Report on an Ongoing Journey</h2><div>As Blender is notoriously famous for it's difficult to learn user interface, it was nice to take a part in a session dedicated to it. Even though Blender is hard to pick up initially, it is an amazingly productive software. Blender's UI design has been heavily inspired by Jef Raskin's <a href="https://en.wikipedia.org/wiki/The_Humane_Interface">Humane Interface</a>. It is the same book that has inspired Apple's design decisions.</div><div><br /></div><h3>Blender Has to Serve Both Beginners and Pros</h3><div>Likely the biggest single challenge that Blender has to face in the future is how to serve both beginning users to grow the user base while keeping the existing power users happy. This is the reason why Blender has a UI team these days. It makes all those decisions nobody else wants to make. Without having some authority to make the decisions, you easily end up <a href="https://en.wikipedia.org/wiki/Parkinson%27s_law_of_triviality">bikeshedding</a>. As time goes by and no concrete decisions are made, the situation can only get worse.</div><div><br /></div><div>The problem with a big program like Blender is that decisions made in the past have a huge inertia. It can be difficult to change things one way or the other as you need to be careful not to lose something valuable in the process. This is the same problem many other software suites face. When you try to cater many different groups of users, it is difficult to keep everyone happy. I believe that's not a good goal even.<br /><br />This topic was touched by Gianluca Vita in <a href="https://www.youtube.com/watch?v=g_xrV-toaBE">his session about Blender for architects</a>. The challenge is that traditionally architects are taught to think in terms of 2D plans. They have a very specific set of requirements. It is not surprising that solutions, such as <a href="http://www.sketchup.com/">SketchUp</a>, are therefore popular amongst architects. Being easy to pick up, SketchUp can be an amazing software. It's nowhere near as popular as Blender but it doesn't have to be.</div><div><br /></div><h3>Blender as a Kernel?</h3><div>I believe Blender should aim to become more like a kernel. The current Blender would just be one shell on top of that. If you wanted something more specific, like a Blender for architects, you would design it so. The software has taken important steps towards a future such as this. They may have to be more intentional to make this happen, though. In this future Blender would become the Linux of 3D suites.<br /><br />Moving towards this direction would make Blender accessible to larger amounts of users. There's an amazing amount of technology below the current shell. The big challenge is in exposing that in a such way that makes sense to specific groups of users.<br /><br />It is not possible to please everyone with a single offering. If you can be more opinionated, however, you have better chances. I'm aware this direction will splinter the community based on focus. I feel it's something worth pursuing, however, as you increase the size of the overall community and serve everyone included better.</div><div><br /></div><h3>UI Team Efforts so Far</h3><div>The UI team has done some valuable work already. They've introduced UI features, such as tabs and pie menus. They've also put effort towards improving the graphics of the application. Blender might have a better looking theme in the future. Of course a part of this work is cosmetic. The team has faced certain distinct problems.</div><div><br /></div><div>Given it's a volunteer effort in large part, these problems include communication, time management, and keeping in sync with development. I feel many open source projects face the same issues. In part it's a leadership problem. It is easy to start working on features. The hard part is actually finishing those and merging them to the trunk. Certain amount of decisiveness is needed as otherwise things will just remain hanging and never get finished.</div><div><br /></div><div>I think it's great that Blender has a UI team these days. Earlier the UI related efforts were too fragmented and ad hoc. It is always easier to add something to the UI than actually make fundamental changes to improve the user experience. The kernel ideas goes back to that as then you can actually be opinionated and optimize the user journeys based on specific users, not just an amorphous mass.<br /><br /></div><div><iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/u4wVGT0UQG8" width="560"></iframe> <br /><br /></div><h2>TV commercials - Packshots in Cycles</h2><div>As I know nothing of producing TV commercials, it was nice to get some inside insight to the topic by Bartek Skorupa. It appears there's a lot in common with software development. The clients like to change their mind, and this can happen quite late in the process. As Bartek put it, it can be a smart idea to try to anticipate the changes. This will allow you to provide better service at a more affordable price.<br /><br /><h3>2D vs. 3D</h3>In TV commercial production a large part of work is preparation. Therefore it is important to get that phase right. Depending on the commercial there might be a varying amount of 2D and 3D content. If you can produce the whole commercial in 3D, it is easier to deal with changes required. In case you composite 3D content on top of 2D footage, it can become more difficult. You lose control over lighting, object placement, and so on.<br /><br />A mixed approach can make sense as going full 3D is expensive, especially if you want to reach high grade results. It is easier just to film certain sequences. 3D allows more versatility and physically impossible things.<br /><br /><h3>Saving a 2D Project</h3></div></div><div>Even though changes are more difficult when you are dealing with 2D, they can still be possible. Bartek showed us how to achieve this using a feature known as tracking. Adobe Premiere comes with rudimentary tracking features. You can even deal with it outside of the application itself, say in Blender. Tracking simply allows you to track a point or a shape to a feature across time. As it happens, this is extremely useful as you can then animate using the data.</div><div><br /></div><div>You can for example tie a text to tracked point location. This will tie it to the scene better. It is one of the most basic usages of tracking. It can also be used to fix things. You can use tracking information to mask out objects. In this case you would use a clone tool to in various frames of your track to eliminate the objects you don't need. The application is then able to interpolate based on your cloned frames and tracking data. It is just the classic image manipulation technique applied for video.</div><div><br /></div><div>It is not possible to fix every project using this technique. You still cannot fix project lighting or perform heavy changes. Bartek's session showed me that you can still get some quite neat things done in post production. Of course it would be better to sort out the problems even before you start to film the footage required.</div><div><br /></div><iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/jHaB5sPdNDQ" width="560"></iframe> <br /><div><br /></div><div><h2>From Photographer to 3D Artist, a Personal Journey</h2></div><div>Interestingly I've been moving from 3D towards photography. It was cool to participate in a session where Piotr Zgodziński showed how to go to the opposite direction. Now that I think of my 3D days, I believe a basic understanding of photography would have helped a lot. This is what Piotr's presentation was about.</div><div><br /></div><div>If you can afford it, 3D provides significant benefits over traditional photography. In fact, a large part of Ikea's product photos are 3D graphics. The renderers have certainly evolved to a high level. The question is how to reach results in 3D that rival, or even surpass, more traditional results? The answer is simply to use traditional techniques in 3D.</div><div><br /></div><div>The biggest insight for me is that there's actually a lot to learn in old magazines (think pre 2000s) and books. Modern ones have been saturated with work that has gone through Photoshop. It is better to learn from sources that haven't. You can pick up subtle ideas related to lighting for instance. We can implement these techniques effectively in 3D as we don't have to worry about objects obscuring our view. We place lighting however we want while keeping it invisible to the camera.</div><div><br /></div><div>Instead of relying on something very technical, such as HDR, Piotr suggests it's more valuable to learn to light yourself. This gives you optimal control over the results. You can put those highlights where you want this way.</div><div><br /></div><div>The problem in optimizing for great results for a single shot is that the results may not be ideal for animation usage. Dealing with that would take an entirely different set of skills. Perhaps learning from the cinematographers of the past would yield solutions to that.</div><div><br /></div><iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/szP24pIqDn8" width="560"></iframe> <div><br /></div><div><h2>Conclusion</h2></div><div>I would say the conference was worth a visit overall. It is very reasonably priced (3 days, 150 euros) and you can get a day ticket cheaper. You always pick some new ideas and get to see where the project is at the moment.</div><div><br /></div><div>I'm fairly confident the project will be around for quite a while. There are some definite challenges in sight. I'm most curious to see how the UI develops. Even though the project is great, there's room for improvement to get it into the hands of more people.</div><div><br /></div><div>I would love to see the second part of Cosmos Laundromat to happen. Only time will tell how it goes with that. Combining business with open source is always a daunting proposition.</div>Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-18961602362696796752015-10-18T12:58:00.002+03:002015-10-18T13:10:48.277+03:00Afterthoughts - Tampere Goes Agile '15<a href="http://tamperegoesagile.fi/">Tampere Goes Agile</a> is one of those events I visit each year. It's free to attend and you get to see some old acquaintances while at it. And of course you get exposed to some new ideas and meet new people.<br /><br /><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-UyRYEXmNZiw/ViNrt5H0YaI/AAAAAAAADHw/lvS8UsIPILs/s1600/DSCF2224.JPG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://2.bp.blogspot.com/-UyRYEXmNZiw/ViNrt5H0YaI/AAAAAAAADHw/lvS8UsIPILs/s320/DSCF2224.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">We had a <a href="http://leancoffee.org/">Lean Coffee</a> session before the talks</td></tr></tbody></table>Just like <a href="http://www.nixtu.info/2014/10/afterthoughts-tampere-goes-agile-14.html">last year</a>, the event was held at Sokos Hotel Ilves. There were roughly 140 attendees. Unlike last year, there were no workshops. The theme of the conference this year was "Inspired beyond agile".<br /><br />I think that was a good pick given agile is getting a little worn out as a topic itself. Agile practices are widely in use. Perhaps the main challenge is in getting from "doing agile" to "being agile". This means organization level acknowledgment of the ideas and means entire mindset has to change.<br /><br /><h2>Bob Marshall - After Agile</h2><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-DkQahGXejhI/ViNrv8zIpiI/AAAAAAAADI0/9SXYdAdOLlA/s1600/DSCF2227.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="213" src="http://1.bp.blogspot.com/-DkQahGXejhI/ViNrv8zIpiI/AAAAAAAADI0/9SXYdAdOLlA/s320/DSCF2227.JPG" width="320" /></a></div><div>The day started with a keynote by <a href="https://flowchainsensei.wordpress.com/">Bob Marshall</a>. He has introduced the concept of <a href="https://flowchainsensei.wordpress.com/rightshifting/">rightshifting</a> to the community. The core idea is that a large amount of organizations are underperforming. There are some exceptions to the rule of course. That said, there's a lot we can do to improve the situation.</div><div><br /></div><h3>Prisoners of Existing Ideas</h3><div>The problem is that we're always more or less prisoners of our mindset and existing ways. Replacing each person of an organization while keeping the underlying ideas the same wouldn't mean a thing. Instead of replacing people, we'll need to operate on a more fundamental level. In order to improve the effectiveness and efficiency of our organizations, we'll need to be able to imagine better ones.</div><div><br /></div><h3>What Does an Ideal Organization Look Like?</h3><div>I think the greatest challenge is in figuring out what these better organizations might look like. We have certain models that we've inherited from the industrial era. Even though they sort of work, the problem is that knowledge work has unique qualities of its own. Beyond this, each organization operates within contexts of its own. All involved parties have needs of their own. The challenge lies in responding to these needs in an adequate manner.</div><div><br /></div><h3>Going Beyond Agile</h3><div>As Bob put it, agile thinking gets us only up to a certain point. In order to improve our organizations, we'll need to look at the whole. Simply optimizing software development is suboptimal. Real improvements can be achieved only by taking a holistic view. As a solution Bob suggests <a href="https://flowchainsensei.wordpress.com/therapy/">organizational psychotherapy</a>. That can be seen as a way to understand organization health and changing the mindset of the organization to one that's more conducive for high performance.</div><div><br /></div><h3>Forming Better Organizations</h3><div>It is interesting to ask similar questions about forming organizations. Instead of conducting therapy, you actually might have a chance to build a performing culture to begin with. This might be an area that's easy to neglect when growing a company. If we understood how to perform better from the start, that would allow us to build better companies faster. Bob's ideas have merit beyond existing organizations.</div><div><br /></div><h2>Jaakko Kuosmanen - Is Agile everything or is it the only thing?</h2><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-fPo_YNYyvdE/ViNrv_-b8XI/AAAAAAAADIw/nGA9rH0_DjI/s1600/DSCF2232.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="213" src="http://1.bp.blogspot.com/-fPo_YNYyvdE/ViNrv_-b8XI/AAAAAAAADIw/nGA9rH0_DjI/s320/DSCF2232.JPG" width="320" /></a></div><div>Jaakko's presentation provided us multiple different views on agile. I've tried to summarize some of the main points below:</div><div><ul><li>Agility can yield business value. Liquid assets (renting vs. owning) can yield competitive advantage when the market is volatile. The problem is that fixed assets can become expensive if the situation changes in a way you cannot predict accurately.</li><li>When you are dealing with a fickle market (i.e., game development), it can be worth your while to experiment a lot and fail fast with ideas. Focus only on those that work. Kill your darlings.</li><li>Projects tend to happen in process context and there's interaction between them. Depending on the view, you might have different focus. You can for instance think projects as assembly line work and discard aspects such as maintainability. Focusing on process might yield entirely different results.</li><li>Software is just one part of the equation. It is concrete services that yield actual value.</li><li>Especially in big organizations different business units might have conflicting views of the world. Sticking to too rigid plans without synchronization can lead to disasters.</li><li>There's a rift between the physical and virtual world. Physical material costs whereas bits are free. This leads to different economics.</li><li>Services and infrastructure have needs of their own. Services can be seen as something flexible whereas infrastructure is something rigid. </li><li>It is important to understand your core competencies. Consider outsourcing parts that aren't.</li><li>Solving the right problem is more important than solving the problem right.</li><li>There can be a conflict between the roles of a customer and a user. Customer pays and drives development while the user might have to endure. In self-service these can be the same, however.</li><li>Understanding what to document can be valuable in the future. A small amount of work beforehand can help to avoid a huge amount of work later on.</li></ul><div><br /></div><h2>Markus Päivinen: How to make learning a lifestyle</h2></div><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-K3VInLN9V8Y/ViNrwVOx-NI/AAAAAAAADIY/WQOwpqAXJ00/s1600/DSCF2235.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="213" src="http://3.bp.blogspot.com/-K3VInLN9V8Y/ViNrwVOx-NI/AAAAAAAADIY/WQOwpqAXJ00/s320/DSCF2235.JPG" width="320" /></a></div><div>Markus described how they have managed to make learning a lifestyle at Ericsson. They've acknowledged that in order to remain in business, they'll need to retain their edge.</div><div><br /></div><div>As a result they've put a significant effort in nurturing a company culture that enables people to learn. The problem is that if you aren't learning, you are regressing compared to the competition.</div><div><br /></div><div>They've implemented various ways in which they push towards a learning culture. I've listed the ways covered below:</div><div><ul><li>Ericsson Academy - Online courses for onboarding and learning those skills you are going to need for your job.</li><li>Code School for kids - By teaching children you can actually learn new ways to approach problems. They have a different view on the world. That's something adults tend to lose as they grow up.</li><li>Game Jams and hackathons - Allowing people to develop in more freeform manner might uncover hidden talent.</li><li>Breakfast Club - Sharing a breakfast can work.</li><li>Learnathons - Ericsson cross-trains people inside the company. They look up topics people are interested in picking up, figure out who understand enough to train, and then do it. This can be scaled globally.</li></ul><div>The most important learning here is that you can change company culture through actions. It is the people that create the culture. Encouraging people to learn leads to improvements as the newly gained skills and knowledge is put into action. Even though learning takes time away from work, is there an alternative really?</div></div><div><br /></div><h2>Andy Edmunds: Disciplined Agile Delivery for Critical System Development</h2><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-yFe_zQwJjYE/ViNrwoUNszI/AAAAAAAADIo/ryLXAms92h8/s1600/DSCF2237.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="213" src="http://3.bp.blogspot.com/-yFe_zQwJjYE/ViNrwoUNszI/AAAAAAAADIo/ryLXAms92h8/s320/DSCF2237.JPG" width="320" /></a></div><div>Andy's lightning talk showed how to take some of the ideas from agile into an academic context. The problem is that formal methods and high integrity systems are rigid by definition. </div><div><br /></div><div>Bringing agile processes into the equation may make the techniques palatable to more people.</div><div><br /></div><h2>Juha Vuolle: Modern Companies</h2><div>Juha's talk highlighted some of the key challenges modern companies face. I've summarized the key ideas below:</div><div><ul><li>The nature of available data has changed. It is becoming more structured.</li><li>There's more data available than an individual, or even an organization, can manage.</li><li>There's a relation between the amount of structure in data and organization performance. Too much structure can hurt performance especially in the context of software business.</li><li>52% of F500 companies from the year 2000 have vanished. It is the age of disruption.</li><li>There are large differences between old and new business practices. Whereas older models are more reactive by nature, modern are rather proactive.</li><li>There are major differences in the way we structure business (pyramid vs. self-organizing). Older companies split themselves by function and title. Modern companies organize by teams, advisory forces, and roles within these.</li><li>While older companies favor centralized decision making, modern ones favor decentralization. Let those who have the best information make the decisions.</li><li>Company DNA can be modeled within an operating system, a set of rules defining its limits and its approach.</li><li>Pushing decision making to the people but it can be challenging. It is better to make a bad decision fast than a good decision late. There should be means to track the quality of decisions so better ones can be made in the future.</li><li>A modern company should have a conflict resolution process. If something goes wrong, there should be clear ways to deal with it.</li><li>A modern company is limited by the development of its leaders. It can be challenging to match compensation with contribution.</li><li>There's no single recipe for how to build a modern company. Principles transfer, practices do not.</li><li>When scaling a company up, rephrase the problems encountered.</li></ul><div><br /></div></div><h2>Timo Stordell: DevOps. Boosting the agile way of working</h2><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-AWLHg6MVbBI/ViNrw6UqZCI/AAAAAAAADIk/bwqgEce-BpI/s1600/DSCF2240.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="213" src="http://4.bp.blogspot.com/-AWLHg6MVbBI/ViNrw6UqZCI/AAAAAAAADIk/bwqgEce-BpI/s320/DSCF2240.JPG" width="320" /></a></div><div>DevOps is one of those terms that crops up every once in a while. As I was curious, I went to see Timo's presentation. DevOps isn't anything revolutionary.</div><div><br /></div><div>Instead, it should be seen an incremental way to improve our development practices.<br /><br /></div><h3>Small Bangs over a Big Bang</h3><div>Instead of performing big bang releases, it is more beneficial to releasing smaller bits faster. Besides decreasing the possibility of disaster, this allows you to receive feedback sooner. This can also work as a competitive advantage and allow you to capture market.</div><div><br /></div><h3>Requirements Management Meet Acceptance Testing</h3><div>In ideal situation your requirements management and acceptance testing should be closely connected. Acceptance testing gives you degree of security and allows you to catch potential issues before deployment. Of course there's more to testing than that but the basic idea is solid. Timo demonstrated how they perform acceptance testing using physical devices and automation. Building a rig of your own can be absolutely worth it.</div><div><br /></div><h3>Standardize Development Environments</h3><div>The DevOps practice of standardized development environments is beneficial as it makes it easy to reproduce potential problems. Thanks to virtualization we can get new people aboard with little effort.</div><div><br /></div><h3>Monitor to Understand What to Develop</h3><div>Monitoring can give us a good idea of how well a product is performing. I expect this could be tied to business indicators. Having data available allows you to make better decisions faster and focus your effort on the right things.</div><div><br /></div><div>A book known as <a href="https://en.wikipedia.org/wiki/The_Phoenix_Project:_A_Novel_About_IT,_DevOps,_and_Helping_Your_Business_Win">The Phoenix Project</a> should be a good starting point for digging deeper in the topic.</div><div><br /></div><h2>Allan Kelly: Beyond Projects</h2><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-3W9eQSQBBWU/ViNrxGmr5KI/AAAAAAAADIc/J__afducscg/s1600/DSCF2248.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="213" src="http://2.bp.blogspot.com/-3W9eQSQBBWU/ViNrxGmr5KI/AAAAAAAADIc/J__afducscg/s320/DSCF2248.JPG" width="320" /></a></div><div>The second keynote of the conference was held by <a href="http://www.allankelly.net/">Allan Kelly</a>. His main thesis is that projects don't make sense anymore. I couldn't agree with him more. Interestingly he started out by making a book analogy.</div><div><br /></div><div>He wrote his first books in a traditional manner. His <a href="https://leanpub.com/xanpan">newest one</a> took an agile approach and completely changed the way he thinks about writing. Incidentally I've used a similar approach with <a href="https://leanpub.com/survivejs_webpack_react">mine</a> as I couldn't get a publishing deal.</div><div><br /></div><h3>Digital Environment is Ideal for Agile</h3><div>The reason why agile approaches work with book writing has to do with the fact that writing has become digital. This enables fast iteration and easy distribution. Instead of having to plan everything carefully, we can learn as we go and make decisions based on that. I would say writing a book this way is almost instinctive. You listen to the people and do the right thing.</div><div><br /></div><h3>Projects - on Schedule, on Budget, with Sufficient Quality</h3><div>Projects go against all of this. Generally project success is determined by staying on schedule, on budget, and with quality. This doesn't tell anything of the value delivered. Projects don't put value in flexibility. The basic problem is that requirements change. This goes against the fixed nature of projects.</div><div><br /></div><h3>Projects Emphasize the Wrong Things</h3><div>The key problem is that projects put focus on wrong things. Especially in product development we should put focus on benefit delivered. The most important question during development should be when can I deliver value next? Putting emphasis on iteration speed and value delivery instead of sticking to a plan makes sense.</div><div><br /></div><div>While projects are temporary, software is forever. There's a clear conflict here. As projects put emphasis on getting things done by a certain date, this may lead to cutting corners and reduced quality. This sacrifices the long term view. This is not to say deadlines aren't a good thing. Checkpoints can bring focus to development. Then it becomes a problem of figuring out how to provide most value by the deadline. Focus on flow and value.</div><div><br /></div><div>Projects put emphasis on the idea of temporary organizations. Essentially you form a task force, finish the project, and move on. The great tragedy is that you will have to break a functioning team and start all over again. Putting emphasis on teams instead would be more beneficial. Treat a team a unit and push work through it.</div><div><br /></div><h3>Software Development Doesn't Have Economies of Scale</h3><div>Project model has been optimized for big. Unfortunately software development doesn't have economies of scale. It is, in fact, a converse situation! It is cheaper to produce software in smaller quantities as you decrease the amount of possible risk. It is cheaper to make small mistakes than big ones. Smaller batches work better for software as you can deliver sooner and de-risk your work as you go.</div><div><br /></div><h3>We're Still Stuck with Project Nomenclature</h3><div>The biggest problem of them all is the fact that we're still stuck with project related nomenclature. This all ties back to Bob's presentation and mindset. It is difficult to see the world in any other way if you are stuck in a project way of thinking. After all that's how majority of the industry operates. A new language is needed to break down old habits. We'll need to put emphasis on producing value. As Allan put it, it's time for Waterfall 2.0 - continuous flow.</div><div><br /></div><h2>Conclusion</h2><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-7xSZ1mqvOtI/ViNrxOCKebI/AAAAAAAADIg/IkHaCXuhEwA/s1600/DSCF2250.JPG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="213" src="http://1.bp.blogspot.com/-7xSZ1mqvOtI/ViNrxOCKebI/AAAAAAAADIg/IkHaCXuhEwA/s320/DSCF2250.JPG" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">I ended the day with a Pepsi</td></tr></tbody></table><div>Overall the conference was quite nice. Especially the keynotes alone made the trip worth it. I probably didn't get that much from all the talks but then I've been to a quite a few conferences already and it's inevitable some of the ideas begin to repeat at some point.</div><div><br /></div><div>If it was up to me, I would probably double the amount of normal presentations while cutting their time in half to twenty minutes. It's enough to get a couple of ideas across while forcing to keep it simple. This would give the audience exposure to more. That's the point, after all.</div><div><br /></div><div>An interesting alternative would be to have the same amount of talks while keeping it all in a single track. As the talks would be so short, having a couple you don't care about that much wouldn't hurt. As a bonus benefit you would see talks you would skip otherwise.</div><div><br /></div><div>I preferred the after-party location of the previous year. That might have something to do with the fact that nerds tend to like cellars for some strange reason.</div>Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-57364739714637937202015-10-12T12:49:00.000+03:002015-10-12T13:56:47.493+03:00How Would I Make GitHub Better?<a href="https://github.com/">GitHub</a> is an amazing service. It revolutionized social coding. As it has matured, some warts become apparent. It still gets the job done but there are some parts where it could do better. Just the fact that it's so popular will keep it popular for a long time to come unless something radical happens. That's the way it goes in web business.<br /><br />There are alternatives, such as <a href="https://bitbucket.org/">Bitbucket</a>, <a href="https://about.gitlab.com/">GitLab</a>, and <a href="https://www.fogcreek.com/kiln/">Kiln</a>. It's hard to see any of these usurping GitHub anytime soon, though. Of course, thanks to the nature of Git, moving between the systems isn't that hard. You can, for example, benefit from the free private repositories of Bitbucket. GitHub's pricing starts to hurt pretty fast, especially if you have a lot of private work. GitLab is nice if want something self-hosted. And Kiln has Spolsky behind it so that goes some way.<br /><br />I have several gripes with GitHub. Some are minor and likely very fast for GitHub to resolve should they want to. There are also some structural issues I'm not particularly happy about. I'll try to illustrate my problems next and show existing solutions where they exist.<br /><br /><h2>Starring is Too Limited</h2><div>I like to mark interesting repositories with a star (1.7k stars given so far). Obviously, once you have starred enough projects, it becomes counter-productive. Ideally you should be able to filter based on project meta information. GitHub allows you to attach only project site and description to a project. No tags are supported. Of course you could say it's better to deal with this within the repository itself (i.e., <i>package.json</i>). That feels too low-level, though, and cannot be used for queries trivially.</div><div><br /></div><div>There are solutions, such as <a href="http://astralapp.com/">Astral</a>, that address this problem. I do wish GitHub allowed people to attach more meta information to their projects, though. This brings me to my next gripe.</div><div><br /></div><h2>Limited Control Over Your Portfolio</h2><div>Once you hit a certain amount of projects under your personal account, it starts to work against you. Just look at my <a href="https://github.com/bebraw?tab=repositories">listing of repositories</a>. How can you tell which repositories have good stuff in them? If there was more metadata available, it would be possible to filter better at least. I know GitHub tracks repository language automatically. Having a language filter would be a start.</div><div><br /></div><div>A good next step would be to allow more control over the way you display your repositories to the public. Perhaps you might want to hide some of them altogether. At the very least it would be nice to mark a select few so that they stand out more.</div><div><br /></div><div>Given your GitHub account works often as your code portfolio, having more control over it would seem like a no-brainer to me. Obviously you could develop something custom on top of the <a href="https://developer.github.com/v3/">GitHub API</a>. Perhaps there's something like Astral but for portfolios.</div><div><br /></div><div>One way to deal with the problem is to push bigger projects below organizations and deal with it there. This won't work always, but when it does, it's a nice way to split up your work and collaborate with other people.</div><div><br /></div><h2>No Pull Requests for Wikis</h2><div>It is nice that GitHub provides free wikis for projects. In fact, I built <a href="https://github.com/bebraw/jswiki/wiki">jswiki</a> on top of this idea. To allow people to contribute I made it open for modifications. Of course this means some joker might mess up the wiki content somehow given there are no controls against this. Ideally you should be able to accept pull requests against wikis.</div><div><br /></div><div>It is possible to work around this issue by maintaining your wiki content at your project repository, keeping the wiki closed, and setting up a script that copies the content there. It's not ideal but it works.</div><div><br /></div><h2>No Revision History for Issues</h2><div>Even though GitHub's issue tracker works amicably well for many purposes, there are a couple of major flaws. Most importantly it doesn't keep track of changes made to the issues. Sometimes it is important to see what the issue description looked like in the past. You can of course dig this information from your email provided you have subscribed to the issue. It's not ideal, though.</div><div><br /></div><div>The ideal solution for me would be to have the issues available as a Git repository. This is the way the wiki works after all. The repository would track issues and associated comments in some simple format (JSON/YAML?). Besides providing revision history, this would make it possible to maintain the issues through a CLI without having to jump through hoops.</div><div><br /></div><h2>Issues Can Be Removed from a Project Without a Warning</h2><div>Project issues are behind a checkbox at project settings. Simply unchecking that you will deny access to your project issues. I don't approve with this design decision as it can be quite perilous for open source projects. At the worst you are losing hundreds of hours of effort just like that. Only the parent project retains references to the issues and once they are gone, they are gone.</div><div><br /></div><div>There's not a clear solution for this. I suppose someone could whip up a service that would backup issues over GitHub's API. Of course, I would rather see this resolved on GitHub's side somehow.</div><div><br /></div><h2>Issues Can Devolve Into +1's</h2><div>Often people like to drop by issues of popular projects and do a little "me too" kind of reply. As a result you end up with quite long threads sometime with low signal to noise ratio. In addition you end up annoying the project maintainers. Ideally GitHub should allow people to +1 an issue simply by hitting a button somewhere. That would allow the maintainers to see where to put their efforts clearer.</div><div><br /></div><div><a href="https://chrome.google.com/webstore/detail/github-%201s/lddfkkebajnpiicnpfamebilmhamkeme">Github +1s Chrome plugin</a> solves this issue partially. It will collapse the +1 comments and show them on top of an issue. The issue subscribers will still receive mail when someone +1's an issue, though.</div><div><br /></div><h2>No Clear Way to Find the Living Fork</h2><div>As projects develop, sometimes the originating repository simply stops developing and a fork will pick up the torch. Currently there's no easy way to find it. Ideally GitHub would show the most notable forks at the root project page. I know there's network information but I feel it's a little hidden.</div><div><br /></div><h2>Conclusion</h2><div>I still like GitHub as a service and it's hard to imagine developing without it. I believe it could become significantly better with a little TLC here and there. Not all of these gripes are easy to fix. I do hope GitHub will continue improving as that would be in everyone's interest.</div>Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-3957805659283008002015-07-31T23:03:00.002+03:002015-07-31T23:03:36.368+03:00SurviveJS - Webpack and React v1.5 is Out!The book project keeps on progressing. It managed to attract <a href="https://github.com/Foxandxss">an editor</a>. You could say that sped things up considerably. It is very useful to have another pair of eyes to push you further and I think it shows in this release. We just reached an important milestone with <a href="http://survivejs.com/blog/survivejs-15/">v1.5 release</a>. The book is structurally much better and easier to approach. Get started by checking out <a href="http://survivejs.com/webpack_react/introduction/">the introduction</a>.Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-42271591893749778822015-07-13T11:18:00.000+03:002015-07-14T10:59:46.648+03:00On The Economics of Ebook PublishingAuthoring <a href="http://survivejs.com/">SurviveJS - Webpack and React</a> has taught me quite a few things. Being a first time author it mistakes have been inevitable. But in some ways I've gotten really lucky. For instance I've gained awesome contacts and received numerous external contributions that have helped to boost the quality of the book. On the flip side as the content is freely available it has been hard to capture value and actually make this financially viable for me. I go into more detail at a little post I wrote under title <a href="http://survivejs.com/blog/the-story-so-far/">SurviveJS - The Story So Far</a>. See also <a href="http://survivejs.com/blog/balance/">Balancing between open and closed publishing</a>.<br /><br /><h2>Publishing is Changing</h2>The world is changing in sense that it's very easy to publish something now. You can even skip traditional publishers altogether. Publishers such as <a href="https://leanpub.com/">Leanpub</a> provide a hefty royalty. For instance Leanpub takes 10% + $0.50 per transaction leaving the rest to you. With a big traditional publisher you may expect a 15% royalty. If you do the math you can see you would have to sell a lot of book using the traditional way to reach the same income.<br /><br />The downside of doing it all by yourself is that you'll have to take are of marketing, sales and editing. Leanpub just takes care of the annoying VAT bit. Especially given due to the EU VAT changes made at the beginning of this year things just became more complicated if you want to sell yourself. In effect you'll have to figure out where the book was bought and apply VAT based on that. It's better to let someone else to handle the bureaucracy at least when you are a small player.<br /><br />It is important to note that Leanpub allows you to publish through other channels. You could sell the book through Amazon or iBooks for instance. Leanpub should probably be thought as an experimentation platform. It will allow you to publish a work in progress book, gauge the interest and develop your book based on the feedback. There have been cases where a traditional publisher has picked up the finished book as it has been shown that there's significant demand for it. It is an excellent value proposition for them after all. Just pour money.<br /><br /><h2>Closed vs. Open Content</h2><div>One of the biggest questions when it comes to publishing is how to deal with the content and pricing. You could go the traditional way, keep it all closed and put it behind a paywall. This model has been proven to work. You will have to be strong at marketing and get the right message at the right people but it is doable.</div><div><br /></div><div>Another way, which I chose for my book, is to keep the content freely available. I did this through <a href="https://github.com/survivejs/webpack_react">GitHub</a>. The surprising benefit of this has been the influx of external contributions. You can definitely receive errata in a closed model as well but it feels like an open model is more conducive to collaboration. At times I have felt more like a shepherd rather than a author but I suppose that's a good thing.</div><div><br /></div><div>As the content is freely available it has enabled more people to get exposed to it. It is always heartwarming to see a positive mentions about the book. Unfortunately this hasn't translated into sales but at least I know I have made a difference for some.</div><div><br /></div><div>To encourage people actually to buy the book I decided to play on laziness. The digital version available through Leanpub has a minimal price set. I am not giving it out for free. You can definitely compile a digital version of your own but it's always a hassle. I'm afraid having this little hurdle in place isn't quite enough, though. The sales have been mediocre at best and if things continue this way, it's simply not financially feasible to keep it up.</div><div><br /></div><div>Setting the price of the Leanpub version to zero might not make much of a difference. Perhaps more people would get it through Leanpub then but I'm not seeing the point at the moment. I feel the minimum price of $15 feels fair for a solid book.</div><div><br /></div><div>As a Finn I cannot ask for donations directly due to legislation so there has to be some intermediate in between. Leanpub allows me to avoid breaking the law.</div><div><br /></div><h2>Conclusion</h2><div>Given the content is free to begin with the big question is why would you pay for something that's free? There are reasons why Kickstarter, Patreon and such work. Going the inverse way doesn't feel like a feasible approach at least based on the current experience.</div><div><br /></div><div>This is something I have to find a good answer for. I could start developing commercial content on top of free one for instance or go completely closed. If you have any insight on the topic, I'm all ears. There are likely models that can work but now it's looking a little grim.</div>Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-40823591457447888622015-06-27T20:21:00.002+03:002015-06-27T20:21:43.698+03:00SurviveJS - Webpack and React - Ebook Available<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-bqiHBooTRyg/VY7aRKlk48I/AAAAAAAACuk/aavMsqgNBCw/s1600/title_page_small.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="http://2.bp.blogspot.com/-bqiHBooTRyg/VY7aRKlk48I/AAAAAAAACuk/aavMsqgNBCw/s320/title_page_small.jpg" width="247" /></a></div>Just a quick heads up. The Webpack/React book I've been working on for a while is available now. Check out <a href="http://survivejs.com/">survivejs.com</a> for more information and free online version. I hope you find the book useful.<br /><br />So far it has been an interesting experience and some people have actually bought the book. I can only hope it's providing enough value to warrant that. Now the plan is to see how sales go and perhaps do some careful PR moves. This will determine how I will progress with possible further development.<br /><br />I wouldn't mind continuing this sort of work as it has provided a refreshing break from the daily grind. But there are certain financial realities to keep in mind. Anyway, we'll know more in a few weeks I think.Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.comtag:blogger.com,1999:blog-7507869444539635439.post-22243154826799530672015-06-04T22:30:00.000+03:002015-06-04T22:30:26.629+03:00Antwar 0.5.0 - Taking Static Site Generation to the Next LevelAs you might remember based on my earlier posts I'm currently working on a book about <a href="http://survivejs.com/">Webpack and React</a>. Knowing me you understand I like to do things the hard way. In this case it meant writing a static site generator for developing a site for said book.<br /><br />Given the generator, Antwar, has been developed using these technologies it has been time well spent. The project just reached a major milestone, 0.5.0. It's halfway there so to speak. It's already showing signs of usefulness and it can only get better.<br /><br />You should <a href="https://antwarjs.github.io/blog/antwar-050/">check out my post about the release</a> and our plans for the tool. My next personal goal is to adapt the tool to allow me to develop nice looking sites for various projects of mine. Eventually I should get this blog over there.Juho Vepsäläinenhttps://plus.google.com/115138649058841447903noreply@blogger.com