Monthly Archives: October 2014

dotNetConfPL 2014: summary and sessions recap

The second edition of dotNetConfPL was pretty successful. I am very pleased with all sessions, and speakers performance.

All sessions went smooth, but one. Barbara Fusinska could not run screenshare on Google Hangouts. Her session was recorded later and is already available. The only way to inform other about the problems during the conference was through JabbR or displaying Blue Screen of Death instead of her session. Adding something on website would require us to redeploy. We didn’t want to do that. For the next year we will prepare some placeholder for information, which can be set dynamically.

This year we had one non-technical talk: Talent for $2. You would be tempted to! I think this talk has great potential. It includes a lot of pointers and tips. I encourage you to look at it. I watched Simon Sinek’s TED talk: “How great leaders inspire action”, and I took Clifton’s test to discover my talents. My 5 talents are:

  • Learner
  • Focus
  • Responsibility
  • Deliberative
  • Analytical

I am very interested if some of you did this test, and what results did you get. Share it in comments!

The most popular feedback about the conference is: “We need it more often than once a year”. We will try to figure out something 😉

Check all sessions recap:

Maciej Aniserowicz – Unit testing in practice, vol 2

1:11 – agenda
1:55 – unit tests vs integration tests
4:14 – DB testing: “in memory”
7:14 – DB create script
7:50 – DEMO start
9:25 – tests outline
11:40 – creating InMemoryDbFixture (helper class for tests)
13:40 – tests implementation
17:00 – first method implementation (to pass test)
18:29 – installing packages: autofixture, xunit.extensions, autofixture.xunit (for random string generation)
19:30 – applying installed packages for automatic string generation
21:15 – second method implementation (to pass test)
24:20 – modifying InMemoryDbFixture class to respect join on tables
26:12 – pros and cons for testing with real DB
27:50 – separating tests for mock DB, and real DB
30:09 – script for drop everything in DB
32:15 – creating fixture for running db scripts (drop_everything.sql and install.sql)
34:50 – baking fixture into test class and implementing tests for real DB
42:00 – turning off NCrunch ability to run tests simultaneously
43:40 – summary
45:10 – Q&A

Filip Wojcieszyn – Everything you want to know about Roslyn

1:55 – C# compiler today
3:20 – compiler as a service
4:05 – Roslyn influence
6:45 – Roslyn APIs
7:58 – Tools required for Roslyn
10:25 – compiler as a service DEMO
17:17 – Roslyn for code analysis (static, semantic)
22:24 – code analysis with Roslyn DEMO (syntax visualizer)
26:21 – sanity check DEMO
31:40 – SyntaxRewriter DEMO
35:55 – Roslyn APIs (one more time)
38:40 – building tools for Visual Studio with Roslyn SDK
39:25 – Diagnostic + Code fix DEMO
46:57 – Custom C# dialect DEMO
50:30 – Examples of Roslyn in Real World
52:00 – Q&A

Barbara Fusinska – Aspect-Oriented Programming (AOP)

1:37 – Agenda
3:29 – History of AOP
4:57 – Cross cutting concerns
8:50 – What the heck are aspects?
13:01 – demo app presentation
15:23 – Some benefits of AOP
16:15 – DEMO: adding functionality to existing method of demo app
23:55 – DEMO: LoggingAspect
27:00 – DEMO: DefensiveProgrammingAspect
28:23 – DEMO: TransactionAspect
30:00 – Where you’ve been using AOP without knowing it
33:15 – DEMO: communication with external services and cleaning code with aspects
42:02 – Testing aspects usage
46:10 – DEMO: How to test aspects and possible problems

Jakub Gutkowski – Server Side or/and Client Side MVC ???

0:45 – Agenda
1:06 – Client Side vs Server Side
6:22 – SPA (Single Page Applications)
14:00 – Problems with SPA
16:58 – Solutions?
19:20 – DEMO: SPA inside not SPA
23:39 – DEMO: SPA without server
26:20 – JavaScript everywhere? JS approach by Twitter, Basecamp, AirBnB, Instagram, Facebook
34:20 – How we can/should use JavaScript
35:13 – DEMO: Push State
40:53 – summary
41:22 – Q&A

Patryk Góralowski – Talent for $2. You would be tempted to!

3:39 – how to answer a question: who you are?
6:05 – development
6:59 – self development
7:58 – our personal resources: body, mind, emotions, belifies
14:00 – task 1: why your are here today? give 10 reasons, select 3 most important, and ask why each of them
19:30 – expected result from task 1
21:02 – about Simon Sinek (author of the process given in task 1) and his TED talk: How great leaders inspire action
26:35 – philosophy of our self development
27:35 – about Mike Markkula, and philosophy of Apple
29:34 – #1: empathy (understand customer needs better than others)
30:32 – task 2: write down your needs
30:53 – #2: focus (eliminate all irrelevances)
31:29 – task 3: eliminate all irrelevances at your work
33:10 – #3: impute desired characteristics
35:55 – task 4: identify your “imputed characteristics”
37:27 – invest $2 to discover your talent ($9.99 for 5 talents) with Gallup Strengths Center
39:55 – what means talent by Gallup Institute
42:06 – strength = talent + knowledge + skills
43:33 – Clifton’s test
45:05 – 5 talents discovered by Patryk
49:22 – summary
50:46 – recommended books
51:45 – Q&A

Maciej Grabek – Business Requirements in the form of a code: a few words about BDD with SpecFlow

1:25 – Agenda
2:20 – DEMO #0: unit tests – how we do that, and challenges in interaction with business people
5:03 – business requirements and unit tests (BDD)
7:02 – Applying BDD (tools)
9:25 – DEMO #1: simple example (translating behavior description to C# code)
16:53 – DEMO #2: parameters
18:45 – DEMO #3: scopes
23:05 – DEMO #4: parameters table
35:45 – DEMO #5: “before” and “after”
42:19 – summary
46:36 – Q&A

Michał Łusiak – WTF # – what is F # and why you should care

0:41 – Functional programming
4:38 – F# language overview
10:41 – DEMO: variables
14:07 – DEMO: lists
15:59 – DEMO: functions
19:53 – DEMO: pattern matching
21:23 – DEMO: tuples
22:20 – DEMO: record types
23:04 – DEMO: union types
24:01 – DEMO: printing
25:00 – DEMO: using .NET libraries from F#
25:55 – DEMO: unit of measures (“numbers with units” variables)
28:21 – DEMO: type provides (providing types for compiler dynamically)
31:12 – Why use F#
33:18 – Learning resources
38:05 – Recommended F# talks
39:20 – Recommended books
39:58 – summary
40:10 – Q&A


dotNetConfPL – the second edition

dotNetConfPL - 2nd edition

The first edition of dotNetConfPL was pretty successful, and together with Michal and Pawel we decided to do a second edition. This conference is in Polish language, which makes it unique, because there are no other online conference like that in Poland.

This year talks looks promising as well. Maciej Aniserowicz prepared second part of his talk about unit tests from the last year, Filip Wojcieszyn will talk about the hottest thing in this year: Roslyn. Jakub Gutkowski prepared a talk about cooperation of MVC in client and server side. Maciej Grabek proposed a talk about BDD, which is getting more and more popular in .NET World. Michał Łusiak (from tretton37) will talk about F#. This year, we have a women speaker! Barbara Fusińska will talk about Aspect-Oriented Programming. Another new thing is a non-technical talk: Patryk Góralowski prepared a talk with mysterious title: Talent for 2 dolars!

I really can’t wait! All talks sounds very interesting. Remember to buy pizza and beer, and join us on On Air, this Saturday, October 18, 3PM (UTC+01:00, Warsaw Time Zone).

Find out more about talks and speakers.

This year we have 6 ReSharper licenses, and 3 NCrunch licenses to give away. Additionally, Filip Wojcieszyn volunteered to give away one copy of his book: ASP.NET Web API 2 Recipes: A Problem-Solution Approach. To join the raffle, register your attendance!

See you at the conference!


Hi, I’m Jakub and I work for Microsoft

Blue badge

After I got my degree in August I moved to Redmond, WA to start my new job at Microsoft. I work for Azure App Platform Team. My official position is Software Development Engineer (SDE).

It has been a month since I started. So far, my team, work environment, the product and development process are great.

My team

MS team

My team (which is part of Azure App Platform) is working on the new Azure Portal. People in my team are smart. All of them. Moreover, they are really passionate about things they are doing, and they really care. I am working with Steve Sanderson, the creator of Knockout.js and one of the best technical speakers. The team is very diverse: people from many different countries all around the World, with a quite few girls among them.

My team is working in Agile.  The working culture is generally: “Get the job done”. People are in the office usually between 10am and 5pm. Some are coming later, and stay longer, others come early and leave early (there are also people who come early and leave late). If somebody feel the need to focus and don’t being interrupted then he/she is working from home, and it is not a problem.

What is the best, I am not implementing some spec written by somebody 5 levels above me. I need to implement an idea, add my contribution, suggest changes etc. When I asked a question what are the expectations from me, my lead and my manager told me that they expect me to suggest some ideas how to make the product better, how we can improve it, and what we are doing wrong. This is exactly what I was looking forward to!

Work environment

MS workspace

The building I am working in (Microsoft Building 44) is designed for Agile interactions. There are white boards everywhere. We work in Open Spaces (around 15 people per room). Microsoft is changing approach, and moving from private offices/cubicles to open spaces. What is cool, there are 3 conference rooms ‘attached’ to our Open Space (2 small, 1 big), and if somebody needs to work in peace, he/she can use one of them. If all are occupied (which does not happen very often), there are special ‘focus rooms’ (with desk and chair) in the building.

I have great machines to work on: HP Workstation Z420 (Xeon E5-1650 v2 3.5 GHz, 32 GB RAM, 128 GB SSD + 256 GB SSD + 1 TB SATA) with two 24″ monitors DELL Ultrasharp U2415, and Microsoft Sculpt keyboard and mouse. I have also ultrabook Lenovo ThinkPad X1 Carbon (i7-3667U @ 2 GHz, 8 GB RAM, 240 GB SSD). I have adjustable height desk, and very comfortable Haworth Zody Task chair.

The product

MS Azure Portal

The new Azure portal is a Single Page Metro Web Application. One of the main goals of the new portal is to make it easy for adding extensions. My team is working on the Framework, which is being used by other teams to create front-end for underlying Azure infrastructure. What is cool,  every extension is working as a standalone application in a separate iframe. Extension authors do not need to work with HTML and CSS a lot. They just use controls (e.g. list, combo box or checkbox) created by us, and communicate with them through TypeScript/JavaScript. Update of the view is performed by Knockout.js. Check Justin Beckwith’s post about the new Azure portal architecture. If you have not seen it yet, check the Overview of the new Azure Portal with Vishal Joshi and Scott Hanselman and Vishal and Scott create a new startup with the new Azure Portal. To get started with Azure, check my previous post, and get a free trial. Moreover, we need (and we appreciate) your feedback!

Technologies


MS technologies

We use HTML5 and LESS for our View layer. LESS is very handy in maintaining big style sheets.

We use TypeScript (which compiles to JavaScript). Strong typing, and abstraction over JavaScript inheritance (TypeScript classes) is very, very helpful in building large-scale application. To be honest, I do not know how we would be able to maintain the new Azure Portal using raw JavaScript.

Our main JavaScript Framework is Knockout.js. This allows us to prepare generic, reusable controls that can be used by other teams without the need of interaction with the DOM.

Our unit test framework is QUnit. For integration tests we use Selenium.

We use git for source control management. As Continuous Integration Server, we use Jenkins.

We have code review process supported by CodeFlow. It is required to have at least 2 reviews before code can be checked-in/pushed to the repository.

Building process is supported by MSBuild.

Behind the scenes, we use bunch of other JS libs, e.g. q.js, inject.js, d3.js, hammer.js or ZeroClipboard.js.

Summary

After 1 month I love it! There are many challenges, and interesting problems to solve. I am still new to the project, and I didn’t discover it entirely yet. What I can say now, I really like the people from my team, the software development process and work environment in my team.

Probably I will be writing about my work on this blog. Stay tuned!

MS sign