I use the Revealing Module Pattern quite a bit. I found an implementation written by Burk Holland and in the comments of Burk’s post Steve Howell and Elijah Manor provided additional implementations. Although, Burk’s example came close to what I was looking for in simplicity and cleanliness, I felt that there could be some improvements:
- It defined the module in the global namespace. I always create my modules in a namespace I define for the my project to further protect against naming collisions.
- I didn’t like how the module ended with the definition of a variable to contain the public functions.
I put forward the following:
I create an object as the last expression in the function that will be returned. This skips the creation of the temporary variable that is never referenced.
I am doing part of a talk at the Microsoft Canada Office on Thursday September 13th at 6:00pm.
Here is the blurb:
Testing with Microsoft Test Manager
Coded UI tests provide a way to create fully automated tests to validate the functionality and behaviour of your application’s user interface. We’ll cover some of the ways you can use these methods of testing with TFS 2012 to increase your teams productivity. Accelerate your testing with Fast Forward for Manual Testing to quickly re-run test steps or even entire test cases in the future.
Come out it should be fun.
In the past week, I have seen a couple of articles that discuss the lack of awareness of the Cloud in the general public. The following, from the Globe and Mail summarizes quite nicely.
“While cloud computing is growing increasingly pervasive, a new survey shows how many people are still cloudy in their thinking about the technology.” - http://www.theglobeandmail.com/report-on-business/small-business/sb-tools/small-business-briefing/cloudy-thinking-about-cloud-computing/article4504986/
The survey includes tidbits like 54% of people don’t think they use cloud computer (only 5% don’t), only 16% identify it correctly and (this one is my favorite) 51% believe that stormy weather can interfere with cloud computer.
(As an aside, I just got back from Punta Cana, where the Internet (and thus cloud computing) was turned off for two days while Tropical Storm Isaac passed through. Pretty certain that’s stormy weather interfering. :))
My comment about this state of affairs is: Who Cares?
What percentage of people have a working knowledge of the internal combustion engine? And yet a majority of people are quite able to drive without this knowledge. How many people have even the most basic understanding of how electricity is generated? And yet they don’t have a problem turning on a light.
Those of us in technology seem to think that it’s important to have others understand what we do. Perhaps it’s a need to appear smart. Perhaps we’re looking for acceptance after spending high school being given wedgies and swirlies. Doesn’t matter. I no more expect the average user of the technology I create to know how it works than I do my mother. And you shouldn’t either.
It should be completely transparent to the user where we put their information. The applications that we create should seamless transition between local storage, on-premise storage and the ‘cloud’. The user should only be aware of this when they use their phone to access the Word document they were writing before they left the office. Actually, I’m wrong. They shouldn’t care even then.
And that’s how you should be building your applications. Seamless integration between the various storage options. This isn’t necessarily the easiest choice for developer. Seamless == more work. But tools like the the Windows Azure Mobile Services can help. But don’t let the user know…they don’t care. They shouldn’t. All of their data should just be there. Like electricity
While installing SharePoint 2013 prerequisites on Windows Server 2012 and SQL Server 2012, I have received the error "There was an error installing the prerequisites..." After checking out the logs (under %TEMP%\prerequisiteinstaller.<date>.<time>.log), you quickly learn that prerequisite install failed because of Microsoft SQL Server 2008 R2 SP1 Native Client. To bypass this problem, you can manually download Microsoft SQL Server 2008 R2 SP1 Native Client from http://download.microsoft.com/download/9/1/3/9138773A-505D-43E2-AC08-9A77E1E0490B/1033/x64/sqlncli.msi and install it. After you manually download Microsoft SQL Server 2008 R2 SP1 Native Client, go ahead and restart SharePoint 2013 prerequisite installer. Now SharePoint 2013 prerequisites should install successfully. J
After I've installed Windows 8 RTM, I tried to activate it as good folks at Microsoft are telling you too. When I clicked on Activate button, Windows activation failed, which of course made sense because I have not entered a product key yet. But, for some reason, there was no place to enter a product key under System properties. Or, at least I did not see it. Luckily, the good old Command Prompt and slmgr.vbs tools came to rescue. Just follow these steps to add/change product key using Command Prompt and slmgr.vbs:
- Launch Command Prompt as an Administrator.
- At the command prompt, type in "slmgr.vbs -ipk <insert your product key here>" and click Enter
- To activate windows, type in "slmgr.vbs -ato" and click Enter.
That's all J
I love Lego.
To be fair, the number of people who don’t fall into that category is probably fairly small. There is nothing like the joy of taking the slightly differently shaped blocks and creating something bigger and better. And I’m not a big fan of all of the custom kits either.If a piece only has one purpose (like as the nose for an X-wing fighter), then it’s not for me.
I also love Star Trek. Well, not love, but greatly appreciate and enjoy the various forms over the years. And I have referenced Star Trek in various presentations, not to establish my geek cred (of which I have very little), but because of how software works ‘in the future’.
And yes, Lego and Star Trek are related in this way.
The key to Lego block is the simple and consistent interface. Doesn’t matter what the shape of the block is, the fact that every block has the same interface allows them to be connected. And it is through the various connections that a much bigger whole can be created.
Star Trek takes the Lego idea and applies it to software. Every wonder how Geordi and Data were so quickly able to create new and complex software? Because all of the different components had the same interface. Or at least similar enough interfaces so that the components could communicate with one another. And connected software allows you to create a much bigger whole.
Now let’s move back to the here and now. What’s missing from our current software environment that would prevent Geordi from creating the application that saves the Enterprise? Two things, really. The lack of a standard set of interfaces and the inability of most software functionality to be ‘connected’. And this is the next phase in software development.
If you’re a company that provides services to others, then you need to think about enabling access to your service from the cloud. Want to allow people to easily buy your services or products? Give them an interface on the Web that allows them to do so. Not a Web page, but an API. Have some information that others might find useful? Give them an interface to access it. Create the Lego blocks that I was talking about earlier. Find standard interfaces for the type of data/service you offer and expose them on top of your services. In other works, provide Lego blocks for others.
One of the benefits of doing so is that you let others build out functionality based on your services. If your service or data is compelling enough, others will build your front-end for you. You have already seen this happen with a number of the social sites that are out there. People combine information from Foursquare, Twitter, Facebook, Google+, etc. to create interesting apps for others to use. The engagement level of people with apps that run on their phones are high and likely to move higher. Finding ways to integrate your service/data with that ecosystem can only be beneficial.
So what’s the downside? Well, you have to implement and/or design the interface. Technical yes, but not beyond the scope of what most companies can do. And you need to provide the infrastructure for surfacing your API. This is where virtualization comes into play. I’m a fan of Azure and the new functionality it offers, but speaking generically, virtualize where it makes the most sense. If you’re a Microsoft shop, I believe you’ll find the biggest bang for your efforts with Azure.
But the technology is not the key here…it’s the concept. Look at the products you offer to your clients. Find ways to expose those products to the Internet. Be creative. The payoff for your efforts have the potential to be significant. But more importantly, you take the first step towards what will be the development and integration paradigm for the next decade…Lego.
Yesterday was another Microsoft announcement day. Only this time, it was the preview for the next version of Office (you’ll hear it called Office 15 or Office 2013). I was half surprised they didn’t include this in the Worldwide Partner Conference last week. It was certainly suggested that yesterday would be about the next version of Office. But then again they probably didn’t want it to appear to be focused just on partners, but to everyone.
Integration with Metro – This is the version of Office that has the Metro sensibility. I suspect it will be the example used for what Line of Business applications in Metro should be until there are other, better instances out there.
Integration with SkyDrive – One of the default locations to store a document is on SkyDrive. That is, in the cloud. The integration is nice. But one of the interesting features was the ability to pick up right where you left off. In other words, edit a document on your desktop at work and save it to the cloud. On your way home, open up the document on your laptop and it moves to the exact place in the document you were at on the desktop. Finally, the same thing happens when you open the document on your Windows Phone device (although I’m not imagining much editing going on through that form factor).
PDF integration – PDF files can be opened in Word, edited and then saved as either a Word or a PDF document. Enough said to know that’s sweet.
Flash Fill in Excel – This one is tough to explain quickly. It’s basically a tool to help your parse data from a separate cell. Figure it like the following: You have a column of data that is tilde delimited (‘1~15.3~kyle~hockey’ is the first cell, ‘3~17.8~curtis~soccer’ is the second and so on. In a separate column, but on the same row as the first cell, you type ‘kyle’. In the cell immediately below that you start to type ‘curtis’. Excel now makes the prediction that you are trying to extract the third value out of that column and fills in the rest of the values down the column. It’s an edge case, but if you need this functionality (and I have in the past), this is way cool.
Other Features – A rotator control to select font families, sizes and colors. Integration with Bing so that search results can be embedded into Word directly (and the embedded HTML is live). A slightly improved UI that is still a ribbon, but the spacing between icons is greater to allow for easier interactions with a touch interface. A new presenter view for PowerPoint, including built-in zooming.
If you want to try the preview, you can get it from here: http://www.microsoft.com/office/preview/en. One word of warning. The C++ runtime used by Word is not compatible with the one used by Visual Studio 2012. As a result, you might get a warning indicating this when you launch VS2012 after installing the preview. There is a patch to this problem, available here: http://www.microsoft.com/en-us/download/details.aspx?id=3017. You’ll see this problem called out in the KB (http://support.microsoft.com/kb/2703187).
you know that the files and data that are part of a completed build can delete?
you know that the data deleted cannot be recovered?
you know by default Test Results from any automated tests run against the build
are deleted by default?
If you have the right permissions you can right-click in Build Explorer
on a completed build and select delete. When you do that by default all the
items associated with that completed build are deleted.
Details: Information about the completed build that
is displayed in Build Explorer. This information includes build steps,
requestor, and date and time queued.
Drop: File and folders output by the build and
copied to the drop location.
Test Results: Results of any automated tests
executed during the build process or results of any test published against this
Label: The version control marker associated with
the specific file versions used by the build process.
Symbols: The debugging symbols published to a
symbol server during the build.
You can also configure the retention policy and set auto deletion rules
. Nothing wrong with that however is the person responsible for the “Build”
setup and maintenance deleting could be deleting Test Results?
There is an option that can be set to stop the deletion of your Test
Make sure your teams understands what happens when deleting completed
builds. Set that option to keep your test results, unless you don’t want them!
I did a little video for Tech Days TV demoing some of the new features of the Team Explorer.
You can check it out here.
It was almost 12 years ago that Dave Lloyd and I began ObjectSharp with some shared goals and values. I committed a lot of energy towards those goals and I’m very proud of what ObjectSharp became during that time. I’ve had a chance to work with some fantastic people including our staff, our customers, and our partners Microsoft.
Today I want to let you know that I have some exciting new goals I want to achieve but to do that I’m going to have to say good bye to ObjectSharp. I wouldn’t be able to leave ObjectSharp if it wasn’t in good hands, so this transition has been in the works for more than a year and now I’m able to pursue those goals.
Although I’m saying goodbye to ObjectSharp, I will be staying within the Microsoft Ecosystem and staying within the Greater Toronto Area, so I will remain a familiar face in these areas. I hope you will follow me on my personal blog at http://gervin.com/ and twitter @bgervin and will post more news there when the time is right.