|
|
May 10th, 2010 by mcollier
I have recently finished reading Azure in Action by Chris Hay and Brian Prince. The book will not be published in print form until August 2010, so my copy was a PDF made available through Manning Publications’ Manning Early Access Program (MEAP).
In Azure in Action, Chris Hay and Brian Prince share with readers their vast breadth and depth of knowledge, along with their passion, of the Windows Azure platform. While not a “deep dive” on any one aspect of Windows Azure, Azure in Action does go into enough detail that when you finish the book you feel you can speak intelligently about and build applications with the Windows Azure platform. From the beginning the author’s stimulating, often humorous, approach to explaining the concepts had me hooked. The book starts with a general overview of cloud computing and Windows Azure, and then eases into the details. You will gain a solid understanding of what cloud computing is and how it has the potential to have a significant impact on the IT landscape in the coming years. In doing so, the authors explain how Windows Azure and its Platform-as-a-Service (PaaS) approach fit into this picture.
As you move through the chapters, the authors continue to build upon the foundation they have laid earlier in the book. The three major components of Windows Azure – web roles, worker roles, and storage services – are all covered in great detail. The authors also provide some basic knowledge about SQL Azure and Windows Azure Platform AppFrabic. In explaining each of the aspects of Windows Azure, the authors also point out areas to pay special attention to, including several tips and tricks for architecting your application to run in the cloud.
Windows Azure is a relatively young platform. It was first unveiled in CTP form at PDC in 2008, and about a year later at PDC 2009 it made its production release. As a service, it is also a platform that is able to add new features relatively quickly. Chris Hay and Brian Prince do a great job of pointing out these features and those that while not in the platform today, they feel will have a high probability to be included in the platform in the future. Every technology has its faults and the authors do point out minor gripes with the platform, for example, the REST API for creating a new table in the Windows Azure Table Service is overly complex and verbose.
There are aspects of the Windows Azure platform that can be a little difficult to grasp at first. One such area is Windows Azure’s Blob Storage Service. The authors spend several insightful chapters explaining how the Blob Storage Service works (which I found to be very interesting), tips and tricks for working with Blobs, and several creative ideas for leveraging Blobs. After finishing reading these chapters, you should have a solid grasp on Blob storage and how to leverage it in your applications.
In Azure in Action, Chris Hay and Brian Prince take a very feature rich and powerful platform in Windows Azure, and break it down into chunks that are fun and easy to digest. I have read my fair share of technical books, and many can be quite dull to read. The authors’ passion and sense of humor make their book a pleasure to read and ensure you won’t be wondering how many pages are left to the end of the chapter. If you are looking for a fun, insightful book to learn about Windows Azure, then I recommend highly you start with Azure in Action.
Posted in Voice of Reason | Post a Comment »
April 21st, 2010 by dsouk
I believe in being well-read but unfortunately I can’t read everything I’d like every day, so it’s always a game of catch-up. In addition to the stuff below, I love Fortune and Inc magazines to help me keep a practical perspective on technology.
US ISV Developer Evangelism Team. Good way to keep up with the latest developments in the Microsoft development world.
Channel 9. Another good source of Microsoft stuff, primarily videos about new technologies, and conversations with notable tech figures. Lots of introductory level training material on various technologies as well.
Schneier on Security. Posts are sometimes a little sparse, but Bruce has a very practical perspective on security matters, especially governmental policy.
Cloud Ave. An independent blog commenting on the business side of cloud computing.
Ayende @ Rahien A very well-known and respected independent Microsoft developer. Leads the development and maintenance of the popular NHibernate open-source ORM tool.
Coding Horror Another very well-known and respected independent Microsoft developer, Jeff Atwood. Always informative, usually highly entertaining reads on a wide variety of issues related to building software.
Reflective Perspective A daily compilation of links related to new tools, add-ins and stuff of interest to the Microsoft .Net community.
Amazon Web Services Blog. All about AWS.
Scott Hanselman’s Computer Zen If you have written even one line of Microsoft code, you have to know who Scott Hanselman is.
Venture Hacks Excellent collection of all things about technology start ups, angel investors, etc. etc, but from a business perspective, not IT.
bharry’s WebLog Written by Brian Harry, who leads the development of the Visual Studio Team System product (now just Visual Studio with the release of the 2010 edition). He’s been remarkably open about some of the issues they ran into during the beta testing phase.
Nicholas Allen’s Indigo Blog Good resource for all things WCF.
Avanade I like to keep up with what they are talking about.
ScottGu’s Blog Even if you haven’t written any Microsoft code, you need to know what ‘The Gu’ is talking about. He’s a VP at Microsoft, yet he’s able to get deep into the details of their tools and technologies under development, and write some highly informative and detailed posts.
Interoperability Happens Blog of independent consultant Ted Neward. Opinionated, but with plenty of experience to back it up. Good stuff on both Microsoft and Java. He’s authored several books, and has a keen interest in programming languages. Interesting couple of posts on the new F# language.
Security Briefs A PluralSight blog on security, written by the Keith Brown, author of a couple of books on Windows and .Net security matters.
Service Station Another PluralSight blog, written by the former author of the MSDN Magazine column ‘The XML Files’, Aaron Skonnard.
Jeff Prosise A Wintellect blog. He’s covering all things Silverlight these days.
John Robbins Another Wintellect blog, primarily about all things regarding debugging on the Windows platform. Some very, very deep stuff here.
Jeffery Richter Another Wintellect blog. Richter founded Wintellect, along with Prosise and Robbins. More deep stuff here.
The Next Big Thing Don Dodge’s blog. Don was with Microsoft for about twenty years,but is now with Google, and it’s interesting to see his perspective on the technical world from outside of Redmond.
Frazzeld Dad. Good, solid source of info on some fundamental principles of software development written by Jim Holmes, an active speaker in the Midwest.
ISerializeable Blog of Roy Osherove, who is becoming an authority on all things unit testing.
The Software Simplist. Udi Dahan’s blog, who specializes in enterprise architecture and leads the NServiceBus open source project. I am a huge fan of the simpler-is-better approach.
dasBlonde Michelle Leroux Bustamante’s blog. She is a very active speaker and put together one of the best resources I found for ramping up on WCF.
Posted in Voice of Reason | 1 Comment »
April 21st, 2010 by dsouk
There is a song on one of my favorite radio stations that asks if you are just going through the motions in your daily life. What if you spent every day just meandering along, doing just enough to get by? No real passion to follow, no goals to acheive, no dreams to chase. At the end of your life, do you want to look back and only then realize what you could have done, or could have tried to do, had you given everything you had?
I don’t mean to sound morbid, and I certainly don’t think your philosophy of life should be driven by 3-minute songs, but I think there is a lot of truth to this message. Maybe it resonates with me because it reflects a lot of what I was taught growing up - if anything is worth doing, it worth doing right. Maybe it’s because I’m part of a new office we’re building in Chicago, and I don’t want to look back in a few years and not be able to say that I did everything I could to make it successful.
As Tennyson wrote, ” ’tis better to have loved and lost than never to have loved at all.”
Posted in Voice of Reason | Post a Comment »
February 8th, 2010 by mcollier
Unless you’ve been living under a rock the past year, you’ve likely heard about cloud computing. If you’re a follower of Microsoft technology news, then you’ve undoubtedly heard about Microsoft’s cloud computing platform, Windows Azure. Microsoft officially announced the commercial availability of the Windows Azure Platform at PDC09.
If you’re excited about cloud computing and the Windows Azure Platform, and are itching to learn a little more, then enrolling in Azure Boot Camp is for you! Azure Boot Camp is a series of free 2-day events where participants will “deep dive” on the Windows Azure Platform. To learn more about Azure Boot Camp, and to enroll in a boot camp at a city near you, please visit www.AzureBootCamp.com.
Centric Consulting is proud to be a sponsor of Azure Boot Camp. We’ll look forward to seeing you there!
Posted in Voice of Reason | Post a Comment »
January 12th, 2010 by mcollier
The start of a new year often includes a retrospective on the previous year and resolutions for the new year. I’ve been spending some time the first week of 2010 doing just that – but from a Microsoft technology perspective. While 2009 was a challenging year for many, it was also an exciting year if you dabble in Microsoft technologies. The product releases and announcements in 2009 set the stage for what is sure to be a monumental 2010.
The biggest Microsoft product release in 2009 was probably Windows 7. Windows 7 provides so many sensational new features, for both consumers and developers. It is a much faster, cleaner, and more intuitive operating system than any of its predecessors. For developers, there are some very exciting features that you can take advantage of to build great applications. Personally, I think it will be a lot of fun to experiment with the built in touch API in Windows 7. To learn more about developing for Windows 7, I would encourage you to check out the Windows 7 Developer Guide and Scott Hanselman’s Top 10 Tips Working Developers Should Know About Windows 7. Also, on this blog you can read my colleague Dan Souk’s thoughts on Windows 7.
Read the rest of this entry »
Posted in Voice of Reason | Post a Comment »
October 22nd, 2009 by dsouk
A few months ago I posted a short entry about having a running virtual machine with Windows 7 within hours of the RTM release (early access to new toys is definitely a perk of working for a Gold Certified Partner :-).
A few weeks later, I took the plunge and installed the 64-bit Enterprise edition on a Dell D630 (not a 630c), with a Core 2 Duo CPU running at 2.2GHz and 4GB of physical RAM. I’m very happy to say that it went very smoothly. I ran into a couple of expected issues, but their resolution was simpler than expected.
Hardware
Mouse
I use the Microsoft Bluetooth Notebook Mouse 5000. It’s the most solidly built, comfortable mouse I’ve ever used and fits my hand perfectly. Hardware peripherals just don’t usually excite me all that much….I mean, when you get right down to it, it’s just a bunch of metal and plastic. But this mouse is different, and the idea of giving it up for a trackpad just so I could have Windows 7 was going to be a steep price to pay. Good equipment is worth keeping.
So, although I expected a speed bump, I was more than a little disappointed when I tried to pair it with my laptop. At first I tried to initiate the pairing from the mouse, but no matter what I tried, the Dell wouldn’t attempt to pair without demanding a four-digit passcode, which of course, this mouse doesn’t use. It wouldn’t even take 0000, the standard ‘no passcode’ passcode. Turns out that if the pairing was initiated from the laptop, Windows 7 discovered it easily, and just as easily, set up the pairing. Beautiful.
Video Driver
This one was a little more serious than the mouse, since one of the main benefits of Windows 7 is the new eye candy, and if you don’t get that, what’s the point? The new interface is very clean and modern, and with a high-def themepack, is truly enjoyable to work with. Frankly, it’s the interface that Vista should have had. Access to the full 4GB of RAM on the laptop was another reason, of course, but that’s driven by the 64-bit architecture, not Windows 7 - any 64-bit OS allows you to access the entire physical RAM in your machine.
A quick check of the NVidia site turned up a link to a native 64-bit driver for Windows 7. Sweet. The article suggests a Dell BIOS upgrade as well, to address possible fan noise after the upgrade. Updated the BIOS, the installed the new NVidia driver after the Windows 7 installation completed. The improvement over the standard video driver is tremendous, though admittedly I didn’t really notice anything different about the BIOS.
Software
The only real software issue I ran into really shined a light on another significant improvement. Like many parents, I take lots of home videos, and a few years ago bought a Sony camcorder (HDR SR1, which has since been discontinued, though you can buy refurbs from Sony). It takes extremely clear videos (in AVCHD format, which Windows 7 can process natively without any third party drivers or codec headaches) and most importantly, uses internal memory so I can transfer files directly to a computer. Since my other machines at home are servers running Windows 2008 R2, I always connected the camera to the laptop. This worked great with XP32, and somewhat surprisingly, caused no issues with Windows 7.
The issue was with the Sony software that grabs the pictures from the camera, something called Picture Motion Browser. The original that came with the camera just…..didn’t……work. Turns out that version 3.3, first created for Vista 64, works just fine. Had to go through a one-or two-step upgrade that wasn’t a clear as it could have been (sorry I don’t have the links any more), but once that completed, the software just works.
All in all, these issues were a very small price to pay to have this on real hardware. Mike Brannan posted some observations from his recent testing on a two-year old MacBook Pro, and I’d echo his thoughts. This OS is well worth the upgrade and is frankly, where Windows should have already been a few years ago.
Posted in Voice of Reason | Post a Comment »
August 24th, 2009 by mren
I worked on .NetTiers Framework with some talented professionals for more than two years. We successfully used .NetTiers to generate Enterprise Entity as a LOB resource to support ERP applications. The Database can be as large as over 200 tables, with very complicate Data Model and relationships.
Here are some very helpful information about .NetTiers:
http://nettiers.com/default.aspx?AspxAutoDetectCookieSupport=1
http://community.codesmithtools.com/gallery/p/8610.aspx
From the .NetTiers web site, it introduces itself as:
.NetTiers is a set of open source code generation templates that simplify the tasks of creating customized Application Tiers for your Microsoft.Net applications in just a few minutes. CodeSmith and .NetTiers generated architecture is custom to your domain, uses familiar patterns, and follows the guidance of Microsoft’s recommended patterns and practices. In fact, the .NetTiers base architecture is built upon the Microsoft Enterprise Library Application Blocks. Oh right, .NetTiers is FREE!
.NetTiers utilizes the power of the best code generation tool available today - CodeSmith to generate C# codes to build up a full version of Enterprise level entity. It is one of the best open sourced enterprise level entity framework. However, in the real world, professionals did encounter some technical difficulties to bring it up running for real products. With no official tech supports, you have to be brave and ready for some really tough challenges. Here are some of my notes for some important .NetTiers features and technical challenges when using .NetTiers open source templates.
1. Creates a full set of administration web controls, which serve as a basic yet fully functional web administration console for database. We did not use this feature because it was not available since we started. But this is a very useful feature which provides an admin tool to maintain the database, with very little development efforts.
2. Easy to upgrade/update from Database version upgrade. The entity classes have partial classes and concrete classes generated and each entity is derived from its base class. it isolates the entity properties with the real CRUD action (called service functions), which might have some Business logic coded by programmer based on the business application needs. When upgrading the database, only the entity property is regenerated, but business logic still stay as it was, which is really beautiful.
3. It automatically creates ASP.NET web service for distributed programming. This feature only needs some work if trying insert/update methods to pass entity as a parameter via web service, however, the proxy is generated automatically crossing Servers/Clients.
4. Configuration is tricky but very flexible. Remember, it follows Microsoft best practice. Since it is fully integrated with Enterprise Library Application Blocks architecture, it has own plug-in, we configured the application directly from the entlib configuration console. With building a file path link from web.cofig file to the entlib.config file, and hosting the Entlib assemblies in the Bin folder, the whole application blocks are plugged into the ERP web apps. It is working in .Net environment, and, the Sharepoint environment.
5. A very impressive feature is that the code is fully nDoc commented (it is used for Description extended properties of the data table and column) and follows the Microsoft naming convention. It can automatically generate a standard MS Guide Doc for the entire entity library with no coding!! Amazing!
6. It automatically generates a full set of nUnit tests. This is really nice, which saves tons of time for testing.
7. The whole design is based on Microsoft Enterprise Library Application Blocks, which is very nice architected and follows the Microsoft best practice. However, we still added our own tracer tools to keep tracing codes at different entity layers. A downside is that the .NetTiers is trying to catch up each new .Net version and new Enterprise Library Application Blocks version, it is hard to keep maintain an up-to-date .NetTiers template version in the real production environment. Our solution is to make sure a major release is stable, then added some customized templates and fixed some code bugs to support a major version with in a .Net 2.0 framework.
8. A challenge we encountered: .NetTiers implemented its own transaction architecture based on .Net Transaction, which is different from SQL Transaction, so it is hard to recode on the template level to control transaction for some uncommitted case. for example: when an undergoing save action is not successful for a main entity when the associated actions failed. UI level is using .NET transaction while entity level is using .NetTiers transaction controls. The solution we had is to use the strong type advantage to handle the case, using business logic code to uncommitted/recover data within .NetTiers Transaction Controls.
9. Advanced Entity Validation Rule Engine, which can use any of the pre-created or delegation for any custom rules. And we used this engine to collect validation errors and display them on the UI side by transferring it to the exception/error/warning handlers.
10. Creates a full website project, already pre-configured and ready to begin coding against your data immediately. Because we are build our own web controls pool and highly customized data panels using our own meta data, we did not directly use this feature. But it saves hundreds of hours’ development time for a quick enterprise level web application solution by using this feature.
11. Advanced C# programming: because it is a template, you need to play with some advanced C# code generation techs/methods such as generic type, reflection coding, Dynamic Invocation with Interfaces, etc…
Finally, always remember: this is an open source tool, and the templates are just C# codes. As an advanced .NET developer, in theory, you can control everything.
Posted in Voice of Reason | Post a Comment »
August 6th, 2009 by dsouk
This has to be a personal record….as of today, August 6, 2009, at 4:28PM, CDT - less than five hours after Microsoft’s release - I have a fully operational VMWare virtual machine running Windows 7 Enterprise (32 bit). Cool stuff. I haven’t been this excited about an OS release for years. We’ll see over the next several months if it is warranted.
Installation was smooth, although VMWare thought that Windows 7 was Vista. The only glitch was that the license key provided by MSDN didn’t work in VMWare’s Easy Install process. That was relatively easy to work around; just open up the autoisnt.ftp virtual floppy file in notepad, find the section that looks like a bunch of old *.ini file entries, locate the product key and replace it with an empty string. I restarted the VM and was greated by the installer UI, then only had to answer a few simple diaglogs during the process.
VMWare’s VMTools installed fine, after manually invoking it from the virtual CD within Windows 7.
I’ll have to see what happens when it comes time to activate it; whether the MSDN key is really invalid or if something about the Easy Install didn’t agree with Windows 7.
Next up is installing the 64 bit edition on some real hardware. I’ll definitely do a clean install. I’m expecting issues with my mouse due to the lack of Bluetooth support, and possibly Pinnacle Studio 12. I’ll post results after I find some time to backup data and take the plunge.
Posted in Voice of Reason | 1 Comment »
July 21st, 2009 by hlukito
In one of our assignments, we needed to develop a solution to generate reports for a given set of dynamic criteria, and subsequently distribute the reports out via e-mail to the appropriate user group. To leverage the client’s existing skillset and infrastructure, we decided to proceed forward with Crystal Report for the reporting piece, and Exchange Server/MS Outlook for the e-mail delivery system.
The report generation and distribution process got triggered after the CSR’s have completed a set of data entry steps using a Windows form-based application developed in .NET, which was automatically deployed/pushed to the CSR’s machines. One additional constraint to our approach was the fact that the CSR’s machines don’t have Crystal Report DLL installed in it, and that the client management has decided not to include Crystal Report DLL as part of the application deployment. To get around this constraint, we decided to develop a web service that would serve the form’s request to generate and distribute the resulting report. This way, the form would only need to pass the reports parameter to the web service, which in turn would dynamically create and distribute the Crystal Report for the given set of parameter.
When we first attempted to develop the web service, we had thought of initially creating a temporary report file with a unique name by appending unique timestamp to the file’s name. The original plan was to associate the file to the Attachment class, and subsequently use MailMessage and SmtpClient classes to send out the e-mail. After the e-mail got sent out, the web service would then go back and delete the temporary report file.
We expected that the approach outlined above would work out just fine. In practice, however, it didn’t work very well as the web service was actually unable to clean-up (i.e., delete) the temporary report file. When the web service issued a file delete command, it received an error message indicating that the file was currently being used by another process. To get around this issue, we modified our web service to perform the following, instead:
- Create report document and populate it with the data contained in DataSet
- Create MemoryStream object to capture the report document
- Attach the MemoryStream object to a MailMessage object by utilizing .NET Attachment class
- Send the MailMessage object utilizing SmtpClient class
The following is sample code representation for the solution that we implemented in our web service (note: assume that m_DsCsfReport is a DataSet that has its content populated elsewhere):
string m_RptName = "";
// Load the Report Document
ReportDocument m_csfReport = new ReportDocument();
MemoryStream m_RptStream = new MemoryStream();
// E-mail
MailMessage m_EmailMsg = new MailMessage();
SmtpClient m_SmtpClient = new SmtpClient("EMAILXX");
try
{
m_csfReport.Load(@"C:\Inetpub\wwwroot\WebSecurityWS\csfReportFromDS.rpt");
//Set dataset for the report
m_csfReport.SetDataSource(m_DsCsfReport);
m_RptStream = (MemoryStream)m_csfReport.ExportToStream(ExportFormatType.WordForWindows);
m_EmailMsg.Subject = "E-mail w/ attachment";
m_EmailMsg.Body = "";
m_EmailMsg.To.Add("h.lukito@practicalsolutions.com");
m_EmailMsg.From = new MailAddress("h.lukito@practicalsolutions.com ");
m_RptName = "TestReport_" + inUserId.Trim().ToUpper() + "_" +
DateTime.Now.Hour.ToString().Trim() +
DateTime.Now.Minute.ToString().Trim() +
DateTime.Now.Second.ToString().Trim() +
".doc";
m_EmailMsg.Attachments.Add(new Attachment(m_RptStream, m_RptName, "application/msword"));
m_SmtpClient.Send(m_EmailMsg);
Posted in Voice of Reason | Post a Comment »
July 8th, 2009 by mcollier
For a software development project, much as it is in life, it is the little things that really make a big difference. These are the tasks that, for some reason, seem little at the time. As such, they get pushed to the back burner in favor of something else that at the time seems more important. Those leading the project will often say something like “that’s easy, we’ll get to it later” or “that’s not important because the customer doesn’t see it – we’ll get to it later”. In my opinion, this needs to stop. We need to realize that more often than not, whatever is being pushed off now will not get done (or at least done well) later.
I often see this attitude come up in two areas – unit tests and automated builds and/or deployments. With so many people preaching the good word on the benefits of unit testing and automation, it surprises me when people continue to not do it and push it off to “later” – only to find “later” never comes. Read the rest of this entry »
Posted in Voice of Reason | 1 Comment »
|