My Learning Methods

Learning is an ongoing, systematic process that needs to be organized

About 3 years ago, I finished a bigger project that lasted for more than a year. It was about the redesign of a shop under PHP 5.6. The client had a long wish list which I implemented continuously, to the full satisfaction of the customer.

After completing this project, I decided to turn to Laravel and port all the previous developments to the Laravel framework. The idea was a boiler plate that can serve as a backend for applications of all kinds.


Find information sources

When I set out to learn Laravel and its environment, I first had a problem with the huge amount of information available . I had identified various relevant websites, subscribed to newsletters and worked through online courses.

  • Laravel Docs, Laravel API Docs
  • Vue.js Docs, Vue.js Style Guide, Vuex, Nuxt
  • Bootstrap Docs
  • Dev docs
  • much more
Video Courses
  • LaravelNews
  • Spatie / Murze
  • Vue
  • JavaScript Weekly
  • Laravel Daily
Git Hub
  • Laravel Packages
  • Vue apps
  • much more
Stack Overflow
  • helps whenever I get stuck
  • the ultimate help platform for developers
new techniques 
  • laravel
  • Vue
  • PHP 7.x
  • HTML5
  • Javascript (EC5, EC6, promises, modules)
  • CSS (BS4, Flex, Grid, SASS, responsive design)
  • Webpack
  • Redis
  • MySQL
  • PHP Storm
  • Sublime
  • Emmet
  • docker
  • Chrome DEV Tools
  • python
  • SVG
  • GIT
  • Google
  • SPA Sing Page Apps
  • PWA Progressive Web Apss
  • AMP Accelerated Mobile Page


Consume information regulary – read or watch video courses

Every day, I spend some time recording the information. Approximately 1 hour reading a newsletter, watching some video lessons in the evening instead of watching TV. Programming the other time practically. Of course, the information recorded in this way is not really anchored in the brain, so it is important to collect the information systematically. For video courses, I also collect the table of contents of the courses to access individual sections directly.


Collect and store the information – make it discoverable again

The solution is to collect the available information in a structured manner so that it can be used later. After some failed attempts with Excel files or Window folders, I came up with Pearltrees . This is an SAAS for collecting links and documents. My Pearltrees has now grown to a few thousand links, divided into folders and subfolders with search function. Just about Laravel I have saved about 2k links. The permanent insertion of further links is very easy. My pearltrees are open to the public.

This collection is my knowledge base and gives me the confidence to meet any requirement regarding these topics. ( Since I’ve read something – how does it work again? )


Graph my learning topics

Some time ago, I made a graphic to visualize the structure of my knowledge base. Here you can see this graphic, it is directly linked to my Pearltrees sections. It also indicates other, as yet unmentioned IT areas that I am interested with.

Click for the live version of this graphic .


Practical use 

Without question, practice is indispensable in the acquisition of new, expanded knowledge. For 2-3 years I work with Laravel. I have created various backend boilerplates, discarded and recreated.

You can find my current version at Gith-Hub.


Get to know and try out laravel packages

From the beginning I was fascinated by the possibility to expand the Laravel framework with Composer. I have integrated and tested dozens of packages. Then I started to build my own PHP boilerplate based on Laravel 5.5. I integrated all the packages that seemed useful to me. This boiler plate has so far only a minimal frontend but a huge backend. My focus is on developing a universal backend using important packages.

The Laravel packages in my current project according to composer.json are:

"require": {
        "php": ">=7.0.0",
        "appstract/laravel-blade-directives": "^0.7.0",
        "arcanedev/log-viewer": "^4.4",
        "arcanedev/no-captcha": "^5.0",
        "awssat/str-helper": "^1.4",
        "barryvdh/laravel-elfinder": "^0.3.11",
        "barryvdh/laravel-snappy": "^0.4.0",
        "brian2694/laravel-toastr": "^5.5",
        "brotzka/laravel-dotenv-editor": "^2.0",
        "browner12/helpers": "^2.1",
        "creativeorange/gravatar": "~1.0",
        "davejamesmiller/laravel-breadcrumbs": "^4.1",
        "doctrine/dbal": "~2.3",
        "dompdf/dompdf": "^0.8.1",
        "elibyy/tcpdf-laravel": "^5.5",
        "fideloper/proxy": "~3.3",
        "garygreen/pretty-routes": "^1.0",
        "google/cloud-translate": "^1.1",
        "hieu-le/active": "^3.5",
        "illuminated/helper-functions": "^5.5",
        "infinety-es/config-manager": "^1.1",
        "infyomlabs/adminlte-templates": "5.5.x-dev",
        "infyomlabs/laravel-generator": "5.5.x-dev",
        "infyomlabs/swagger-generator": "dev-master",
        "jenssegers/date": "^3.2",
        "jlapp/swaggervel": "dev-master",
        "laracasts/utilities": "^3.0",
        "laravel/framework": "5.5.*",
        "laravel/socialite": "^3.0",
        "laravel/tinker": "~1.0",
        "laravelcollective/html": "^5.4.0",
        "lubusin/laravel-decomposer": "^1.2",
        "maatwebsite/excel": "~2.1.0",
        "marabesi/laration": "^1.1",
        "nikaia/translation-sheet": "^1.2",
        "predis/predis": "^1.1",
        "spatie/laravel-activitylog": "^2.3",
        "spatie/laravel-artisan-dd": "^2.0",
        "spatie/laravel-backup": "^5.1",
        "spatie/laravel-blade-javascript": "^2.0",
        "spatie/laravel-cookie-consent": "^2.1",
        "spatie/laravel-db-snapshots": "^1.1",
        "spatie/laravel-glide": "^3.2",
        "spatie/laravel-html": "^2.4",
        "spatie/laravel-link-checker": "^2.2",
        "spatie/laravel-mailable-test": "^2.0",
        "spatie/laravel-medialibrary": "6.0.0",
        "spatie/laravel-menu": "^3.0",
        "spatie/laravel-newsletter": "^4.1",
        "spatie/laravel-partialcache": "^1.2",
        "spatie/laravel-permission": "^2.5",
        "spatie/laravel-sitemap": "^3.3",
        "spatie/laravel-sluggable": "^2.1",
        "spatie/laravel-tags": "^2.0",
        "spatie/laravel-tail": "^2.0",
        "spatie/laravel-translatable": "^2.1",
        "themsaid/laravel-langman": "^1.3",
        "unisharp/laravel-filemanager": "~1.8",
        "unisharp/laravel-settings": "^2.0",
        "webpatser/laravel-uuid": "^3.0",
        "yajra/laravel-datatables-buttons": "3.0",
        "yajra/laravel-datatables-html": "3.0",
        "yajra/laravel-datatables-oracle": "~8.0"
    "require-dev": {
        "barryvdh/laravel-debugbar": "^3.0",
        "barryvdh/laravel-ide-helper": "^2.4",
        "filp/whoops": "~2.0",
        "fzaninotto/faker": "~1.4",
        "laravel/browser-kit-testing": "^2.0",
        "mockery/mockery": "~1.0",
        "phpunit/phpunit": "~6.0",
        "sven/artisan-view": "2.0",
        "xethron/migrations-generator": "^2.0"


Practical experience

As I said, I have over 18 years of web application development experience and a high degree of specialization in content management, e-commerce, backend, APIs and user interfaces. My focus was PHP, Javascript, CSS3 and HTML5. As a freelancer, I did not work in a team but solely in direct, personal contact with my clients.

I am interested in updating my knowledge. I want to bring together Laravel and its eco-system (PHP7, ES6, Vue, SASS, Webpack, etc.) with my previously acquired knowledge and ideas. With this I am already well advanced.




Continue to: Projects