Skip to main content

Posts

Showing posts from November, 2014

Azure blog post marathon is ready to start - December, 2014

[Post-Event] CloudBrew - Belgium, 2014

This weeks I had the opportunity to attend to CloudBrew conference in Belgium The conference is organized by Azug (Belgium Microsoft Azure Group). I was surprised to discover an extremly active Azure community here.
There were two tracks in parallel where different aspects of cloud and Azure were presented. All the sessions were interesting. The most important thing at all sessions was that speakers shared their own experience with cloud and Azure (in this way we can learn more easily, from the mistakes of others). And of course the beer sampling was a great experience, the art of making and drinking : -) beer was shared with us.
In the second part of the day I delivered a session where I talked about how we can use Azure to improve the redundancy level of our systems with out of the box solutions offered by Microsoft Azure.
Below, you can find the slides from the session and a picture that I really enjoy.


Database and Public Endpoints redundancy on Azure (CloudBrew) from Radu Vunvulea

Unit Tests fairy tale

A few weeks ago I had an interesting discussion with a college that is working in another company. I will try may a short summary of their story.

Why?
Because I was shocked to find out that…. unit tests are written only to give the team something to do.

THE story
They had to develop for one of their client a web application. They had a team of 4-5 people that worked on the project for 2 years and a half. In this period of time, they didn’t written NO unit tests.
After this period of time, the development part ended and monitoring and supported phase started. The team reduce two 2 people that started to make bug fixing, adding small new features. Things like that, normal tasks for this state of a software product.
Because the two members of the team didn’t had enough load a bright ideas came from the ‘God’.
When you don’t have issues or tasks in the queue, start writing unit test.
Of course, unit tests helped them to discover issues in the application. On top of this, they realize that …

[Post-Event] ITDays, 25-26 November 2014, Cluj-Napoca

ITDays took place on 25th and 26th of November 2014 Cluj-Napoca. This is an IT event dedicated to entrepreneurship, technology and innovation.
This was the second year when this event took place in Cluj-Napoca and I hope that next year we will have another ITDays event.
ITDays in numbers:
2 international speakers 3+ trend setter CEOs of Cluj IT Companies 5+ research projects 8+ startup pitches 15+ technical presentations 220+ expected participants I participate to this event as a speaker and talk about the good design of a startup product. I hope that you enjoy my session. Below you can find the slides and a short post related to this topic.
http://vunvulearadu.blogspot.ro/2014/11/what-is-good-design.html

What is a good design?

The main scope of this post is to try to define what is a good design of a startup in the software industry. Different characteristics of a good startup will be discussed below.  


What is a good design?
Some people would say that is a UX that can be used by anybody, regardless of age of nationality. Others would say that a good design of a software product give us the ability to extend it, adding new features with a minimal cost.
In my opinion a good design is a design that works. A good design should bring real value, should enable us to make a difference.

What is a startup?
This question could sound silly, but before going forward you should ask yourself “What is a startup?”
The classic definition of a startup is an organization that search for a business model that is scalable and repeatable. In general a startup is in research or development field. If we go further with this definition and try to define “startup” as a noun we will discover that startup means:
The action or process o…

Winter Codecamp in Cluj-Napoca, December 10, 2014

Codecamp is back in Cluj-Napoca with a new free event. You should pin on the map December 10, 2014. Why? Because we are preparing a great event where we will talk about SQL and NoSQL solutions.
The event will take place at United Business Center (near Iulius Mall) and is supported by Endava. If you want to participate to this event, please register using the fallowing link www.codecamp-cluj-dec2014.eventbrite.com 
The agenda for event can be found below:

18:00-18:30 Attendee Registration (Cofee Time)
18:30-19:30 Database-as-a-Service - how to fire your DBA and deploy new databases quickly, securely, and cheaply Silviu Niculiță Let's see if DBaaS lives up to all the hype as we review the major players in the marketplace, and as we take a closer look at Microsoft's own offering in this space. 19:30-19:45 Coffe Time and Socialization Time
19:45-20:45 DocumentDB - Another NoSQL Solution for cloud infrastructure Radu Vunvulea This is a session where we will discuss what is Documen…

AngularJS - Handling custom HTTP error codes

In this post we will talk about how we can manage on AngularJS, errors like access forbidden or unauthorized. Also we will see what kind of errors we need to throw from a MVC (WebAPI) application.
First off all, don’t try to manage the response error of each HTTP request. You should register an interceptor to HTTP request and manage there all the HTTP errors. Only custom behavior should be managed manually per request.
In the below example we register an HTTP interceptor that redirect the user to the login page when the user is unauthorized to access to access that resources (is not logged in). If you don’t manage the 401 error on the client side, the default behavior of browsers is to display the popup windows where user needs to insert his credentials (Windows Authentification), even if you have another authentication in parallel (Windows Auth. combined with token base – OWIN for example)
In the case he is not allowed to access that resources we display an alert that notify user ab…

Azure Batch Service - A job that runs an .exe application (part 2)

In the last post related to Azure Batch we talk about the theoretical parts. We discover what kind of batch tasks we can have, what is a merge task and many more.
In this blog post we will focus on how we can create a batch and how we can push our own logic into a batch. We will focus on Azure Batch using a .NET library for now – running an .exe application as a task logic.

Base Terminology
Before going forward it would a good idea to review the batch terminology:
Account - A uniquely identified entity within the service. All processing is done through a Batch account.
Pool – A collection of task virtual machines on which task applications run.
Task Virtual Machine - A machine that is assigned to a pool and is used by tasks that are assigned to jobs that run in the pool.
Task Virtual Machine User – A user account on a task virtual machine.
Workitem - Specifies how computation is performed on task virtual machines in a pool.
Job - A running instance of a work item and consists of a collecti…

How to check in AngularJS if a service was register or not

There are cases when you need to check in a service or a controller was register in AngularJS.
For example a valid use case is when you have the same implementation running on multiple application. In this case, you may want to intercept the HTTP provider and add a custom step there. This step don’t needs to run on all the application, only in the one where the service exist and register.
A solution for this case would be to have a flag in the configuration that specify this. In the core you would have an IF that would check the value of this flag.
Another solution is to check if a specific service was register in AngularJS or not. If the service was register that you would execute your own logic.
To check if a service was register or not in AngularJS container you need to call the ‘has’ method of ‘inhector’. It will return TRUE if the service was register.
if ($injector.has('httpInterceptorService')) { $httpProvider.interceptors.push('httpInterceptorService&#…

How to not kill a good idea

When you are starting an initiative don’t expect people to jump into the boat with you. Even the best ideas can fail because of this.

Example
For example if you want to start a learning program you should think twice about how you can convince people to join the program and participate to it. In the first moment everyone will say that it is a great idea, this is something that was missing and it will add extra value to the group. But in the moment when you send a ‘mass’ invitation to people, to see who would like to join the program you will have 0 people that would like to join the program.

Cause
In my personal opinion, the way how you recut people to a new program is wrong. Don’t expect people to jump into a new boat, to a PoC. They have a lot of things to do and even if the idea sounds good, you are still in the PoC phase.
You cannot guaranty to them that there is a real value for them. This is why in you ask the ‘mass’ nobody will be interested directly. The way how you try to gathe…

Azure Batch Service - Overview (part 1)

In the last few days a new Azure service catch my eyes. Unfortunately only today I had time to write about it.
Azure Batch Service is the today star. Why? Because enables us to run tasks over Azure infrastructure without having to think about scaling, parallel and performance problems. You only need to write the batch logic, upload to Azure and everything else will be managed by Azure Batch Service.
On top this, we have a scheduling and auto scaling mechanism that enable us to have more granular control to compute resources. The API give us the possibility to publish and run batch applications without thinking about resources, service management and so on. Also, Batch Service provide us full access to configuration, giving us the possibility to manage all the resources and task execution pipeline. In this case you need to manage how content is moved, persisted and so on.

What you can run? 
There are two types of formats that can be used in this moment. An classic .exe file that represe…

[Post Event] Microsoft Summit 2014, Bucharest, Romania, 12-13 November

This week I had the opportunity to participate at Microsoft Summit, which was held in Bucharest. This was the second edition of this event and more than 1500 IT specialist participate to this event. We could say that for two days, Bucharest was center of Microsoft technologies and IT trends.
There were a lot speakers from all around the world, from USA to Germany or UK. Speakers like Don Grantham or David Chappell were at Microsoft Summit. From my opinion, I think that people enjoyed the session hold by D. Chappell, Andy Malone and Paula Januszkiewicz.
There were 6 tracks in parallel, were sessions dedicated to Business Managers, IT Professional and Developers were held. I had the opportunity to present to talk about “The Internet Of Things” and “Microsoft Azure – A place for Dev/Test/Int Environments”. In the first session I talk about Azure and how we can use it to create a bridge between devices and our backend. In the second session I talk about how we can create different environ…

Azure SQL Database - Elastic Scale, perfect solution for sharding

There is a great news for people that use Azure SQL Database. Elastic scale is available in preview phase. I expecting this feature from some time and now I’m happy that is available to us.
The biggest advantage of a cloud solution is scalability and pay as you go. You pay a resource only when you need it without paying the period of time when you don’t use it. Over this features, a service like automatically scaling can be added very easily. This is applicable when we are talking about web sites, web/worker roles where things are not so complicated.
To be able to scale the data-tier or an application you need to be able to use sharding (joining multiple resources, in our case splitting a big database on multiple databases). This feature was enabled on Microsoft Azure in a very smart way and without adding additional costs to the end user. You will pay the Azure SQL instances that you use. For each shard you will need to use a new instance of Azure SQL Database.
Elastic scale is enabl…

Define multiple networks (NIC) on Azure VMs

NIC comes from Network Interface Controller. What is connection between NIC and Microsoft Azure?
Starting from now we have the possibility to define multiple virtual network interfaces for each VM that is hosted on Azure. In on-premises this features is used to connect to multiple networks and provide mechanism to isolate different tiers of our system.
This can be used with success, in combination with a VPN connection to connect to multiple on-premises networks or Azure Virtual Networks. In this way we can establish a Cross Premises Connectivity.
In this moment the configuration can be made using PowerShell scripts and commands. An important pre requirement for NIC is to have Azure Virtual Network already configured on that VM.
A NIC can be configured only on VM. You cannot make this configuration on a web role or web sites. In this moment this feature is available only for VM. There is also a limit of number of NICs that you can define on each VM. The number is direct connected to t…

I need a cache system, what service from Azure should I use?

On the market there are a lot of caching solution. The same thing is happening on Microsoft Azure. In this moment we have 4 different solution for caching (Azure Redis Cache, Managed Cache Service, In-Role Cache and Shared Cache).
A normal question that I heard from different people was: What kind of cache solution should I use?
This is a normal question, because having so many option you don’t know what to choose. I will try to describe what are the benefits of each cache solution that are available on Azure and see what we should use.

Azure Shared Cache
Azure Shared Cache is the oldest cache solution that was offered on Azure and is still available (for old clients) It was retired this year and can be accessed from Silverlight portal.
 This solution used to offer cache support as a service and I can say that I was able to use it with success on 3 or 4 project. The thing that I really enjoyed was the API, which was very simple to use and understand.

In-Role Cache
This cache solution en…

Clean Code – Boundaries, Error Handling and Objects

In the last 3 months I tried to talk about different subjects presented in Clean Code. Even if this is the 4th article about this topic, I have the feeling that there are so many things that we should talk about when we are talking about a clean and good written code.
We could say that ‘Clean Code’ book, written by Robert C. set the standards in our industry from this perspective. It is the developers Bible and many times it is a used as the ‘law’ of the code. I don’t want to go deeper into this subject, but I promise that one time I will talk in details why/why not we should use this book as THE Bible.

Today topics

In this article I will try to talk about Objects and Data Structure, Error Handling and Boundaries I expect to go from the code format, to how the code should look like and how we should implement different features.

Objects and Data Structure
I think that all of us remember the University courses, when teachers try to explain us that we should only expose from a class, only…

Multiple Staging Deployment of Azure Web Sites using Slots

How are you dealing the website management before going live with a new version? I have in mind different environments like production, testing, integration, development, persist the old version of the web site into a location that give you possibility to swap between the new one and old one if you have issues.


If you are using Azure Websites you will discover a new feature that gives you the possibility to have multiple staging environments live in the same time. Switching between them is done in real time. Before going further, you should know two things. One, we are not referring to staging environment, this is something more that staging and this feature is available only for Standard plan.
From now, you can deploy a new version of your web site into a separate slot, that is isolated 100% from the production one. There you can test how it’s behave, performance issues and so on. You can have as many slots as you want, each slot is accessible using a unique URL. Anytime, you can swi…

When we should (not) use Azure Virtual Networks

In today post I would like to talk about Azure Virtual Network and when we should use them.
Before starting, let’s see what a virtual network is. Virtual Networks give us the possibility to create a private network in Azure, where we can manage our own devices and machines. This network will has his own IP, DNS and custom configuration. This kind of private networks can add an additionally later of security in our solution because only resources from the same Virtual Network can see each other. Base on this we could say that we are creating own isolated islands, with their own topology (or course if needed, we add also on-premises resources – creating a hybrid network).
It is important to remember that in a Virtual Network we can have any kind or resources from PaaS to IaaS. For example we can have VMs combined with some worker roles and Azure SQL Services. All in the same Virtual Network.
In this moment we made an overview idea about what is a Virtual Network. Next I would like to lo…