2022
How to track and fix IIS .NET appliacation StackOverflowException
.NET StackOverflowException is a special type of exception. Starting with .NET 2.0 you can't catch this kind of exception with a try/catch
block. Usually, it is a result of recursive method calls. Your program is out of free memory, and any clean-up does not make sense. Every time the .NET program has started, an instance of StackOverflowException
is created "just in case". This way framework can throw it (and terminate itself immediately) even if there is no free memory.
2019
When Pair Programming Works
Pair Programming (PP) is one of the XP practices. Many modern software development companies use it in daily activities. On the other side in many places PP is treated as a waste of resources because the same result could be achieved with half of the effort. Software developers also have mixed feelings about this methodology, including me.
Read moreMy Inspirational Giants
To get motivated I need inspiration. Studying about and having The Giants close to me is helpful. This post is about the inspiration I get from them.
Broken Agile
I was a true believer in Agile methodology. I was... Now I think Agile, in the current form, does more harm to the project than waterfall did in the past. Let me explain you why.
Starting programming when you are +30 years old
So you want to change your career :) IT is maybe more lucrative than other industries or just gives more fun!
Here are some tips for people want change themselves into programmers.
Time Management Framework
Time - probably the only resource on the planed that we can get back. We have to choose what we spend our time on, with whom and on what.
AI/ML in Microsoft 2019
For over last couple of years Microsoft has invested a lot of time and effort into artificial intelligence/machine learning ecosystem. Currently the result can be considered as the first choice platform for enterprise solutions. In this article, I will present the key Microsoft AI/ML solutions available for developers currently.
Xamarin call JS from C# and vice-versa
In one of the project in GEMOTIAL we work on an Angular app that will work on mobile devices.
WROC# and BoilingFrogs Conferences
Last week I have attended 2 conferences in Wroclaw. First, there was WROC# and the day after BoilingFrogs.
Read moreMVP Summit 2019 Summary
Last week I have attended the Microsoft MVP Summit event in Redmond, WA. I was there for the second time and don't regret any moment :)
Read moreChanging the hosting provider - engineer notes
Last week I was involved in moving software solutions from one server farm to another.
From Chaos To SOLID course on Udemy
This posts describes my online course available From chaos to SOLID.
From Chaos To SOLID workshop at EY
Last Saturday I had another 'From chaos to SOLID' workshop for C# developers. We meet in EY office in Wroclaw. This time workshop was done under devWarsztaty.pl brand.
Read more2018
Global AI Bootcamp Workshop
I can say another weekend, another workshop :) Azure Bot Framework this time!
Read moreFrom Chaos to SOLID workshop at PTI
I have organized my first free C# refactoring workshop. I called it From CHAOS to SOLID. The main idea of the workshop is to teach how the source code can be transformed in an easy way to be more maintainable and robust.
Read moreBizTalk Health Monitor Tool
BizTalk as an enterprise platform has a lot of modules, components, adapters and other extensions. After developing solutions in BizTalk and maintaining it for a longer period the need for a maintenance tool is becoming important.
Read moreRoslynator Code Analysis
Roslynator is a collection of code analyzers, refactorings and code fixes. It is a Roslyn-based equivalent of FxCop. To some extend it is a replacement for Resharper from JetBrains. Of course R# is much more powerfull, bur Roslyntor is also getting more and more traction recently.
Read moreAssemblyVersion in .NET Core
In .NET Core the way you specify AssemblyInfo attributes has changed. .NET Core allows you to specify assembly attributes in .csproj
. You can do that by adding following properties:
Jenkins and Parametrized Branch Names
In one of the projects we work at Gemotial it was pretty cumbersome to test feature branches locally. The changes very often could have an impact on MSSQL or Oracle backend. We thought it would be great if we cloud run the changes on our integration tests configuration in Jenkins. Then, use the tests results (a link to it) in merge-request description. That way we could ensure that new functionality does not break the software.
Read moreNET Developer Days 2018 Conference
I had the opportunity to attend .NET Developer Days conference also this year. The event was organized in the same place as in previous years - EXPO XXI in Warsaw. Polish capitol looks nice in the autumn, so foreign conference participants had a good opportunity to have some sightseeing too.
Read moreMD Files And Why I Moved From WP
My blog always used Wordpress as the blog engine. I remember version 2.6. That was long time ago. During recent years the engine was actively developed by the community. Currently there is version 4.7.
Read moreThinking In Park?
Why there are parks in the cities? Why did city architects decide to keep those green islands?
Read moreWhat Is The Tech Stack For Me
Recently one of my colleagues asked the following question on Twitter:
Read moreHow To Recover After Exhausting Development
I've been programming for over a decade. During that time I went through several pretty difficult scenarios in my programming assignments. I want to share some thoughts in this post.
Read moreSeven Dev Personality Types survey summary
A few weeks back I've created a survey for developers. The idea was to test my 7 dev types and potentially uncover something new.
Read moreHTSMP - Documentation - bring identity for code puzzles
This post is a part of How To Ship Maintainable Product series
Read moreKatacoda
For the last few weeks, I have been learning docker. The start with new technologies was, as usual, easy for the basics and fairly difficult for the more advanced stuff. On some stage, I found KataCoda. The service motto is: Learn new technologies using real environments right in your browser.
Read moreSeven Personality Types of Software Developer - revisited
I had the opportunity to give the presentation Seven Personality Types of Software Developer twice so far. The presentation is based on my previous post. First of all, the session was surprisingly very interesting for developers. Despite its soft nature, I have received a lot of feedback from the audience during and after the session. The whole idea of categorizing developers by their personality type seems to be hot.
Read moreHTSMP - Dependencies - isolate interfaces
This post is a part of How To Ship Maintainable Product series
Read more2017
HTSMP - Requirements and design
This post is a part of How To Ship Maintainable Product series
Read moreHow to ship maintainable product - overview
This is the first post in a series of How to ship maintainable product
Read moreDictionary And HashTable In C#
.NET Framework provides several data structures for constant O(1) access. In software engineering we call them lookup tables. In .NET we can list following lookup-tables (at least):
Read moreProgramming Schools - from Zero to Who?
Today I wanted to touch the subject of programming schools.
Read moreHidden motivation ingredient
There are plenty of books about motivation. How to motivate yourself and others. We give ourselves something we like after finishing a difficult task. It can be a chocolate bar or an hour of video gaming. We try to motivate out employees with many benefits: free healthcare, informal Fridays, pizza days, in-house conferences etc. At the beginning it works quite fine, but as we go the effects are weaker and weaker.
Read moreWhat Do You Do When Programming Sucks?
This post is also available in Russian language at Softdroid
Read moreNDepend VSTS Extension
NDepend was recently released as VSTS Extension. Before that it was available as separate application. It was (and still is) to run it as task on CI server (eg. TeamCity)
Read moreTest Message Explained
In one of my previous posts I briefly described the concept of test message. Today I wanted to explain it in more details. The need of having production system operational is self-explanatory. It is the highest priority in all businesses - be able to operate. Without any doubts regarding software quality. Users need to trust the system.
Read moreWROC# 2017 conference in Wroclaw
Another great IT conference and second one happening in Wroclaw, Poland. Cool :) The organizers surprised us again few times :)
Read moreTesting Approach In Large Integration Systems
Maintaining large software systems is hard. Such systems are usually complex by nature. On diagrams they look nice - couple figures exchanging messages each other. The devil is in details - as always. Microservices add extra complexity. We moved from monoliths to farms of services. Now we can deploy changes separately - we decoupled the responsibilities (SOLID rocks!). Now we have more nodes where out messages are flowing from and to.
Read moreTeamCity and W3C Validator
As you may know I'm a big fan of automation. I like to have things done in background and just receive notification if something happens. This saves time and allows me to forget about yet another thing to check situation.
Read moreBizTalk ESB Tracing
As some of you may know I work with BizTalk. I'm involved in an integration project where ESB Toolkit will be used soon. I'm researching various scenarios at the moment.
Read moreCodeWatch sample fields with underscore convention check
This time I'll talk little bit about code best practices. Usually one thing what every development team does at the beginning of the project is to agree on some conventions. We agree to call services in certain way. Give view models ViewModel suffix and so on. During code reviews we try to catch all those kind of issues.... it's annoying and silly to waste time on somethings like that.
Read moreWays to create BizTalk messages
For novice BizTalk developers such simple task like creating messages in BizTalk orchestration may become cumbersome. This is what I've learned so far :)
Read moreHow to learn new language (or other thing)
In IT industry we have to learn quite intensive new things. Everything changes, but in our industry, it happens much faster. Today's buzzword is forgotten tomorrow. How do we approach that? 's annoying and silly to waste time on somethings like that.
Read moreTechnical debt types
Technical debt in software development is considered as implementing quick and dirty solutions in order to satisfy user (or deliver a sprint - Sic!). Those solutions should be paid-off in the future.
Read moreAccessing MSMQ system queues in C#
While working with MSMQ you may want to access Dead-Letter Queues. If your messages are not delivered to the expected destination they usually end up in Dead-Letter Queue.
Read more2016
Celebrity Type
A while ago I wrote a post about [7 mental types of software developer]. Now it is time to the first adjustment. It turned out that "Code nazi" and "SOLID junkie" are pretty similar. Junkie was merged in to "Code nazi".
Read moreOperationResult pattern
Communication between layers/modules/subsystems works best when API is simple and self explanatory. Pieter Hintjens wrote a great article about API design.
Read moreConference types
As IT community grows every year it is natural that supporting events like conferences, user group or hackathons will appear more often. Developers are attracted by free food and drinks, top speakers or new devices to test.
Read moreTiny git repositories automation to save 5 minutes daily
I'm a big fun of automation. I would even say 'what can be automated, can be forgotten' and you can focus in important things. This post happen to be next in new series called "Automation". The series came out somehow, I didn't plan it. It just seem that there are things I would like to share :)
Read moreHow to begin journey with BizTalk
Quite while ago I had the opportunity to start a project using BizTalk. In one sentence BizTalk is a stable integration platform providing message persistence, mappings, orchestrations and tooling. It's of course not everything :) It has it's pros and cons, but today I will share my thoughts on how to start with BizTalk. All information are based on my own experience developing BizTalk solutions for last 2 years.
Read moreSeven Personality Types of Software Developer
In every group of individuals, we can recognize a pattern. Observing and grouping people can give us more understanding of how teams are formed, how they work etc...
Read moreCodeWatch 1.0 released
Few days ago I decided to release my CodeWatch library. It's the first version to show the concept.
Read moreAutomate everything!
We all suffer from having not enough time. Time to do this or that. I did some research on where is my time spent. My daily (and simplified) activities that could be automated look like following:
Read moreDifference between System.Exception and "General Exception" in BizTalk
In BizTalk orchestration we can catch 2 different types of exceptions:
Read moreBizTalk - how to create message on orchestration programically
Since 2 years I have the opportunity to work with BizTalk. This post is one of "BizTalk series". I'll keep posting interesting tricks that are easy to do, but not so easy to find on internet.
Read moreMSMQ Viewer (Mqueue)
Working with MSMQ can be hard. Windows does not provide a tool to generated or edit messages on the queue. There are plenty of tools that can do that for you. Especially I like Mqueue Viewer
Read moreWhy provide interface with your library?
In daily programming activities some of use have the pleasure to use TDD approach :) Going deeper we can introduce the concept of mocks/stubs/shims. For the sake of this article let's call it mocks. Quite often we use 3rd party libs becuase they offer some functionalities we need. For example:
Read moreLearning from different types of books
In the past, there were myths and legends passed between generations. Later Gutenberg introduced printing... the knowledge started to spread across the world rapidly. This day's books are the main sources of transferring knowledge. Open-minded people read a lot. I try to stay open-minded...
Read morePGP Key
For secure communication I suggest contacting me via e-mail using PGP encryption. Below is my public PGP key.
Read moreAutofac, DataContext and MemoryCache issue
In one of my web application I use MemoryCache to improve performance. The code looks like this:
Read moreGeekWeekWro
During my daily work I'm creating an integration system using Microsoft technologies like BizTalk. There is a lot of exciting challenges to meet :) System health monitoring, message archiving and modular structure are just some of them. Apart of that I'm involved in wrocnet.org. Last week our monthly meeting was a part of GeekWeekWro #2 - week of IT events in Wroclaw.
Read moreNET Developers Poland FB group [PL]
This post will be in polish since it is totally related to polish .NET group on Facebook
Read moreNuget and strong-signed dll
Nuget is very good packed manager tool for .NET projects. We all use Nuget to get all necessary dependencies in our project. Usually, our projects are installed in Program Files or inetpub, which is perfectly valid :) Referenced dlls will be installed along with our projects. Everything is great!
Read moreSOLID for Adults session at WDI 2016
On Wednesday I've attended Warsaw IT Days (Warszawskie Dni Informatyki in polish). This time as a speaker :). It took me one year to jump back on stage :). I was giving a talk called "SOLID for Adults" as a part of DevTalk - Deep Dive track.
Read moreNotes from meetings - my approach
TL;DR; Write down everything from the meeting :) Day after meeting we remember 20% from it
Read moreWROC2016 - by engineers, for engineers
TL;DR; Objectivity did excellent work with this event focused on delivering world-class value to programmers. Now, dear reader, read the rest :P
Read moreDebugging WPF Bindings
WPF + MVVM is a very common way to make windows apps. It introduces the concept of data binding. We create a view-model based on one or many models and bind it to the view. Usually, it is easy... But how do you debug bindings if something is not going right? For example, you have Control Templates and styles and so on introduced in your app.
Read moreLocal IT communities - the snowball effect
I like to meet people, discuss things related to programming, new technologies, ideas and so on. I was living in several cities and always wanted to stick to people sharing the same interests. After moving to Wrocław a few years ago I immediately joined WrocNET. At the moment I'm one of the organizers and looking forward to the next meeting :)
Read moreMultilingual team communication
Communication is a substantial skill for humans. That applies also to software projects.
Read moreLogging in application
Logging information on how our application behaves is very often omitted or not properly handled by developers. We don't know what and when to log. We don't have a logging strategy. In this post, I' share my thoughts on this topic. Let's start with what hurt us when it comes to logging information from our projects.
Read more2015
BuildStuff 2015 LT conference in Vilnius
BuildStuff 2015 LT is over. This conference is another prove that event made be developers and for the developers is a perfect fit. No suits, business cards exchange and other corporate bullshit. Just raw meat :)
Read morePet project - HandyLib
It's a while since my last post.... :) Perhaps there was nothing worth writing from my side. Now it is.
Read moreMy session "SOLID as OOP abstraction" video
Last Saturday I had a presentation about SOLID. Below is the video recording. Unfortunately, the session itself was taken in polish but, at least the slides are in English :)
Read moreThe "usual" software engineer job ladder
Almost every software engineer start his career as a junior developer. Sometimes in a corporate environment, sometimes in small software studio etc... Young code hackers are often as good as developers with few years of professional experience. There are several possibilities evolve as a great software engineer in our industry.
Read more2014
NoSQL Hackathon at PGS Software
Yesterday (25.10.2014) I have attended a local NoSQL Hackathon. The event was hosted by PGS Software. It started at 9:00 and took a bit less then 9 hours to program a sample version if a twitter-like website.
Read moreGenerating xls documents with checkboxes in C#
A short while ago I had a task that required generating excel documents (xls) with special OLE objects. Checkboxes, to be precise.
Read moreMono profile in Visual Studio 2012
Recently I step upon an issue of compiling a project using Mono. Mono itself comes with a nice tool called xbuild which is a msbuild brother in Mono world. Xbuild can be used to compile a project from the command line.
Read moreLonely .NET dev in Java devs nest - Confitura 2014 conference
Last Saturday I have attended Java related conference - Confitura. My main goal was to see IT world from another site. I think that every developer should concentrate not only on his area of expertise but also stay in touch with overall trends. That's why we have nHibernate or Nancy in .NET world - leader of those projects had to know or heard and the original implementation in other languages. It's like "Think global, act local" statement.
Read more.NET Dev PL website project - Skype meeting
Last Wednesday we had our first meeting in regarding .NET Dev PL website project. It was 1,5 hour Skype discussion. I think it went pretty well. We learned a little bit about other team members. It turned out that some of us are experts in front-end technologies, others in SharePoint or in DevOps. I'm happy that the team is a mix of various point of views.
Read more.NET Developers Poland - rules
After a brief description in my previous post why .NET Developers Poland group was created now it is time to share some rules that every group member should respect.
Read more.NET Developers Poland FB group - the beginning
Over the last several years I was observing how software engineering communities evolve and grow around the world. People join communities to be stronger, to share knowledge, to search for solutions to their problems or just for fun. At this point, I missed perhaps 100 other reasons, but there is always a purpose. Often the need is to stick with new technologies and similar people. They need a place for that, a habitat...
Read more2013
Refactoring ScreenCast - PART 3
My third ScreenCast from the Sample refactoring
series is already available!
Refactoring ScreenCast - PART 2
My second ScreenCast from the Sample refactoring
series is already available! In polish again.
Refactoring ScreenCast - PART 1
I want to share with you a ScreenCast I've recorded recently. This is the first of a whole series. The main topic of the series is: Sample refactoring
.
Client-Server API
I will be shipping new iPhone game soon. It is 2 players, turn-based strategy game. Client-server architecture. More information soon ;) One question that came to my mind recently was: "How to handle app updates ?!". Right now I use simple REST with http links like: /move, /setup, etc...
. The potential problem will occur when a new version will require different JSON response from "/move" link. In that situation either version 1 or 2.0 will not work... or I'll have to support both versions under the same link. This does not smell like a good solution. The image below shows the problem.
2012
My Goals for 2013 and retrospective of Goals for 2012
New year is coming. As usual, in this moment it time I set goals for upcoming year. Having my goals written down keeps me motivated and focused on reaching them.
Read moreMy SVN/GIT ignore files pattern
For all who are looking for good ignore pattern. I use follow one:
Read moreNew PC
IT industry is growing rapidly... software and hardware are continuously improved. The new software works slow on old hardware. We all have faced that problem before :P About two weeks ago I decided to buy a new "sandbox" too :D My first idea was to buy a good notebook, but after deeper research, calculation and thinking I decided to get desktop PC. This choice, as we all know, has pros and cons, but I think desktop PC is that what I need now.
Read moreDevDay 2012 Conference in Krakow, Poland
Awesome awesome awesome! This phrase describes DevDay 2012 perfectly! Sessions conducted by Scott Hanselman, Greg Young, Sebastien Lambla, Mark Rendle, Martin Mazur, Rob Ashton and Antek Piechnik at this conference were just amazing! Great balance between technical and non-technical information. I have expected some level but seeing (for example) Scott Hanselman sharing his secrets of sharpening the saw was a nice surprise.
Read moreMobilization - mobile development conference in Lodz, Poland
Last Saturday I have attended my first conference in autumn 2012. I have registered for it on dedicated website (mobilization.pl). The website could look a bit more professional. A mix of Polish/English, fonts. Anyway, I was able to find all the important information.
Read more2011
Describe summited bugs in details
"Some fields should be read-only"... Is this a good description? If you can read in other minds, then it's ok..... otherwise be more precise when submitting a bug report!
Read moreShowing IDataErrorInfo for NULL objects
WPF provides, fairly easy to implement, possibility to validate entered data and notify user when something is incorrect. An example is available in MSDN, so I will skip further explanation how does this work...
Read moreWrite Unit Test for the bug
When you fix a bug and you feel that it may occur in the future, don't waste time and write at least one Unit Test to check code against that bug.
Read moreCheck code changed before commit
This is often daily scenario in programmers work. Work day is about to end, You are in a hurry with finishing coding, just final commit and go home :) Looks natural. Save your work somewhere. Not so fast my friend!
Read moreLogging Exception with StackTrace
C# language has a great Exception Handling mechanism build-in. If something in not predictable during compile time developer can easily embed that piece of code in try{ (...) } catch{ (...) }
and say "case closed". Sample code taken from MSDN:
Using different .config file in .NET application
In .NET world executable files using by default configuration file with special name. Microsoft has implemented following pattern: executable: program.exe and corresponding configuration file program.exe.config. In many scenarios this pattern is fitting well, but there are some cases when something else necessary. In my situation common configuration file was desirable! One configuration file with shared app settings, configuration strings, etc.
Read moredotPeek - Free .NET decompiler available in EAP
Today I've received an email from JetBrains with short information saying that an alternative to ReflectorPro is available! Since Reflector since version 7 will be not free any more I was looking here and there for some alternatives... Few weeks ago I've been looking at ILSpy, but it doesn't fit my needs. I find it little bit hard to use. Today I've started to test dotPeek and I'm pretty impressed with the tool.
Read moreEvolus Pencil - free mockup tool
On the market there is number of Mockup tools. All of them are providing similar functionality. Some allow import external graphics or exporting to pdf files out of the box. But for my needs all those additional features are not necessary. The most important factor is that the tool should provide standard mock-up functionality and by relatively cheap or freeware ;). That's why I was looking for tool that will meet that criteria:
Read moreWPF - How to show ToolTip when control is disabled
By default tooltip is hidden when control is disabled. There is simple way to enable it. Code below show how to do that:
Read moreWPF - BrushConverter HTML (Hexadecimal) colors
Assigning HTML like colors (i.e. #318D38) in WPF application directly in XAML is very easy and smooth. For example code:
Read moreSnippetCompiler
SnippetCompiler is another useful tool for C# developers. Is quite similar to FastSharp. Both allow you to write and compile sample code very quickly. SnippetCompiler has IntelliSense support (missing in Fast Sharp), that gives benefits. Unfortunately, last version is from year 2008... supports .NET up to 3.5....
Read more2010
XNA MathHelper
Today just a short note. Recently I've been working on a XNA project. In my project I needed to rotate line. I used that calculation:
Read moreCLR via C# – Jeffrey Richter
CLR via C# is one of the books that should be considered to be read by experienced .NET software engineer. I would not recommend this position to fresh software engineer. This book touches many (if not all) advanced areas in .NET framework up to 4.0. Jeffrey describes how C# language is implemented the way it is or why C# compiler works as it works (i.e. why it uses callvirt IL instruction, instead of call IL instruction, when calling a non-virtual instance method). In several places author has good arguments in hand to criticize .NET development team for that how they have implemented some CLR features (i.e. Exceptions mechanism) :)
Read moreFast Sharp - geek's text-editor
Fast Sharp is intended to be simple text editor with possibility of running C#/VB/F# code. Everything You enter in text editor is wrapped into a method and compiled on the fly. Results are displayed in output box on the bottom of the editor.
Read moreClean Code - Robert C. Marit
Clean Code: A Handbook of Agile Software Craftsmanship is a "must read" for every software engineer book. I read this book a while ago and I think it is one of the best positions in programming techniques.
Read moreC# Configuration Custom Section – Configuration Element
Recently I needed a custom section in my app.config. Everything went fine until I got this exception:
"The string must be at least 1 characters long." (System.Configuration.ConfigurationErrorsException
type) while reading the custom section.....
C# Development (Yellow Book) – Rob Miles
Recently I found that book Rob Miles - C# Development, aka. Yellow Book. Available here.
Read moreDealing with architecture bugs. Case Study
Architecture bugs are one of the hardest to solve. To solve in a proper way ;). Almost always they affect a huge part of the system. Fixes can have an impact on all application layers because mostly a fix requires changes in more than one layer. If the system is designed according to a set of rules (i.e. is not tightly coupled) then after fixing we don't have to sit and shake because something else somewhere else may crash...
Read more