claudiolassala

Claudio Lassala is an independent Software Developer who currently works mostly building Ruby on Rails applications. Previously, he has worked for several years developing .NET applications, presented several lectures at Microsoft events such as PDC Brazil, TechEd Europe, and various other Microsoft seminars, as well as several conferences and user groups across North America, Europe and Brazil. He is a multiple winner of the Microsoft MVP Award since 2001 (for Visual FoxPro in 2001-2002, and for C# ever since). He has articles published on several magazines, such as MSDN Brazil Magazine and CoDe Magazine. He started the Virtual Brown Bag meetings in 2009 and have been hosting it weekly since then. When not writing code, Claudio is probably rocking out with his band, Descent Into Madness.

Homepage: https://claudiolassala.wordpress.com

There Is No Domain!!

Many times it seems like the hardest question to get answered by clients is:

“What’s your domain?”

I’ve seen people putting their feet down and yelling:

There is no domain!!!

Followed by:

“This application is 100% customizable by the end user… everything is dynamic… the screens, the reports, this, that, the other…”

My default answer for that has been:

“Well, luckily, there’s already some software you can use for that, then: it’s called MS-Excel!”

I then proceed to ask:

“Can we take your app as-is, give it either to Walmart or the Mom and Pop store around the corner and tell them to use it to run their business?”

To which I hear:

“Well, no… that’s not what our app does.”

Darn it, whatever happened to the “100% customizable by the end user…” talk?

As it turns out, there’s always a domain.

Yes, the user may adjust the application to make it fit the business better, but that’s always done on top of the core domain the application addresses.

Leave a comment

Zooming Tools for PC and Mac

Zooming tools are very useful whenever doing a presentation or training. It helps both the people at the back of the room, as well as drawing people’s attention to the area of the screen you need them to be looking at.

On the PC I’ve used ZoomIt, which is part of Microsoft’s SysInternals tools.

Recently I’ve found Zoom It for the Mac, which is cheap, and works like a charm.

, ,

Leave a comment

Do software developers know how to use software?

Why am I starting this post with such a silly question? Of course software developers know how to use software! Or maybe not…?

Am I a good developer?

What makes it for a good developer, anyway?

For many years I’ve focused quite a bit on programming languages, IDE’s, patterns, and all those things that are definitely fun for most developers. Mastering those things, however, does NOT turn someone into a great developer. Knowing those things well is very important, but there’s more to it.

I’ve seen developers who…

  • spend a lot of time building applications, but not using software productively themselves;
  • seem uncomfortable using their own tools, not learning the bare minimum in their IDE for things like quick file lookup, code navigation, code completion, etc;
  • don’t adjust their environment in order to reduce the friction when getting things done;  
  • don’t take the time to understand what it is that they need to get done.

What is it that I’m building?

Most developers are supposed to develop the software designed to automate somebody’s tasks, workflows, etc (others may be building games and such, which is a different story). I believe a good software developer should be able to understand the business, identify its needs, and then think of good solutions. Sounds simple, but I keep seeing cases where people start to code without really understand what needs to be built.

Am I productive?

When a developer doesn’t bother about automating repetitive tasks of his or her own, the likelihood of achieving success doing that for the client is very slim.

I used to do a presentation on “productivity”. I talked about tools and add-ons, but just spitting out code as fast as possible doesn’t mean we’re productive, so I also talked about the mindset and techniques I use, while always asking myself “why am I doing this again?”.

My conclusion (for the time being)…

I have had clients tell me they decided to hire me after seeing how I use technology. They say they see me using my smartphone, my tablet, and my computers in ways they haven’t thought of. They say they believe I use these things not because they’re “cool”, “flashy”, “trendy”, but because I focus on the benefits and results instead. They believe that if I’m able to automate my life this way, I’m qualified to automate theirs, too.

These are things that keep coming back to me and I feel like I need to explore more into it, as it’s giving me good results.

Leave a comment

How to do XML comparison in an application?

Working on a tool that does some end-to-end testing, I have a need to compare xml input/output. Comparing xml isn’t a simple string comparison, as a single extra space would deem the results aren’t equal. I need to compare both the structure as well as the actual data contained in the xml.

This is a .NET application. I’ve looked for some components out there that perform such comparison and found some, but there’s still quite a bit of work involved in taking the results the components give me (listing each line and each difference) and showing it to the user in a meaningful way.

Instead of spending a lot of time (and therefore, a lot of my client’s money), I figured the easiest/cheapest way to implement this was to simply integrate Beyond Compare into the app. That way, it’s very, very easy to see what the differences are between the two xml documents, as Beyond Compare clearly shows the differences down to the attribute level.

The way I’m doing it is my saving the XML content to disk, and then firing up Beyond Compare using the Process class, passing along the path to the files. (see code below)

public class XmlDiffController : IXmlDiffController    
{        
	public void OpenDiff(string leftXml, string rightXml)        
	{            
		var leftResultsXml = @"c:\temp\left-results.xml";
    	File.WriteAllText(leftResultsXml, leftXml);
    	var rightesultsXml = @"c:\temp\right-results.xml";
    	File.WriteAllText(rightesultsXml, rightXml);    
        
		Process.Start(new ProcessStartInfo(TesterSettings.DiffToolPath)
		{                
			WindowStyle = ProcessWindowStyle.Maximized,                
			Arguments = string.Format("\"{0}\" \"\"", 
								 leftResultsXml, rightResultsXml)            
		});
 	 }  
}

 

DiffToolPath is the path to Beyond Compare on my environment. As I’m doing this development on a Windows Virtual Machine inside a Mac host, my DiffToolPath points to Beyond Compare on my Mac, like I’ve described on my Integration of Beyond Compare and Parallels on the Mac post.

Works like a charm, quick, cheap, and easy!

Leave a comment

Integration of Beyond Compare and Parallels on the Mac

I’ve been using Beyond Compare as my tool of choice for file and folder comparison for a long time now. When I first moved to the Mac world there wasn’t a Mac-version available yet. That was a bummer. Fortunately, now there is one now.

When I need to do work on a PC, I run a Windows virtual machine on my Mac using Parallels Desktop.

I’ve just learned recently that I can use my Beyond Compare on the Mac directly from within my Windows virtual machine (at least using Parallels). It works just like that: I invoke the comparison from inside the virtual machine, and Beyond Compare pops up on my Mac (the host). Pretty nifty!

One great benefit is that I can have just one license of Beyond Compare for the Mac, instead of having licenses for both the PC and the Mac.

,

Leave a comment

Virtual Brown Bag on Feb 16, 2016

Good things coming up for the Virtual Brown Bag:

The website is back up!
http://virtualbrownbag.com/

We are also on Slack:
http://slack.virtualbrownbag.com/

A Community on Google:
Virtual Brown Bag Community on Google

We’re scheduling people to come give us a 10-30 minute talk on specific subjects, in order to get some discussions going. We’ll be publishing our schedule to some online calendar.

Other topics covered this week:

Angular 2

JB’s struggles with Ember

George’s checklist for project estimation:
https://github.com/togakangaroo/estimation-checklist

I shared the Breaking the Time Barrier book, written by the creator of
Freshbooks.

I also shared about Rails Assets, and asked how the guys handle pulling libraries into Rails app. JB says he’s given up on using gems for that, and just puts the files into the project. I’ll probably try that, too.

JB also shared this: Google assets sync rails

Enjoy!

Leave a comment

Using an iPad as a Second Screen

At least one extra screen is essential for me. Many years ago I posted about Organizing Windows and Multiple Monitors.

When I migrated to using a Mac most of the time, as well as using an iPad for many things, I was happy to know there was a way to use the iPad as a secondary monitor. That to me was great because whenever I wasn’t at my normal working place (maybe traveling to clients or conferences) I always have both my Mac and my iPad with me, so I could still work in a dual-screen set up (not huge screens like I prefer, but still…).

At the time I wrote up about that: Setting an iPad as an extra monitor. That approach, however, wasn’t flawless. The app I was using, Air Display, connected the Mac and the iPad through the wi-fi network. In some networks, I just couldn’t get this to work. Also, there was a noticeable lag when moving between screens.

Fortunately, about a year ago I found this app: Duet Display. Life was good again. This app uses the iPad USB cable to connect to the Mac, and it has zero lag.

Now I just need to get me that bigger iPad!

Leave a comment