Skip to main content

Posts

Showing posts from September, 2013

[Post Event] Web Codecamp event in Cluj-Napoca, September 28, 2013

Yesterday, in Cluj-Napoca we had “Web Codecamp”, an event organized by Codecamp Romania for web developers. We had 4 great session where we talked about Backbone.js, AngularJS, SignalR and continues delivery of web application. There were more than 100 attendees that stayed almost until the end of the event – thank you for your patience.

Presentation content
Backbone.js - Dragos Andronic
Slides
Source code
Video

AngularJS - mai multa actiune, mai putin cod - Simona Avornicesei
Slides
Source code
Video

Automate all the things! - How continuous delivery can save your sanity - Attila-Mihaly Balazs
Slides
Source code
Video

Real-time fluent communication using SignalR and Cloud - Radu Vunvulea
Slides
Source code
Video

Pictures from the event




Special thanks for our sponsors:


Big companies, Software Engineer and Partnerships

Some weeks ago I talked with a friend that used to work in a big company. He told me two interesting stories.

Story 1: You are working for a client on a project for 1-2 years. Things are going very good, you’re company decide that they will allocate another person in the team. The new developer will be a junior and he will take your place on the project. Because they allocated a new person in the team, you will be allocated only 2.5 days per week on the project. The rest of the time you will work on another project. They ask you to join the scrum every day and pretend that you are working all the week on the original project. The new member of the team will cover you. The client knows that the team is now n + 1 (the new member). So you begin to join the scrum every day and pretend that you are working…
First problem is sincerity. Going in a scrum meeting and pretend that you are working on the project on a specific day, but in reality you are working on another project is wrong. Fro…

New team member and code guidelines

Being a developer doesn’t mean that you are staying alone in a small room, in front of a computer and writing in a mystic programing language. Being a developer means working in a team, with real people, where you need to communicate and being part of a team. The code that is written by a developer will end to be modify by another developer from the same team or company. This means that is very important to write the code to respect the team and project standard.
But what should you do when one of guidelines are not part of your ‘believes’? For example adding a comment to each public class/interface or method.
There are developers that will NOT respect the guideline, will fight for it until the end of the world and will say NO – ‘I will never respect this guideline because is bullshit’.
This is an extremist approach and I think that this approach is not better than the one when you accept everything. In this cases the most important thing is communication. You need to understand why …

Types of Subscriptions Filter on Windows Azure Service Bus

Service Bus from Windows Azure is a great services to distribute messages to multiple subscribers. A topic can have one or more subscriptions. A message added to the topic will be send to all subscriptions that are register in that moment.
To be able to control what kind of messages are send to each subscription we can define filters. A filter is added on each subscription and specify what messages will be accepted by subscription.
The types of filters that can used are:

Correlation Filter
This is used when you want to accept messages that has a specific correlation value. This value can be set directly to the BrokenMessage and is great if you have messages with different priority or rank.
CorrelationFilter filter = new CorrelationFilter(“low”); namespaceManager.CreateSubscription(topicPath, subscriptionName, filter); BrokenMessage message = new BrokenMessage(); message.CorrelationId = “low”; …
SqlFilter
This filter give us the ability to specify what kind of messages will be accepted…

Web Codecamp event in Cluj-Napoca, September 28

In September 28th, Codecamp is organizing in Cluj-Napoca an event that is dedicated to WEB developers. We will talk about Backbone.js, AngularJS, SignalR and how to make continuous delivery for web projects.
You can register here: http://codecamp-cluj-sept2013.eventbrite.com/
Agenda:
09:15-09:30 Sosirea participanților
09:30-10:30 Backbone.js Dragos Andronic Backbonejs - the library (not the framework). What can you expect from it: short introduction to its components.  Where does its role stop: what extensions are there on the field. Some thoughts after using Backbonejs in production code 10:30-11:30 AngularJS - mai multa actiune, mai putin cod Simona Avornicesei AngularJS este o librarie javascript construita de Google si multi alti contribuitori din lume in jurul ideei de simplificare a muncii dezvoltatorului web. In aceasta sesiune vom construi o aplicatie in ASP.NET MVC si AngularJS si vom discuta despre cum poate fi introdusa in proiecte deja existente, cu impact minim. 11:30-12:30

Why we have two accounts key for Windows Azure Services?

In today post I want to talk a little bit about the account keys from Windows Azure. There are a lot of services from Windows Azure that can be consumed using an account name and key. The account name is only one and in some situations is represented by the service namespace. In all cases the account key is duplicated. There are two account keys that can be used in parallel. Both of them can be used in the same time without problems.
But why we have two accounts key?
Well, we have two accounts key with a very good purpose. Let’s imagine the case when one of the accounts key is compromised. In this case you need to generate another key and distributed it to the clients. From the moment when you generate the new key, until you distributed it to all the clients, the specific service will not be able to be used – if you use only one key.
In the situations, when a key is not valid anymore, clients could fall back to the second key and start to use it. This mean that all the clients should …

Service Bus and Shared Access Signature (SAS)

Until few months ago, Shared Access Signature (SAS) could be used only wilt Azure Storage (Blobs, Tables and Queues). From now one we can use SAS with Service Bus. We can define SAS to use in combination with topics, queues or notification hub
This security feature is pretty great, especially when you have an application that use 3rd party. You don’t need any more to share with 3rd parties the account name and key. From now one you can give them a unique token that give them access to some part of your namespace services and also limit what kind of operation they are allow to do.
In this moment you are allow to define only 12 rules in a namespace, but in the near future I expect to be able to define more than 12 rules.
The access rights that can be controlled in this moment are:

Listen – to be able to receive messageSend – to be able to send messagesManage – to be able to manage the resource From Service Bus perspective, this access rights are enough and in combination with expiration …

Big team and Commitment

Managing a big team is not an easy job, especially when you have a customer that make a lot of pressure – in the end all customers make pressure, you need to deal with it. What you should never do to a team? Announce that all the sub-teams structure will change from today - changing the scope of each of them and also the people. In this scenario people will be disoriented. All the tasks and plans will remain in a gray state. Even if you will continue after 2-3 months will not be the same. After you make such a change, you should allow some time to sub-teams to finished the ongoing tasks and let the sub-project in a stable phase. In this cases the team members will feel that there is not communication inside the team and the only scope of team leaders is to make promises. When you are in the head of a team you should not accept death-lines from the customer without talking with the team. Making such commitments can generate a lot of problems: You will not be able to deliver in timeThe…

Task - run on UI thread (update UI)

Working with Tasks is pretty easy. You can do very easy things that would be pretty complicated to do using threads. In today post I want to talk a little bit about UI threads and tasks.
If you are working on a Windows Store App, Windows Phone or WPF application then you will have the following case:
From a task I want to be able to update a UI component (a label for example).
By default this is not possible, if you are trying to run the task from the UI thread then you don’t resolve the problem. The task will still run on the UI thread and if you have a long task then you will block the UI.
The solution is to run only the lines of code that update the UI components on a task that runs on UI. If the code that updates the UI is at the end of the task then you can have something like this:
var blueTask = Task<string>.Run(() => { ... return value; }) .ContinueWith(value => { ... this.MyLabel.Text = value; }, TaskScheduler.FromCurrentSynchronizationCo…

Load Test - Binding Context Parameters

The new Load Tests features that are coming with Visual Studio 2013 are great. In combination with Windows Azure and TFS Controllers, you can run load test using cloud infrastructure without having to deploy or configure something things on the cloud.
When developers start to create different web test that will be used for load tests they usually them in sub-tests and reuse them when is possible. For example very easily you can end up with something like this:

Foo1WebTestFoo2WebTestFoo3WebTestBigFooWebTest
Where BigFooWebTest make calls to Foo1WebTest and Foo2WebTest.
If you started to extract context parameters from each web test you will observer a pretty odd behavior. By default it is not possible to bind a context parameter. This means that you will not be able to fetch data for a context parameter from a data source like a csv file or data base.
Even if you will write to the value of the parameter context the binding command (“{{..#TableName.CollumnName}}”) you will observe that t…