Just sharing some of my inconsequential lunch conversations with you... RSS  

Wednesday, April 30, 2008

Office Search Commands

This is the bessssssssssssssssssssssssttttttt office addin I've ever seen! Office Search Commands allows us to search commands, options, wizards and galleries by... name! Just type what you’re looking for in your own words and there it is, right on the ribbon, that distant command you didn't heard about since 2003!

How to use Search Commands with WordPlay Video

Watch Video

Just give it a try! Thank Bruno Valente for the tip!

To 64 or not to 64 - that is the question

64 bit desktop OSs are getting easier to adopt. Here a great benchmark (and results), comparing XP, Vista, Vista SP1 and Windows Server 2008, 32 and 64 bits.

Here's a summary of the summary :)

CPU:
All 64-bit OS dominates with the exception of Prime Numbers and SSE.
Best-Worst: 2008, Vista, XP

Cool, as expected.

Memory:
64-bit performance better
Best-Worst 64: XP, Vista SP1, 2008, Vista
Best-Worst 32: Vista, Vista SP1, 2008, XP

XP 64 rocks, as expected. Now here's another expected result:

Disk:

[...]
XP and Server 2008 both showed even, but noticeable faster results vs Vista.

And finally, here are the results:

Overall:
64-bit is improving and shows a better overall average performance. The 3D graphics are dependent upon the drivers released and I have seen consistently improving performance with nVidia's drivers. The 64-bit performance has exceeded in this benchmark which surprised me. The push for Vista has finally exceeded XP's performance, but SP1 has been a step back for gaming in vista. I've also noticed this in 3dMark tests I have run.

Oops for Vista SP1...

So my Windows Server 2008 64 bits for my laptop doesn't seem like a bad option after all. XP64, today's fastest option,  is probably not an option for the future. Probably time to test drive a Vista 64 bits...

Thanks for the tip, Rasteiro :)

Sunday, April 27, 2008

Smart Client Software Factory for Visual Studio 2008 has shipped

Yeap, it seems like it did. Just posting it for logging purposes, not really my focus. Ummm, this is happening to me lately, cool technology I want to put my hands on but just don't have the time for it. Though the days we are living in are exceptional ones, it makes me sad to opt out cool technology. Oh well, like a friend of mine is saying these days:

Looking for 36 hours days for buy or rent.

Choosing the Right Workflow Tool for Your Project

Ok, from within BizTalk Server 2006 or WF... Here's a nice article about it.

Groove 2007 + WSS3 = Wow!...

How in God's name could we work before? I can now work over versioned repositories pointed to my company's WSS disconnected from the internal VPN. Yes, my workspaces are synced from work to home. Better yet, people outside my organization can participate on this workspaces. It's just awesome.

Looks like my mailbox is finally getting some deserved holidays... :)

PS: ok, I still have to convince a bunch of email addicted people to jump on Groove's wagon. And yes, my mailbox will still be of some use, but what can I say, I'm addicted to the next big techy thing :)

Saturday, April 26, 2008

Cool Vista gadget for Portuguese speaking

Here's a useful Vista Gadget: a Portuguese dictionary, from Priberam.

W2K8 64bits as desktop - the downside

Now that I have Windows Server 2008 Server 64-bits as my desktop for a while, here's the list of annoyances:

  • VMWare doesn't work as smoothly as in other OSs; after a lot of crashes with VMWare player and Server 2, I've finally decided to use good old VMWare Server 1 - yes, I have to boot with unsigned drivers option;
  • Hyper-V still sucks up all the memory we throw it - unlike VMWare, that wisely manages usage as needed; on the bright side, it is faster then Virtual PC; the porting from Virtual PC / Server is just too bad to be true, as it makes you uninstall the Virtual PC / Server drivers only Virtual PC / Server...;
  • activating Hyper-V disables standby and hybernation;
  • most of plugins doesn't work on IE 64bits - no problem, just run 32 bit version;
  • still sucking up too much memory - if you don't have 4GB, probably not an option;
  • no SIP phone - well, this is also true on 32bits;~

I'm about to get another laptop - I'll probably try the Windows Server 2008 32-bits now.

Friday, April 25, 2008

iGo Stowaway experience

As promised, here's my experience:~

The good:

  • excellent laptop-touch like keyboard;
  • small and fast;
  • easy to setup;
  • syncs fast (and smart, no button on the keyboard, opening the keyboard turns it on);
  • I can even use it on conferences - it is so cool to write notes, answer to mails and IM!

The not so good:

  • it doesn't support the Portuguese layout - Portuguese keys are slow to get to;
  • the keyboard base is not stable enough - for example when we hit heavily the CTRL key the keyboard tends to jump more then it should;

The worse:

  • if you're holding a meeting with non technical people, you'll risk being seen as a hopeless lunatic;

Scrum for managers

Last Thursday I've attended an excellent session titled "Scrum for managers" presented by Mitch Lacey.

For the few of you that didn't heard about scrum, here's the wikipedia definition:

Scrum is an iterative incremental process of software development commonly used with Agile software development.

[...]

Scrum is a process skeleton that includes a set of practices and predefined roles. The main roles in scrum are the ScrumMaster who maintains the processes and works similar to a project manager, the Product Owner who represents the stakeholders and the Team which includes the developers.

During each sprint, a 15-30 day period (length decided by the team), the team creates an increment of potential shippable (usable) software. The set of features that go into each sprint come from the product backlog, which is a prioritized set of high level requirements of work to be done. What backlog items go into the sprint is determined during the sprint planning meeting. During this meeting the Product Owner informs the team of the items in the product backlog that he wants completed. The team then determines how much of this they can commit to complete during the next sprint.[4] During the sprint, no one is able to change the backlog, which means that the requirements are frozen for sprint.

Mitch is a great presenter, Agile is highly sellable, so it was a fun session. Here was Mitch's agenda:

  • So, what is Agile?
  • The Agile Umbrella
  • Why Agile
  • Scrum
  • The Managers role
  • Getting started
  • Q&A

A little dry, no? Here's the presentation, from Mitch's site.

I'm always collecting arguments to sell the agile way to the traditional project managers. Mitch added a new one (no Mitch, being "fun" doesn't help us here): according to Mitch, about 20% of the team members leave their projects (or organizations?) each year. Experience tells us that the Agile approach offers more guarantees of maintaining the project information on the team than the traditional waterfall pre-development functional document intensive way. Makes you think, doesn't it?....

I hate when the limits are not technical ones

Window XP sets a limit of 1 remote desktop session. As we all know, the limit is not technological, but based on licensing reasons. Some people at Redmond are probably afraid that some organizations defect to other OSs and leave a bunch of virtualized remote XP serving the legacy apps that couldn't be ported yet.

Myself and the organization I work for aren't planning on leaving Microsoft OSs but still need multi-session login on XP. Why? To get our labs working on out virtual servers. We usually setup some XP virtual machines with the next generation tools - a bunch of betas, CTPs and previews that must match each other so we never install them on our stable environments.

We love to experiment we cool new technology, but end up wasting useful resources with the 1 session limit from XP. Sure, we can use Windows 2003 Server, but the limit is only lifted up to 2. Sure we could probably use the (legally?) beta 2055 release of XP PRO SP2, but the limit would only raise to 3 and we'd couldn't add the machine to a domain.

Now that the XP extremely long live has probably paid several times what Microsoft as spend developing it, it would be cool if Microsoft opened this silly limit. What would probably be a fair agreement for Microsoft and consumer interests was opening that limit for remote connections coming from computers holding Microsoft CALs.

Thursday, April 24, 2008

Student syndrome

From wikipedia:

Student syndrome refers to the phenomenon that many people will start to fully apply themselves to a task just at the last possible moment before a deadline. This leads to wasting any buffers built into individual task duration estimates.

Oops, most of us do suffer from this syndrome (including myself, for much as I fight it). I heard about this on a great Scrum event presented by Mitch Lacey, and decided to share it with you. But more about it later.

PS: now I post as soon as I can. Am I cured?... :)

PS2: it is good to know this is worldwide problem, not a national one :)

Wednesday, April 23, 2008

Live Mesh

Live Mesh is now public. I haven't tried it yet, just applied for access. Initiatives live Live Mesh constantly remind us that the Web 2.0 concept is probably here to stay, for much criticism that it encounters. It may be a buzzword, it risks being no more than a hype, but for some piece of nothing that doesn't really get installed anywhere, Web 2.0 is still talked about for more than most people predicted.

Tuesday, April 22, 2008

stackoverflow.com

Joel Spolsky and Jeff Atwood, notorious bloggers from Joel on Software and Coding Horror, have started a new project, stackoverflow.com. Stack overflow, great name. It reminds me of the good old times where we had 64K for data, bss, heap and stack... lots of non-recursive stack overflows there, as you may imagine.

Here's why they did it, according to Spolsky:

Programmers seem to have stopped reading books. [...] Instead, they happily program away, using trial-and-error. When they can't figure something out, they type a question into Google.

The google-away first, try and invent later is not always a bad idea. But I understand the limitations of confining the solution space to that approach.

Every week, Jeff and I talk by phone (he's in California, I'm in New York), and we're going to record those phone calls and throw them up on the web for you to listen in on, and call it a podcast. We have a lot of trouble keeping on topic, so the podcast may be interesting to you even if you don't want to hear about stackoverflow.com

I must confess: I was expecting a little bit more from a joint production from Spolsky and Atwood. Given the high hopes, it was just good enough to keep me downloading the podcast. The sound quality does not excel, but the quality of the expected contents will undoubtly keep be downloading.

In my opinion, and as podcasters, Spolsky and Atwood are probably more "reachable" then over their blogs. Possibly more "human", more "doubtful". On the downside, they didn't exhibit that "radio sparkle" on this first episode, but hopefully they will soon get it right.

Best wishes for StackFault.com :)

 

<update>

How strange is the world we live in, where even the tech blogosphere is starting to be globalized...

</update>

 

PS: they didn't fill the "Album" property on the podcast, so I'm having some problems browsing for the file on my Zen. Hopefully the next episode gets "Album" filled up.

XP SP3: It's About Time!

The last of Microsoft's tabu is finally out! Or as Joe Wilcox would say it, It's about freaking time!

Sunday, April 20, 2008

Strategic Vision

This weekend we had our company's annual meeting. As you certainly will understand I cannot blog about our strategic vision, so all I can post here are these pitiful pictures:






Great weekend!

New contents for new people

beActive is a cross-media production company targeting young demographics. beActive launched, among others, “Sofia’s Diary”, the multi-channel interactive hit that won the hearts of teenagers all over the world and "Beat Generation", a video based video magazine.

beActive is a cool company defining cool new markets, and you can't be cooler then Marlene Barreto, one of the "Beat Generation" journalists, that after interviewing FHM for the "beat Generation" was asked to pose for them... and accepted! Here's the making of:



Oh, by the way, Marlene is a colleague of ours - we work on the same building on different companies from the same group. Eat your hearts out!

Thursday, April 17, 2008

Debugging service startup

.NET Tip of The Day has posted a cool way to debug services at startup, calling Debugger.Launch() or Debugger.Break(). There are times when this is the right answer, for the rest of the development I'd recommend debugging as a console application.

iGo Stowaway Ultra-Slim Bluetooth Keyboard

image Finally bought a Bluetooth keyboard for my HTC 3350. I've been waiting for this for ages, but the prices were just too high. My choice: iGo Stowaway Ultra-Slim Bluetooth Keyboard.

It is as ultra-slim and effective as I expected, and easy to setup. I'll post some feed back soon after a couple of meetings using this baby.

Wednesday, April 16, 2008

Those whom the Gods love die young

It is with great sadness that I am reporting the departure of our friend and colleague Miguel Malato. His young age and extreme joy of living makes it even more difficult to understand our loss.

May you rest in peace, Malato.

Sunday, April 13, 2008

Version Control for Multiple Agile Teams

Managing multiple teams working continuously on multiple releases is a problem most of our projects have to deal with, may their methodology be pure Agile or not. Here a great article about it.

NHibernate 2.0 has reached alfa

Here it is! Ayende posted an extensive list of all the changes and new features. Here's my small list:

  • most of Hibernate 3.2.6 features;
  • new inheritance mapping strategies;
  • new events infrastructure (it's about time!).

With the Hibernate 3.2.6 maturity and the Linq for NHibernate developing experience NHibernate 2.0 will be a though competitor to match on the OR/Ms showdown.

Romano's10th Law

Romano's 10th Law states:

Every computer science statement formulated as a rule risks getting wide acceptance as long as it is controversial enough and presented on an ordinal form.

It is followed by the devCatharsis corollary:

Talking about something that maters and coming from a trusted authority may help.

Oops, their goes Romano's 10th Law wide acceptance :)  So what about the preceding 9? Well, they just doesn't exist. I'm following a trend started by Philip Greenspun on his Greenspun's 10th Law. The law states:

Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified bug-ridden slow implementation of half of Common Lisp.

When asked about the preceding 9 laws, Greenspun answered:

Sorry, Han-Wen, but there aren't 9 preceding laws. I was just trying to give the rule a memorable name. [...] I have only a dim recollection of writing this originally. [...] It is ironic that this will, after my death, probably be the one thing that anyone remembers from my writing.

So we are all reading and writing about a 10th Law that doesn't have 9 preceding ones on which the author had a limited recollection and had to google for the original content... and it is okay: it is still a great rule from someone that doesn't feel like belonging in the pantheon of Lisp Gods, but clearly belongs in the pantheon of great statements :)

Saturday, April 12, 2008

Choosing compression options

I'm still spending some time managing my development servers. Backing up virtual machine images is a CPU intensive operation, so I'd imagine my 8 core server wouldn't have a problem with it. I was wrong, for some strange reason, 7Zip was using only one core. After some tests, I've found out the relevance of the compression method:

method #cores used
zip 1
7z 2
bzip2 8

I've yet to measure the core usage efficiency, but until otherwise proven bzip2 will be my default compression method on this servers.

PS: I'd expect 7z to have a better compression rate than bzip2, but the time frame to compress images is crucial on these servers.

Old technology over shiny new 64 bits OS

I've been upgrading some development environments from 32 to 64 bits when I found out my old VB scripts stopped instantiating COM objects. The problem was solved when I've updated cscript references to:

%windir%\SysWOW64\cscript.exe

Mental note to self: get some time out to port this scripts to PowerShell.

Friday, April 11, 2008

Another great tool

Here's a great tool to help you configure your CruiseControl.Net: ccnetconfig. A must. At least for lazy developers like me, definitely not for those of you who would rather edit ccnet.config with good old vi over bourne shell.

Thursday, April 10, 2008

The future of Virtual Machines

Now that virtual machines are everywhere and that my dream of lightweighted hypervisors monitoring virtual machines on every laptop is get closer, here's another great concept: www.mokafive.com. MokaFive delivers "virtual desktops as a service" to help customers manage thousands of virtual desktops running a variety of operating systems and resolve key security issues remotely. Here a nice demo.

I'm not the only lunatic to believe on virtual machines on personal computing. According to eWeek:

Natalie Lambert, an analyst at Forrester Research, predicts that in five years or so virtual machine software will be how most personal computing is done.

But Natalie goes further:

"It can be hosted in a data-center cloud, running on a desktop or some combination of the two. Personally, I think the greatest potential is for virtual desktop computing hosted in a data center. Imagine Google owning your desktop, and it’s available to you wherever you are.”

Makes sense. We came a long way since CP/CMS...

Tuesday, April 08, 2008

Silverlight Essential Training with: Mike Harsh

Here's a great training kit from Mike Harsh, the program manager on the Silverlight team at Microsoft. It comes with with exercise files!

[Update]

I've forgot to mention, here are the labs from Microsoft.

Monday, April 07, 2008

How to Serve an Excel File from a Web Application

When I need to serve an Excel file from a Web Application I usually serve them through HTML. But when you have to serve a 220MB excel, you may think again! On my desktop, it took ages and lots of memory to open.

The obvious alternative is Spreadsheet XML. It is fast, light, powerful and you still don't need an installed runtime at your server. Here is a great reference link from MSDN.

PS: watch out for ss:MergeAcross, his count excludes the current cell. So, if a cell is not merged, the MergeDown="0" and MergeAcross="0".

 

[Update]

MergeAcross is the HTML colspan equivalent. Couldn't get MergeDown  to work in my scenario.

Sunday, April 06, 2008

No comments

As promised, I stopped commenting over the Microhoo business, so you won't ear any angry comments from me about Microsoft Forcing Yahoo’s Hand.

Free opensource GIS tool

I recently had the need for some GIS features on a project. As the project's budget didn't anticipate a commercial GIS tool, I asked for an advice to the GIS experts: the answer was MapWindow GIS.

I was impressed by the quality and integration ease. We used the shapes and DBF databases from a well known (and costly) commercial tool and customized some interactive GIS views in a couple of days.

Unfortunately I can't show you the views, so here's a map from MapWindows GIS:

StringReader sharing issue

I was using my LINQ log retriever collecting some data from a live server when I got an IOException for file sharing. Probably not what I would expect, but it makes sense: by default, FileShare is set to None.

So if all you want to do is just read the damned file, and you're not interested on the fact that this file may be written by another process, all you have to do is:

        StreamReader reader = new StreamReader(
new FileStream(
filename,
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite
)
)

For log collecting retrieval, this is now my default mode :)

Friday, April 04, 2008

Yet another LINQ success story

I tend to overuse new technology just for fun. But here's a great real reason to use LINQ: I have a huge log file (EL logger) with some profiling data (among other logging). LINQ is a great way to solve this class of problems:

// sample: "Message: [00:00:34.2389312] Initialize "
var regex = new Regex(@"Message: \[(?<hour>\d\d):(?<minute>\d\d):(?<second>\d\d).(?<milisecond>\d\d\d\d)\d+\] (?<message>\w+)");

var groupedMessages =
from message in
from line in ReadLinesFromFile(@"D:\Logs\Link.MetaHeuristics.Business.log")
let match = regex.Match(line)
where match.Success
select new
{
Message = match.Groups["message"].Value,
Time = new TimeSpan(
0,
Convert.ToInt32(match.Groups["hour"].Value),
Convert.ToInt32(match.Groups["minute"].Value),
Convert.ToInt32(match.Groups["second"].Value),
Convert.ToInt32(match.Groups["milisecond"].Value)
)
}
group message by message.Message into g
select new {
Message = g.Key,
AverageTime = new TimeSpan((long)g.Average(x => x.Time.Ticks)),
MaxTime = new TimeSpan((long)g.Max(x => x.Time.Ticks)),
MinTime = new TimeSpan((long)g.Min(x => x.Time.Ticks)),
SumTime = new TimeSpan((long)g.Sum(x => x.Time.Ticks)),
CountOf = g.Count()
};

Console.WriteLine("");
Console.WriteLine("{0,38} {1,5} {2,14} {3,14}", "Message", "Count", "SumTime", "AverageTime");
foreach (var item in groupedMessages.OrderBy(p => -p.SumTime.Ticks))
{
Console.WriteLine("{0,38} {1,5} {2,14} {3,14}", item.Message, item.CountOf, item.SumTime, item.AverageTime);
}

I'm using Don Box's ReadLinesFromFile helper - yes, the WideFinder C# naive implementation:

// LINQ-compatible streaming I/O helper
// taken from: http://www.pluralsight.com/blogs/dbox/archive/2007/10/09/48719.aspx

public static IEnumerable<string> ReadLinesFromFile(string filename)
{
using (StreamReader reader = new StreamReader(filename))
{
while (true)
{
string s = reader.ReadLine();

if (s == null)
{
break;
}

yield return s;
}
}
}

It took about 11s to consolidate a 500MB log file on an old Pentium D. Not impressive, I know, but highly readable and easy to write. And last but not least: declarative enough to allow future PLINQ optimizations :)


PS: PLINQ tests will need some refactoring, as IO is probably the current bottleneck (CPU doesn't get to 40%...).

Thursday, April 03, 2008

Redirecting stdin and stdout

We've been working on probabilistic meta-algorithms for the global optimization problem. I'm afraid I can't talk much about the project for the time being except for details. Here's a one of those details.

As strange as it may seem today I had the need to redirect stdin and stdout from within .NET. On one of the alternative solution branches we've decided to use lp_solve to optimize some variables so we could benchmark an alternative way for solving our algorithm.

The problem has so many variables and restrictions that we couldn't use lp_solve as a lib, we had to create the input file, execute lp_solve.exe and recover the outputted data.

Here's where stdin and stdout redirection came in. Here's how we did it:

	Process process = new Process();

process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = String.Format(
"/c {0} < \"{1}\" > \"{2}\"",
System.Configuration.ConfigurationSettings.AppSettings["LPSOLVE_PATH"] + @"\lp_solve.exe",
inputFilename,
outputFilename
);
process.Start();
process.WaitForExit();
And there you go. Not much, but it works. And it sure brings back memories... :)

Tuesday, April 01, 2008

Accessibility in Silverlight 2

Accessibility and Silverlight in the same post? And not to say it just doesn't support it? It seems like the accessible options in Silverlight 2 is heading the right way. Here's a mix webcast about it.

Great news, this was probably the question that troubled us the most when adopting Silverlight. Clearly a great advantage over Flash, right?

read about it at: http://blogs.msdn.com/publicsector/archive/2008/04/01/silverlight-2-accessibility-section-508-etc.aspx

Development Catharsis :: Copyright 2006 Mário Romano