Entrian Solutions
 

Archive for the ‘30days’ Category

Announcing Entrian Source Search 1.1.2

Thursday, December 4th, 2008 by Richie Hindle

The first non-Beta release of Entrian Source Search!

about-112.png

I’d like to thank all our Beta testers, especially Andrew, Adam, Dan and Ivan, for all the great feedback they’ve provided during the Beta program.  The software wouldn’t be anywhere near as robust, flexible and easy to use as it is now if it weren’t for you guys.

1.1.2 has only a couple of fixes relative to 0.98.3:

  • Fixed a crash in the syntax coloring code for ASP files (thanks, Ivan).
  • The About dialog now adjusts its layout sensibly when you resize it.

And most importantly:

  • It no longer says Beta! 🙂

Download from the usual place.

“It works for me”, or, “How does it know a developer’s using it?!”

Sunday, November 30th, 2008 by Richie Hindle

We all know that software never goes wrong for its developers.  “It works for me,” they always say.  Here’s a story of how that sometimes goes to extremes.

“Hi Richie, I’ve got a problem with the ActiveX plugin.”  It was Brett, one of our consultants, working on a solution for an important customer.  Inevitably, I couldn’t reproduce the bug.  “Come to my office and I’ll demonstrate,” said Brett.

The bug was that clicking a link didn’t work – nothing happened.  Sure enough, Brett clicked the link and nothing happened.  “Can I try?” I said, wondering what I’d been doing differently on my machine.  The link worked perfectly.  “What?!”  Brett tried – nothing.  I tried – it worked perfectly.

So we thought, it is working every other time?  Does it matter where the focus is when you click?  Does it matter whether you’re standing up when you click it?  (Stranger things have happened!)  Everything we could think of had no effect – it always worked for me; it never worked for Brett.

“Hey, Dave, come and have a go at this!”  Dave was another consultant.  Needless to say, it failed for Dave.  Probably it would have worked if he’d been a developer – these things never fail for developers.

I’m not sure what it was that made me think of this, but I wondered, what happens if I press-and-hold the link before releasing it?  It failed.  Yay!  I’d made it fail!  The next job was for Brett: “Click it as fast you can.”  And it worked perfectly.  My natural clicking action was a bit faster than the others – clickrelease – whereas the others were a bit slower: click-tiny-pause-release.

So, the bug: When the link was clicked, a timer would start.  The timer had nothing to do with the link – it was starting when it shouldn’t.  The timer would fire one tenth of a second later, and take the focus away from the ActiveX control.  If the whole mouse-button-down-mouse-button-up sequence happened in under a tenth of a second, the link would work.  Any slower, it would fail.

So we trained the important customer to be really really quick with the mouse, and the money rolled in.  Or did we fix the bug?  I forget.

Entrian Source Search 0.97 Beta released

Wednesday, September 10th, 2008 by Richie Hindle

(Note: This post is from September 2008.  Apologies to anyone seeing this via RSS as a new post in the “30days” feed from FeedBurner – I think FeedBurner has gone slightly mad.)

I’m happy to announce the release of Entrian Source Search 0.97 Beta, with a very cool enhancement: you can now use a wildcard asterisk anywhere in a word (where previously you could only use them at the end of a word).  Here’s a search for *query*:

wildcards-start-and-end.png

You can use as many asterisks as you like within a word, so *Query*T* will match ESSQueryPartType.  Thanks to Dan for the impetus for me to get on and implement this!

Entrian Source Search 0.96 Beta released

Friday, August 29th, 2008 by Richie Hindle

Entrian Source Search 0.96 Beta has just been released:

  • The search results now use the same color scheme as Visual Studio, so if you code in green-on-black, your search results will match (thanks, Ivan):

    vs-color-scheme.png

  • Added *.frm, *.bas and *.cls to the list of supported files (thanks, ‘Mister’ from BoS).
  • Added a scrollbar to the Exclusion Patterns list.
  • Added enc_temp_folder to the default exclusions.
  • Better crash reporting (thanks, Andrew).

C++, MFC, sanity, insanity

Wednesday, July 2nd, 2008 by Richie Hindle

One of the really nice things about C++ compared with C is the existence of constructors. In C, if you say:

struct
{
    int count;
}
thing;

then thing.count holds a random value until you set it to something. In C++, that doesn’t happen because any sane class has a constructor that sets the member variables to sensible default values:

class Thing
{
    Thing(void)
    {
        count = 0;
    }
    int count;
};

You can’t create a Thing with a random count because the constructor gets called automatically.

MFC is Microsoft’s C++ framework for Windows development. It’s very widely used, mature and stable. It has a class CRect to represent a rectangle. And does its default constructor set the coordinates to sensible default values? Does it hell. Does it even set them to known insane values, to immediately alert you when you forget to initialise them, or when you naturally assume that the default constructor is sane? Does it hell.

Thank you whoever at Microsoft made that decision. You just cost me about 6 hours of my life.

Guess I picked the wrong month to collapse a lung

Monday, June 30th, 2008 by Richie Hindle

OK, I’m exaggerating slightly. I have a collapsed “lobe”, which is just part of a lung, but even so it’s painful and exhausting, and it’s prevented me doing as much work on Don’t Wreck My PC! as I’d have liked in the past two weeks.

The good news is that Don’t Wreck My PC! is only a tiny step away from being released, albeit without a website yet.

The bad news is that the “tiny step” is an intermittent failure on Vista. About 25% of the time, the click-proof window that it puts over the screen fails to appear. I can’t see a pattern to when it fails, and none of the shotgun debugging I’ve performed so far has revealed any clues.  It works perfectly on XP.  I’ll get to the bottom of it, but not in the next [looks at the clock] 45 minutes.

It’s amazing the little details that you discover at the “end” of even a short software project. I was under the impression that I’d finished with the exception of the Vista problem, so I switched over to my Vista environment to investigate. Then I began to notice little things that needed attention (little but often serious, like locking you out of your PC entirely if your little darling happens to minimize a window 🙂 ) and started jotting them down on the bottom of a bank statement that happened to be lying on the desk. There are now 26 issues marked on there (all ticked off, I’m happy to say!) and I need another bank statement. If anyone ever tells you they’ve “nearly finished” a piece of software, don’t believe them. They’re not even close.

30 day product challenge: The half-way point.

Sunday, June 15th, 2008 by Richie Hindle

It’s day 15 of the 30 day product challenge.. here’s how I’m doing – how about everyone else?

Jobs done (roughly one per day)

Proof of concept: Skeleton app.
Proof of concept: Prototype click-stopping code.
Proof of concept: Drag the rectangles (really basic implementation)
Proof of concept: Keyboard suppression. Testing. It all works!

Install and customise WordPress.
Write the initial blog posts.
Product name and logo.

Startup dialog to explain the workflow.
Yellow bar a la Remote Desktop.
Create / Load Template dialog.
Create, move and delete rectangles in the template.
Write some AdWords ads (for a future blog post – watch this space).

Still to do (hopefully one per day!)

Set Password and Reminder dialog / Password prompt dialog.
Load and Save of templates.
Ctrl+Alt+Delete handling.

30-day trial system.
Licensing.
Licensing (two days for this)
Test and fix on Vista (the proof of concept already works there).
License / installer / executable signing.

Homepage.
Details / Doco page.
Download page.
Contact / Helpdesk page.
Buy Now page.
Start an AdWords campaign.

July

Profit. 🙂

Drop shadows for non-rectangular windows: CS_DROPSHADOW and SetWindowRgn.

Saturday, June 14th, 2008 by Richie Hindle

Windows has the ability to add a drop-shadow to windows – you see it on menus and tooltips, and you can easily apply it to your own windows via the CS_DROPSHADOW class style.

It also supports non-rectangular windows, via the Windows API SetWindowRgn.

Today I was pleasantly surprised to see that you can combine these two features and produce irregular windows with drop shadows, like this:

top-bar-with-drop-shadow.png

It’s not every day that Windows gives me a pleasant surprise, but today was one of those days. 🙂

(I’m coding with MFC – if you’re wondering how to apply CS_DROPSHADOW to your MFC dialog, the answer is here: CodeGuru Forums: How to change the windows class name.)

Don’t Wreck My PC! – What to call the saved s?

Friday, June 13th, 2008 by Richie Hindle

Don’t Wreck My PC! puts a click-proof barrier across the screen, then lets you cut holes in it with the mouse. Your kids can click through the holes, but not elsewhere. It lets you save the way you’ve cut those holes for the next time you let your kids do whatever they’re doing.

A question: when you save, what should I call the thing you save? In Excel it would be a “workbook”. In Word, a “document”. But what about here? I have my own idea, but maybe someone can come up with something better? Here’s how the UI looks for that step (screenshot slightly shrunk):

name-the-feature.png

The “Don’t Wreck My PC!” startup screen is done. Opinions?

Tuesday, June 10th, 2008 by Richie Hindle

Don’t Wreck My PC! now has a startup screen that explains how to drive it. Does this make sense to you? Would you be scared off by it?

screenshot1.png

When you click Next, that screen animates up into a yellow bar at the top of the screen, like this:

yellow-bar2.png

(The way that transition is done makes it pretty much impossible for the user to miss the yellow bar.)

Don’t Wreck My PC! is unusual in that it can’t present a user interface most of the time – you need to be able to see the whole screen. Just showing that yellow bar when you first start it is clearly no good, hence the introduction screen. My worry is that it makes the thing appear complicated – “What, do I need to learn all this stuff before I can use it?”

All opinions, as usual, gratefully received…