Patrick Müller writing nonsense since 2020

No excuse, just own it

I'am as guilty of this then anybody: looking for excuses. Not so much before others but before myself. "If I only had this other camera/great piece of software/whatever I could have done this. Of course this way it wasn't even worth trying." Obviously whenever the second part of that reasoning comes out you have already lost, you have kept yourself from even trying, thus failing instantly without learning anything instead of at least failing a little later and learning something - or not failing at all.

Just putting this out there.

The sun has returned

Finally it is back a little more often ...

So I got to get out my camera get out in a bit of a better spirit then in recent weeks.

Out in the wild: first impressions of the M4

After almost a week I finally got to go out with my shiny "new" Leica and play around and while I still have to get a handle on working with this camera I really had a blast. It's just such a joy to handle, even more so once I could let go of the idea of having to check my exposure with my phone all the time and just accepted that it would all work out in the end. This ends up being a really pleasant and uncomplicated tool that never gets in you way.

As far as lens I got goes (a Summicron 50mm from the early 50s) I have to say it performs really well for a 60-70 year old lens. The one thing I found out quickly is that I'd really like to have a 35mm lens, but everything at its time.

Back into analog photography: the Leica M4-2

For once you are getting two posts in a row from me as I really cannot resist sharing my excitement about that little camera with you. I will certainly write up a full first-impressions post later but for now I am still in awe about its build quality and handling. I think I am beginning to get why people are talking so enthusiastic about these cameras.

Setting up models in Laravel

This post was written before the blog was somehow taken over by photography and never got released. So while I am sure there must be some reason for that, I am releasing it now since the topic seems interesting for people using Laravel:

At first glance creating a model on laravel is easy as typing "php artisan make:model User" and being done with it. Of course there is a little more to do and so here are few points that you might want to remember. Let's see a very basic example:


namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Request extends Model

    use SoftDeletes;

     * @return \Illuminate\Database\Eloquent\Relations\HasMany
    public function items()
        return $this->hasMany('App\Item');

     * @param User $user
    public function setUser(User $user)
        $this->update(['user_id' =>  $user->id]);

The first sind you will notice is that I am importing the SoftDeletes trait. I find this a good practise to do early on so that I can ensure that if the requirement of getting "deleted" data back comes up later this is no problem. Essentially it will use a datetime field called "deleted_at" to markt items as deleted and Eloquent will ensure that selects don't cover deleted items unless it's told to do otherwise.

Another handy thing is not to constantly handle foreignkeys in your controllers by simply adding a method to create the association in question by injecting not the key but the model itself into it.

Other goodies

At least for me it's quite a common thing to want to display what are essentially tables of one model or another that are sortable by a given column, in those cases column-sortable is a great package for laravel. Just import the Sortable trait, declare what columns should be available for sorting by and you are almost set:

// ...

    use Sortable;

    public $sortable = ['id', 'created_at'];

// ...

Now you can use a nice set of helpers to get sortable tables in your blade views.

Another quick image

I took a trip around the block last weekend, so now I now get to spam you all with images ;)

Back into photography

I have been out of photography for a few years now. There may be something on the story behind that later but suffice it to say that I am back. So, in the spirit of this very fact this Post is a bit of a “first impressions”-piece of getting started with digital photography. Back when I was doing more photography I almost only used analogue cameras, for once I did not have the money to buy the digital once I liked and they just felt too much like computers with imaging sensors with all their menus. I recently got started into the Fujifilm X system with an X-T10. I chose the X-T10 over say an X-Pro 2 because I wanted to get into this spending less on my first camera body and rather buy a few good lenses.

First impressions: the camera

I can only say I am really stunned by how great this system is. There are lots of people who can tell you about the technical ins and outs, so I’ll let that aside. What really struck me as great is that these are cameras that have all the dials and knobs I like and don’t force me to go into the menu all the time. In fact, with turning the view-mode to “EVF only” I guess I’m close to my ideal of having a classical camera with a sensor instead of film. Also, in the past whenever I borrowed a DSLR from somebody those (at least the affordable once) felt somewhat plasticky to me, not so Fujis mirrorless cameras.

The lenses: 23mm f2 WR and 50mm f2 WR

As an initial setup I got two the so-called Fujicrons and they are amazing. Are there faster lenses about there? Sure. Do these have a great balance between size, price and speed? I certainly think so. One criterium for me in choosing a system was that it had to be one with aperture rings on the lenses (at least most of them) as I really don’t like to set that on the camera, and in this respect the Fuji lenses just feel like classical lenses. The only minor complaint is that you can freely turn the focus ring without end as I think it is focus by wire – I’d have liked it to work the old-fashioned way. But hey, that’s where my complaints stop.
Words in closing

As you can tell I’m still in the honeymoon period with this system and we’ll see how it and my feelings towards develop. For now I’ll just leave you with the promise of future photography related content.

Changelog, of sorts

There have been a few changes with what I am doing and with this site and now I am finally getting around to writing down at least some of it.

This site is moving backwards

It really is: I have reactivated the old version based on kirby after rolling with Ghost for quite a while. Most of this has to do with the simple fact that I am mainly a php-developer and don't know a lot about world of wiritng node.js applications - or hosting them for that matter. I want however to port over most of the content from there.

On upgrading all of this to the latest version of kirby I did discover a few bugs with my old code, something I hope to iron out over the next few weeks so that this may then be a more permanent version of this site.


I have been doing some private working and experimenting with laravel for a few years now and recently it has also become a big part of my daily job to build laravel applications. Of course on thing that's really great about this is that I get to discover a lot about the laravel ecosystem, something that going forward I'd like to try and share here from time to time. Even if it is just so that I don't forget how certain things work or where to look them up.

Collections in PHP

This article was ported over from the old blog

A while ago I stumbled on Adam Wathans book "Refactoring to Collections" and a lot of people saying this is a really great book. Of course I didn't get it at the time: collections were a thing I had never given a lot of thought. Ok, now that some time had passed I read another blogpost by Christoph Rumpel on the topic and eventually commited to find out what's up with this thing that people think is so great. Long story short: I researched a bit, got the book and then I realized some hours had passed. Not bad for a programming-book...

What are Collections?

This was the question I started out with since I head never had much contact with the concept of a collection. To put it short: a collection is an object that implements all the interactions you can have with a normal array but also provides a lot of additional functionallity. Hence the common description as "arrays in steroids".
Since I am a Laravel user anyways and find the things Taylor writes very intuitive to use, I am using his Collection class even when working outside Laravel and also for these examples. So let's start with the most basic thing: How does one create a collection?
There is a nice helper function that returns a Collection Object, so you can use it like this: $collection = collect(['item 1', 'item 2']); Just pass an array, no matter if it's as simple as this one or some large complicated multidimensional construct:


$items = [
    'bread' => ['amount' => 2, 'price' => 4.99],
    'butter' => ['amount' => 1, 'price' => 6.99],

$shoppingList = collect($items);

If you now want to access this collection, you can do this as with any regular array if you want, e.g. $shoppingList['bread']['price'], but of course that's not why we are doing this.

What can I do with a collection?

That was of course the question I asked myself annd upon reading Adams book and having a look through Taylors documentation for the Collection class I have to say that the additional features compared to normal arrays are really quite a great thing to have.
For example, let's find out what we would have to pay for our shopping list:


$items = [
    'bread' => ['amount' => 2, 'price' => 4.99],
    'butter' => ['amount' => 1, 'price' => 6.99],

$price = collect($items)->map(function($item) {
    return $item['amount'] * $item['price'];

What this is doing is to create a collection of items (collect()), map each of them to the value for the money spent on that item and then return the sum of those values. Let's have a look at what I would have done before:


$items = [
    'bread' => ['amount' => 2, 'price' => 4.99],
    'butter' => ['amount' => 1, 'price' => 6.99],

$price = 0;

foreach($items as $item) {  
    $price += $item['price'] * $item['price'];

So yes: there are more then enough reasons not to want to go back. And this is a rather simplistic example, so the way I see it right now the collection would shine even more in a more complex situation where we would normally have nested loops and can get rid of those.

  • The new code looks way more readable then the "old" code.
  • No need to manually deal with implementation details like having a variable thats counted up.
  • No writing loops. We write enough of those as it is.

So long story short: I will continue to get on peoples nerves with this and most likely show some more interesting example after really having worked with this a while.

Remodelling the local network

This article was ported over from the old blog and will soon receive a follow-up

My current network setup is a bit of a mess, so I thought I'd share a little of what I have running right now and how I want to reconfigure all of this to make it a little more usefull for a wide array of tasks. As an aside: since I am currently not living on my own I have to be somewhat mindful of not disturbing the network for anybody else - though in this case that shoudl not be an issue.

My Setup

I am right now fielding a wide collection of different hardware:

  • On a 16-Port TP-Link Switch
  • Whitebox Workstation (Xeon E3-1230 V3, 16gb RAM)
  • Supermicro 1U Server with an Intel Atom CPU
  • HP DL380 G6 (Two E5-Somethingrather, 72gb RAM)
  • Raspberry Pi 3 for testing purposes

On a Linksys 8-Port Switch in the basement

  • HP Microserver G9 with Freenas
  • Raspberry Pi 3 with PiHole

The stuff in the basement is open to everyone in the house and is not something I want to make any changes to. The Raspberry Pi there provides reliable DHCP and DNS for everybode and the storage is also a well proven and reliable system. While I'd like to put some additional RAM into the microserver I'd say I'm ok on that front for now. What needs to change is the stuff around my desk - my workstation/gaming-system, the rest has proven somewhat impractical.

Proposed changes

The issues with the current setup are a) that it's all rackmounted gear (and I dont have a rack) and b) that it's rather more on the loud side for stuff thats in a room where people are living and working. While I might be able to move the DL380 in the basement (and it really is a nice system that I like a lot) doing that would be quite the hassle. What it comes down to is, that I need less power then this mashine offers but I need it in a package that allows me to run the system 24/7. Also the small 1U system is not useful right now since its original purpose never materialized, so this one is going to ebay. This leaves me with the switch as the sole rackmountable-formfactor component - and while it's working great I'd rather have something web-managed. So, yeah: ebay once more ...
After some back and forth I remebered this article and the videos that came with it as a possible way to solve my server-issues. While the e300 is a bit more expensive that a used DL380, it might well be a mashine that could stick with me for quite a long time. Also some of the price would be offset be pushing things to ebay. I might start a little smaller with the ram and just up this later, after all we are not talking about production-systems with a lot of users - so that bit of downtime someday won't be a problem. Also storage won't be an issue, after all it's only meant to run a hypervisor and mount storage via NFS or iSCSI - so a small SSD or something like that may well be ok for now.
Of course that leaves the networking part: after reading a lot of good things about them I thought I'd give Ubuquity a try with one of their 8-port UniFi switches. 8 ports will be more then enough and this is a nice way of having a look at their products.
So there you have it: another project to keep reporting on. While we are at it, I also want to bring the blog bag over from ghost to kirby - yeah, I need 48h days ....