Architecture toolbox: drivers

Software development requires us to make decisions, which shape our architecture. These decisions are influenced by many factors and correct analysis and interpretation of which allows us to make the “right” ones. These factors are called architectural drivers of which knowing and understanding significantly facilitates decision-making at any point in the life of the project.

Continue reading »

Architecture toolbox: estimations

In a discussion about whether to estimate or not, there are pretty decent arguments on both sides. It is not ether to estimate or not, because estimations should be done every time there is a need for a new feature or change of an existing one. It’s more about how to approach and perform it and what estimation is really for.

Continue reading »

How I track work in my timelog

As a programmer who works with different tasks, projects and even teams it is important to be able to report work time either when settling with client, superiors or during the daily Scrum. There are some browser-based tools but they ain’t comfortable when you have opened many tabs at once.

Continue reading »

What's new in PHP 8.0

PHP 8.0 is right behind a corner. By now PHP 8.0.0 Beta 3 is available for testing and RC1 is planned for September 17. Beside JIT, few interesting features are introduced with this major version.

Continue reading »

How I organize project code

There are many ways how to organize project code. There are probably almost as many ways as there are people writing code and two may vary even in the same organization. When organizing your project code, it is good practice to separate the domain code from the infrastructure code. And it does not matter whether our application will work with Symfony, Laravel, Laminas or the framework-agnostic.

Continue reading »

Firing a cannon at ants

The solutions should be tailored to the problem. This is a fact that is hard to disagree with. Listening to Mariusz Gil and Kuba Pilimon in podcast about Large-scale structures, something hit me. Very often you can hear something like “it won’t work in every project” or “with smaller projects, it’s a waste of time” from experienced experts sharing their knowledge.

Continue reading »

How to retrieve all Variables from a Twig Template

Just had to figure out how to retrieve all variables from a Twig Template. Of course there is a DebugExtension which allows me to use {{ dump() }} in template. But I couldn’t use it because I wasn’t rendering my template. Here is a scenario…

Continue reading »

Implementing Aggregate Repository

When it comes to persisting an aggregate we have several options. We can take the current state of object and save it in chosen storage. Whether it will be a relational or document-based database we will need a layer that help us map our objects into its schema, like ORM. However, when we want to save Event Sourced aggregate we need to take all recorder events and append them to Event Stream. Those streams can be persisted in physical storage which will be represented by Event Store which can be relational or document database, or dedicated tools like EventStore.

Continue reading »

Making friendly configuration in Symfony without a Bundle

Every time we want to have custom and friendly configuration in Symfony, the best way to do that was to create a Bundle which registered its own extension and … tadaa. Although Bundles at some point become a way to organize application code which makes sense no because Symfony is just a framework. After all it is business and/or infrastructure that should be reason how code gets organized. But bundles still exists and will remain as long people will keep creating reusable components and since Symfony 5, bundles are discouraged to be used in other manner.

Continue reading »

How I did my own implementation of Event Sourcing

After playing around with prooph and broadway, I finally decided to write something on my own. Took me little more than an hour and two classes later I have what I need for now to work on domain. Seriously. Writing this article took me more time than actual implementation.

Continue reading »

Docker - best practices

I have been using a docker for some time. Most of the knowledge I have is empirical acquired by numerous trials and supported by even more errors. Recently, I tried to gather and organize everything in one place.

Continue reading »

What I’ve learned after six months of Event Sourcing

On July 2019 I’ve started working for one of polish payment service providers. In one of my responsibilities was to lead team in order to develop application that integrates with new open banking systems based on PSD2 directive. I got a little over a month to learn about the functional requirements and propose the architecture for the system.

Continue reading »

PSD2 is great… but it’s not a big deal.

On September 14th, PSD2 came to live and the same day I read an article saying that “everybody can have access to your private account now”. I was like “Say whaaaaaa…?”.

Continue reading »

Running Docker behind proxy

Disclaimer: there are bunch of tutorials on how to do this. I’ve already tried setting proxy in OS env and /etc/docker/daemon.json file. Both without success just like few other tries. I’m writing down how I achieved this on my Ubuntu 18.04.

Continue reading »

Monday, September 18th

Dear diary, after few days of research, tests and implementation I ended up with Symfony-based MVP that handle basic integration with Magneto API.

Continue reading »

Tuesday, September 5th

Dear diary, Shoplifter turned out to be a dead end. After couple of weeks of getting deeper into it, management said it would be better to focus on Magneto rather than anything else that is barely visible on market. Also the only client interested in Shoplifter resigned :/

Continue reading »

Obfuscation with Cesar Cipher

Cryptography is everywhere. Securing data, connections, authorizations, anonymity, cryptocurrency, blockchain. Everywhere. Lately I’ve been digging into cryptography and found out that I know nothing about it. Or not as much as I thought. As for myself cryptography was underestimate and at least used incorrectly.

Continue reading »

Wednesday, 5th July

Dear diary, looks like my adventure with Magneto ends before it starts. Michael – CEO – came and told me that they want to try new platform – Shoplifter. This is some german E-commerce engine they want me to try out and learn. We’re about to get a partnership with Shoplifter so this sounds like a big deal for the company.

Continue reading »

Monday, 12th June

Dear diary. First day of my work at Timid Limited has finished. I must say that I wasn’t expecting what I experienced.

Continue reading »

Thursday, 1st June

Dear diary, it’s been a while since we’ve talk. Last week I’ve had a final interview in this Timid Limited company. They do e-commerce on Magneto. I’ve talked to them month ago and thought that they forgot about me. Looks like my lack of knowledge in Magneto ain’t an issue. CTO told me, they want to use my experience to move company to the next level. I’m supposed to show them some good practices in web development and introduce new tools and approach for better quality. We’ll see. Sounds promising.

Continue reading »

When developer becomes a senior developer

As I roam around from one interview to another I get to resolve various tests, questions and situations on senior level. Lately I had the best interview I’ve ever had. Or at least I think about it that way. I’m not going to share the name of a company, because I hope I’ll get an offer to work there and don’t want to jinx it. Anyway after that interview I started to wonder what really makes a senior developer. So here are my thoughts. Disclaimer: it’s only based on my experience and observations. I don’t expect you to agree with me.

Continue reading »

Magento – Certification

A little disclaimer first. I’m not going to actually write only about certification in Magento but rather certification itself. I only have one certification and never took any exam beside the ones at school or college. Especially the one in Magento. All I’m about to do here is to show my point of view about certifications as they are, what are the value of certification for me, maybe point out some problems that I encountered. The topic came to me in connection with the Magento certification.

Continue reading »

The harder the heart...

It’s hard to be a programmer nowadays and it’s not because all the technology that is also changing so fast. You can always learn new tools, languages and stuff in finite amount of time. There are many programming languages with entry threshold so low it’s easy and fun to learn them. A lot of additional software works out of the box, so they can be tested almost without any cost.

Continue reading »