Profilo di AndreFurtaSpace - www.afurtad...FotoBlogElenchi Strumenti Guida

Blog


27 novembre

Microsoft Surface SDK in action

 

How difficult will it be for us to create applications targeted at Microsoft Surface?

Check the answer by yourself in the video below (click here if you can't see it):

 
Video: The Microsoft Surface SDK In Action

That's one thing I really like: providing cool tools, APIs and SDKs for developers.

[]s
-- AFurtado

DSL Tools presentation at Tech Ed Brazil 2007

 

Next week, from Dec 05 to Dec 07, we'll have the Brazilian edition of Microsoft's Tech Ed, in São Paulo. As in the last year, I'll be there doing a presentation on the Microsoft DSL Tools, entitled "Domain-Specific Languages with Visual Studio Team System".

The presentation will happen on December 06, from 11:00 to 12:15. More information is presented below. If you want to meet me there, drop a word.

  • Track: DEV
  • Level: 300
  • Code: DEV301
  • Room: 11
  • Date/hour: 06/12/2007, 11:00 - 12:15
  • Title [pt-BR]: Domain Specific Languages (DSL) com VSTS
  • Description [pt-BR]: Linguagens de domínio específico (DSLs) permitem descrever ou modelar, através de diagramas visuais, conceitos de uma área específica de interesse. Concisas e possuindo alto poder de abstração, elas podem ser aplicadas tanto a domínios horizontais, como workflow e aplicações web, como a domínios verticais, como desenvolvimento de jogos ou telefonia. Uma de suas principais aplicações é a geração automática de artefatos, como código-fonte ou arquivos de configuração. Venha se inteirar do DSL Tools, parte da iniciativa “Microsoft Software Factories”, para projetar hoje linguagens visuais que melhorarão sua produtividade.

[]s
-- AFurtado

26 novembre

Microsoft recruits again; check some interview tips

 

Microsoft's recruitment is definitively a non-stop process. At least in Brazil, at each three or four months, I hear that some of the company teams are travelling here to start more recruitment loops (check a previous post on the subject, when this blog language was still pt-BR). Besides that, it's not uncommon for the company to travel candidates to on site interviews in Redmond, USA.

I've finished a trilogy of articles in which I'm pleased to share all my experience in recruitment processes. I've gone through recruitment processes of companies ranging from the big ones (Microsoft, Google, British Telecom, etc.) to smaller, local ones. I was accepted in some of them, rejected in some others. I've also played the recruiter role in the Partec-MyTV project. Below, you can check the result:

PS: with the last article, my commitment to provide job/interview tips in pt-BR in this blog is done. From now on, expect content on the subject to be written in English. That's part of my BLMP: blog language migration plan. :)

[]s
-- AFurtado

Book review: Domain Specific Development with Visual Studio DSL Tools

 

Update: check also Steven Kelly's (from Metacase) review of the book.

I've just finished to read the book Domain-Specific Development with Visual Studio DSL Tools (Addison-Wesley, 524 pages). Since it was written by the creators of the DSL Tools, it contains a valuable amount of information on the subject.

book 

Although it has some small mistakes (such as a few wrong names used to reference items in the examples and some pictures which were interchanged), it can be considered the best study resource currenly available if you want to go a level deeper into the DSL Tools.

I would also love to have more "tutorial-based" explanations on some subjects, but in general the book provides a nice coverage regarding the many topics of the DSL Tools (conceptual modeling, designer appearance and behavior, serialization, validation, deployment, etc.).

While reading, I took some notes on cool things one can do using the DSL Tools, some of them which I was not aware of. I've ended with a list of interesting points, which I was not covering in my DSL presentations, articles and posts before*.

I was desiring to document such an (incomplete) list somewhere, and I've chosen this blog to do so. Therefore, here you have the list. Each bullet starts with the hidden text "With the DSL Tools, you can..."

General

  • [pg. 002] Understand that, in domain-specific development, the fixed parts of the products will generate reusable frameworks in the product line, while the variable parts will result in the creation of DSLs.
  • [pg. 008] Understand that a specific-domain can be horizontal (workflow, web, etc.) or vertical (games, telephony, etc.).
  • [pg. 032] Customize your final product (DSL + DSL API + validators, etc) using different customization levels from the easiest one to the most powerful one.

temp

Domain Model Definition

  • [pg. 118] Use special classes such as DomainClassInfo, DomainPropertyInfo and DomainModelInfo to programmatically access the meta-information of DSL elements.
  • [pg. 120] Create an element name provider to define how the names of recently-created concept instances (ex.: Level1, Level2, Level2, etc.) will be built.
  • [pg. 121] Have calculated properties (Kind = Calculated), i.e., properties whose value are calculated from "outside" data such as other properties.

Presentation

  • [pg. 139] Use exposed style properties to define which properties related to the appearance of a DSL diagram (Text Color, Fill Color, etc.) can be actually changed by the DSL user (developer).
  • [pg. 142] Create custom editors to, for instance, define an alternative design surface for your DSL, such as a Windows Forms control.
  • [pg. 173] Use multiline text decorators to textually decorate shapes related to DSL concepts. 
  • [pg. 174] Change the image displayed in an image decorator dynamically (variable image shapes).

temp2

  • [pg. 176] Set a background picture for a DSL diagram. 
  • [pg. 177] Suggest specific connection points to connect shapes.
  • [pg. 178] Change the routing style of connectors, not being restricted to the options presented in the properties windows (straight and rectilinear). 
  • [pg. 184] Hide or customize the appearance of nodes in the language explorer window.
  • [pg. 192] Use custom type descriptors to show a property of one concept in the properties window of other concept.
  • [pg. 193] Have a custom properties window to edit a concept property. For example, it can be a file picker or a windows forms you've implemented earlier.

Creation, Deletion and Update Behavior

  • [pg. 200] Use element merge directives to control what relationships are constructed when one element is merged into another (for example, when an element is dragged from the Toolbox onto the diagram surface).
  • [pg. 207] Forward element merge directives from one element to another (sending the element to be merged onto a different target).
  • [pg. 208] Turn on the "uses custom accept" flag on an element merge directive to write code to have extra control over wheter a merge can be done. For example, we can use this to define that only 5 instances of a given shape can be added to the diagram.
  • [pg. 213] Use custom element tool prototypes to add a group of elements (not only one) when the DSL user drags an item from the Toolbox onto the diagram.
  • [pg. 217] Define possible source and targets of a link.
  • [pg. 219] Use the same toolbox connection tool to create one of many relationships, depending on the context.

Serialization

  • [pg. 237] Define how you DSL instance is serialized.

Constraints and Validation

  • [pg. 295] Provide hard validation constraints to avoid users from doing some action in the DSL Diagram.

temp4

  • [pg. 296] Use rules to disallow attempted changes on the DSL diagram or propagate changes through the model.
  • [pg. 299] Use soft and hard constraints together to provide a better validation experience.

Generating Artifacts

  • [pg. 325] Use real code first to then create a code generation template
  • [pg. 347] Use utility methods in code generation templates, such as Write(), WriteLine(), Error(), Warning(), PushIndent(), PopIndent() and the Store property.
  • [pg. 359] Generate multiple artifacts from a single text template (such as multiple classes generated from a single class diagram).

Advanced DSL Customization

  • [pg. 398] Set the "generates double derived" flag to use the Generation Gap design pattern to extend your DSL, which makes it possible to override the methods of a given DSL element.
  • [pg. 399] Set many customization switches to further extend your DSL.
  • [pg. 401] Provide many custom overrides to change de behavior of the designer (CanFocus, HasShadow, OnDoubleClick, etc.).
  • [pg. 417] Handle Store and .NET events to further extend your DSL.
  • [pg. 420] Use Bound Rules to constraint the location or dimensions of a shape in response to a user gesture.
  • [pg. 429] Add a set of menu commands to your diagram.
  • [pg. 435] Embed a DSL diagram inside a standard Windows control.
  • [pg. 437] Copy and paste DSL elements from and to the clipboard.
  • [pg. 442] Have a DSL diagram shape to contain other shapes.

temp3

Deployment

  • [pg. 373] Use a built-in setup project to create a installer for your DSL.
  • [pg. 390] Deploy text templates (generators) along with your DSL.

Designing a DSL

  • [pg. 455] Choose an approach to create a DSL: top-down (from the DSL to the common framework) or bottom-up (from the framework to the DSL)? It is effective to alternate between top-down and bottom-up techniques, working incrementally to avoid the risk of a big upfront investment but occasionally standing back to check for consistency.
  • [pg. 458] Understand that feature trees are an approach to better study the products belonging to the domain and plan the product line, including the DSL and the reusable, common framework.

As you can see, that's a pretty amount of information! Each bullet would be the main topic of a blog post...

I'll probably consult this post whenever trying to add additional features to the SharpLudus project, and perhaps you can do this to your DSL-based projects too. Hope to keep up the discussion soon.

* You can refer to this article here [pt-BR] to get introduced to the DSL Tools, or search for my DSL Tools Webcast [pt-BR] in the MSDNBrasil Media Center. Yes, I know it is strange to use pt-BR resources in a blog written in English, but the trend is that more and more English language resources are created in the future. That's the cost of a language migration.

[]s
-- AFurtado

25 novembre

XNA: not (only) a platform, not (only) an IDE, but an initiative!

 

Sometimes, I see some discussions about XNA in which it is argued that the whole thing is about providing new IDE (integrated development environment) to game developers. Others may think that XNA is only an API (application program interface), that makes available to developers some components to create games.

But XNA is not (only) this! I prefer to say that XNA is an initiative, encompassing a rich set of both technical and non-technical opportunities to leverage the game development ecosystem. Check the picture below:

xna

The picture presents some foundations of the XNA initiative. The "Tools and Technology" foundation may be the most known. It encompasses, for instance, the "IDE" part of XNA (XNA Game Studio Express or Professional) and the "API" part of XNA (XNA Framework).

The "Ecosystem" foundation is strongly related to the community and third-party initiatives. For example, it encompasses Autodesk tools for creating models which are compliant to the XNA world and the versions of Torque Game Engine and Builder which are tuned / integrated to XNA tools.

Finally, we have the "Solutions" foundation, or ready-to-use and XNA-based products or services that can be used in a given domain. One thing that excites me most regarding this foundation is a curriculum based on XNA and digital games that can be used by universities to provide more motivation in Computer Science courses.

Want to know more? Try the XNA Creators Club and the XNA Developer Center.

Now, when someone asks you about XNA, remember: it is an initiative!

[]s
-- AFurtado

23 novembre

GREAT NEWS: XNA now works integrated with DSL Tools in the same environment!

 

As I've said in a previous post, the most important feature of XNA 2.0 for me was the ability to create my XNA games from inside Visual Studio 2005. Why? Because (1) it is not possible to deploy DSL diagrams to XNA Game Studio Express and (2) it was not possible to create XNA game projects in IDEs other than XNA Game Studio Express. In other words, both worlds were disconnected.

Now we can create XNA projects from inside Visual Studio! In fact, after installing XNA 2.0 beta in my machine, the install wizard says that XNA was installed in both Game Studio Express and Visual Studio 2005.

XNA projects are then presented in the VS2005 new project dialog:

01-newprojecttype

But as a DSL designer, I don't want to create XNA projects at this moment. I want to create a DSL Tools project (Extensibility group, in the left pane) and deploy my DSL diagrams to a XNA project later.

But wait: after creating a DSL Tools project and running it, the experimental version of VS2005 (where the DSL diagrams is supposed to be designed together with XNA projects) does not make it possible to add any XNA projects through its add new project dialog!

02-newprojecttypeExp

But don't worry. Close the experimental VS2005 instance and, through the steps below, copy to its experimental registry the settings of VS2005 original registry settings:

  • Open the command prompt with administrator privileges
  • run "cd C:\Program Files\Visual Studio 2005 SDK\2007.02\VisualStudioIntegration\Tools\Bin"
  • run "vsregex getorig 8.0 exp"

Go back to the DSL Tools project and run it again. The experimenal VS2005 instance will open again and now the add new project dialog will present XNA project as expected. Sweet!

Just to illustrate the integration between XNA and DSL Tools, I've created a very small sample:

03-gamediagram

Notice that I've added two new files to my XNA project. One contains the diagram (drawn in the left), based on my DSL, and the other is a code generator, which reads and diagram and makes it available to the Game class a property containing the name of the first level.

Finally, I've changed the Game class to consume the generated code in order to show, in the window title, the name of the first stage. And here you have the result:

4-game

Changes to the diagram causes changes in the game without the need to deal with any code at all! You can download the source code of this sample here.

This is the top of the iceberg. We can say that model-driven development is a new (boosted?) feature introduced with XNA 2.0. Imagine the great benefits we could have with model-driven development and game development with XNA! This is the aim of the SharpLudus project, my PhD thesis. Hope to bring more good news soon.

UserExperienceLarge

[]s
-- AFurtado

new domain: afurtado.net

 

You can now access/share this space in an easier way: www.afurtado.net or http://afurtado.net. Both redirects you browser to here.

[]s
-- AFurtado

Do you believe in casual games?

 

If you like digital games and have not left Earth this year, you may have heard about how "casual games" are the next big thing, how Wii and distribution portals such as Xbox Live Arcade are making a revolution with casual games, how casual games can be used to loose weight and fight against hair loss and so on.

I do recognize the results of the effort of bringing people from outside the game world to play games. In fact, according to DFC intelligence, the casual games market will grow from US$ 281 million (2006) to US$1.15 billion (2007).

But the "casual games" concept is becoming so overused that it made me to think about some questions. Are "casual games", as "web 2.0", becoming the next buzzword, the next worldwide jargon in the software development scenario? Moreover, how deep can we believe in the so acclaimed "innovation" and "revolution" of the concept?

First of all, games that are "casual" are not new. Check the first game ever created, below (Tennis for Two, running in an oscilloscope). 30 years later, Wii's Tennis "casual game" uses the same formula, with better graphics and an innovative input system. (click here if you RSS reader does not display the embedded video below).

 

Moreover, we can't simply split gamers only as "casual" or "hardcore". The market is not that binary, it is much more diversified. Check this survey here, which introduces new segments such as Power gamers, Social gamers, Leisure gamers, Dormant gamers, Incidental gamers and Occasional gamers. (gosh, I hate to say I'm becoming a dormant gamer!)

Wikipedia uses the concept of "casual gamers" to segments players, but also recognizes the market is also not only black or white, encompassing many different (and quite blurry) segments: Console gamer, Handheld gamer, PC Gamer, Casual gamer, Hardcore gamer, Competitive gamer, Retrogamer, Import gamer, Hacker, Cyberathlete and Power gamer.

Next: are casual games an infinite sustaintable market? Robert Summa, editor and chief of the Global Gaming League, an online community for game enthusiasts, says no. He thinks, for instance, that Nintendo's plan to capture the casual gamer is the wrong approach. "Hardcore gamers will go out and spend their disposable income on games every month, but a casual gamer will only do that on a whim". And regarding the Wii Fit: "Hardcore gamers would rather spend their money on a system that appeals to them, like the Xbox 360".

Finally, as opposing to what some people might think, casual games are not a beautiful heaven where developers make a lot of money without effort. "The [casual games] market is frequently claimed to be as competitive and risky as the mainstream market, if not more so; the difficulty of maintaining an extremely tight budget is the factor that comes up most often in indie discussions" [source].

To sum up: beware fairy tales! Casual games are not a silver bullet, but an abstract concept encompassing may other (challenging) concrete ones and which is not new to the digital games domain.

[]s
-- AFurtado

Software factories illustrated

 

This link provides a series of 12 illustrations (and explaining text) that helps to understand the concept of software factories.

sf

[]s
-- AFurtado

XNA 2.0 Beta available!

 

xna-game-studio-21

XNA 2.0 Beta was released, check it here. While multiplayer is the greatest focus of this release (and that is great!), I'm chiefly concerned with the feature that allows one to create XNA projects from inside Visual Studio 2005 (and not only within Game Studio Express). Why? Because then I'll be able to have domain-specific languages (DSL) diagrams working together with my game code at design time!

In other words, SharpLudus (my PhD project) + XNA will be a much closer reality!

[]s
-- AFurtado

22 novembre

[event report] Windows Media Center Day - Recife/PE

 

Update: get the powerpoint presentations here. Check Partec's articles on Windows Media Center here. [pt-BR]

Everything was just fine in yesterday's event (actually, the day before yesterday) I've organized on behalf of the Sharp Shooters .NET user group, Partec and Poli-UPE, for our local developers community in Recife. About 65 people attended and 15kg of non-perishable food was collected (I've routed the donation today, thanks!).

Gustavo Danzi, project manager at Partec, discussed business opportunities of the Digital TV era with Windows Media Center.

danzi1  danzi

Átila Bezerra, software engineer at Partec, presented us how to create a real-world application (Feed Reader) using MCML (Media Center Markup Language). The application makes it possible to read my blog (hey, that was a surprise!) within Media Center, with the WMC remote control. You can download the Feed Reader source code here.

atila1 atila2

Below you have the winners of our small event prize lottery, together with the event staff. I'd like to thank Partec for this partnership and also the Diogo Burgos (Microsoft Co-Lead Student Partner, black shirt, in the middle at my side) that helped us to place and set the event at the University of Pernambuco (UPE).

prizes

I'd like to end sharing a video that shows a cool integration between Windows Media Center and devices to create a "smart home" (thanks to Sharp Shooters member Gutemberg for pointing this).

 

 

BTW, a "smart home" was the winner project of Imagine Cup 2004 (Team France). Search for "Smart Center .NET" and you may find some cool stuff.

PS: comments? Topic suggestions for future events? please drop a comment (in portuguese or english)!

[]s
-- AFurtado

21 novembre

Human Computation & The Art of the Start: GREAT presentations!

 

Please find 90 minutes of your life to watch the two presentations (videos) below. They are two of the most interesting presentations I've seen in years! They will definitively open your heads.

Update: you might have to navigate away from your RSS reader to watch the embedded videos.

"Human Computation": This is a very cool presentation about what is so introduced as Human Computation. Basically, he shows very simple and smart/clever ways to entertain humans while using their computational power to solve problems yet not solved by computers. In such symbiosis, human and computers work together to solve problems such as image reconigtion (the Matrix analogy at the end, itself, makes all the video worth!)

 

"The Art of the Start": Guy Kawasaki presentation at TiECon, May 13, 2006. You should not miss this if you have ever wanted to make your entrepreneurship-based ideas to flow around the world.

 

[]s
-- AFurtado

20 novembre

software competitions = talent!

 

Today I'd like to share with you this short piece of art created for Imagine Cup 2007 (from Brazilian team Papa-paçoca, 3rd place in the Short Film Invitational). [if your RSS reader don't display the embedded video, click here]

 

 

BTW, if you'd like to know more about the winning projects of the Intel + UC Berkeley Entrepreneurship Challenge, you can check this website here.

[]s
-- AFurtado

19 novembre

More presentation hints & tips (by LJ Chiu, MS Taiwan)

 

You can check below a nice ppt containing more presentation hints & tips. The author is LJ Chiu, Academic Developer Envangelist from Microsoft Taiwan. It starts providing an overview about Imagine Cup (07) and then goes deep into the hints & tips. It's quite useful not only in the Imagine Cup context, but for any presentation you might make in your life as well.

 

 

PS: once more, you may need to get out of your RSS reader in order to read the slides online.

[]s
-- AFurtado

Windows Media Center / Digital TV event in Recife, Brazil

 

Tomorrow (tuesday), the Sharp Shooters .NET user group (for which I'm one of the leaders) is promoting an event about Windows Media Center and Digital TV. Check the details here [pt-BR].

SharpShootersLogo  wmc

[]s
-- AFurtado

Trivial Team (v-eye) is 3rd at Intel + UC Berkeley Entrepreneurship Challenge!

 

I told we would hear good news. And they came fast: Trivial Team (see previous post), from the Federal University of Pernambuco (UFPE), Brazil, got the 3rd place in Intel + UC Berkeley Entrepreneurship Challenge! That's an awesome achievement in this first-class business competition.

veye

Great job, guys! Hope you can also win the greatest of all challenges: make this wonderful product to become real!

[]s
-- AFurtado

15 novembre

Good news from Trivial Team (UFPE/Brazil)

 

You might remember Trivial Team from UFPE, Brazil, who was the 2nd place in Imagine Cup 2006, with the wristbands for visually impaired people.

bg4

They've just advanced to the finals (top-8) of the Intel + UC Berkeley Entrepreneurship Challenge, being the unique team in latin america to reach this far in the competition!

More good news: additionally, they've received funding from a Brazilian organization (FINEP) to evolve their prototype as a real world solution!

Indeed, we can expect many good news from these guys soon! Good luck to all of them!

[]s
-- AFurtado

14 novembre

55 Imagine Cup Tips

 

Imagine Cup contestants, check this presentation in which I've consolidated some hints & tips after Imagine Cup Japan 2005:

(Update: if you RSS reader does not present the slides, please go directly to this post in the web to watch them online!)

     

PS: you can download this presentation by clicking on the "view" link above, and then in "download" on the next page.

[]s
-- AFurtado

13 novembre

Reality empowered by games?

 

Many game design attempts focus on making games closer to the reality, such as virtual worlds, racing games, etc.

Why not thinking in the opposite way, turning reality itself into a game? For example, awarding points for employees who attend to meetings and reply to emails? Or promoting a competition to stimulate kindness among people in a city?

This presentation discusses the subject. Slides can be found here.

[]s
-- AFurtado

Independent Games Festival (SBGames 2007) - screenshots

 

As promised, here you have the screenshots of all finalist games of the Independent Games Festival, which was held in SBGames 2007. It's cool to see what the community is developing out there.

XNA Category

  • Hero, 1st place (nice 3D-maze game):

hero

 

  • iCoco, 2nd place (simple, yet fun 2D sport game, with a creative "throw coconuts at the other player" theme):

icoco

 

  • XNA Fps, 3rd place (impressive graphics; if the gameplay was a bit more elaborated, it would be tough to beat!):

xnafps

 

  • Others:
    • Encaixa 3D (3D XNA version of the Sokoban game):

encaixa3d

 

    • Go To (XNA version of the board game):

goto

 

    • Procurando Lemo, or "Finding Lemo, the emo worm". Although the game was unfinished, I was impressed that the creators didn't know anything about object oriented concepts a few months ago. Things like this make me believe in the core purpose of XNA, aimed at democratizing game development.

lemo

Desktop Category

  • Tanks, 1st place (that's the formula: simple yet beautiful casual game, 4-players beating one another inside a 3D world with cool extra bonus weapons. The gameplay is not new, but the authors were right on the "fun" target!):

tanks

 

  • Motorboat, 2nd place (3D racing game, nice gameplay):

motorboat

 

  • Dirty Racers, 3rd place:

dirtyracers

 

  • Others:
    • Sokoban Allegro:

sokobanallegro

 

    • Mini-pod Racers:

minipodracers

 

This is it. Hope the independent game creators continue to show they creativity out there, especially regarding to the new possibilities provided by XNA.

[]s
-- AFurtado