My tech stack

TL;DR: As a developer and architect I have most experience with C#, .NET, SQL, JavaScript and Azure. My knowledge from those areas is deepest and most recent (as for December 2019). But as a professional I have also worked quite a lot with PHP and Java.

Update [2021]: since joining Demant in September 2020, I am focusing on Xamarin and Microsoft technologies that support mobile apps: general .NET development, DevOps and cloud architecture in Azure.

Backend

My favorite stack – .NET

Why favourite? I happen to have most experience with that stack. I do not claim this is the best tech stack under the sky. As an architect I could give most of the specific examples using this stack based on my own experience. Although I am aware also about similar tools or mechanisms in other tech ecosystems.

Languages: C#
Frameworks: .NET 4.7, .NET Core
ORMs: Entity Framework, EF Core, Dapper
Tests: .NET Core integration tests, xUnit, Moq, AutoFixture
Servers: Windows, IIS, Docker
IDE: Visual Studio 2019, Visual Studio Code

My 2nd favorite tech stack – PHP

PHP is not the most sexy technology but in terms of the amount of out of the box software for web I think it is unbeatable. For pretty standard projects like an  eCommerce shop, informational website or personal blog – PHP ecosystem offers solutions that take hours to deploy where other technologies may require at least weeks to build as they need more custom code to be written. There is also plenty of existing integrations for PHP, especially for all web-related use-cases like payment gateways or social media.

Language: PHP 5.6, 7
Frameworks: Symfony 2/3, WordPress, WooCommerce
ORM: Doctrine
Tools: Docker, Docker Compose, PHP Storm
Servers: Apache, Varnish, Linux

My 3rd favorite tech stack – Java

Java ecosystem is a great source of inspirations. Java Guys usually adopt new patterns and tools first and then those tools ate ported to .NET by some good people. It started to change slowly after .NET Core was released and .NET open-source and research community is growing stronger, but still .NET is several years behind Java open-source community.

Language: Java 7, 8
Frameworks: Spring
ORM: Hibernate
Tools: Maven, IntelliJ
Servers: Tomcat, Linux

Databases

Languages: SQL, T-SQL
Relational: MS SQL, Azure SQL, MySQL, PostgreSQL, SQL Lite
Key-value: Redis, Memcached
Document/search: Elastic Search, Apache Solr
a bit of MongoDB, Cassandra, Azure Cosmos DB

Cloud

Azure: Virtual Machines, Service Bus, Application Insights, Table Storage, Blob storage, Azure SQL, API Management, Key Vault, Network Security Groups, CDN, a bit of Azure Functions

AWS: Virtual Machines, SQL as a service, S3 cache

Google Cloud: AI Services integration: Cloud Talent Solution API, Speach-to-Text API,  Translation API

DevOps

CI/CD: Azure DevOps, Team City, Octopus Deploy, Jenkins
Code quality: SonarQube
Scripting: PowerShell, Python, bash, batch
Integration tests: RobotFramework, Selenium
Infrastructure as code: Azure ARM templates, a bit of Terraform
Monitoring: NewRelic, Application Insights, Sentry, a bit of ELK
Containers: Docker, Docker Compose, a bit of Kubernetes

Infrastrucute

Security: Identity Server (OpenId, OAuth 2)
Load balancing: HaProxy
Queues: Azure Service Bus, Rabbit MQ

Web front-end

Web development without UI does not have a human face. I have never seen any user happy looking at API docs, but I’ve seen many smiling to a nice UI. Even though I’ve spent most of my software developer career coding backed logic and working with data I like to contribute to front-end as well.

In the majority of projects my contributions were to vanilla JavaScript, jQuery plugins, JSON-transformation, AJAX calls and HTML templating (mainly by using Razor, ASP.NET Web Formsunderscore.js or PHP), DOM manipulations, static assets optimization. I have also tried SVG and a bit of Flash development in old days.

Regarding frameworks, I was spending around 30% of my daily full-stack work at Firecrest (acquired by ICON) coding in ExtJS framework. It was almost a year of experience with this framework. Then I’ve done some projects in Backbone.js. Since 2017 my teams  are doing front-end in React.js, I like the concepts in this framework and the fact that same concepts can be used in React Native. If we sum up my total time in React.js as developer it would not be more than one month, mainly for simple demo apps and some urgent bugfixes that could not wait fore more qualified React.js developer. But I speak quite often with React.js developers and as architect I am from time to time asked to review their code. That reviews are usually curious questions but thanks to them I have quite good feeling of both greatness and pain points of React’s ecosystem.

Regarding styling, I prefer to use out-of the box styled component libraries like Bootstrap or Material UI for React. I use CSS comfortably for basic things like page layout and text formatting but for fancy effects or advanced RWD I prefer to relay on developers who breath with front-end every day.

Native mobile apps

My adventures with mobile apps started in 2008 – I did an Android app as my Bachelor’s project. Android was in beta version at this time and release 1.0 was about to come. Later on I’ve participated in 2 Android projects commercially for pracuj.pl and erecruiter.pl. I have also done some small fixes for iOS version of the latter app in Objective C and XCode. But it was very little experience when compared to my Android contributions.

When I was responsible for development at Epicode, we have decided to switch from separate Android and iOS development to React Native. As a developer I had done just basic tutorials to evaluate the framework, but as a project and team manager I’ve observed a very good change in terms of efficiency and team collaboration. Before React Native I did POC of PhoneGap but UI quality was clearly not as good as native capabilities offered by React Native.

Today I’m still a fan of React Native, it was also the mobile technology of our choice at Mash.com

Desktop applications

In my software development history I have also an interesting episode with desktop Windows applications when working on a contract for Vitalograph – a company that produces spirometry devices. The scope of the contract was do several customization of Spirotrac product for specific clinical trials purposes. Technologies used were WinForms, .NET 4 and MS Access Database.

I was also contributing to a MS Outlook plugin which was part of the integration that we’ve build for one of our customers at Epicode.

eCommerce

I was participating in a couple of eCommerce projects as a programmer. Some of the projects were developed from the scratch using my own simple MVC framework for PHP. Those projects are amirior.de, pabloundpaul.de and also non existing anymore sites for MyDeal (group shopping) and Moodo (fashion).

Later on I have participated in a couple of eCommerce projects as a project manager. Those were mainly short projects for 2-4 weeks built on top of eCommerce engines like Magento or Shopify but also an architecture-level  consultancy for Leroy Merlin.

Last but not least, recently I’ve launched a small hobby eCommerce for my wife on top of WooCommerce: happynest.pl

Games development

I have slightly touched Unity 3D engine. I did some beginner tutorials to get the feeling of the IDE, basic framework principles and components. I have done a deeper dive into a Mapbox library to prepare a working POC at the very early stage of World if Epic Hunters game.

Architecture

styles: micro-services (my current focus), monolith, SOA, multi-tier, SPA
diagramming tools: Visio, Plant UML

Project Management

tasks and workflows: JIRA, PivotalTracker
documentation: Confluence

Other things I’ve tried

I’ve done quite a lot of coding to get my Computer Science degree. It included quite advanced projects in languages like: C, C++, Smalltalk, OCaml, Ada, Prolog, Octave