Martín Salías - Software Architect

<< June 2017 >>
Sun Mon Tue Wed Thu Fri Sat
 01 02 03
04 05 06 07 08 09 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

RSS Feed

Subscribe with Bloglines

Martín Salías Home
Universal Thread
Level Extreme .NET Magazine
Microsoft User Group Argentina



Contact Me

If you want to be updated on this weblog Enter your email here:

rss feed

Friday, June 22, 2007
R# 3.0 is officially released

Most probably you already know I'm a huge Resharper fan. It has really boosted my productivity and helped me craft better and cleaner code.

I've been using the R# 3 beta for quite some time now, and I'm happy that they released version 3.0 yesterday.

Among other things, VBers can now enjoy most of the great features.

There is a trial version waiting for you, but take in consideration that R# is a one-way trip:

Posted at 11:24 am by msalias
Make a comment

Thursday, June 14, 2007
Installing Resharper 3.0 on Orcas Beta

After playing a bit with the Orcas Beta, next thing I did was trying to install Resharper before actually working on VS, because when I really sterted to code beyond a few checks I felt like walking in the mud... Even while the IDE improved somehow, there is still a LOT of room for improvement.

But, Alas! Resharper 3.0 (beta) didn't seem to work on VS, so I went on and struggled for a about two weeks, and every time I switched from the Orcas VM to my host machine and VS 2005 it felt like... "why is Orcas experience soooo horrible".

So I went as begged the JetBrains guys if there was a way to make R# work on Orcas, and (fool of me) of course it is! Thanks to Oleg Stepanov for pointing me to:

To make it short, all you have to do isrun the MSI like this:
msiexec /i ReSharperSetup.msi VSVERSION=9.0

And now I can honor the JetBrains motto in Orcas too: Develop with pleasure!

Posted at 04:37 pm by msalias
Make a comment

Sunday, June 10, 2007
Blurring lines

My June editorial for Level Extreme .NET Magazine.

Some time ago I wrote about some limitations still blocking the scope of things like web applications. I was seeing how many different players in the industry were taking a new look at the problem of disconnected browser-based programs, which is one of the main shortcomings in this space. In the last month or so several important announcements has been made public, and some basic support for this scenarios are actually working right now.

For once, Google just released Google Gears, its browser extension that adds offline support for applications. This is in a very early stage and thus it is just adding basic functionality like a local web server to serve locally cached content, a small local database to hold data, and a little thread pool to ease the handle of asynchronous tasks. As several people noticed, there is a bunch of stuff that's still missing, mainly more features to handle different synchronization scenarios, which is something that the current implementation leaves to the developer. But for the first release, this API looks really promising.

On the other side of the fence, Microsoft recently released Silverlight, which has planned offline support although it is in an even early stage in this particular area. However, the scaled-down version of the .NET Framework runtime is a perfect sandbox strategy to provide this kind of services in a safe and easy way, and this is something they definitively ave in their roadmap.

At the same time, Silverlight brings another push to other area where web applications were often turned down: rich applications. While it is true that Flash is a well-established platform, so far it has been mostly used in areas like marketing, games and other niches. Microsoft is trying to push Silverlight and its promised simplified programming model to a wider audience, including business applications and other typical markets where Flash didn't penetrated much yet.

In the meantime, another huge trend both competitors are heavily pushing now is mashups. These are web applications built out of parts, much like you could build with components before, but in the lousy-connected scene of the web. Microsoft has PopFly in Beta, while Google has its own Mashup Editor.

What's interesting in this space is that you can built a valuable service out of already existing services and sources by adding very little code or configuration on your part, usually just connecting outputs with inputs. But of course, this poses a new series of challenges, like the need to store this configuration and data somewhere. As it is usual in the mashup style, you may not own or control the server where you are hosting your creation, so finding a store for your data is not that easy. Also, as this kind of strategy evolves, there is an increasing need to have a standard way to access some specific information which has a more complex structure than what RSS or Atom supports.

Microsoft came up with a very interesting approach to help in this issue with a project called Astoria. What they are trying to provide is data services over the web, and this really captivated my attention. I had always discouraged people to try to use web services as a data service, in the typical sense of exposing a "query" service over HTTP. This something I reconsidered in certain cases once we arrived to the point where we were talking about XML Services (without the "web" emphasis). My main concern was always the high-latency nature of the whole SOAP-HTTP combo. Providing data access over the web means that you need to add to the actual database access a lot of overhead in the form of packaging, connection and disconnection, etc. This can decrease once you use SOAP over TCP, etc, but still SOAP is not designed to handle this kind of situation.

Astoria take a more RESTful approach (basic background on REST architecture in Wikipedia). It is based also on the ADO.Net Entity Framework (another piece of yet-unreleased software) that provides a conceptual model over a given physical database schema (to follow me, just think of it as sort of Object-Oriented Database). An Astoria service provides an entry point to this model, where you can start by querying its content (like "http://host/vdir/northwind.svc") and get an XML with the entities (kind of tables). Then you can refine your URL based on this information, to access a specific resource. I won't make this into an Astoria overview, but what's important is that this allows you to get the equivalent of select, insert, update or delete operations over the web, with a fairly good throughput, and -more importantly- with a single consistent mode that allows tools to be very generic. For example, there are some sample controls for ASP.Net that will figura out the whole structure of an Astoria service and allow to navigate trough its data by using grids with sortable columns, filters, paging and editing without any other configuration than the entry point (again, this "http://YourServer/YourModel.svc").

The point I'm trying to make is that we are starting to see some forbidden territory explored. I guess that sooner than we expect we will witness how cities are built over there. Convergence is happening really fast, and the traditional lines we take for granted today between desktop, web and mobile applications are finally starting to fade. New technology and faster communications are accelerating it.

I'd just want that the level of quality of the produced solutions evolved as fast as its reach... What do you think?

Posted at 02:01 pm by msalias
Make a comment

Monday, May 07, 2007
Static languages vs. dynamic languages

My May editorial for Level Extreme .NET Magazine.

Programming languages have gone a long path, as you can see in this nice diagram by Éric Lévénez. Throughout its history, programming was always searching for the perfect balance between several forces like expressiveness, productivity and correctness. While the first two evolved with object orientation, higher abstraction and an increase in composability (as more and more reusable algorithms and even executable code accumulated), correctness was somehow slower, maybe because it is a more complex problem, and maybe because for a relatively immature industry, the competitive advantage seemed to be more productivity-related.

As software became more pervasive in our daily lives, however, predictability and safety in execution started to be bigger concerns. Also, software lives more and more as part of an ecosystem, where dependencies on other services its crucial, and minor mistakes or errors get quickly magnified.

Verifying that a program is correct is a tricky task. For once, intention has to be clear to be able to know what to check. Then, inputs and outputs have to be clearly defined, allowing to detect any misbehavior. Even at a lower level, some operations over the platform have to be validated to avoid problems in the hosting environment (like memory leaks, drying resources, locks, etc).

From an academic and mainstream perspective, so far, the tendency has been to solve these issues by strengthening the runtime environment (like the Java Virtual Machine or the .NET Framework), and letting it handle dangerous operations instead of the languages, and also making the compilers smarter to detect as many problems as early as possible.

To enable this many languages (like Java and C#) followed the C++ path of strong typing. The focus of type safety helped to make compilers much better, but also helped with many other levels of checking, like static analysis, which allows to provide a higher level overview of a system and detecting more subtle things like compliance to specific practices or conventions.

Strong typing also helped providing better contextual information within IDEs, greatly improving features like Intellisense and refactoring tools, but until recently, it also added some verbosity.

While this mainstream approach captured most attention in the enterprise market, a grass roots movement with a noticeable mix of open source initiatives and communities pushed in a different direction: toward dynamically-typed languages.

This is indeed a complex terrain, as there is not a strict definition of what makes a language "dynamic". Some of their attributes, however, are things like runtime evaluation and dynamic creation of types and objects, and many times, dynamic typing, although this is not a requirement. Generally speaking, they are perceived as simpler to program and more functional in nature.

I personally feel very happy about all this renewed language explosion because I love this field, but I still see a greatest reward in static languages, coupled with some features that are usually perceived as "dynamic".

Type inference for example, arriving in C# 3.0, allows developers to avoid declaring variable types in many situations, by using the var keyword. This is handy and nice, but it is also great in the sense that strong typing is still there, because the type is inferred from the value been assigned.

Functional programming is making its way also in the form of lambda expressions support, but without the need of been checked at runtime. I really prefer lambda composability over runtime expression evaluation, as it provides a much safer experience and fastest feedback.

But dynamic languages (and the DLR) will provide a good complement to strongly-typed languages, like a good way to handle scenarios where late binding is a need, or contributing some interpreter environment for checking short snippets of code without the need to have projects, compilation, etc. This is great to quickly instantiate stuff and play around, then getting code into a program.

I guess that convergence is here, and the will be no real static vs. dynamic fight in the end, but a great leverage of all the languages strengths. This will boost productivity and safety at the same time, and I hope programming would be able to make a quantum leap as a discipline pretty soon.

Posted at 02:03 pm by msalias
Make a comment

Tuesday, April 24, 2007
Is "smart TV" a contradiction in terms?

You may have read about Joost, the beta service that the original founders of Kazaa and Skype are now rolling out. It is basically a free, full-screen, real-time, on-demand TV service.

I wrote about in my April editorial for Level Extreme .NET Magazine.

I don't watch TV except for an ocassional movie on saturday nights when I'm out of the city and offline.  Shades  But I guess my main gripe with TV is that most of the time, when I know about some program which could interest me, it is scheduled on an impossible time. Or maybe it is on a suitable time later that day, so I just forgot.

I know devices like TIVO solve this, but been no fan of TV to begin with, I don't feel the need for this.

But now, Joost can be a good alternative for that. It is already available on the device I use the most (my notebook) and also in the one which is ubiquous at home (we have 5 PCs for a family of four -not counting handhelds). But the great thing is having access to programming on-demand, even searchable!

Right now Joost is offering just a few programs, but it is just in Beta, so it is no surprise. In any case, the promise is big. Also, video quality is not always so good, but it is magnificent compared with YouTube (and I'm comparing full-screen experience). Again, this is also due to the beta status, but not so much for the network capabilities, but for the network size. One great thing about Joost architecture is that as the service usage grows, the network improves, dure to its distributed, peer-to-peer strategy. So instead of "more users=worst service", here you should have "more users=better service". Of course this is theoretical, but so far they have proved the concept with Skype.

Actually, this is the first time I feel interested in Television since I stopped watching Pink Panther 30 years ago.

Posted at 11:58 am by msalias
Comments (1)

Friday, February 02, 2007
No Ruby in .NET yet, but Ruby in Visual Studio

Yes, Ruby fans around the .NET world, now you can use Visual Studio to code on Ruby with nice intellisense, syntax coloring and debugging.

Thanks to the people at SapphireSteel we now have Ruby in Steel. They have a free personal edition if you want to try it. I've been using it to play a bit and it is very nice.

Now that John Lam started working at Microsoft, I guess if RubyCLR can go beyond a mere bridge and we can expect a full .NET implementation...


Posted at 02:12 pm by msalias
Comments (1)

Monday, January 22, 2007
Guilty as charged

I am nerdier than 93% of all people. Are you nerdier? Click here to find out!

Posted at 10:52 pm by msalias
Make a comment

Thursday, January 11, 2007
I've Been Tagged! 5 Things You Didn't Know About Me...

Duhh... I knew it would hapen sooner or later. Claudio tagged me, so now I have to confess to the world five personal secrets that I have been hidden all these years.

Well, here I go:

1. I'm a book freak. Yeah, many people know about my technical bookshelf, which I even have partially listed to share in my website. But I'm also a deep into literature. I like to read a lot, and my house is full of books everywhere.

I love literature since a kid, and I can read in Spanish, English, Italian and some French. Although I mostly used to read science fiction when I was younger, I derived aftewards into other stuff and then moved from literature into the edges of philosopy and sociology.

2. I write fiction, too.

I even published a fantastic literature fanzine called Gurbo when I was about 17, for about 13 issues, and hen I contributed with many more. Over time, I published a few short stories and I keep several longer works (a couple would-be novels) in the works.

I also wrote poetry and still do it from time to time, and I published some also but I'm never happy with my production as a poet. Sure enough, writing fiction is something that I'd like to do if I had more time.

3. It is true: I have a geeky family.

We have about half a dozen computers at home, including one in the kitchen that my wife uses for her cooking recipes and to organize he family schedules and so on. We four (my two girls, 5 and 10, my wife and me) have all our smartphones, pocket PCs, handycam and camera, several portable players and games, etc.

Happily enough, we have one single (if big) TV screen in the house. We are so geeky that we watch most our movies on the computers. Actually, I have even read a few complete novels in my phone...

4. I'm shy! Really!

Even while I spent a great deal of my time talking, teaching, pressenting, etc, and I seem quite self-confident, I don't hang too well with people outside of my professional life. This is maybe what drove me to read and write so much, and eventually exposed myself to the public. I can talk for hours, literally until my voice get broke as many people know, but always around specific (mostly technical) topics, but it is not so easy for me to start talking to people I hardly know in a party, for example.

5. Fun revelation: I quit driving

I have always been a loosy driver. I'm always thinking in something else, so many times I can't really concentrate on the road, the signs, and so on. Finally, instead of getting mad with my wife because she was always gving me directions, I quit.

Now she drives most of the time. I can drive from time to time, the same way I smoke a cigarrette from time to time even if I'm not a smoker, but I stopped driving and during the last year when I was working in a company more than half and hour from home, I discovered that I had an additional hour of reading... <s>

Well, I have not than many secrets after all. Now's my time to tag five other people, so I will pick:

The Teacher: Angel "Java" López

Ken Levy

Craig Berntson

Andrés Aguiar

Eugenio Serrano (and maybe we fork this meme into Spanish)

Now's your turn!


Posted at 12:27 pm by msalias
Make a comment

Tuesday, January 02, 2007
Another MVP Year

The people at Microsoft didn't figured it out and awarded me again as a Microsoft MVP.

Now, we have to consider if this is a sign of decadence, or just a bureaucratic mistake.

In any case, thanks to the guys at the MVP Program!

Posted at 11:15 am by msalias
Make a comment

Friday, December 29, 2006
The browser-based operating system arrived

At least for me, this is the first incarnation of a "regular" Operating System hosted into the browser.

It has a desktop, several applications, including a notepad, IM, its own browser and even an IDE to develop your own programs (using Javascript over their framework component model).

You can check it at:

Actually, although it looks like a very cool experiment, playing with it I found that the desktop metapor doesn't apply inside the browser. The browser is a window within the host OS itself, so having other windows inside just don't work.

My take is that the browser itself should become the desktop, and the applications will be there. For all the speculation about a Google OS, my take is that they won't do anything like that, because the web+the browser already ARE the OS and thay just need to produce more applications.

Now, what I'm really waiting for is truly good IDE to write code inside the browser, with all the cool stuff like refactoring tools, project management, version control, etc. Of course, it should support server and client deployment, so most probably it should be based on a platform like java/javascript, although having something like that in .NET would be super!


Posted at 06:51 pm by msalias
Make a comment

Previous Page Next Page