I'm a software developer. Working on web applications is my passion. But I like to learn things and a few months ago I got inspired by my colleague Ruud to dive into hardware. After some brainstorming I found a nice first project to try. This is a brain dump of what I did and my learnings – I hope they inspire someone else. Ventilation In our house, there is a ventilation system, an Itho CVE…
One year ago I started learning Elixir because I saw great potential . This is my retrospective, looking back on my journey so far with Elixir. TLDR - summary During the last year I liked functional programming, the Elixir language, the community, parallel tests, the fast workflow, the dependency management and the powerful platform. I had troubles with Erlangs cryptic error messages, IDE support,…
Learning Elixir during my last side-project was a lot of fun. The combination of solving a problem and learning something new works well for me. In the past year I have been working with GraphQL APIs – mostly written in PHP. But how does it work in Elixir? I wanted to learn how GraphQL APIs work in Elixir . For me it was clear: I needed another side-project. I was looking for a problem with a…
A first proof of concept for my side-project to manage and order recipes and ingredients via a supermarket API was successful. I continued with making a GraphQL API and a web interface with next.js + Apollo . This is part 2 of a blog post series Elixir side-project #2 . Planning Recipes with a Supermarket API (1/2) A Graphql API with Elixir (2/2) GraphQL and Elixir I assume you’ve read about…
I believe that to really learn a programming language, I have to get involved in a project. Getting an overview of the Elixir language was great. But to be able to learn about the details of Elixir and its ecosystem I needed a side-project. Like many developers who want to learn a new technology, I searched for a problem to solve. If all you have is a hammer, everything looks like a nail. Abraham…
I love learning new things. I get a lot of energy from it. Too bad that I also forget stuff. Why is it that I remember some things well and some things less? Is there a wrong way to learn? How can I improve my learning skills ? With these questions on my mind I did the online course Learning How to Learn: Powerful mental tools to help you master tough subjects taught by Barbara Oakley and Terrence…
Update: There is a nice discussion on Hacker News about this blog post. As a developer I think it is important to stay up to date with new developments. But mostly I love learning new things ;-) This means to be on the lookout for current trends in the tech industry, guessing their potential and trying them out. Sometimes I’m right. For example: A few months ago, adopting GraphQL turned out to be…
Technical talks can quickly become dry and boring. Live demos are a great way to practically illustrate the points you like to bring across. But live demos are also risky. Too often something goes wrong, so often that there is a name for it – the “demo effect” . But there is an alternative. Prerecording videos For the talk Experiences building apps with React Native (only slides, video is coming)…
While working for different companies and clients I started noticing that there is a big difference in effectiveness when relationships are based on trust. I feel that trust has a big impact not only on relationships with clients but also within an organization. Because of this observation I searched for material about this topic. One resource was "Speed of Trust" also available as online course…
Factory Functions Pattern are a great way to structure applications in NodeJS. This In-Depth article describes how they are used. In short, the advantages of this pattern are: All external dependencies of a module are stated explicitly External dependencies can be replaced without changing the module Unittesting works by passing in mocked/testing dependencies No global references Inversion of…
When observing people testing out an React Native iOS app on a phone which uses the Navigator library I noticed that swiping back from a detail screen to an overview screen is a bit hard to acomplish. You have to swipe very close from the edge of the screen to navigate back. When there is a case around the the screen it gets even trickier. Luckily it is easy to optimize this. The Navigator uses…
If you're interested in how long your commands run you might want to display the duration of the last command in the right prompt. I've made a similar blog post for ZSH in 2013 but I'm now using the fish shell . To make it work create the file ~/.config/fish/functions/rprompt.fish with this content: function fish_right_prompt if test $CMD_DURATION # Show duration of the last command…
When installing a new version of PhpStorm I had the issue that only the settings were imported from the old version but not the plugins – so I had to install them again. Plugins are located in ~/Library/Application\ Support/WebIdeXXX where XXX stands for the PhpStorm version number. Here is an example where I've updated from PhpStorm 9.5 to 10 ( WebIde95 to WebIde100 ). # backup just in case…
How to make it work in node Install traceur and save it to your package.json . npm install traceur --save Add the following code to your node entry point, in my case server.js . This will transpile required files to valid ES5 syntax on the fly but ignores your dependencies to not spend time transpiling those. var traceur = require ( "traceur" ) ; traceur . require . makeDefault ( function (…
When optimizing your testsuite it can be handy do find out how long each test takes to run. It would be nice to have a list of and how many seconds they took, like this: $ phpunit-report-runtime 0.29307007789612, "VCR\\Util\\SoapClientTest::testDoRequestHookDisabled" 0.16475319862366, "VCR\\CassetteTest::testRecordAndPlaybackRequest" 0.092710018157959, "VCR\\Util\\SoapClientTest::testDoRequest"…
A quick tip, if you like to enable remote debugging for your console PHP scripts without much fuzz. Add this line to your aliases file or in your ~/.bashrc : alias debug='XDEBUG_CONFIG="remote_enable=1 remote_autostart=1"' Now use the debug alias in front of your command. Example usage: debug app/console somecommand Happy debugging!
Install PHP-VCR PHPUnit-Testlistener in order to integrate PHP-VCR with PHPUnit. # Add PHPUnit testlistener php composer.phar require php-vcr/phpunit-testlistener-vcr You can use the @vcr [cassette filename] annotation to turn on PHP-VCR for a single test. /** * @vcr [cassette_path] */ public function testInterceptsWithAnnotations() { file_get_contents('http://example.com'); } Replace…
Just a quick timesaver: Jump from stack traces in iTerm 2 straight to the right location in Sublime Text 3. CMD + Click on a exeption... And check it out in Sublime Text... ##Configure iTerm 2 If you already setup your subl command , just go to your iterm 2 Preferences change the dropdown to Always run command... and paste this: /usr/local/bin/subl \1:\2 Under Profiles > Advanced > Semantic…
If you want to test PHP code which calls REST-, SOAP- or other APIs you normally mock all API calls. Maintaining those mocks manually can be quite some work, especially when APIs change often. To make your live easier I'd like to introduce PHP-VCR . It is a port of the fabulous VCR lib for ruby which records your test suite's HTTP interactions and replays them during future test runs.…
Inspired by watching Amir Khella video "Keynote Prototyping Essentials" I played around with Keynote to see if it's really that simple. I have to say – it's awesome. You can download my example Keynote prototype and do whatever you want with it. The font I used for the icons is FontAwesome . Reasons why Keynote rocks for prototyping webapps (don't know about other stuff but I guess…
Sauce Labs is providing a cloud for Selenium tests. Each free account comes with 200 minutes of free testing per month. This is very useful if you want to assure some basic functionallity of your website without having to set up your own Selenium Grid . In order to use your existing PHPUnit Selenium2 test-cases, all you need to do is go to saucelabs.com and create an account. Go to the your…
Duplizierte Inhalte durch Domains die mit und ohne “www.” erreichbar sind verringern laut Google die Positionierung in Suchmaschinen. Vermeiden kann man duplizierte Inhalte durch eine geeignete Apache mod_rewrite Konfiguration. ######### Set environment variable "http_protocol_addition" = "s" if we are on https, empty otherwise RewriteCond %{SERVER_PORT}s ^(443(s)|[0-9]+s)$ RewriteRule ^(.+)$ -…
Momentan bin ich mit Ausmisten meiner Wohnung beschäftigt und bin deshalb auf Dienste wie rebuy.de gestoßen. Das Geschäftsmodell von rebuy besteht darin, allerlei gebrauchte Ware anzukaufen und anschließend mit möglichst viel Gewinn wieder zu verkaufen. Perfekt um meine ausgelesenen Bücher, zu oft angeschaute Film-DVDs und durchgespielte Spiele loszuwerden. Einscannen der Barcodes Um an die…
Immer wieder werden relationale Datenbanken für Datenstukturen gewählt, die stark vernetzt sind. Graphdatenbanken sind schneller und einfacher wenn es darum geht vernetzte Strukturen abzubilden. Abfragen die tief in die Struktur eindringen sind deutlich schneller und kompliziertes ORM (objektrelationales Mapping) entfällt. Ein Beispiel eines kleinen sozialen Netzwerks zeigt, wie Graphdatenbanken…