Skip to main content

Posts

Showing posts from June, 2014

[PostEvent] Windows Phone Hackaton, iQuest

Last weekend we organized an internal hackathon (at practice level). Our main scope of this event was to port an application that was developed for iOS and Android to Windows Phone platform. Because there are only few days left until Windows Phone 8.1 update will be released we decided to develop the application directly for Windows Phone 8.1. During the weekend we had a great time, learning new stacks and how to use Blend. Yes, Blend – it is a great tool for UI, that can help you to create state of the art UI. At the end of this hackathon we were able to deliver a working application, with all the features in place, ready to hit Windows Store. Let’s see some figures from this event: 5 smart iQuest developers (Gheorghina Gligor, Alexandra Vunvulea, Andrei Bancioiu, Tudor Turcu, Radu Vunvulea) 1 Android developer (Radu Ailincai)  1 special guest (Paul Tirban) A total of 120h of working 10l of Pepsi A lot of pizza Too much coffee Chocolate everywhere 8 hours of sleep (yes

[Code refactoring] Multiple Threads - Locks and Mutex

Each of us know what is lock and what its purpose is. It is used to block a critical section of code – the statements from the lock block will be executed only by one thread at the same time. public class Foo { FooConnection con; public void OpenConnection() { ... con.Open(); } public void CloseConnection() { ... con.Close(); } public void Write(...) { ... con.Write(...); } public object Read() { ... ... con.Read(); ... } } ... Foo foo = ...; foo.OpenConnection(); foo.Read(); foo.Read(); ... foo.Read(); foo.RWRWRWR..(); foo.CloseConnection(); Being in a multi-thread environment problems with multiple access to the same resources appeared, information started to be corrupted and many more. For example, multiple read and write started to execute at the same time and having only one connection (cursor) the information retrieved was corrupted. Because there was only one instance of Foo, locks were added to Read a

Why you should look around before writing something from scratch

Nowadays there are a lot of SPA websites used for different purposed. Almost all of them need to access different resources in CRUD format (Create/Read/Update/Delete). I had to take a look into a project that was using Angular to offer the SPA support. The application is hosted in Azure using Web Sites. Everything was great, except one thing. There were around 100 types of entities that were accessed by the SPA application through API controllers. For CRUD access, the development team defined a dynamic mechanism that was able to fetch data from the database and expose it using REST services over API controllers. The code was pretty ugly, even though the design was good. Personally I had the feeling that they reinvented the wheel. On top of this custom implementation, there was another mechanism for caching on client side, based on dictionary. Very simple, but perfect for their needs. When the project ended, they realized one thing. Everything that was made to support client side

OWIN and Katana

OWIN and Katana. This two words are now the buzz words in Web development over Microsoft technologies. I heard pretty often this two buzz words used, but without knowing very clear what is OWIN and what is Katana. The main scope of this post is to define this two new terms and determine when we should talk about OWN and when we should talk about Katana. OWIN comes from Open Web Interface for .NET and is an abstraction level between our web application and .NET web server infrastructure. This mean that from now on we will be able to host our web applications on different web servers, not only on IIS. Until now the only possibility to host a web application written in .NET was using IIS. OWIN is here to help us. Because OWN define the abstraction level between the web server and web application we can now start to develop owner own web servers or integrate it in existing one. It is important to know that OWIN only defines the specification of this layer and not the real implementation