• This is a usual time of the year for summaries so let’s keep the tradition alive and write one. Here’s my 2017 achievements split between months. January Blogging for 18 days straight – nothing near gutek’s achievement (whole year!) but still a nice streak Microsoft MVP title (thx Konrad Kokosa for pointing this one ;)) February […]

  • “Advent of Code is a series of small programming puzzles for a variety of skill levels.” Each day was a fun an interesting coding challenge. I’ve decided to practice and code this in python to learn the skill. Some of them might not be the best python scripting as I was short on time in […]

  • Some time ago I’ve attended a .net developer days 2017 conference. I was quite busy since (traveling, teaching .net, working) that only now I got some time to share some thoughts about it. As a bonus I’m including a short interview I did during the event. I need to state here, just to be clear, […]

  • We developers don’t like documentation. We don’t like to read it, and we even more we don’t like to write it. But sometimes it is worth to read it. Like when you find out that by using datetime in SQL DB you got a milliseconds precision but only if it ends on 0,3,7 (link). That […]

  • In the previous post we’ve removed some of the technical debt that could be found in our NetDeveloperPoland Website application. In this one we will remove it even more. We can even maybe reach a B? Let’s see where we’ll end up at the end of this part.

This is a usual time of the year for summaries so let’s keep the tradition alive and write one. Here’s my 2017 achievements split between months.

January

  • Blogging for 18 days straight – nothing near gutek’s achievement (whole year!) but still a nice streak
  • Microsoft MVP title (thx Konrad Kokosa for pointing this one ;))

February

March

  • OstraPila has started – Me & Jarosław Stadnicki have started a podcast – after 9 months. We have recorded 20 episodes  and almost 10k downloads. A nice start.
  • Cognitive Services talk at Wroclawska Grupa .NET – slides can be found here
  • Short ‘VS over the years’ talk at Make Sense in IT – slides can be found here

April

May

  • Simon was born! Not a professional achievement but the most important one!

June

  • Debugging & diagnostics series – I’ve started recording some YT videos about debugging. Still some more to go but a nice start.
  • 100th WrocNet meeting – When I’ve joined & took over the group leadership in 2010 I did not expect that we will hit that mark. Wow. Nice accomplishment.
  • Wroc# Online – Microsoft Cognitive Services talk

July

  • C# 7.0 features article for ProgramistaMag – I’ve finished writing in July but it published in September.

August

  • C# 7.0 – VirtualStudy.pl course. First try at creating and publishing a course.

September

  • Looks like I did not anything interesting in September 😉

October

November

  • Again, November was quite boring.

December

Apart from that?
Monthly WrocNet meetings that I help organising, preparing devWarsztaty – Wroclaw’s edition as well as managing daily activities for dotnetomaniak.pl. Quite a nice year.

“Advent of Code is a series of small programming puzzles for a variety of skill levels.”
Each day was a fun an interesting coding challenge. I’ve decided to practice and code this in python to learn the skill. Some of them might not be the best python scripting as I was short on time in some days but still wanted to complete the task. Not always the output from the script is a direct answer to the daily challenge, sometimes it’s not the fastest solution possible.

 

Day 1: Inverse Captcha

Details – http://adventofcode.com/2017/day/1
Solution to part 1 – https://gist.github.com/pawlos/82f1f97828fccc9a117c637b9b710a66.html
Solution to part 2 – https://gist.github.com/pawlos/fd7a6c1823cf9a713ef50f245105dd4c.html

Day 2: Corruption Checksum

Details – http://adventofcode.com/2017/day/2
Solution to part 1 – https://gist.github.com/pawlos/bb20a7b8f0d0c9f7f4532f84106074ce
Solution to part 2 – https://gist.github.com/pawlos/24dc8a45f7fa555157bc65aaf04d428a

Day 3: Spiral Memory

Details – http://adventofcode.com/2017/day/3
Solution to part 1 – https://gist.github.com/pawlos/0cefa9d753bd6416e6cc9a456ed787f7
Solution to part 2 – https://gist.github.com/pawlos/b3bdcbb781e0fc1d3bd887d414583863

Day 4: High-Entropy Passphrases

Details – http://adventofcode.com/2017/day/4
Solution to part 1 – https://gist.github.com/pawlos/7f9ba37abaecb4982f8004b291fd1ba0
Solution to part 2 – https://gist.github.com/pawlos/00f277220389cf221c747ce883f1859e

Day 5: A Maze of Twisty Trampolines, All Alike

Details – http://adventofcode.com/2017/day/5
Solution to part 1 – https://gist.github.com/pawlos/908e808e6b1b1c31703e06447602cc55
Solution to part 2 – https://gist.github.com/pawlos/931710a8cb12a6a0e7a1196e7f74a241

Day 6: Memory Reallocation

Details – http://adventofcode.com/2017/day/6
Solution to part 1 – https://gist.github.com/pawlos/a24ba3c943e5ef6bd79282c81a220547
Solution to part 2 – https://gist.github.com/pawlos/2a2dc38a80dabb8e3ac2f5fc25c9b71d

Day 7: Recursive Circus

Details – http://adventofcode.com/2017/day/7
Solution to part 1 – https://gist.github.com/pawlos/e9fdd3c06d5b75128eabf015305323b6
Solution to part 2 – https://gist.github.com/pawlos/014bb51611a7b62fe354f1e7c53a6e08

Day 8: I Heard You Like Registers

Details – http://adventofcode.com/2017/day/8
Solution to part 1 – https://gist.github.com/pawlos/6aeb8a524e94cb83b07cb9a799711cd4
Solution to part 2 – https://gist.github.com/pawlos/2b5bcb1e02839e66c3fed8c6bce57f29

Day 9: Stream Processing

Details – http://adventofcode.com/2017/day/9
Solution to part 1 – https://gist.github.com/pawlos/71a270fdef94404734b383f6e3cb2301
Solution to part 2 – https://gist.github.com/pawlos/bd153a53389ee09e7a8ee6b90ea1f116

Day 10: Knot Hash

Details – http://adventofcode.com/2017/day/10
Solution to part 1 – https://gist.github.com/pawlos/d198a7409f8ed6afcd46c2ddd16450b9
Solution to part 2 – https://gist.github.com/pawlos/863ced736a22b43d477bf489b181bb42

Day 11: Hex Ed

Details – http://adventofcode.com/2017/day/11
Solution to part 1 – https://gist.github.com/pawlos/0e6a529420d64e94ae2ab9916f32248c
Solution to part 2 – https://gist.github.com/pawlos/f013e298c150d0b07370d0bdfff4fe0f

Day 12: Digital Plumber

Details – http://adventofcode.com/2017/day/12
Solution to part 1 – https://gist.github.com/pawlos/0179419b9e6b6bd72bb1fd59e8fb4233
Solution to part 2 – https://gist.github.com/pawlos/25963ca3f66c788cf9261c5c1d10e58b

Day 13: Packet Scanners

Details – http://adventofcode.com/2017/day/13
Solution to part 1 – https://gist.github.com/pawlos/cb3578b4e29bb7ce753907a261b8256e
Solution to part 2 – https://gist.github.com/pawlos/8218b4934a3e4396eb480e0083785ab6

Day 14: Disk Defragmentation

Details – http://adventofcode.com/2017/day/14
Solution to part 1 – https://gist.github.com/pawlos/24c26762184837457c5b0cd9f4b8fe5f
Solution to part 2 – https://gist.github.com/pawlos/4b322a408e5c3c65c923571062ccdee2

Day 15: Dueling Generators

Details – http://adventofcode.com/2017/day/15
Solution to part 1 – https://gist.github.com/pawlos/0461352818500cd46b3183f8bbacc539
Solution to part 2 – https://gist.github.com/pawlos/fec8f99521de483a3e3d3fd1127d6cef

Day 16: Permutation Promenade

Details – http://adventofcode.com/2017/day/16
Solution to part 1 – https://gist.github.com/pawlos/d355e133b372b90e429a97e204f7b067
Solution to part 2 – https://gist.github.com/pawlos/98b45d417f6427c4108978b8964af9c8

Day 17: Spinlock

Details – http://adventofcode.com/2017/day/17
Solution to part 1 – https://gist.github.com/pawlos/321e0657fbcc9808be0a12732cc1a2c0
Solution to part 2 – https://gist.github.com/pawlos/c8456415e7e944476c9cf3b1ee8f8569

Day 18: Duet

Details – http://adventofcode.com/2017/day/18
Solution to part 1 – https://gist.github.com/pawlos/d2d5d12b1cf2f14995115a8308ce094e
Solution to part 2 – https://gist.github.com/pawlos/c2bd0ebb7f48fecd1a5fd254dc68e050

Day 19: A Series of Tubes

Details – http://adventofcode.com/2017/day/19
Solution to part 1 – https://gist.github.com/pawlos/8d470da8c54f4e4f4e3b25cb3bef74a5
Solution to part 2 – https://gist.github.com/pawlos/32277a094a960761fba2c147ed9aa6dd

Day 20: Particle Swarm

Details – http://adventofcode.com/2017/day/20
Solution to part 1 – https://gist.github.com/pawlos/ebeb4eb8b3c8ea842cb7064505f1c404
Solution to part 2 – https://gist.github.com/pawlos/2dbbe0fb1e227b4468e34a0fddea2bbf

Day 21: Fractal Art

Details – http://adventofcode.com/2017/day/21
Solution to part 1 – https://gist.github.com/pawlos/ee5fc801b8454c0a58ae76ee22a121c5
Solution to part 2 – Same as for part 1 but after more iterations.

Day 22: Sporifica Virus

Details – http://adventofcode.com/2017/day/22
Solution to part 1 – https://gist.github.com/pawlos/ff75dd473c3742af5b893a388b24100e
Solution to part 2 – https://gist.github.com/pawlos/2c2bb4d29cfaceef30ad93379aece410

Day 23: Coprocessor Conflagration

Details – http://adventofcode.com/2017/day/23
Solution to part 1 – https://gist.github.com/pawlos/83a364442c4866bb8456ccfbae0a0503
Solution to part 2 – https://gist.github.com/pawlos/dfce8ab3fe7a9fce529f51f33d5a1b1a

Day 24: Electromagnetic Moat

Details – http://adventofcode.com/2017/day/24
Solution to part 1 – https://gist.github.com/pawlos/482e24afc80ddc36f2847800eb1432ee.html
Solution to part 2 – https://gist.github.com/pawlos/ef49fc86128ef98c46beab1a33fc80e6.html

Day 25: The Halting Problem

For the final day the task was to implement a Turing Machine – https://gist.github.com/pawlos/d64c39bd8dc36f832587acaadf0ff612.html

 

Some time ago I’ve attended a .net developer days 2017 conference. I was quite busy since (traveling, teaching .net, working) that only now I got some time to share some thoughts about it. As a bonus I’m including a short interview I did during the event. I need to state here, just to be clear, I got a free ticket for the conference from the organizers but I’ve paid for workshop by myself. Read More

We developers don’t like documentation. We don’t like to read it, and we even more we don’t like to write it. But sometimes it is worth to read it. Like when you find out that by using datetime in SQL DB you got a milliseconds precision but only if it ends on 0,3,7 (link). That was brought to my attention by Lech Osiński  at Programistok 2017. Lech was describing some WTF experience when dealing with datetime if you don’t read the docs. I had a similar experience this time with .NET.

I was asked why this

returns true. My first impression was WTF, it should not return true. Empty string doesn’t have all characters equal to ‘+’. But a quick check in LINQPad confirmed that it does. So what now? Well we could go to read the docs but who would do that? What we did (as this now become a office problem :]) decompiled the All method and check how it is implemented. So All returns false when it predicate returns false but if for any of the chars it will not be false it will return true. So for an empty string, the predicate will never be executed thus All will return true.

A bit counter-intuitive I would say. Counter-intuitive? Yes – but of course documented. If you got to the docs for All it’s clear that for an empty collection (in this case, an empty string) it will return true.

true if every element of the source sequence passes the test in the specified predicate, or if the sequence is empty; otherwise, false.

So read the documentation and don’t be surprised when something is not working as expected – at least it’s documented.

Photo by: https://unsplash.com/photos/wk833OrQLJE

In the previous post we’ve removed some of the technical debt that could be found in our NetDeveloperPoland Website application. In this one we will remove it even more. We can even maybe reach a B? Let’s see where we’ll end up at the end of this part.

Read More

As you could read in the post about NDepend – the Technical debt feature was I think the best what was new (to me) in NDepend 2017. I’ve decided to use it and write couple of posts how I use this feature to actually reducing it in the NetDevelopersPoland WebSite project.

Read More

If you have ever written an application that’s a bit bigger than a standard Hello World and that will live a litter longer than just for showing it to your significant other – I bet you’ve experience the same. You try to make it clean. You try to make it perfect but in the end it’s not as perfect as you would like it to be.

Read More

Microsoft Cognitive Services & Bot Framework - video

If you prefer to watch that to read and you like Cognitive Services and Bot Framework here’s something for you. Read More

Microsoft Cognitive Services - applications

Even the best technology is not worth much if there are no applications that uses it. The same goes with Microsoft Cognitive Services.

Here is the list of few websites or apps that uses Cognitive Services. Let’s see if this technology is already getting adoption.

Read More

Making procedurally generated endless runner game

 

When we started making Little Creeps – the 2D endless runner game on mobile – we were faced with the problem of creating an algorithm that is going to be the core of the game – creating unique path in realtime so we can play as long as we like without the feeling that we are running around in circle.

Read More