Archive for March, 2007

Find yourself a “Launcher” program. Now!!

I can’t bear the pain of looking over somebody’s shoulder and seeing the person painfully going through Start – All Programs – Some Folder – Some Other Folder… oh wait, it wasn’t there… maybe here… hmm… hold on, I think it’s under Start – All Programs – blah blah blah…

Gee, I don’t have time for that.  🙂

There are programs and "things" that we want to get to ASAP because we use them a lot. If you have to spend precious seconds or minutes to get to it, you end up forgetting why you were looking for it to begin with. The less "noise" between the task you’re trying to accomplish and the tool you’ll use for it, the better.

I’ve been using SlickRun for about a year now. Love it! Every place I go do presentations, training, or when somebody sees me working, I always hear "hey, what was that??", "hey, how did you get that so quick??".

For instance, doing a Google search, or searching for a movie on IMDB, or looking for a book on Amazon… I don’t want to launch the browser, navigate to the URL, type in the search criteria, and hit a button to do the search. A tool like SlickRun makes that a lot easier. Just go to their website and check it out. Oh, and the tool is Free!!!

I know there’s a number of other tools like that out there, and I haven’t had a chance to play with them. Since SlickRun has been working well for me, I’m sticking with it for the time being.

Scott Hanselman has a good post on "launcher tools"; check that out too to see if you find another tool you may like better.

Don’t wait any longer: go there, find a tool for you, and stick to it!! You’ll never regret. Spend some 20 minutes looking into it, and you’ll be surprise with how much time you’ll save daily by using a little free tool like that.

Go!!!  😀

Leave a comment

Are you a tools, settings, shortcuts freak?

It always amazes me looking over somebody’s shoulders and seeing how the person uses his or her computer. What strikes me the most is that a lot of people install Windows, Office, and whatever other core application they need to do their work, but then they just use everything with the default settings. To me that’s like buying a new car and go out driving, without even adjusting the mirrors, the seat, putting on the favorite kind of music, etc.

I get to do a lot of mentoring and training, and it always mesmerizes me how painfully some people work at the computer. The pain they go through trying to find the right application, the right file, the right sequence to accomplish something, it’s too much for me to bear. I end up suggesting some shortcuts or habits that they can use to be more productive, and more often then not, they’re like "oh, I didn’t know you could do that…" (and that usually is weird to me because those are normally things that I’ve always taken for granted that everybody would know).

I try as much as I can to use tools (both free tools as well as commercial ones) that can make me more productive. I also try to set up my computer in a way that I can get to the things I’m always using as quick as possible; that involves both learning shortcuts, setting up my work area, etc. Once you get into the habit of doing so, it becomes so natural that watching other people work may seem like torture.

But, there are also situations when I’m seeing somebody else work and I end up seeing the person using a little tool or shortcut that I’ve never seen before; sometimes it’s a tool or setting that has been in Windows forever, and I feel guilty for not knowing it already (but hey, there’s just so much out there to learn…).

One presentation I’ll be delivering this year is about this very same topic. Since I always get people asking me about "those cool tools and shortcuts" I use, I figured it’d be interesting to put everything together and show it to people.

As I put this material together, I’ll be blogging about it. If you know about something that’s even better (or cooler) then what I’ve blogged about, please email me. I’d love to hear about it.

Leave a comment

DevTeach 2007

DevTeach, in Montreal, Canada, is most likely my favorite conference. I’ve been there in 2003-2004-2005, couldn’t make it in 2006 (visa issues), but will be there for the 2007 edition in May. Here are some of the main reasons why I like the conference:

  • The speaker lineup is always great;
  • The speakers are always mixed in with the attendees, which allows for more interaction and networking (instead of having speakers locked up in some lounge like divas…);
  • The logistics for the conference is great, and the organizer, Jean-Rene Roy, always puts together a great show!
  • Montreal is a beautiful place to visit;
  • From a speaker point-of-view, I love the way we get feedback from the conference. Many conferences out there are very good at demanding the speakers to send material on deadline, but they are REALLY bad at sending speakers the feedback gotten by evals filled by attendees. That’s not the case at DevTeach; usually a week or two after the conference is over, all the speakers can check the complete feedback online.
  • From the attendee’s point-of-view, this conference is a bargain (checkout the number of speakers, sessions, tracks, and the costs to sign up; that’s really hard to beat).

Here’s some info about the conference:

68 speakers are presenting over 3 days
http://www.devteach.com/Speaker.aspx

119 sessions presented in 10 tracks
http://www.devteach.com/Session.aspx

March 31st is the end of the early bird
http://www.devteach.com/Register.aspx#MAIN

We have three tracks for the Pre-Con
http://www.devteach.com/PreConference.aspx

We have 2 tracks for the Post-Con
http://www.devteach.com/PostConference.aspx

A BOF has been added to the show with Oksana Udovitska and Wendy Friedlander
http://www.devteach.com/wconnect/wc.dll?FournierTransformation~1,5,1,815

Keynote with Pablo Castro on Entity Framework
http://www.devteach.com/Keynote.aspx

Leave a comment

Hey, finally got into Windows Live Writer

 

You’ve probably noticed I haven’t posted anything yet that included images, right? Reason for that is because I’ve always found that to be a pain in the neck. Well, not anymore!

I had seen the name Windows Live Writer before, but had not played with it at all, until today. Windows Live Writer is a visual editor for blogs. Things I’m already liking about it include:

  • I don’t have to deal with the web interfaces for blog postings.
  • Also don’t have to deal with copying things from MS-Word into the web interfaces and then fixing formatting.
  • I can write my blog entries off-line when I’m on planes or whatever, and publish that to the actual blog when I’m online and ready to go.
  • Offers API for plug-in writers. I’ve already gotten some of the Windows Live Writer plug-ins, and am also using Rick’s SnagIt Live Writer plug-in for screen capture.

Now I feel like blogging more often.  🙂

Leave a comment

DO’s and DON’Ts of LINQ

LINQ is such a powerful feature that developers are likely to use it everywhere in code, just like foreach blocks and if statement are. LINQ comes with different flavors of APIs, such as LINQ for Objects, LINQ for SQL, LINQ for XML, etc., each one of them being really powerful on what it does. Even though there are no restrictions as to where LINQ could be used, some of its APIs should be constricted to only be used in certain layers of code.

For example, LINQ for SQL should only be used by the Data Access Layer (DAL). The classes created to map objects to tables on the database (usually referred to as data context) should never be touched by any layer other than the DAL. Running a query from the UI against data contexts is like going directly to the database, which has never been a good idea.

LINQ for Objects, on the other hand, can (and should) be used everywhere. For instance, let’s say a given form has some logic that whenever a given condition is met, all the buttons on the form should be disabled. The traditional code for that would be a mix of foreach, typeof (or is), and if:  

foreach (Control control in this.Controls)
{ 
  if (control is Button) 
  { 
    control.Enabled = false; 
  }
}

The version with LINQ for Objects would look like so:  

var buttons = 
  from control in this.Controls.Cast<Control>().OfType<Button>() 
  select control;  

foreach (var button in buttons)
{ 
  button.Enabled = false;
}

The difference here isn’t that big because the only condition we’re looking for is to get every control of type Button within the form. The differences are more apparent in more complex scenarios.

Another example would be a case where we have a collection of entities representing customers, and we want to query that collection, and the outcome should be a collection of edit-forms editing the entities returned by the query. Like this:  

var customers = new List<CustomerBusinessEntity>{ 
                new CustomerBusinessEntity("Claudio Lassala"), 
                new CustomerBusinessEntity("John Jones"), 
                new CustomerBusinessEntity("Cartman Smith")}; 
 
var customerForms = 
  from customer in customers 
  where customer.Name.StartsWith(this.txtName.Text) 
  select new CustomerEditForm(customer); 

foreach
(var form in customerForms)

{ 
  form.Show();
}

The sky is the limit.

As I get a chance, I’ll probably be writing some custom FxCop rule to make sure I catch developers trying to run queries from the UI against data context (sort of like the one we currently have where we don’t allow developer to create IDbConnection objects directly, since all data access goes through our business objects).  

What was the Spiderman line: “With great power comes great responsibility”?  J

 

Leave a comment

Thank you Fox Team for the great tool I’ve used for many years

This week Microsoft officially announced that there won’t be a new version of Visual FoxPro (http://msdn2.microsoft.com/en-us/vfoxpro/bb308952.aspx). This really doesn’t come as a surprise, since over a year ago it was already divulged a road map where it was clear VFP 9.0 was going to be the last one.

 Since I’ve been quite involved in the VFP community for some time, I want to post some of my thoughts here. 

I started programming when I was 15. At that time I was doing Dbase IV, and some Lotus 1-2-3 programming as well. At the time, that was great! Eventually I started working with Clipper (version 5.0, or something like that, I think…). I did a few years of Clipper development, and that was great! You know, after seeing some code in Cobol, I was glad there was something so cool like Clipper around.

I then remember somebody telling me about some language called FoxPro, and how it was similar to Clipper. At the time Clipper was everything to me, and I could see myself using anything else.

Then Windows programming came around. The first language I tried for the Windows graphical interface was Visual Basic 3.0. Oh boy, that sucked so bad!! I mean, it was good for me to learn a little of the metaphors involved with building Windows applications, but I was already doing a lot with database applications, and VB 3.0 just simply sucked really bad at doing that.

Eventually I got a position at a company where they were using Visual FoxPro, and some FoxPro 2.x (DOS and Windows). Since I knew Clipper, which was similar to Fox code, and also knew some visual stuff because of VB, I decided to take the chance, and got to use FoxPro / VFP for many years. That was what got me really involved with the community, and I really couldn’t see myself using anything else. Life was great!!

During that time, I checked out some VB 5 and VB 6 stuff, but I still hated it, mostly because working with data was still a major pain in the neck (DAO, DAO, RDO, ADO… argh!).

At some point I got invited to speak at a Microsoft event, for the .NET launch. It didn’t make a lot of sense to have a pure VFP presentation at the .NET launch, so I decided to learn some C#, and do a session on ASP.NET with VFP COM components, and another one on Web Services with VFP and .NET. I started to like that .NET thingy, but wasn’t still convinced on it yet.

Back then, I noticed it was relatively painless for me to get into .NET. Since I was already doing a lot of OOP in VFP, learning .NET was just a matter of learning a new syntax, and a new class library. No biggie. That was definitely much easier than what VB 6 developers had to face, since the language didn’t have inheritance of implementation.

Over the last 4 years, I’ve probably only spent just a few months working purely with VFP. Most of my work has been focused on .NET, and I’ve spent quite some time helping VFP developers learn .NET.

With .NET being a way more mature nowadays, and with things like LINQ just around the corner, again, I can’t see myself using anything else. Maybe in 5 years from now, the situation will be different; I don’t care. Usually I just try to use the most I can out of what whatever make sense at the time, and I let life do its thing. I just go with the flow.

Anyways, I’m pretty happy for having used VFP for many years, where I’ve gotten the chance to learn a lot about database modeling, OOP, community, etc. It served me well as a great tool, but time has come when I had to move on towards new horizons.

Ok, that’s it… now I have a bus to catch to head to the airport…  J

 

Leave a comment

That MVP Thing…

Every once in a while I get people asking me "what it takes to become an MVP", or "what is this MVP thing…". I just ran accross this article that provides some good information about it:
 
 
It has also some good historical information about the MVP program that I didn’t even know about (even though I’ve been awarded consecutively over the last 6 years). For example, I didn’t know that out of the 38 MVPs from the first year when the program started, 30 of them were FoxPro MVPs.

2 Comments