<?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: Johan Wigert</title>
    <description>The latest articles on DEV Community by Johan Wigert (@jwigert).</description>
    <link>https://dev.to/jwigert</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%2F200485%2Fad7f9862-83af-4150-97f6-15967b379977.jpeg</url>
      <title>DEV Community: Johan Wigert</title>
      <link>https://dev.to/jwigert</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jwigert"/>
    <language>en</language>
    <item>
      <title>My first game jam submission - js13kGames 2021</title>
      <dc:creator>Johan Wigert</dc:creator>
      <pubDate>Fri, 05 Nov 2021 06:00:00 +0000</pubDate>
      <link>https://dev.to/jwigert/my-first-game-jam-submission-js13kgames-2021-2ck6</link>
      <guid>https://dev.to/jwigert/my-first-game-jam-submission-js13kgames-2021-2ck6</guid>
      <description>&lt;p&gt;A game jam is a competition where participants try to make a video game from scratch within a limited time frame. js13kGames is a JavaScript game jam running once a year since 2012. A fun and extremely challenging component of the js13kGames competition is that the file size is limited to 13 kilobytes. The competition ran between mid-August and mid-September 2021, and in this blog post I’ll share my experiences from participating.&amp;lt;!--more--&amp;gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About js13kGames
&lt;/h2&gt;

&lt;p&gt;The competition is organized by game developer &lt;a href="https://end3r.com/"&gt;Andrzej Mazur&lt;/a&gt; from the indie game development studio &lt;a href="https://enclavegames.com/"&gt;Enclave Games&lt;/a&gt;. This year’s edition was the tenth, and the theme was “SPACE”. Most game jams have themes open to interpretation, and the js13kGames jam is no exception. The games submitted had different takes on the theme, ranging from keeping distance in public spaces to conquering new planets.&lt;/p&gt;

&lt;p&gt;Since the competition has a long history and many participants, the games can be submitted to compete in different categories. I submitted my game in the desktop category, which was the category with the most participants. In total across all categories, there were 223 games submitted.&lt;/p&gt;

&lt;h2&gt;
  
  
  My take on the theme
&lt;/h2&gt;

&lt;p&gt;I decided that I wanted to create a simplistic racing game and came up with the following story:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You are on a space mission and have landed on the moon. You’ve been exploring the moon with your moon buggy, but you’re running out of oxygen! Drive the moon buggy back to the lunar lander before you run out of oxygen while avoiding the rocks and collecting the stars. Will you make it back to the lunar lander in time?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I felt that it tied into the theme nicely and that it would be possible to implement the game within the time frame, and the extremely limited file size.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools and resources
&lt;/h2&gt;

&lt;p&gt;In my day job, I do some development with TypeScript. It would have been allowed to use TypeScript as long as the submitted code would have been the compiled JavaScript code. I, however, decided to keep things simple and use plain JavaScript.&lt;/p&gt;

&lt;p&gt;To get something up and running quickly, I decided to go for an established gaming library that had already been used by many previous participants in js13kGames. The library is &lt;a href="https://github.com/straker/kontra"&gt;kontra.js&lt;/a&gt;, and it is a lightweight JavaScript gaming micro-library, optimized for js13kGames. Since I hadn’t used kontra.js previously, I was happy to find that the &lt;a href="https://straker.github.io/kontra/"&gt;documentation&lt;/a&gt; was really good. I got started by going through a couple of tutorials and got up to speed quickly.&lt;/p&gt;

&lt;p&gt;To simplify the development and build process, I opted for &lt;a href="https://github.com/wil92/js13games-boilerplate"&gt;js13games-boilerplate&lt;/a&gt;. The project uses kontra.js, Webpack, and Sass. It has some nice features, like zipping up the game and checking the file size. I ended up providing a couple of small contributions to the project as well.&lt;/p&gt;

&lt;p&gt;When it came to graphics, I decided that I wanted to go for pixel art graphics. I decided to use &lt;a href="https://www.aseprite.org/"&gt;aseprite&lt;/a&gt;, which is a popular animated sprite editor and pixel art tool. I ended up creating four sprites: the moon buggy, the lunar lander, a rock, and a star. To compress the PNG files, I used the online service &lt;a href="https://tinypng.com/"&gt;TinyPNG&lt;/a&gt;. It helped me save about 1 KB.&lt;/p&gt;

&lt;p&gt;I wanted to find a nice font for the user interface and ended up using &lt;a href="https://github.com/darkwebdev/tinyfont.js"&gt;tinyfont.js&lt;/a&gt;. The project is described as the “tiniest possible pixel font for your JS games (&amp;lt;700b zipped, suitable for js13k)”. I think it looks great together with the pixel graphics style I went for.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ubOpvTwO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.developervoyage.com/assets/2021-11-05-my-first-game-jam-submission-js13kgames-2021/splash-screen.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ubOpvTwO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.developervoyage.com/assets/2021-11-05-my-first-game-jam-submission-js13kgames-2021/splash-screen.png" alt="Moon Buggy Racing splash screen" width="600" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The final piece of the puzzle was adding music and sound effects. I went with a very minimalistic tool called &lt;a href="https://github.com/xem/alphabet-piano"&gt;alphabet-piano&lt;/a&gt;, which was created by another js13kGames &lt;a href="https://js13kgames.com/entries/lossst-a-snake-in-space"&gt;participant&lt;/a&gt; for a previous jam.&lt;/p&gt;

&lt;h2&gt;
  
  
  Work process
&lt;/h2&gt;

&lt;p&gt;Many game jams only run for 24 to 72 hours, which is out of the question for me considering having a full-time job and a family. That js13kGames runs for a full month was a prerequisite for me being able to participate. I tried to spend about an hour per night on the game, and I think I ended up putting in about 20-30 hours in total. I tried to achieve one small task every night, and with a very limited game scope, I managed to finish on time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Feedback
&lt;/h2&gt;

&lt;p&gt;There is a rigorous feedback process in place for js13kGames. After all the games had been submitted, there was a three-week voting period. Only the participants in the game jam were allowed to vote. The voting took the form of duels, where two games were judged against each other on a number of criteria. To me, it felt like a very fair and fun voting process, and I ended up playing a lot of the other games submitted. Many games are truly amazing! I can hardly believe what can be achieved in only 13 kilobytes. One participant even created a &lt;a href="https://js13kgames.com/entries/q1k3"&gt;Quake clone&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Apart from the peer voting, there were also several experts who judged the games and provided feedback. My game received feedback from three experts.&lt;/p&gt;

&lt;p&gt;Lee Reilly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Had fun with this one - felt the difficulty settings were just right 👌🏼 Additional levels or repeat plays with more rocks / less time would be a neat addition. Very nicely done! &amp;lt;3&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Very positive in my view! With more time, I could definitely have put more effort into expanding the game with additional levels and more varied gameplay.&lt;/p&gt;

&lt;p&gt;Raf Mertens:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Appreciate the addition of a difficulty select! I think a great mechanic would be if you started with much less oxygen and had to collect the stars/oxygen as you go along to survive! It would make a great incentive to collect the stars. Maybe also a boost for the risk takers :) great job on the game though.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’m really happy about this feedback! I added the difficulty select after having had my wife play-test the game and dying too quickly. The suggestion for improving the game mechanic is also great.&lt;/p&gt;

&lt;p&gt;Michelle Mannering:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;love the backstory - 8 bit music! Love it - doesn’t appear to be working; there was nothing to drive on… only black screen. Tried in Chrome and Brave&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Great that the music was appreciated since I had some difficulties in implementing it! Regarding the black screen, it was by design and not a bug. However, I did consider making a background but ran out of time.&lt;/p&gt;

&lt;p&gt;The top 100 games in each category were ranked, but my game didn’t make it into the top 100 this year. I’m still happy with the feedback I received, and most of all I’m happy that I actually managed to finish the game in time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Play the game yourself!
&lt;/h2&gt;

&lt;p&gt;If you want to play the game yourself, please head over to the official game jam site:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://js13kgames.com/entries/moon-buggy-racing"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ILYkSzqd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.developervoyage.com/assets/2021-11-05-my-first-game-jam-submission-js13kgames-2021/moon-buggy-racing.png" alt="Moon Buggy Racing screenshot" width="600" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you would like to have a look at the source code, it can be viewed on &lt;a href="https://github.com/jwigert/moon-buggy-racing"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This was my first game jam participation, and I’m very happy that I decided to participate. The feedback I received was positive, and I really enjoyed creating my own game as well as playing the games submitted by the other participants.&lt;/p&gt;

&lt;p&gt;The js13kGames game jam is run very professionally, and I can definitely recommend participating next year! You should also try out some of the games! A good starting point is the list of &lt;a href="https://js13kgames.com/#winners"&gt;winners&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Happy game jamming!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post first appeared on the Developer Voyage blog at &lt;a href="https://www.developervoyage.com/2021/11/05/my-first-game-jam-submission-js13kgames-2021.html"&gt;https://www.developervoyage.com/2021/11/05/my-first-game-jam-submission-js13kgames-2021.html&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>js13kgames</category>
      <category>gamejam</category>
    </item>
    <item>
      <title>Why I prefer WYSIWYM for technical writing</title>
      <dc:creator>Johan Wigert</dc:creator>
      <pubDate>Wed, 22 Jan 2020 23:00:00 +0000</pubDate>
      <link>https://dev.to/jwigert/why-i-prefer-wysiwym-for-technical-writing-3a7o</link>
      <guid>https://dev.to/jwigert/why-i-prefer-wysiwym-for-technical-writing-3a7o</guid>
      <description>&lt;p&gt;Last month I switched my &lt;a href="https://www.developervoyage.com"&gt;blog&lt;/a&gt; from &lt;a href="https://wordpress.org"&gt;WordPress&lt;/a&gt; over to &lt;a href="https://jekyllrb.com"&gt;Jekyll&lt;/a&gt;. Jekyll is a static site generator, which transforms plain text files into a static website. I’ve also started writing a book using &lt;a href="https://www.latex-project.org"&gt;LaTeX&lt;/a&gt;, which is a document preparation system also using plain text. In this blog post, I’ll explain why I think the What You See Is What You Mean (&lt;a href="(https://en.wikipedia.org/wiki/WYSIWYM)"&gt;WYSIWYM&lt;/a&gt;) approach is preferable for technical writing, at least for me.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is WYSIWYM?
&lt;/h2&gt;

&lt;p&gt;According to &lt;a href="https://en.wikipedia.org/wiki/WYSIWYM"&gt;Wikipedia&lt;/a&gt;, WYSIWYM is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;a paradigm for editing a structured document. It is an adjunct to the better-known &lt;a href="https://en.wikipedia.org/wiki/WYSIWYG"&gt;WYSIWYG&lt;/a&gt; (What You See Is What You Get) paradigm, which displays the end result of a formatted document as it will appear on screen or in print — without showing the descriptive code underneath.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The Wikipedia article continues:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In a WYSIWYM editor, the user writes the contents in a structured way, marking the content according to its meaning, its significance in the document, and leaves its final appearance up to one or more separate style sheets. In essence, it aims to accurately display the contents being conveyed, rather than the actual formatting associated with it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now that we’ve covered the basics, let us look at two examples I’ve recent experience with.&lt;/p&gt;

&lt;h2&gt;
  
  
  The WordPress visual editor approach vs Markdown files and Jekyll
&lt;/h2&gt;

&lt;p&gt;When I started this blog about half a year ago, I opted for WordPress mainly due to its easy setup procedure and wide adoption. It felt like a safe bet. The writing experience hasn’t been all that great though. Some of the writing-related pain-points which lead me to switch from WordPress to a static site generator were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Formatting of source code: Since my blog is focused on my journey as a developer, I often write technical blog posts containing code samples. Formatting the source code has been a major headache, and I’ve tried several different WordPress plugins and approaches without finding a good solution.&lt;/li&gt;
&lt;li&gt;Image handling: Scaling of images and manual adjustments of the theme I’ve used for WordPress were necessary, but I still felt a lack of control of the layout of the images. I ended up installing and trying out several plugins without finding a fully satisfactory solution.&lt;/li&gt;
&lt;li&gt;Visual editor vs raw editor: WordPress has a visual editor as well as a raw HTML editor. I’ve often encountered issues when switching between the visual editor and the raw editor, were formatting issues difficult to resolve have occurred.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Being active on &lt;a href="https://github.com/jwigert"&gt;GitHub&lt;/a&gt;, I’ve lately often found myself editing &lt;a href="https://en.wikipedia.org/wiki/Markdown"&gt;Markdown&lt;/a&gt; files. I also use Markdown a lot in my day-job when writing technical documentation in &lt;a href="https://dev.azure.com"&gt;Azure DevOps&lt;/a&gt;. According to Wikipedia:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Markdown is a lightweight markup language with plain text formatting syntax. Its design allows it to be converted to many output formats&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I find Markdown much easier to write in than HTML. This motivated me to look into Jekyll, which is a static site generator originally developed by GitHub’s co-founder Tom Preston-Werner. It is the engine used for &lt;a href="https://pages.github.com"&gt;GitHub Pages&lt;/a&gt;. I write my blog posts in Markdown, and let Jekyll take care of the rest. It has made my workflow of writing blog posts much more pleasant, and all the paint-points mentioned above have been resolved.&lt;/p&gt;

&lt;p&gt;Some other advantages I’ve experienced as a side-effect of the switch to Jekyll are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reduction in attacks on my site: When using WordPress to run my blog, the site was attacked daily. A static site is much less interesting to hackers, and the number of attacks has gone down.&lt;/li&gt;
&lt;li&gt;Editor: With Jekyll I write all my posts in my favorite code editor &lt;a href="https://code.visualstudio.com"&gt;Visual Studio Code&lt;/a&gt;. There are a lot of useful extensions for grammar checks, spell checks and Markdown handling which makes my life a lot easier.&lt;/li&gt;
&lt;li&gt;Offline writing: Using WordPress, I wrote my blog posts directly on the server which made me dependent on an internet connection. I know that there are workarounds available to work offline with WordPress as well, but with Jekyll and Markdown I have a true “offline first” experience.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Microsoft Word / LibreOffice Writer vs LaTeX
&lt;/h2&gt;

&lt;p&gt;I hardly use Microsoft Word or similar programs like LibreOffice Writer these days. From my days as a university student, I remember a lot of frustration related to formatting issues, generation of table of contents, page numbering etc. I recently started writing a book, and I decided to look around for alternatives to the regular word processing programs. I started looking at using Markdown for my book project as well, but I wanted more control than I felt Markdown would be able to provide me with for such an ambitious undertaking as writing a book.&lt;/p&gt;

&lt;p&gt;I decided to give &lt;a href="https://www.latex-project.org"&gt;LaTeX&lt;/a&gt; a try. LaTeX is a document preparation system also using plain text. Writing in LaTeX, the writer uses markup tags to structure the document and apply styles to the text. A large part of the academic world uses LaTeX, and it is excellent at handling functionality related to cross-references and citations. LaTeX makes it easy to generate table of contents, importing program source files and having them formatted correctly for many different programming languages, generating a title page, and handling appendixes among other things. It takes a little bit of getting used to, but after a day or two, I was convinced that this was the ideal solution for me.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;The previously cited &lt;a href="https://en.wikipedia.org/wiki/WYSIWYM"&gt;Wikipedia article&lt;/a&gt; gives the following summary of the advantages of using WYSIWYM:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The main advantage of this system is the total separation of presentation and content: users can structure and write the document once, rather than repeatedly alternating between the two modes of presentation — an approach which comes with its own switch cost. And since the rendering of formatting is left to the export system, this also makes it easier to achieve consistency in design as well.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For me, the major difference between working in a WYSIWYM environment compared to a WYSIWYG environment is the sense of control. It just feels a lot more like the level of control I have when writing code. It seems to fit my software engineering mindset well. I hope that this post can inspire you to look into WYSIWYM environments, in case you aren’t already using them as well.&lt;/p&gt;

&lt;p&gt;Happy writing and happy coding!&lt;/p&gt;

</description>
      <category>writing</category>
      <category>latex</category>
      <category>jekyll</category>
      <category>markdown</category>
    </item>
    <item>
      <title>My two first conference talks</title>
      <dc:creator>Johan Wigert</dc:creator>
      <pubDate>Wed, 06 Nov 2019 20:05:49 +0000</pubDate>
      <link>https://dev.to/jwigert/my-two-first-conference-talks-2go7</link>
      <guid>https://dev.to/jwigert/my-two-first-conference-talks-2go7</guid>
      <description>&lt;p&gt;I held my two first conference talks earlier this week at the Swedish SAP user group conference &lt;a href="https://www.sapsa.se/event/impuls-2019/"&gt;SAPSA IMPULS 2019&lt;/a&gt;, and in this post I will share some of my experiences. SAPSA IMPULS is a yearly conference targeting people working with SAP solutions in the Nordics, and the event had more than 800 attendees this year. This was a two days event, and I was scheduled to hold two different presentations, one on each day of the conference. &lt;/p&gt;

&lt;h2&gt;Day 1 - a broader appeal&lt;/h2&gt;

&lt;p&gt;On the first day I held a presentation titled "&lt;a href="https://github.com/jwigert/sapsa-impuls-2019-jw/blob/master/Hur%20du%20h%C3%A5ller%20dig%20uppdaterad%20inom%20SAP-omr%C3%A5det%20med%20hj%C3%A4lp%20av%20openSAP.pdf"&gt;How to stay up-to-date within the SAP space with openSAP&lt;/a&gt;". &lt;a href="https://open.sap.com"&gt;openSAP&lt;/a&gt; is an excellent MOOC platform to stay current with the SAP space and acquire new skills. I explained the structure and advantages of using MOOCs in general and openSAP in particular, to expand my knowledge within SAP. I also shared my personal experiences attending about 30 openSAP courses.&lt;/p&gt;

&lt;p&gt;I was quite nervous before the talk, since I haven't really done any public speaking. After having rigged up my computer, there were still about ten minutes to wait for the planned starting time of my talk. I found these ten minutes the most nervous part of the talk, since I was just standing around waiting. Thankfully a former colleague of mine came into the room about five minutes before my talk was to start, and we engaged in some small-talk which helped me relax. Once I got started presenting, my nerves calmed down. There were seven parallel tracks as I was presenting, and my presentation attracted about 70 people. This meant that the room was full, but not crowded. After the presentation, several attendees came forward to discuss some questions they had and they also gave me some positive feedback. I think that the talk was generally well-received.&lt;/p&gt;

&lt;p&gt;Before holding my presentation, I had the opportunity to attend the key-note. This enabled me to tie the topic of the key-note back into my own presentation. The key-note was mainly about customer experiences and experience management. Since there is currently a course on the topic on openSAP, &lt;a href="https://open.sap.com/courses/xm1"&gt;The Power of Experience Management&lt;/a&gt;, I referenced this in my presentation. Even though that this was just a small detail, I still think that it was a nice bridge between the key-note and my presentation.&lt;/p&gt;

&lt;p&gt;I was also able to attend a few other sessions before I held my presentation. This made me realize that I had completely overlooked the fact that I should have included a slide presenting the organization I work for in my presentation. I was able to correct this mistake in the break before my presentation.&lt;/p&gt;

&lt;h2&gt;Day 2 - the technical niche talk&lt;/h2&gt;

&lt;p&gt;On the second day, I held a talk titled "&lt;a href="https://github.com/jwigert/sapsa-impuls-2019-jw/blob/master/F%C3%B6rb%C3%A4ttra%20kvaliteten%20p%C3%A5%20din%20ABAP-kod%20med%20hj%C3%A4lp%20av%20%C3%B6ppen%20k%C3%A4llkod-verktyg.pdf"&gt;Improving your ABAP code quality with open-source tools&lt;/a&gt;". The talk was about how we have improved our code quality through the use of open-source tools at the organization where I work. The tools I explained and demonstrated are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/SAP/styleguides"&gt;SAP Style guides&lt;/a&gt;: Clean coding recommendations for ABAP&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/larshp/abapOpenChecks"&gt;abapOpenChecks&lt;/a&gt;: Checks for SAP Code Inspector&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/larshp/abapGit"&gt;abapGit&lt;/a&gt;: Git client for ABAP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since the session was only 20 minutes long, and I had a lot of material to cover, the talk felt a bit rushed. I feel very comfortable with the topic I presented, which probably made me talk a bit more than during my rehearsals of the talk. I felt much more relaxed than on day 1, most likely since the first talk was well received and I had already received positive feedback.&lt;/p&gt;

&lt;p&gt;In retrospect, the talk might have been a little too technical for the audience of this conference. However, I still had about 20-25 people showing up. I was approached after this talk with some interesting comments and questions, so even though it was more of a niche talk, I'm happy that I gave it. I also learned a lot as I was preparing for the talk.&lt;/p&gt;

&lt;h2&gt;Key takeaways&lt;/h2&gt;

&lt;p&gt;I'm happy to have participated in the conference and to have shared my experiences and knowledge through the two talks. It was a learning experience both when it comes to the subjects I presented as well as regarding the whole process of writing presentation proposals, preparing and finally delivering a talk.&lt;/p&gt;

&lt;p&gt;Some of my takeaways are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start preparing the talks early. I fine-tuned my talks over a period of about two months, and still ended up doing last-minute changes.&lt;/li&gt;
&lt;li&gt;Ask someone to review your presentation. I asked my manager as well as my colleagues to review the presentations, and this gave me some valuable feedback.&lt;/li&gt;
&lt;li&gt;Rehears, rehears, rehears. I practiced my talks alone as well as in front of my wife and kids, and it was important for discovering transitions in the presentations which weren't smooth enough as well as practicing my presentation skills.&lt;/li&gt;
&lt;li&gt;Try to engage in small-talk and use the opportunity to network ahead of a presentation. This helped me shift into a more talkative mode and made me more relaxed.&lt;/li&gt;
&lt;li&gt;People want to hear your story. Both of my presentations contained personal stories about why the topics were important to me, and how they helped me to be successful in real-world situations. This made the presentations as well as me as a presenter easier to relate to.&lt;/li&gt;
&lt;li&gt;Attend the key-note, so that you can relate to it in your own presentation if relevant.&lt;/li&gt;
&lt;li&gt;Attend other sessions to see how the other presenters are presenting. This helped me fine-tune my presentation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are considering submitting an abstract to a conference, just do it! It's a fun learning experience!&lt;/p&gt;

</description>
      <category>abap</category>
      <category>learning</category>
      <category>conferencetalks</category>
    </item>
    <item>
      <title>Grace Murray Hopper – A computer pioneer</title>
      <dc:creator>Johan Wigert</dc:creator>
      <pubDate>Thu, 22 Aug 2019 05:30:28 +0000</pubDate>
      <link>https://dev.to/jwigert/grace-murray-hopper-a-computer-pioneer-11an</link>
      <guid>https://dev.to/jwigert/grace-murray-hopper-a-computer-pioneer-11an</guid>
      <description>&lt;p&gt;Grace Hopper was a computer pioneer and one of the first programmers. I just finished reading the book "Grace Murray Hopper: Working to create the future" by Carl J Schneider, and I'd like to share some of my takeaways with you.&lt;/p&gt;

&lt;h2&gt;Early life&lt;/h2&gt;

&lt;p&gt;Grace was born in New York City in 1906, well ahead of the computerization of the world. From a young age, she was an avid learner with an affinity for mathematics. In 1928 she graduated from Vassar College with a B.A. in mathematics and physics. Six years later she earned a Ph.D. in mathematics and mathematical physics at Yale. This was a rare accomplishment for a woman back in those days.&lt;/p&gt;

&lt;p&gt;Even though she was very strong in theoretical matters, she was always looking for practical applications of her knowledge. As a teacher, she invested a lot of effort into showing her students how the theories she taught could be used to solve everyday problems.&lt;/p&gt;

&lt;p&gt;One of my favorite quotes of the book is:&lt;/p&gt;

&lt;blockquote class="wp-block-quote"&gt;
&lt;p&gt;"I will never stop learning, because I have an insatiable curiosity. People who don't keep on learning, die."&lt;/p&gt;
&lt;cite&gt;Grace Hopper&lt;/cite&gt;
&lt;/blockquote&gt;

&lt;h2&gt;The Mark computers&lt;/h2&gt;

&lt;p&gt;During World War II, Grace joined the U.S. Navy. The first order she received in 1944 was to join Commander &lt;a href="https://en.wikipedia.org/wiki/Howard_H._Aiken"&gt;Howard Aiken&lt;/a&gt;, Navy Bureau of Ordnance Computation Project, Harvard University, whose team was working on the large-scale digital computer &lt;a href="https://en.wikipedia.org/wiki/Harvard_Mark_I"&gt;Mark I&lt;/a&gt;. &lt;/p&gt;

&lt;blockquote class="wp-block-quote"&gt;
&lt;p&gt;"I always loved a good gadget. When I met Mark I, it was the biggest, fanciest gadget I'd ever seen. I had to find out how it worked."&lt;/p&gt;
&lt;cite&gt;Grace Hopper&lt;/cite&gt;
&lt;/blockquote&gt;

&lt;p&gt;Grace was one of the programmers who worked on the computer. The programs created by the Harvard team were used to calculate tables to help naval gunners in aiming and for other military applications.&lt;/p&gt;

&lt;p&gt;When Grace was working on troubleshooting the Mark II computer, she carried out the first "debugging" session in computer history. She removed a moth from the computer with tweezers after having found the bug with her purse mirror. As a modern-day programmer, I'm happy that I never have to debug at such a low level.&lt;/p&gt;

&lt;h2&gt;Commercial computing&lt;/h2&gt;

&lt;p&gt;In 1949 Grace joined the Eckert-Mauchly Corporation to work on the &lt;a href="https://en.wikipedia.org/wiki/UNIVAC"&gt;UNIVAC&lt;/a&gt;. This computer was developed for commercial applications, and was 1,000 times faster than the Mark I. Grace was looking for commercial applications of the computer by asking the questions "Can you find a way to make the computer do what you're doing now by hand?" And, "Now we know we have this powerful thing here, what new problem could be solved with this?"&lt;/p&gt;

&lt;p&gt;There weren't many programmers around at this time in history, and Grace recruited her programmers from a pool of people who liked so solve crossword puzzles and read mystery stories. If she was able to identify problem-solving capabilities in them, she was sure that she would be able to teach them how to program.&lt;/p&gt;

&lt;p&gt;In 1952, Grace was frustrated by the error-prone process of copying certain blocks of code manually. To avoid the copy-paste errors the programmers were repeatedly doing, she encouraged them to put the commonly used blocks of code into a shared library. She went on to create a program to translate the blocks of code into machine language, effectively creating the first compiler.&lt;/p&gt;

&lt;p&gt;Grace wanted to create a more high-level compiler and a programming language using English words. In 1957, the efforts of Grace and her team resulted in &lt;a href="https://en.wikipedia.org/wiki/FLOW-MATIC"&gt;FLOW-MATIC&lt;/a&gt;, which was the first English-like programming language. The language helped the UNIVAC understand twenty English statements. FLOW-MATIC had a strong influence on the development of &lt;a href="https://en.wikipedia.org/wiki/COBOL"&gt;COBOL&lt;/a&gt;, which resulted in Grace being named "the grand-mother of COBOL".&lt;/p&gt;

&lt;h2&gt;Final thoughts&lt;/h2&gt;

&lt;p&gt;Grace Hopper was very influential as one of the first programmers of the world. She also helped to widen the areas of application of computers. I found her story to be inspirational, and I recommend you to familiarize yourself with her achievements during the child-hood of computing. She had an exploratory mindset and a liberal management style. I'd like to end with the following quote:&lt;/p&gt;

&lt;blockquote class="wp-block-quote"&gt;
&lt;p&gt;"Liberate what we need. Set it free. It's easier to apologize after you do something than to ask permission to do it." &lt;/p&gt;
&lt;cite&gt;Grace Hopper&lt;/cite&gt;
&lt;/blockquote&gt;



</description>
      <category>computerhistory</category>
      <category>gracehopper</category>
    </item>
    <item>
      <title>How you can stay up-to-date through MOOCs</title>
      <dc:creator>Johan Wigert</dc:creator>
      <pubDate>Thu, 15 Aug 2019 18:59:22 +0000</pubDate>
      <link>https://dev.to/jwigert/how-you-can-stay-up-to-date-through-moocs-4a5n</link>
      <guid>https://dev.to/jwigert/how-you-can-stay-up-to-date-through-moocs-4a5n</guid>
      <description>&lt;p&gt;In this post, I'll share with you how you can use MOOCs to stay up-to-date with your field and acquire new skills. I'll also share some of my experiences after having completed about 30 MOOCs in the last year and a half.&lt;/p&gt;

&lt;h2&gt;What is a MOOC?&lt;/h2&gt;

&lt;p&gt;Let us start with the basics. According to Wikipedia, MOOC is defined as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A massive open online course (MOOC /muːk/) is an online course aimed at unlimited participation and open access via the web.&lt;/p&gt;
&lt;cite&gt;&lt;a href="https://en.wikipedia.org/wiki/Massive_open_online_course" rel="noopener noreferrer"&gt;Wikipedia&lt;/a&gt;&lt;/cite&gt;
&lt;/blockquote&gt;

&lt;p&gt;MOOCs are a kind of distance education where you can consume the learning content whenever and wherever it suits you. A MOOC is typically built with the following building blocks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Video lectures&lt;/li&gt;
&lt;li&gt;Self-tests&lt;/li&gt;
&lt;li&gt;Assignments (weekly / finals)&lt;/li&gt;
&lt;li&gt;Collaborative projects&lt;/li&gt;
&lt;li&gt;Discussion forums&lt;/li&gt;
&lt;li&gt;Downloads (videos, slides, and transcripts)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The following mind-map by &lt;a href="https://commons.wikimedia.org/wiki/File:MOOC_poster_mathplourde.png" rel="noopener noreferrer"&gt;Mathieu Plourde&lt;/a&gt; (Mathplourde on Flickr) [&lt;a href="https://creativecommons.org/licenses/by/2.0" rel="noopener noreferrer"&gt;CC BY 2.0&lt;/a&gt;] gives a nice overview of the concept and the flexibility of its implementation:&lt;/p&gt;

&lt;p&gt;&lt;a title="Mathieu Plourde (Mathplourde on Flickr) [CC BY 2.0 (https://creativecommons.org/licenses/by/2.0)], via Wikimedia Commons" href="https://commons.wikimedia.org/wiki/File:MOOC_poster_mathplourde.png" rel="noopener noreferrer"&gt;&lt;img alt="MOOC poster mathplourde" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2F8%2F87%2FMOOC_poster_mathplourde.png%2F512px-MOOC_poster_mathplourde.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;My first contact with MOOCs&lt;/h2&gt;

&lt;p&gt;I stumbled into the world of MOOCs in February 2018 after having found the MOOC platform of &lt;a href="https://www.sap.com/" rel="noopener noreferrer"&gt;SAP&lt;/a&gt;, named &lt;a href="https://open.sap.com/" rel="noopener noreferrer"&gt;openSAP&lt;/a&gt;. SAP was offering a &lt;a href="https://open.sap.com/courses/wtc1/" rel="noopener noreferrer"&gt;technical course&lt;/a&gt; on test-driven development in the programming language ABAP, which I enrolled for. The course was great, and it changed how I keep up to date as a developer.&lt;/p&gt;

&lt;h2&gt;What can you use MOOCs to learn?&lt;/h2&gt;

&lt;p&gt;The MOOCs I've attended mainly fall into the following three categories:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Technical skills&lt;/li&gt;
&lt;li&gt;Thought leaders&lt;/li&gt;
&lt;li&gt;New products and solutions&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Technical skills&lt;/h3&gt;

&lt;p&gt;Being a developer, I always look for material to expand and improve my technical skills. This can be anything from learning a new programming language or a test framework to learning about a new NoSQL database.&lt;/p&gt;

&lt;p&gt;The courses I've attended in this category typically consist of a lot of coding exercises, which for me personally is a very good way of learning. MOOCs that fall into this category are typically the most work-intensive.&lt;/p&gt;

&lt;h3&gt;Thought leaders&lt;/h3&gt;

&lt;p&gt;As a developer, it is important to widen your perspective and be aware of greater trends in technology and society. Attending MOOCs within this space helps you to keep up with new business practices, and the lecturers are typically business and academic thought leaders as well as top politicians.&lt;/p&gt;

&lt;h3&gt;New products and solutions&lt;/h3&gt;

&lt;p&gt;When working with enterprise software, you as a developer will often be asked by your customers about new products and solutions which they have heard about. Even if you have not yet had the opportunity to do hands-on work with these products and solutions, I recommend attending MOOCs within this area to at least have an overview of which scenarios the solutions are applicable to.&lt;/p&gt;

&lt;h2&gt;When and how I consume MOOCs&lt;/h2&gt;

&lt;p&gt;The major advantage of MOOCs over traditional classroom training as I see it is that you can consume the course content whenever it suits your personal schedule.&lt;/p&gt;

&lt;p&gt;I have a daily subway commute of about 45 minutes in total. As long as I can find a seat, I think that this is an ideal opportunity to use MOOCs. The MOOCs I've attended typically have units with a length of approximately 20 minutes, which means that I can squeeze in two units a day, just going to work and back. I find this to be a much more productive use of my time than just scrolling through social media posts or playing games on my phone.&lt;/p&gt;

&lt;p&gt;The assignments typically require at least an hour of focused work and are not ideal for my commute. I typically do the assignments when the rest of the family is sleeping.&lt;/p&gt;

&lt;h2&gt;Nice side-effects of attending MOOCs&lt;/h2&gt;

&lt;p&gt;Apart from the learning itself, which is, of course, the most important part of attending MOOCs, I've encountered the following nice side-effects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Certificates and badges to put on your LinkedIn profile: If you receive a certificate or a badge, make sure to put it on your LinkedIn profile. Since the words of the MOOC are searchable, people looking to connect with people with a certain skill will find you through these search terms.&lt;/li&gt;
&lt;li&gt;Free books: In one MOOC I attended, the teachers were publishing a book on the topic simultaneously to bringing out the MOOC. Since I was one of the top 30 students of the course, I received a free copy of the book in hardcover.&lt;/li&gt;
&lt;li&gt;Discount coupons: Several MOOCs I've attended have given me a discount coupon at the end of the course. The coupons have been for books, conferences and paid e-learnings.&lt;/li&gt;
&lt;li&gt;Invitations to conferences: Just the other day, I received an invitation to attend a conference on a topic for which I had attended a MOOC. I'd still need to pay for the conference, but I wouldn't have been aware of the conference if I hadn't attended the MOOC.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Potential downsides to attending MOOCs&lt;/h2&gt;

&lt;p&gt;The potential downsides I've encountered when attending MOOCs are the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Opportunity cost: When attending a MOOC, there is an opportunity cost. I've noticed that I've read fewer books when attending MOOCs due to time constraints. Make sure that the courses you are attending are really worth the time investment you are making.&lt;/li&gt;
&lt;li&gt;Marketing material in disguise: A few of the MOOCs I've attended have been little more than sales pitches and marketing material from a software vendor trying to push a new product. This becomes obvious at an early stage, so don't hesitate to drop out of a course with these characteristics. I've come across these courses mainly in the new products and solutions category.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;MOOC platforms&lt;/h2&gt;

&lt;p&gt;There are a lot of MOOC platforms out there. I just want to give you a few examples to get you started. If you have any recommendations, please feel free to share them in the comments section below.&lt;/p&gt;

&lt;h3&gt;freeCodeCamp&lt;/h3&gt;

&lt;p&gt;At &lt;a href="https://www.freecodecamp.org/" rel="noopener noreferrer"&gt;freecodecamp.org&lt;/a&gt; you can attend an online coding boot camp completely free of charge. The focus is mainly on front end web development with courses on topics such as responsive web design, JavaScript, front end libraries, and APIs. There are a lot of hands-on coding exercises available.&lt;/p&gt;

&lt;h3&gt;openSAP&lt;/h3&gt;

&lt;p&gt;At &lt;a href="https://open.sap.com/" rel="noopener noreferrer"&gt;open.sap.com&lt;/a&gt; there are hundreds of courses available. Many of them are focused on SAP specific solutions and technologies, but there are also a lot of general courses available. Some examples are courses on Java, Snap!, design thinking, digital transformation, and AI. The courses are offered free of charge to anyone interested.&lt;/p&gt;

&lt;h3&gt;Udacity&lt;/h3&gt;

&lt;p&gt;At &lt;a href="https://www.udacity.com/" rel="noopener noreferrer"&gt;udacity.com&lt;/a&gt; you can acquire tech skills within different areas, like programming and development, AI, cloud computing, and data science. I've only taken a JavaScript course at Udacity, and am not all too familiar with the platform.&lt;/p&gt;

&lt;h2&gt;Final words&lt;/h2&gt;

&lt;p&gt;I hope you enjoyed reading my thoughts and experiences around the topic of MOOCs. Let me know your thoughts in the comment section. I plan to write a follow-up post with my favorite MOOCs attended so far. Happy learning! &lt;/p&gt;

</description>
      <category>learning</category>
      <category>mooc</category>
      <category>opensap</category>
    </item>
    <item>
      <title>Computer Science concepts you can learn from block-based programming</title>
      <dc:creator>Johan Wigert</dc:creator>
      <pubDate>Thu, 01 Aug 2019 12:37:06 +0000</pubDate>
      <link>https://dev.to/jwigert/computer-science-concepts-you-can-learn-from-block-based-programming-3a0i</link>
      <guid>https://dev.to/jwigert/computer-science-concepts-you-can-learn-from-block-based-programming-3a0i</guid>
      <description>&lt;p&gt;I have signed up to volunteer for the Swedish nonprofit organization &lt;a href="https://www.kodcentrum.se"&gt;Kodcentrum&lt;/a&gt; this autumn. Kodcentrum introduces kids to programming and digital creation free-of-charge. We will be using &lt;a href="https://scratch.mit.edu/"&gt;Scratch&lt;/a&gt; in the coding labs, and I've played around with Scratch previously on a couple of occasions.&lt;/p&gt;

&lt;h2&gt;
  
  
  A course on Snap!
&lt;/h2&gt;

&lt;p&gt;To prepare myself for the volunteering, I signed up for the MOOC &lt;a href="https://open.sap.com/courses/snap1-de"&gt;Programmieren mit Snap!&lt;/a&gt;, which was offered free-of-charge by &lt;a href="https://open.sap.com/"&gt;openSAP&lt;/a&gt; this summer. &lt;a href="https://snap.berkeley.edu/about"&gt;Snap!&lt;/a&gt; is an extended re-implementation of Scratch and the two languages as very similar. The user creates programs in a visual drag-and-drop environment.&lt;/p&gt;

&lt;p&gt;The course took about ten hours to complete, and I'm impressed by how much content and how many fundamental as well as more advanced computer science concepts the instructors were able to explain and demonstrate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Concepts covered
&lt;/h2&gt;

&lt;p&gt;Let's have a brief look at the concepts covered.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fundamentals
&lt;/h3&gt;

&lt;p&gt;A lot of the fundamentals were illustrated by creating images and art. The first example illustrated positioning, loops, and visual effects by creating a digital wildflower meadow.&lt;/p&gt;

&lt;p&gt;The basics of color theory were explained in an exercise to create geometrical forms of different types and colors. I found it interesting that Snap! uses &lt;a href="https://en.wikipedia.org/wiki/HSL_and_HSV"&gt;HSV&lt;/a&gt; (hue, saturation, value) instead of the &lt;a href="https://en.wikipedia.org/wiki/RGB_color_model"&gt;RGB&lt;/a&gt; color model, which I'm more familiar with. According to &lt;a href="https://en.wikipedia.org/wiki/HSL_and_HSV"&gt;Wikipedia&lt;/a&gt;, HSV was "designed in the 1970s by computer graphics researchers to more closely align with the way human vision perceives color-making attributes."&lt;/p&gt;

&lt;p&gt;The use of variables was introduced in the context of for-loops, and the outcome was spirals of different sizes and forms. At a later stage, lists were introduced for grouping several related values.&lt;/p&gt;

&lt;h3&gt;Advanced concepts&lt;/h3&gt;

&lt;p&gt;The principle of &lt;a href="https://en.wikipedia.org/wiki/Parallel_computing"&gt;parallel computing&lt;/a&gt; was introduced by letting the student create a simple drawing program, in which the user creates two mirrored images by having two scripts executing in parallel.&lt;/p&gt;

&lt;p&gt;Messaging between objects was introduced by creating a simple game where a character navigates through a maze. The objects communicated when something happened in the &lt;a href="https://en.wikipedia.org/wiki/Game_programming#Game_structure"&gt;game loop&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://en.wikipedia.org/wiki/Sierpi%C5%84ski_triangle"&gt;Sierpiński triangle&lt;/a&gt; was created by applying a &lt;a href="https://en.wikipedia.org/wiki/Chaos_game"&gt;chaos game&lt;/a&gt; method. &lt;a href="https://en.wikipedia.org/wiki/Fractal"&gt;Fractals&lt;/a&gt; and &lt;a href="https://en.wikipedia.org/wiki/Emergence"&gt;emergence&lt;/a&gt; were also introduced. There are really a lot of interesting graphical representations which can be generated by a very small amount of code.&lt;/p&gt;

&lt;p&gt;Snap! can be used for more advanced use cases by importing libraries. A neat example was the use of a &lt;a href="https://en.wikipedia.org/wiki/Speech_synthesis"&gt;text-to-speech&lt;/a&gt; library for generating and reading out loud different newspaper headlines. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Cloning_(programming)"&gt;Cloning&lt;/a&gt; was used to create somewhat psychedelic graphical animations.&lt;/p&gt;

&lt;p&gt;As you see, a lot of ground was covered already, but no computer science programming introduction is complete without introducing the student to &lt;a href="https://en.wikipedia.org/wiki/Recursion_(computer_science)"&gt;recursion&lt;/a&gt;. I really enjoyed this part of the course, and the output was a tree image with very detailed branches.&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;I was familiar with most of the concepts covered in the course, but some of the graphical applications were new to me since I don't do any graphics programming in my day job. I very much enjoyed the course, and I'm impressed with the instructors as well as with what can be achieved in a block-based programming language.&lt;/p&gt;

&lt;p&gt;If you have children, and you want to introduce them to programming, I think that Snap! and Scratch are both excellent choices. They are most likely also great introductory tools for adults who want to get an initial idea of what programming is all about.&lt;/p&gt;

&lt;p&gt;I highly recommend the course, which is available both in &lt;a href="https://open.sap.com/courses/snap1-de"&gt;German&lt;/a&gt; and in &lt;a href="https://open.sap.com/courses/snap1"&gt;English&lt;/a&gt;. I have only taken the German version of the course, so that is what this blog post is based on. You can sign up for any one of the courses free-of-charge. Happy coding!&lt;/p&gt;

</description>
      <category>blockbased</category>
      <category>computerscience</category>
      <category>mooc</category>
      <category>opensap</category>
    </item>
  </channel>
</rss>
