Monday, November 15, 2010

Online Events

The last couple of weeks were full of events. Although I dind’t attended any of them in person, I could get some of their essence online, in between work (or after it).

The first event was PDC2010. Even though it has always been an american and the main MS developer event, this year the keynote was broadcasted live throughout the world. I attended at the MS auditory in TagusPark (Portugal), and the keynote main themes were:

Azure (PaaS, Market place, VM role, Server App Virtualization, SQL Azure reporting, Application Fabric and composition, TFS, extra small instances)

IE9 (HTML5, hardware acceleration, pinned sites)

WP7 (many demos, developer tools, and a WP7 phone for every PDC 2010 attendee!)

But besides all the clouds, demos and TLAs (or Four LAs), the main reason I had to watch PDC sessions was the future of C#. And even though the keynote didn’t have any hints on this regard, the sessions with Hejlsberg (FT09) and with Bart De Smet (FT10) were very good.

So as the theme in C# 4 was Dynamic, the theme in C# Next will be Asynchronous Programming, keeping with the trend of Declarative and Concurrent. The presentation demoed the async modifier and the await operator, resulting in an easier model of composition of asynchronous methods.

It was a bit disapointing seeing that “Compiler as a Service”, is in the makes, but apparently only for an even future version. So all the possibilities of architectural refactoring, DSL embeding, and meta-programming won’t be possible in the near future.

The presentation on Linq to everything (FT10) was very good, focusing on some advanced and possible uses of Linq, Providers, Rx and the dual of IQueryable ~ IQbservable.

 

The other event (of relevance to me) was the PASS Summit 2010, also available through live streaming. As it occurred during work hours, I had to watch it with interruptions, but from what I saw, the main announcements were:

SQL Server 11(?) – Denali CTP (column based query accelerator, round-trip refactoring, deployment improvements, sequences, paging, FileTable – WinFS back?, Full-Text Search improvements)

SQL 2008 R2 Parallel DataWarehouse

MS Atlanta (cloud service for configuration problems and other issues)

MCM for SQL Server changes (the program will be avaible worldwide outside Redmond, more affordable, and the training will be available through SQL Skills, with many training videos available for free)

Marcas Technorati: ,,

Monday, November 16, 2009

TechEd Europe 2009

Well TechEd Europe 2009 held in Berlim, finished yesterday. It was another great experience, where I learned some stuff that I was eager to get my hands on (VS 2010 Architecture), contacted some Portuguese fellows and MS gurus, and discovered a little (not much time available, and at 4PM it’s completely dark) of Berlim. Also received a free copy of Win7 and some kits (SQL 2008, Win 2008), which will come handy.

There were also some missteps:

  • On arrival, all of the bags that came from Lisbon didn’t make it to the airplane and were left in Madrid. Not very pleasant, arriving at 22:45 at Berlim and not having any more clothes when the temperature is 2ºC.
  • The wireless/Internet on the hotel was not free, and very expensive: 9,95 €/hour, or 19,95 €/day.
  • The logistics around the event had some problems, namely with the check-in, and the cloakroom (huge lines). But, for a first event (for Berlim) and with > 7.000 people attending, it sould be expected. According to some powerpoints of the sessions, there will be no DVD with the sessions recordings and powerpoints available for the attendees (but the e-mail with the TechEd offers, mentions the MMS 2009 DVDs Breakout recordings and HOLs, so I don’t know what to make of it).
  • Almost nobody speaks English in Berlim, so we were on our own. The younger people speak a little English (but one person from the hotel confused “no problem” with “not possible”, making for a very strange conversation).
  • The flight back was at 7:30 AM so waking up and checking-out between 4:30 AM and 5:30 AM was a bit tough. Also some confusions with the credit card payment of the hotel (it was just reserved, apparently), made for a tought day (not over yet).
  • The connection flight is only at 15:45, so we have to wait out in the aeroport for more than 4 hours and are already very tired. Also the WI-FI at the airport is not free, so no Internet.

But back to the event. Microsoft grouped the IT sessions with the Developer sessions, which has its pros and cons. On the upside, I was able to assist some very good and on-time sessions on “Virtualization and Consolidation” (Gopal Ashok), “Upgrading to SQL 2008” (Dandy Wein), and two very good sessions from Russinovich (from SysInternals fame) “Pushing the limits of Windows”, “Windows Troubleshooting”.

On the downside, the keynote was more IT oriented (Exchange 2010, a new efficiency debate – which was a bit boring, and Windows 2008 R2 and Hyper-V).

For me, the best sessions on the Architecture Track were David Chappell “IT Innovation”, Rafal Lucawiecki “Predictive Programming”, and Don Smith “Application Architecture Guide”. On the Development Track, I really enjoyed the ones around VS2010 Architecture Tools: Peter Provost “Architecture Discovery and Validation”, and Doug Seven “TFS: Become productive in under 30 minutes”.

A bit of a let down were the sessions from Tess Fernandez “Debugging ASP.NET” and Brian Keller “SW Testing in VS 2010”. Not that they were bad, on the contrary, but I was expecting more (maybe it was the expectations).

Update:

The post was written on Saturday, 14 November on the airport, so the event finished 13 November. The post was done today because there was no free wireless on the airport and the remainder of the weekend was just family time.

Marcas Technorati: ,,,

SQL Tips/Tricks 2

Excel is an excellent tool for generating sql scripts of reference tables. Besides being easy to generate the scripts, it’s also easy for the client to manipulate and update the reference information (almost always, it’s the format used for database like information for clients).

So for an excel with the following structure

TableX      
ID Name Date1 UserId
1 Abc 10-01-2009 Alc
2 Def 10-01-2009 Xyz

where the $A$1 is the table name and the columns name are on row 2 (ID, Name, Date1, UserId), inserting the formula on column 6 (or bigger) without newlines:

=CONCATENATE("INSERT INTO ";$A$1;"(";A$2;",";B$2;",";C$2;",";D$2;") VALUES(";A3;", '";B3;"', '";TEXT(C3;"aaaa-mm-dd");"', '";D3;"')")

yields the following result:

INSERT INTO TableX(ID,Name,Date1,UserId) VALUES(1, 'Abc', '2009-01-10', 'Alc')

 

What the formula  is doing is concatenating “INSERT INTO”, the table name ($A$1), the parentesis, column names (A$2, B$2, …), the string VALUES, and the actual values separated by commas and delimited with ‘ when appropriate (string or date values).

So to generate the script is just a matter of copying the formula for all the rows with values (double clicking the cross symbol on the right lower corner of the cell, and it repeats itself according to the adjacent cell, or pulling down the intended number of rows):

image

And the end result is this:

image

And that’s it. A script ready for pasting in a SQL file and applying to a DB.

Marcas Technorati: ,

Wednesday, July 15, 2009

Google Chrome OS

Google has made the announcement of the Chrome OS and has been riding the wave of free publicity on every blog and tech site.

So what to make of it? Bruce Eckel (from Thinking in Java fame) thinks it’s another nail in Microsoft’s coffin, the timing is perfect (because of netbooks and Vista failure), and Microsoft is too big to react rapidly.

But many think that Google has lost it’s mind, operating systems are too complex, it’s Microsoft and Apple territory, and 2H 2010 is too late (Ted Neward’s Thoughts on the Chrome OS announcement and Fake Steve’s Let's all take a deep breath and get some perspective). Mini Msft already sees Microsoft turning the corner with Windows 7 and Bing, while Google  is loosing steam and facing some of Miscrosoft problems.

 

But to me the most correct analysis is made in The Google Revenue Equation, and Why Google’s Building Chrome OS, that puts the focus on the strategy, that for Google is to center the User Experience on the Web (as it monetizes online ads), while for Microsoft is to center the User Experience on the Desktop (because of Windows and Office). So each player is reaching out to maximize, consolidate and uniformize that experience. For Google it means reaching out to Mobile, Browsers and Operating Systems (that focus on the Web). On the other hand, for Microsoft the center is the Desktop, so RIA and it’s online offers exist primarily to focus and integrate well with Windows and Office Desktop.

Marcas Technorati: ,,

Wednesday, June 24, 2009

VS 2010

There’s some great stuff coming up with VS2010. First, there’s a focus on performance (probably because Rico Mariani is for some time the chief  architect of Visual Studio, so startup should improve as well as the text editor), but no plans for a 64 bit version.

 

Another area getting a lot of attention (that is deserved) is parallel computing, with some new patterns and librarys (thanks for the post, Mário):

 

An area that I’m especially eager to really discover is debugging/profiling with VS2010. According to one Dev Manager, the Beta 1 already has:

  • Historical Debugging (collecting events, parameters, performance monitor)
  • Test impact Analysis
  • Tier profiling (DB calls)
  • Parallel performance analyzer
  • Performance rules

Which is very good, and John Robbin already dived deep and poked with the feature.

Tuesday, January 27, 2009

Top 100 Books of SW Engineering

I just found out a great compilation of the top 100 books of Software Engineering. The method for computing the list involves Amazon ratings, Jolt Awards and Google hits, so it's as scientific as it can get...

Looking at the list makes for a tremendous wish-list/bookshelf:

#
Author(s) / Title

1
Steve McConnell

Code Complete: A Practical Handbook of Software Construction (2nd Edition)

2
Elisabeth Freeman, etc.

Head First Design Patterns

3
Steve McConnell

Rapid Development

4
Erich Gamma

Design Patterns: Elements of Reusable Object-Oriented Software

5
Bruce Schneier

Applied Cryptography: Protocols, Algorithms, and Source Code (2nd Edition)

6
Robert C. Martin

Agile Software Development: Principles, Patterns and Practices

7
Joel Spolsky

Joel on Software

8
Tom DeMarco, Timothy Lister

Peopleware: Productive Projects and Teams (2nd Edition)

9
Frederick P. Brooks

The Mythical Man-Month, Anniversary Edition (2nd Edition)

10
Martin Fowler

Refactoring: Improving the Design of Existing Code

11
Mike Cohn

Agile Estimating and Planning

12
Alistair Cockburn

Writing Effective Use Cases

13
Bertrand Meyer

Object-Oriented Software Construction (2nd Edition)

14
Steve McConnell

Software Estimation: Demystifying the Black Art

15
Mike Cohn

User Stories Applied: For Agile Software Development

16
Donald E. Knuth

The Art of Computer Programming, Volumes 1-3 Boxed Set (2nd Edition)

17
Martin Fowler

Patterns of Enterprise Application Architecture

18
Jeffrey Friedl

Mastering Regular Expressions

19
Andrew Hunt, David Thomas

The Pragmatic Programmer: From Journeyman to Master

20
Karl E. Wiegers

Software Requirements (2nd Edition)

The full article is at Top 100 Best Software Engineering Books, Ever.

Friday, December 12, 2008

Architecture again

Right after my last post (which I was on my mind because it happened to me a couple of times this year and the last year), I discovered (thanks to a post from a friend patterns & practices- App Arch Guide Pocket Guides) that MS PnP has some interesting stuff on this topic (shame for not looking recently on PnP).

Apart from the pocket guides, that I haven't looked into, what I found were some cheat sheets and diagrams.

PnP Application Architecture Frame Cheat Sheet describes architecture frames (authentication, caching, ... and 14 others), quality attributes (14) and the mapping between application types, architecture styles and the architecture frames (and the common issues). It's great stuff, and should be mandatory read for every developper. Shame that Microsoft only has teaching offerings around products (maybe that's what the industry cares about).

ArchMetaFrame

Another one is PnP Application Type Matrix Cheat Sheet that summarizes the main application types, their benefits, considerations, scenarios and solutions.

The last one is PnP Visio index Diagrams that MS makes available for modification and use to document our architectures. Even if only used for proposals, it's very good and allows reuse.

Marcas Technorati: ,

Friday, December 05, 2008

Architecture & Process

Lately, I've been surprised by how little attention some developers pay to application architecture. By architecture here, I mean to say the high level decisions that crosscut all the application code.

Recently, during the transfer of an application from another team, I was shocked that there was no clear vision of the main decisions regarding some fundamental aspects of a web application (I don't mean documented, just a clear definition of the decision or the approaches taken in the implementation). Every web application should make explicit the major decisions (and the reasioning behind them) regarding:

    • Logging (policy - how, when; and tools/code)
    • Exception Handling
    • Data Acess (ADO.NET, ORM, Linq)
        • Transaction Management (sharing the same transaction, creating and commiting transactions)
    • Session Management (asp.net memory, DB, custom)
    • Security (low-level - sql injection, cross scripting; high-level - isolate data between different users/entitys/geographically)
    • Profiles and Permissions (management of users/groups and the corresponding permissions on application functionalities)
    • Operation Auditing (especially in financial systems)
    • Composition (tiers, layers, service oriented)
    • Dependencies (3rd party tools, components, services)
    • Patterns used (MVC, Singleton, Composite)
    • Naming conventions
    • Configuration management (reference tables, configuration values, connection strings, etc)
    • Concurrency (synchronizatios, async callbacks, threading)
    • ...

 

There's also other important stuff, more on the process/principles side, that gain by being defined:

    • Planning, prioritization & risk management
    • Organization (teams, projects)
    • Tools
    • Automation of tasks (building, testing, importing reference data)
    • Testing and Coverage (unit testing, integration testing, coverage of significant program states)
    • Refactoring
    • Documentation (design, architecture, glossary, major entities, workarounds to problems)
    • Bug/Incident tracking
    • Version Control (tool, policy)
    • Communication
    • DRY
    • Responsabilities (code & people) and Separation of concerns
    • Coupling & Cohesion
    • Done?

 

As with everything, there's also the risk of overdoing stuff, or doing it as an end (and not as mean to an end).

If just 1/3 of the list were implemented, maintenance would be such an easier job...

Marcas Technorati: ,