<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Timo Helmke</title>
    <description>- PHP Backend Developer specialized on Shopware &lt;br /&gt; - working in eCommerce for 15+ years &lt;br /&gt; - blogging about Shopware, eCommerce and web development in general &lt;br /&gt; - collector of elePHPants
</description>
    <link>https://blog.timo-helmke.de/</link>
    <atom:link href="https://blog.timo-helmke.de/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Tue, 07 Mar 2023 09:41:14 +0000</pubDate>
    <lastBuildDate>Tue, 07 Mar 2023 09:41:14 +0000</lastBuildDate>
    <generator>Jekyll v3.4.0</generator>
    
      <item>
        <title>Kellerkinder HOCKEthon: Personal recap</title>
        <description>&lt;p&gt;&lt;img src=&quot;/assets/Hockethon_2022_1580x600.jpeg&quot; alt=&quot;HOCKEthon logo&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Disclaimer: I work for the Kellerkinder, so this post might be slightly biased.&lt;/p&gt;

&lt;p&gt;Update: The &lt;a href=&quot;https://www.kellerkinder.de/hockethon-der-shopware-hackathon-in-hockenheim&quot;&gt;next HOCKethon&lt;/a&gt; is already announced. Register now!&lt;/p&gt;

&lt;p&gt;Last weekend, from 13.05. to 15.05.2022, the first HOCKEthon took place. The event is a shopware themed hackathon organised by the &lt;a href=&quot;https://www.kellerkinder.de/&quot;&gt;Kellerkinder&lt;/a&gt; in Hockenheim. The Kellerkinder is a company full of nerds specialized on shopware backend development and loves working with the community, therefore organizing an event like this was the next natural step after organizing several meetups and internal hackathons.&lt;/p&gt;

&lt;p&gt;The event has been planned from the beginning to target experienced developers to just deep dive into code and put things to the test and have a platform where everyone is more or less on the same level to create a group of people that really know what they are talking about and love to share things on a high technical level.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/hockethon-may-2022-topic-moderation.jpeg&quot; alt=&quot;Topic moderation&quot; /&gt;
On the first day we started with throwing all the topics into the ring that we thought would be interesting to tackle. Everyone could throw in things to personally work on and search for help or just drop a topic to get others motivated to work on.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/hockethon-may-2022-topic-discussion.jpeg&quot; alt=&quot;Topic discussion&quot; /&gt;
After we found a whole lot of topics everyone had some time to discuss the topics, talk to other people and look for allies to work on one of the proposed topics. After that everyone had to pick their most favorite project to get started with which concluded the first list of topics and teams.
&lt;img src=&quot;/assets/hockethon-may-2022-topics.jpg&quot; alt=&quot;Final topics&quot; /&gt;
The final topic list contained:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Property filters via ElasticSearch&lt;/li&gt;
  &lt;li&gt;Nested Rules&lt;/li&gt;
  &lt;li&gt;Implement HTTP cache into the storefront API&lt;/li&gt;
  &lt;li&gt;Implement a Read-optimized Storage for product pages&lt;/li&gt;
  &lt;li&gt;Manage visibility of product variations by sales channel&lt;/li&gt;
  &lt;li&gt;Inline editing for layout assignments&lt;/li&gt;
  &lt;li&gt;Optimize/Fix translation fallbacks in administration&lt;/li&gt;
  &lt;li&gt;Limit product number uniqueness to sales channel&lt;/li&gt;
  &lt;li&gt;Reduce cart serializing size&lt;/li&gt;
  &lt;li&gt;Elastic Search in administration&lt;/li&gt;
  &lt;li&gt;Enhance Shopware-CLI-Sync&lt;/li&gt;
  &lt;li&gt;Dev tooling&lt;/li&gt;
  &lt;li&gt;Assign (product) images per sales channel&lt;/li&gt;
  &lt;li&gt;Implement custom slots in CMS elements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quite a long list, especially considering the event was rather small with about 15 people. But it seems that the event put the right people together and the beginning already showed how highly motivated everyone was.&lt;/p&gt;

&lt;p&gt;Topics founds, teams found: Let’s start hacking! The first day was more or less bound to the formed teams, but nevertheless the teams also helped each other, discussed stuff, asked for opinions and everyone was happy to ask for help or help others. It was just such a nice atmosphere.
&lt;img src=&quot;/assets/hockethon-may-2022-day2-kickoff.jpeg&quot; alt=&quot;Kick off day 2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The second day started with a small recap, everybody shortly shared their progress, topics were checked off if done, new groups found, old topics deepened.&lt;/p&gt;

&lt;p&gt;Finding a lot of interessting topics is one thing… but what did we achieve in the end? A lot!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/Shyim97&quot;&gt;Soner&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/_MaHoDi_&quot;&gt;Manuel&lt;/a&gt; added the http cache to the storefront API and had to refactor some things. Because of that they did not only add the caching layer, but also provided a whole lot of &lt;a href=&quot;https://github.com/rectorphp/rector&quot;&gt;Rector&lt;/a&gt; rules to automate the refactoring with &lt;a href=&quot;https://github.com/FriendsOfShopware/shopware-rector&quot;&gt;shopware-rector&lt;/a&gt;. Soner also &lt;a href=&quot;https://shyim.me/blog/shopware-rector-project/&quot;&gt;blogged about this&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/iUwe&quot;&gt;Uwe&lt;/a&gt; and Jan nested rule builder rules into other rules to optimize the configuration of nearly identical rules and created &lt;a href=&quot;https://github.com/shopware/platform/pull/2487&quot;&gt;a PR for that&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/tinect1&quot;&gt;Sebastian&lt;/a&gt;, Hauke and I teamed up to have a look at the serialized cart object in the database and found some unnecessary stuff to remove: &lt;a href=&quot;https://github.com/shopware/platform/pull/2485&quot;&gt;PR to clean up cart&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Sebastian also found some time to optimize an existing &lt;a href=&quot;https://github.com/tinect/TinectRedirects&quot;&gt;redirect plugin&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Oli worked on elastic search integration in the admin which also might be added to the core in one of the following releases and optimized the property filters in the storefront together with Stephan.&lt;/p&gt;

&lt;p&gt;That’s only a small recap of all the stuff that has been done over the weekend. And while the first day people more or less stuck to their groups on the second day, especially in the evening everybody just sat together on the same table and everybody worked with each other. It was such a nice group to be with and just a really good time.
&lt;img src=&quot;/assets/hockethon-may-2022-day2-impression.jpeg&quot; alt=&quot;Kick off day 2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So much for the coding part. Wait… there’s more to a hackathon than coding? Of course! Socializing, food, drinks!&lt;/p&gt;

&lt;p&gt;The whole weekend was full of great chats, amazing people, good food, good drinks. On the second day we had a food truck in the evening with tasty burgers and burritos. There was a physiotherapist for massages to do something good for all the bent backs from sitting at laptops the whole weekend. By coincidence I had my archery equipment with me and several people were interessted in that so I showed and explained how a modern bows works and how the competitions work.&lt;/p&gt;

&lt;p&gt;In the end everybody had the chance to make the next event even better by providing a feedback sheet. And everyone could take home a Kellerkinder elePHPant.
All in all just a truly amazing weekend and I’m very happy to be part not only of this hackathon but the company behind it. A big thank you to all the people involved: organizers, participants, helpers behind the scenes! Events like this wouldn’t be the same without you.&lt;/p&gt;

&lt;p&gt;There are never too many impressions. Let’s have some more impressions:
&lt;img src=&quot;/assets/hockethon-may-2022-day2-impression_2.jpeg&quot; alt=&quot;Impressions&quot; /&gt;
&lt;img src=&quot;/assets/hockethon-may-2022-day2-impression_physio.jpeg&quot; alt=&quot;Impressions&quot; /&gt;
&lt;img src=&quot;/assets/hockethon-may-2022-day2-impression_foodtruck.jpeg&quot; alt=&quot;Impressions&quot; /&gt;
&lt;img src=&quot;/assets/hockethon-may-2022-day2-impression_foodtruck_2.jpeg&quot; alt=&quot;Impressions&quot; /&gt;
&lt;img src=&quot;/assets/hockethon-may-2022-day2-impression_archery.jpeg&quot; alt=&quot;Impressions&quot; /&gt;
&lt;img src=&quot;/assets/hockethon-may-2022-day2-impression_feedback_elephpants.jpeg&quot; alt=&quot;Impressions&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I didn’t had all twitter handles at hand, so if you were there and want to get tagged just let me know!&lt;/p&gt;

&lt;p&gt;Shout out to other blog posts about this event:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://marco-steinhaeuser.de/hockethon-may-2022-kellerkinder.html&quot;&gt;Marco Steinhäuser&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Did you also write a wrap up? Hit me up on twitter or something and I’m happy to add you here!&lt;/p&gt;

&lt;p&gt;Oh, and by the way: &lt;a href=&quot;https://www.kellerkinder.de/jobs&quot;&gt;We’re hiring!&lt;/a&gt; ;)&lt;/p&gt;
</description>
        <pubDate>Tue, 17 May 2022 00:00:00 +0000</pubDate>
        <link>https://blog.timo-helmke.de/2022/05/17/kellerkinder-shopware-hockethon-may-2022</link>
        <guid isPermaLink="true">https://blog.timo-helmke.de/2022/05/17/kellerkinder-shopware-hockethon-may-2022</guid>
        
        
      </item>
    
      <item>
        <title>How does this blog work?</title>
        <description>&lt;p&gt;This is the blog of a web developer so let’s have a look behind the scenes: why did I choose Jekyll instead of writing my own blogging software and boil that down to a blogging framework and then end up using Wordpress?&lt;/p&gt;

&lt;p&gt;Well… I didn’t want to write something on my own because there are so many good blogging solutions out there. I also didn’t want to use something like medium or similar blogging sites. It’s my content and I want to host it. But I know how to write code and HTML and I don’t need some kind of WYSIWYG editor. Also I don’t want to host a software I have to keep updated and secured for a little side project. I can use this time to write this content. Shortly I thought about writing the posts in plain HTML but then decided markdown would be easier.&lt;/p&gt;

&lt;p&gt;That’s why I was looking for a markdown based static site generator. Why Jekyll one might ask… well… I don’t know. It promised to be blogging focused and I just tried it first and it worked as I wanted it to work. So I sticked to it.&lt;/p&gt;

&lt;p&gt;I don’t need anything running on the server because Jekyll just puts out plain HTML and CSS for me which I can throw on any web server. And I also don’t need anything on my local machine since I put the build step into GitLab CI. All I need is a text editor and git. Tools I use daily. Therefore the perfect fit.&lt;/p&gt;

&lt;p&gt;Everything I push to the main branch of my blogging repository is automatically built and deployed to the server. GitLab already has a template to host Jekyll pages on GitLab pages.I used that as a basis and added a little step to push the website content to my webserver via FTP. Guess I will change that to scp or rsync in the future but it works for now.&lt;/p&gt;

&lt;p&gt;How does this work?
First of all: you don’t want to have your credentials in your repo do you? In GitLab CI you can create variables for that. Git Settings &amp;gt; CI/CD settings and create variables for user, host and password. You can also configure them to be hidden in CI logs.&lt;/p&gt;

&lt;p&gt;Then you’ll need a config file to tell GitLab what to do and when to do it. Just throw it into the root directory of your repository. My .gitlab-ci.yml looks like this:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;image: ruby:2.3

variables:
  JEKYLL_ENV: production
  LC_ALL: C.UTF-8

before_script:
  - bundle install

test:
  stage: test
  script:
  - bundle exec jekyll build -d test
  except:
  - master

publish:
  stage: build
  script:
  - bundle exec jekyll build -d public
  - apt-get update -qy
  - apt-get install -y lftp
  - lftp -e &quot;open $FTP_SERVER; user $FTP_USER $FTP_PASSWORD; mirror -X .* -X .*/ —reverse —verbose public/ public_html/; bye&quot;
  only:
  - master 
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;GitLab CI can run docker containers for you. Jekyll is written in Ruby so we tell GitLab to create a container from the Ruby image.&lt;/p&gt;

&lt;p&gt;In the variables part we tell Jekyll to run in production mode.&lt;/p&gt;

&lt;p&gt;The before_script part defines scripts that should run before all defined jobs. In our case it installs Jekyll via bundle install.&lt;/p&gt;

&lt;p&gt;After that you can define the jobs that will be triggered on changes. The first job is called test. It will be triggered on every branch except the master branch and run a jekyll build command. This way I can see errors in my posts e.g. links that are broken before publishing them. The artifacts option define where the result of the step is saved.&lt;/p&gt;

&lt;p&gt;The second job called publish is limited to only run on changes in the master branch. It will first build the page then install lftp and copy the generated files to the webserver via FTP. The variables starting with $ will be filled from the CI settings mentioned above.&lt;/p&gt;

&lt;p&gt;With this config I don’t have to do anything to publish new content but to push it into the correct branch of my repository. This enables me to write content from anywhere I want without the need to host a blogging software or a CMS or anything. I’m writing this post right now lying on my couch with my iPhone with a git client with integrated markdown editor. And since it’s managed via git I can easily undo stuff if I mess things up. And the best part: Only HTML and CSS on my webspace. All the other stuff runs in the CI pipelines.&lt;/p&gt;

&lt;p&gt;Since Jekyll is based upon Ruby as mentioned earlier getting the right prerequisites running on your local machine if you want to do more than creating content like working on the layouts and CSS and stuff like that can sometimes be tiresome. But the web dev community has you covered: you can also use docker for that. Just cd into the main directory of your Jekyll page and run &lt;code class=&quot;highlighter-rouge&quot;&gt;docker run -p 4000:4000 -v $(pwd):/site bretfisher/jekyll-serve&lt;/code&gt;. Your blog can now be accessed on http://0.0.0.0:4000/ and has a watcher running to automatically compile your changes.&lt;/p&gt;

&lt;p&gt;Visit &lt;a href=&quot;https://github.com/BretFisher/jekyll-serve&quot;&gt;this GitHub repo from Bret Fisher&lt;/a&gt; if you want to learn more about that.&lt;/p&gt;
</description>
        <pubDate>Mon, 16 May 2022 00:00:00 +0000</pubDate>
        <link>https://blog.timo-helmke.de/2022/05/16/how-does-this-blog-work</link>
        <guid isPermaLink="true">https://blog.timo-helmke.de/2022/05/16/how-does-this-blog-work</guid>
        
        
      </item>
    
      <item>
        <title>Shopware Community UnConference 2022</title>
        <description>&lt;p&gt;&lt;img src=&quot;/assets/scuc2022-logo.svg&quot; alt=&quot;#scuc2022 shirt&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Last weekend I attended the first &lt;a href=&quot;https://scuc.blue/&quot;&gt;Shopware Community UnConference&lt;/a&gt; in Cologne. This amazing event was a blast and I want to thank everyone who made this possible: the speakers who provided awesome tasks as well as open discussions, the sponsors and every single attendee.&lt;/p&gt;

&lt;p&gt;And most of all: the organizing team from Firegento e.V. This event was completely organized by the community and is not associated with Shopware which makes it even better. It’s really great to see the ecosystem around this software grow bigger and bigger.
&lt;img src=&quot;/assets/scuc2022-shirt.jpeg&quot; alt=&quot;#scuc2022 shirt&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I’m very happy to say that my employer &lt;a href=&quot;https://www.kellerkinder.de/&quot;&gt;Kellerkinder&lt;/a&gt; not only sponsored coffee and breakfast but also encourages us to take part in events like these.&lt;/p&gt;

&lt;p&gt;What was it like to be at an on site event after all this time in the epidemic? I’ve been around in this community for about nine years now and meeting all those familiar faces again in person felt actually a bit like coming home.&lt;/p&gt;

&lt;p&gt;Apart from that the community grew a lot in the last years and I had the opportunity to meet a lot of new awesome people I haven’t meet in person yet or were completely new to me. Many of these people I’ve worked with in last years and finally could meet.&lt;/p&gt;

&lt;p&gt;The slogan of this unconference was “It’s all about the coffee break”. I think this is really fitting like a glove. Getting in touch with these people again was the best part of the weekend.&lt;/p&gt;

&lt;p&gt;Beside from meeting awesome people there have also been a whole lot of interesting topics covered in talks and discussions. For those of you who have not been to an unconference yet: there is no predefined talks, schedules or topics. Everyone can provide a talk or just throw in a topic one wants to hear about. The talks are then voted on and the most popular define the schedule.
&lt;img src=&quot;/assets/scuc2022-topics.jpg&quot; alt=&quot;#scuc2022 plushies&quot; /&gt;
The topics varied a lot: Shopware employees giving insights what they are currently working on, open discussions about hosting, growing the community or performance. Talks about PWA, connecting your shop to a PIM and patterns for frontend testing with Cypress. Besides development topics there were talks about how to give good talks, how to organize your team, how to survive conferences as an introvert or even how to plan a flight (as a pilot) and much more.&lt;/p&gt;

&lt;p&gt;Of course there is no conference without merch and now my elePHPants also got some new company:
&lt;img src=&quot;/assets/scuc2022-plushies.jpeg&quot; alt=&quot;#scuc2022 plushies&quot; /&gt;
This cloud is so fluffy! Thank you &lt;a href=&quot;https://www.root360.de/&quot;&gt;root360&lt;/a&gt;! And actually I realized I don’t even know what this cute little penguin is called. Anyone can give me a heads up?&lt;/p&gt;

&lt;p&gt;It was such a great weekend and I’m really happy with all these new information gathered and the nice people I could finally meet. I’m really looking forward for the next events:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Meet me at the &lt;a href=&quot;https://www.kellerkinder.de/hockethon-der-shopware-hackathon-in-hockenheim&quot;&gt;Kellerkinder HOCKEthon&lt;/a&gt;. A Shopware themed hackathon at our office in Hockenheim.&lt;/li&gt;
  &lt;li&gt;Virtually meet me at the &lt;a href=&quot;https://scd.shopware.com/&quot;&gt;Shopware Community Day 2022&lt;/a&gt;. Most likely will not attend in person this year.&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Thu, 14 Apr 2022 00:00:00 +0000</pubDate>
        <link>https://blog.timo-helmke.de/2022/04/14/shopware-community-unconference-2022</link>
        <guid isPermaLink="true">https://blog.timo-helmke.de/2022/04/14/shopware-community-unconference-2022</guid>
        
        
      </item>
    
      <item>
        <title>Hello World!</title>
        <description>&lt;p&gt;Hey there! After decades of being around in the internet I decided to start a blog in 2022. A bit late to the blogging party one might think. But better to start late than never.&lt;/p&gt;

&lt;p&gt;Who am I and why do I think I have something interesting to share?
I’ve been around in the internet since the late 90s and interested in computers for even longer. What started as something fun to spent time with playing video games and build some small websites lead to working at an online shop for computer and video games and started my interest in the e-commerce world.&lt;/p&gt;

&lt;p&gt;After some accounting and customer service I realized that the technical aspects are much more fun to me. I started playing around with the shop, automated workflows between shop, erp and market places like amazon.
All this lead to studying media informatics beside still working at the online shop. This degree course is a mixup of informatics, computer science and media production and media theory.&lt;/p&gt;

&lt;p&gt;Then I started my journey into the professional world of web developing building corporate websites and online shops. About nine years ago I stumbled upon &lt;a href=&quot;https://www.shopware.com/&quot;&gt;Shopware&lt;/a&gt; as an open source shop system and have been part of its developer community ever since.
For the past 5-6 years I have solely worked with Shopware, apart from some side projects to keep exploring other stuff.
To put it in a nutshell: I’ve seen and learned lots of stuff in the past decades and want to start sharing it.&lt;/p&gt;

&lt;p&gt;Let’s see how this works out. Happy to hear feedback about my upcoming posts so reach out to me on &lt;a href=&quot;https://twitter.com/_t2oh4e_&quot;&gt;Twitter&lt;/a&gt; or wherever else you find me!&lt;/p&gt;
</description>
        <pubDate>Tue, 12 Apr 2022 00:00:00 +0000</pubDate>
        <link>https://blog.timo-helmke.de/2022/04/12/hello-world</link>
        <guid isPermaLink="true">https://blog.timo-helmke.de/2022/04/12/hello-world</guid>
        
        
      </item>
    
  </channel>
</rss>
