<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Håkan Fahlstedt</title>
    <description>The latest articles on DEV Community by Håkan Fahlstedt (@hfahlstedt).</description>
    <link>https://dev.to/hfahlstedt</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F268229%2Fb79ebfc5-7c94-4a04-b022-af09a8400e22.jpeg</url>
      <title>DEV Community: Håkan Fahlstedt</title>
      <link>https://dev.to/hfahlstedt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hfahlstedt"/>
    <language>en</language>
    <item>
      <title>Phil Haack made us do it</title>
      <dc:creator>Håkan Fahlstedt</dc:creator>
      <pubDate>Mon, 02 Dec 2019 21:07:37 +0000</pubDate>
      <link>https://dev.to/hfahlstedt/phil-haack-made-us-do-it-4fb4</link>
      <guid>https://dev.to/hfahlstedt/phil-haack-made-us-do-it-4fb4</guid>
      <description>&lt;p&gt;A while ago I visited the &lt;a href="https://www.cdc.dev"&gt;Caribbean Developer Conference&lt;/a&gt; in Punta Cana, Dominican Republic, with my colleagues. It's kind of a funny story how we ended up in that conference. We annually go to a developer conference somewhere in the world, and we were about to decide where to go this year. There were some different suggestions, and then one of my colleagues, a bit jokingly, told us that he found a conference in the Caribbean and that we should go there. A lot of us were positive, who wouldn't want to leave the cold and dark weather of Sweden and go to the Dominican Republic in October. But there were a couple of people that were a bit sceptical about the seriousness of us developers going to such a nice place for a conference. As a nice place can’t be a good place for a conference? Well, one of my colleagues found this &lt;a href="https://haacked.com/archive/2018/11/02/caribbean-developer-conf/"&gt;blogpost&lt;/a&gt; by Phil Haack addressing this “issue”. It seems we were not the only ones that was doubted when wanting to go to the Caribbean for a conference. &lt;/p&gt;

&lt;p&gt;Long story short, some of us went to the Caribbean, others went to Malmö, Sweden. Guess who went to a nice beach after each conference day? 😉&lt;/p&gt;

&lt;p&gt;So how was it then? Well, the TLDR; is “too good” 😉&lt;/p&gt;

&lt;p&gt;The longer version goes something like this: &lt;/p&gt;

&lt;p&gt;When I landed in Punta Cana I was met by an enormous line of people waiting to get through security. Apparently the computer system at the airport had a crash and therefore it was chaos. But this isn’t how it usually work, and I eventually got through. And sometime here the the weather started to really warm my body, but the hospitality of the organizers started to warm my heart even more. It started already at the airport where I was picked up by one of the organizers.&lt;/p&gt;

&lt;p&gt;The next thing to mention was the arrival at the resort. I've never been to something like this before. I actually started laughing when I finally got to my room (after walking through long corridors of restaurants and shops), because I have never seen something like this there was a big Jacuzzi in the middle of my room and the bathroom was bigger than some of the apartments I've lived in. Later I discovered all of the bars and restaurants, and they were really great, and all of this is included in the price.&lt;/p&gt;

&lt;p&gt;But back to the conference, I didn't have any doubts about the seriousness of the conference before I did go to it, but if I had had that, those doubts would be totally erased five minutes into the keynote (Phil Haack btw). I mean, if you have names like Scott Hanselman, Phil Haack, Jessica Deen and David Neal you're a pretty serious thing. So if you ever hear that argument again, send them to me and I'll set them straight.&lt;/p&gt;

&lt;p&gt;But it doesn't end here. The thing that warmed my heart the most was the focus on inclusion and diversity of the conference. It really shows that they want everyone to be able to go to the conference, especially local developer that doesn't have the same funding as us from more privileged countries. And instead of companies having a lot of swag, the organizers ask them to donate money to charity, which in my book is the right thing to do. There was also an interesting panel discussion about how to get more diversity into our industry. And all these things together really shows the passion of the organizers.&lt;/p&gt;

&lt;p&gt;So, if you have the possibility to go to the Caribbean Developer Conference I really, really recommend you to go. It is a great conference with great content, and as a bonus you get to go to the Caribbean, instead of some cold dark city in Europe.&lt;/p&gt;

</description>
      <category>conference</category>
      <category>caribbean</category>
    </item>
    <item>
      <title>YPSKA #16 lit-html</title>
      <dc:creator>Håkan Fahlstedt</dc:creator>
      <pubDate>Fri, 29 Nov 2019 00:27:56 +0000</pubDate>
      <link>https://dev.to/hfahlstedt/ypska-16-lit-html-4h48</link>
      <guid>https://dev.to/hfahlstedt/ypska-16-lit-html-4h48</guid>
      <description>&lt;p&gt;I really like code generation and therefore I need to use some form of templating engine, one that I like is &lt;a href="https://lit-html.polymer-project.org/"&gt;lit-html&lt;/a&gt;. lit-html differs from some of the common ones in the way that you write JavaScript that defines the templates, instead of having a special "templating-language". &lt;/p&gt;

&lt;p&gt;Go start using templates, to increase your productivity.&lt;/p&gt;

</description>
      <category>lithtml</category>
      <category>javascript</category>
      <category>codegeneration</category>
    </item>
    <item>
      <title>YPSKA #15 Taking a break</title>
      <dc:creator>Håkan Fahlstedt</dc:creator>
      <pubDate>Wed, 27 Nov 2019 22:56:09 +0000</pubDate>
      <link>https://dev.to/hfahlstedt/ypska-15-taking-a-break-4mal</link>
      <guid>https://dev.to/hfahlstedt/ypska-15-taking-a-break-4mal</guid>
      <description>&lt;p&gt;It could be that I didn't come up with something to write about today, but it is also important to take a break once in a while and focus on other things than technology. So go take a break today, and I'll be back tomorrow.&lt;/p&gt;

</description>
      <category>relax</category>
      <category>nostress</category>
    </item>
    <item>
      <title>YPSKA #15 Curl</title>
      <dc:creator>Håkan Fahlstedt</dc:creator>
      <pubDate>Tue, 26 Nov 2019 14:39:45 +0000</pubDate>
      <link>https://dev.to/hfahlstedt/ypska-15-curl-2eoc</link>
      <guid>https://dev.to/hfahlstedt/ypska-15-curl-2eoc</guid>
      <description>&lt;p&gt;&lt;a href="https://curl.haxx.se/"&gt;Curl&lt;/a&gt;, really? Well, I'm running out of topics that might not be that known, so I thought I'd recommend something that probably a large majority knows about. And I'm also a bit proud to come from the same country as the creator of curl, &lt;a href="https://daniel.haxx.se/"&gt;Daniel Stenberg&lt;/a&gt;. And finally, if there are junior developers reading this, it is possible that you never heard about curl before.&lt;/p&gt;

&lt;p&gt;Curl is a network protocol tool. You can make all kinds of requests with curl, http, ftp, pop3, imap and the not so much used anymore Gopher. It's basically a swiss army knife for protocols.&lt;/p&gt;

&lt;p&gt;So if you don't already have it installed already, go download it and start trying it out. You will find it useful.&lt;/p&gt;

</description>
      <category>curl</category>
      <category>networking</category>
      <category>http</category>
    </item>
    <item>
      <title>YPSKA #14 Pupeteer</title>
      <dc:creator>Håkan Fahlstedt</dc:creator>
      <pubDate>Mon, 25 Nov 2019 21:04:16 +0000</pubDate>
      <link>https://dev.to/hfahlstedt/ypska-14-4io3</link>
      <guid>https://dev.to/hfahlstedt/ypska-14-4io3</guid>
      <description>&lt;p&gt;&lt;a href="https://pptr.dev/"&gt;Puppeteer&lt;/a&gt; is a framework for automation of the Chrome browser. It usually is run headless (ie no user interface visible), but it can be configured to display the user interface. It’s a great tool for any form of automated testing of your website. It can automate any task that can be done by a user in Chrome browser. &lt;/p&gt;

&lt;p&gt;Why not include it in your website project?&lt;/p&gt;

</description>
      <category>headless</category>
      <category>node</category>
      <category>javascript</category>
      <category>chrome</category>
    </item>
    <item>
      <title>YPSKA #13 Rollup</title>
      <dc:creator>Håkan Fahlstedt</dc:creator>
      <pubDate>Sun, 24 Nov 2019 22:57:54 +0000</pubDate>
      <link>https://dev.to/hfahlstedt/ypska-12-rollup-3m12</link>
      <guid>https://dev.to/hfahlstedt/ypska-12-rollup-3m12</guid>
      <description>&lt;p&gt;I usually use Webpack when it comes to bundling etc for my Javascript project. But recently I've found an interest in &lt;a href="https://rollupjs.org/guide/en/"&gt;Rollup&lt;/a&gt;. It could be a future competitor of Webpack, as it's getting a bit of traction right now. So you might want to check it out. &lt;/p&gt;

&lt;p&gt;Even more time pressure today, therefore a very short text. See you tomorrow!&lt;/p&gt;

</description>
      <category>buildtool</category>
      <category>javascript</category>
      <category>rollup</category>
    </item>
    <item>
      <title>YPSKA #12 Immer</title>
      <dc:creator>Håkan Fahlstedt</dc:creator>
      <pubDate>Sat, 23 Nov 2019 22:51:20 +0000</pubDate>
      <link>https://dev.to/hfahlstedt/ypska-12-immer-5aje</link>
      <guid>https://dev.to/hfahlstedt/ypska-12-immer-5aje</guid>
      <description>&lt;p&gt;Immutability is kind of hard in JavaScript, at least it takes a bit of work to make it happen. &lt;/p&gt;

&lt;p&gt;To make it easier, there's of course a library for that, &lt;a href="https://github.com/immerjs/immer"&gt;Immer&lt;/a&gt;. Immer uses something called producers to update state and also keep that new state immutable. The basic idea is like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const newState = produce(oldState, draft =&amp;gt; {
   // modify state
});

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;So you pass in the old state and a function that takes a "draftState" and makes modifications to it. The returned state is really a read-only object produced by &lt;strong&gt;Object.freeze()&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you need immutability in your JavaScript/TypeScript, check out Immer.&lt;/p&gt;

&lt;p&gt;Less than ten minutes margin from missing a day in this series ;-)&lt;/p&gt;

</description>
      <category>state</category>
      <category>javascript</category>
      <category>immutability</category>
    </item>
    <item>
      <title>YPSKA #11 GROQ</title>
      <dc:creator>Håkan Fahlstedt</dc:creator>
      <pubDate>Fri, 22 Nov 2019 13:48:11 +0000</pubDate>
      <link>https://dev.to/hfahlstedt/ypska-11-groq-558</link>
      <guid>https://dev.to/hfahlstedt/ypska-11-groq-558</guid>
      <description>&lt;p&gt;So, have you ever ended up debugging what the h*ll is returned from your REST service? A large chunk of JSON? You need to know if a field is set in one of all the records? What would you say about having a query language that you can run in the terminal for that JSON?&lt;/p&gt;

&lt;p&gt;Have a look at &lt;a href="https://sanity-io.github.io/GROQ/"&gt;GROQ&lt;/a&gt;. GROQ stands for &lt;strong&gt;G&lt;/strong&gt;raph-&lt;strong&gt;R&lt;/strong&gt;elational &lt;strong&gt;O&lt;/strong&gt;bject &lt;strong&gt;Q&lt;/strong&gt;ueries, and is an open standard invented by &lt;a href="https://www.sanity.io/"&gt;Sanity, Inc&lt;/a&gt;. With GROQ you can write queries to find some specific data in your JSON-document. There's a nice introduction of GROQ &lt;a href="https://css-tricks.com/query-json-documents-in-the-terminal-with-groq/"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So if you ever end up going through a large JSON document do&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install -g groq-cli&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;instead.&lt;/p&gt;

</description>
      <category>json</category>
      <category>cli</category>
    </item>
    <item>
      <title>YPSKA #10 Runtypes</title>
      <dc:creator>Håkan Fahlstedt</dc:creator>
      <pubDate>Thu, 21 Nov 2019 19:42:06 +0000</pubDate>
      <link>https://dev.to/hfahlstedt/ypska-10-runtypes-5176</link>
      <guid>https://dev.to/hfahlstedt/ypska-10-runtypes-5176</guid>
      <description>&lt;p&gt;Tenth day in a row, phew... Almost missed this one, but here it is. &lt;br&gt;
If you are like me, scary thought maybe, and have fallen in love with TypeScript you might be feeling that the type checking would be nice to be present even at run time. Well, I got something for you, &lt;a href="https://github.com/pelotom/runtypes"&gt;Runtypes&lt;/a&gt;. With this library you can define, AND check at run time, types and more (ranges for numbers, null/undefined etc). I've for example been using it to verify the JSON-data received from REST services. &lt;/p&gt;

&lt;p&gt;You should probably use it with a bit of caution, so your project's performance won't be suffering. But giv it a try in some small and maybe critical part. &lt;/p&gt;

</description>
      <category>rest</category>
      <category>javascript</category>
    </item>
    <item>
      <title>YPSKA #9 Svelte</title>
      <dc:creator>Håkan Fahlstedt</dc:creator>
      <pubDate>Wed, 20 Nov 2019 07:23:51 +0000</pubDate>
      <link>https://dev.to/hfahlstedt/ypska-9-svelte-5emj</link>
      <guid>https://dev.to/hfahlstedt/ypska-9-svelte-5emj</guid>
      <description>&lt;p&gt;So you're building a new website? Time to choose framework? React, Angular or Vue? Why not try out &lt;a href="https://svelte.dev/"&gt;Svelte&lt;/a&gt;? In my opinion it looks very promising. It take a different approach than for instance React and Vue, instead of doing all the wiring at client-side it "compiles" your code into a more browser-digestible format at build time. This can have a great impact on performance. As a bonus, Svelte can also detect problems with your html at build time and notify you about that. &lt;/p&gt;

&lt;p&gt;There's a great &lt;a href="https://svelte.dev/tutorial/basics"&gt;tutorial&lt;/a&gt; to get started, so there's no reason for you not to dive into the Svelte world right now.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>svelte</category>
      <category>framework</category>
    </item>
    <item>
      <title>YPSKA #8 Headless CMS</title>
      <dc:creator>Håkan Fahlstedt</dc:creator>
      <pubDate>Tue, 19 Nov 2019 12:25:03 +0000</pubDate>
      <link>https://dev.to/hfahlstedt/ypska-8-headless-cms-4ile</link>
      <guid>https://dev.to/hfahlstedt/ypska-8-headless-cms-4ile</guid>
      <description>&lt;p&gt;As a natural evolution with both SPA-sites and JAM stack sites, headless CMS has started to gain traction. A headless CMS is basically WordPress without the UI. You use an API to access the pages and the UI to create/edit pages can be external. There's two main kinds of headless CMSs, API-based or Git-based, and this distinction mostly has with how you store the documents in your CMS. Either you use some kind of API or you just store the documents in a Git repository.&lt;/p&gt;

&lt;p&gt;As with yesterdays topic &lt;a href="https://dev.to/hfahlstedt/ypska-7-static-site-generators-33gj"&gt;Static Website Generators&lt;/a&gt;, there's a comprehensive &lt;a href="https://headlesscms.org/"&gt;list&lt;/a&gt; of available headless CMS products. So go ahead and try one out!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>YPSKA #7 Static site generators</title>
      <dc:creator>Håkan Fahlstedt</dc:creator>
      <pubDate>Mon, 18 Nov 2019 08:05:04 +0000</pubDate>
      <link>https://dev.to/hfahlstedt/ypska-7-static-site-generators-33gj</link>
      <guid>https://dev.to/hfahlstedt/ypska-7-static-site-generators-33gj</guid>
      <description>&lt;p&gt;Following up on yesterday's post about the &lt;a href="https://dev.to/hfahlstedt/ypska-6-jam-stack-o6f"&gt;JAM Stack&lt;/a&gt;, today I'm talking about static site generators. I've already mentioned one of these generators, &lt;a href="https://dev.to/hfahlstedt/ypska-5-next-js-1d04"&gt;Next.js&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Static site generators takes some definitions of a site and renders it into a static site that doesn't have any dynamic parts, i.e it is not dependent of a ASP.NET, node etc back ends. It could be run just out of basically any storage. &lt;/p&gt;

&lt;p&gt;A common scenario for this is a blog. You add posts in, for instance, a GitHub-repo, and then run the generator to add links etc to the newly created page. &lt;/p&gt;

&lt;p&gt;You usually crate new pages/blog posts using Markdown, a simplified mark up language to describe text layout (I'll probably do a post about that).&lt;/p&gt;

&lt;p&gt;There's a great site listing all kinds of different &lt;a href="https://www.staticgen.com/"&gt;static site generators&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Why don't you try out a site generator in your next project?&lt;/p&gt;

</description>
      <category>staticsitegeneration</category>
      <category>serversidegeneration</category>
      <category>jamstack</category>
    </item>
  </channel>
</rss>
