Great first name! Here goes some rambling... SOA will converge with Business Capability Modeling and Process Modeling built within the scope of business service portfolio management on top of evolving industry and corporate taxonomies through master data management initiatives which will be supported by more targeted technology solutions through "domain driven design" that evolve through the idea of domain-specific languages and the realization of integrated model driven architectures into the software development lifecycle. Software vendors and consulting firms will continue to push proprietary, end-to-end topologies of multiple products as "industry templates" that claim to support open standards. The reality of such solutions claiming support for standards will be that an open standard is selected and extended in an open way, boasting and marketing compatibility with the standard as well as how the solution helped to evolve the standard, but leaving the community with a branched standard that won't play well with others as the primary trunk of the standard continues to grow upward. Ultimately, middle-man software will sit between these products to translate communications and attempt to make enterprise SOA a reality. Everyone will quickly realize (if they haven't already) that enterprise SOA was never about exposing anything and everything across the enterprise in a common format, but completely about streamlining business capabilities/processes across technology solutions to the degree that the supporting technology infrastructure does not "matter", so long as Information Technology exposes the services in a common way (i.e. not necessarily an explicit and exact way, but along a least common denominator). Adaptive industry and business models, evolving technology standards, and the need to sell software as a service will ultimately make "Service Oriented Architecture" a fad of our generation until a new name brings the same light-bulb, "aha" moment of clarity to a new generation and a new maturity of understanding is achieved. Wow do I need a brain break...
I've been new to Twitter and have only just begun to enjoy their overly simplified method of communication. Jurgen Appelo recently posted a blog entry titled "Top 50 Twitterers to Follow for Developers", ranking each popular developer based on their number of Twitter "Followers".
I updated Jurgen's ranking to include the number of twitter posts per day using the scores from the popular Twitter tool "Follow Cost". I then took a simple average of the three rankings Follower Rank, Twitters per Day Rank, and Last 100 Twitters per Day Rank and then created a final ranking. Fortunate for Jurgen's position (bumped him up a few rankings).
Hear me out: I don't want to install licensed, basic configurations in virtual environments any longer! Think of the productivity gains in a world where... The MSDN premium subscriber downloads one of 10 (20? 50?) ready-to-go virtual images, configured by the pros themselves! Download your image in Hyper-V or VirtualPC format and GO! Trial license keys are used and can be upgraded to valid keys at any time. (Extra benefit that multiple trial configurations are now available.) Example: With the most recent release, I... 1) downloaded 2008 server, 2007 SharePoint, SQL 2008, TFS 2008, 2007 Office, 2007 Visio, 2007 Project, 2008 Visual Studio, and Expression Studio v2. 2) I then boot up a Virtual PC VHD and install and configure Server 2008. 3) Install all patches. 4) backup and compress the image. 5) Install/config SQL 2008 and SharePoint 2007 and repeat steps #3-4. 6) Install/config TFS 2008 and repeat steps #3-4 (because TFS config is painful). 7) Install/activate/config Office, VS2008, Expression Studio and steps #3-4. Now, I can do whatever I want for a while and always fall back to a virtual. I want to try out PerformancePoint? Back to image in step #5. I want to try out just Search 2008 standalone? Back to step #4. ONE ACTIVELY PATCHED Operating System Virtual Image WOULD BE A HUGE TIME SAVER! PLEASE?! *By the pros? :)
Just compare the system requirements of Microsoft's Silverlight with Adobe's Flash (Macromedia). Now, Flash has traveled the world and taken in all the sites for years and years. But, you'd think with the importance of playing in this space that Microsoft would compete a little harder... Oh wait... you all are still excited about Silverlight no matter what reality dictates. That's right... Let me know how it goes. I'll stick with the basics for a little while longer. (Don't get me wrong, I get just as excited as you do about Silverlight and an embedded light-weight .NET environment, but I don't let emotions control my actions.) Oh, and let me know how well Microsoft acquired Yahoo! and how they competed in the ad space while you're whistling Silverlight tunes. :) For all their efforts, I continue to applaud the developers at Microsoft. I'm certain you've done better than I could have. BTW: I'm loving what I've seen of WCF so far!
Announcing the Web 2.0 YUI AJAX-enabled, Adobe RIA driven mashup with Silverlight 2.0 WPF XAML tutorials for social, community tagging and clipping supported by a LINQ backend running on top of Astoria from a geospatial aware SQL 2008 and communicating with JSON! All of this using scalable SOA built in the Cloud via REST APIs managed by an ESB and Grid Computing! You won't even recognize this Ruby Gem! :)
In ASP.NET, the Response.OutputStream is write-only. As a result, if you attempt to read the length of the response output at any point in stage in the page events, you get the "NotSupportedException". Taking a page from the book of guys who wrote compression filters that compress the response output on-the-fly, I discovered that I could access the length of the response as it is written...
Basically, I wrote a custom class that inherits "Stream" and overrides all of the appropriate stream's methods/properties. The default constructor accepts a Stream object and stores it in a private variable, so the overridden methods/properties all expose the underlying stream's methods/properties. Example: override public bool CanRead { get { return this._stream.CanRead; } }. I declared a "private long _length = 0;" variable and set the value in my stream's "SetLength" method and update it in the "Write" method using the "count" parameter, ensuring the length always reflects the data length. In the "Close" method, I use "base.Close();" and then I can do whatever I want with my private "_length" variable, which contains the length of the response's output stream.
Once I had the class above, I used the following code in the page's "OnLoad" event:
this.Response.Filter = new ObserveResponseLengthStream(this.Response.Filter);
Per Jorge Pereyra's request, here is the code for "write, setLength, flush and seek":
class ObserveResponseLengthStream : Stream
{
private Stream _stream = null;
private long _length = 0;
public ObserveResponseLengthStream(Guid urlKey,
Stream stream)
{
this._stream = stream;
}
public override long Seek(long offset,
SeekOrigin origin)
{
return this._stream.Seek(offset, origin);
}
public override void Flush()
{
this._stream.Flush();
}
public override void SetLength(long value)
{
this._stream.SetLength(value);
this._length = value;
}
public override void Write(byte[] buffer,
int offset,
int count)
{
this._stream.Write(buffer, offset, count);
this._length += (long)count;
}
public override void Close()
{
try
{
this._stream.Close();
}
catch { }
base.Close();
try
{
/*now you know the actual length
of the response in this._length,
so do whatever you want with it*/
}
catch (Exception ex)
{
//make sure your exceptions are handled!
}
}
/*...all the other code simply exposes the
_stream's properties and methods...*/
}
I recently received a new laptop that needed a new operating system and developer software. I've setup machines countless times, so I might as well make a list that others can learn from...
I had some difficulty using the YUI library while controlling vertical positioning. Specifically, how to position header text at the bottom of a 3-column grid containing images. Find out what I did...
You have probably heard the phrase "keep your comments to yourself" before. When I first learned about C# XML comments, I quickly adopted it as a standard for much of my code (even non-.NET). This was further enforced when NDoc was released to compile my comments into pages and pages of pretty web pages or a Microsoft compiled help file. Yes, I saw the future and used the tags as a personal standard in everything I did... NDoc changed my world of code documentation to something like "write your comments down and publicize them to everyone that may ever benefit from your unique insight." (everyone you trust and have approval to share the info with of course) [Thank sue-happy America and lawyers for that one...]
Somewhere along the way, I stopped using the XML comments for anything other than exposed properties and methods. I kept commenting the private stuff, but I used standard comment syntax without the XML mark-up. I guess my brain subconsciously determined that if NDoc didn't care about them, why should I? I mean, developers are only going to be dealing with the protected and public pieces that my code provides, right?
WRONG! Two words... code maintenance. If I have to interface with your class, it's awesome to simply scan an up-to-date NDoc-generated help file. But, what if I have to edit a class you originally wrote? Especially when you're not around... Yes, I could browse to the code in question and read your standard comments. But, how great would it be to be looking at something that calls a private method in your class and see a summary when you put your mouse over the method or property in question? I simply overlooked this benefit for a couple of years. Intellisense and tooltips in Visual Studio ALWAYS use the XML code comments to provide a summary when they are available. Yes, the person could use shortcuts to skip right to a method and back again. But, why not just document everything using the same approach? Inline comments within a routine are the exception. The person has to be there, looking at the code, so the comments can simply sit there as-is.
So, remember to share your code comments and don't just keep them to yourself.
A celebrity's dwindling career can often be saved, if only for a moment, through the quote "bad publicity is still publicity." Well, I signed up for ISSurvivor.com's newsletter and was thoroughly disappointed. First of all, the newsletter I got is right there on the home page. Yup, redundancy in the name of convenience with the added benefit of a new contact and a saved e-mail address. I was so sorely bummed by the lack of "real" content that I felt the need to reply to the author...
I recently finished an article that introduced "Nordic", a SQL Server implementation of an object/relational database design in The Architecture Journal written by Paul Nielsen. I have only begun to review the implementation schema and Paul's Nordic presentation. Although his approach is exciting, I have some important questions, concerns, etc. while I attempt to apply what I've learned.
I've discussed surrogate keys with peers for years now and I am happy to have a single, thorough resource that investigates the various methods of surrogate primary key generation.
Many of these technologies have been out for a while, but I thought that I would officially acknowledge them:
I recently listened to a podcast interview (php|architect) with Mike Potter, an Adobe employee, about the release of FLEX 2.0 for Adobe Flash (formerly Macromedia). FLEX is a framework for building rich internet applications (RIAs) using Flash. The most fantastic element of this interview was that, for the first time in Flash's history, Adobe has released a free SDK for the FLEX framework! This is a tremendous, positive step forward from Adobe with the developer community and I can't wait to try out the technology once I get my new server up and running...
IN MY OPINION (and only mine until I hear otherwise)...
I am simply enraged at the speed of these major releases. I mean, it was always a challenge for big business to move at a speed necessary to outpace their competition, especially the new, little, creative challengers. But, Microsoft's "moving and shaking" lately has been causing earthquakes in my world and having to learn and re-learn 3 major releases in the 5-year span (my real experience from actual corporate adoption of these technologies) is greuling. I appreciate the raises and promotions I'm getting for staying ahead of the curve on all these things, but jeezus! The major versions 2 and 3 are back-to-back here (more marketing than anything, but what are they trying to prove with a big "3"?)
*Note: I have great respect for both the .NET technology advances and the developers making it happen, but pushing the envelope may end up giving customers the impression of a pushy salesman with his foot in the door selling overpriced .NET vacuum cleaners when a good, ol' fashioned PHP vacuum will get the job done for a fraction of the cost (recognizing the you might have a little more basic maintenance and repair). Yes, I've read all about the cost estimates of project maintenance vs. project design and development and I still question the pace we're running at. Sometimes il' stupendo gets a little too full of himself and the understudy has his day.
**I also realize that the 3.0 version doesn't "seem" to have many fundamental changes to the core. But, I'll judge that when I read the books on it. In the beginning, they marketed 2.0 the same way and look at THOSE changes! We can't believe the advertising... I HAVE read a little about WinFX and WCF and they are BIG. Exciting, but intimidating, especially for those programmers who have barely felt the temperature of the .NET rapids with their toes.
After everything is said and done, MS is still paying my bills, so I'll keep wearing my .NET badge on top of my italian suit and keep a fresh PHP badge in my blue jeans pocket.
I have always worked under the rule of thumb that table names should be singular. The debates between singular or plural table names continues without end... Recently, I have challenged my own assumptions and come to a new conclusion, which should satisfy all parties. Perhaps today will be the day when the debate stops.
I have to admit that I take a great deal of pride in programming using only a text editor. Efficiently pounding out thousands of lines of code without the help of an IDE and things like drag-and-drop, intellisense, etc. shows an intimate mastery of the language. However, the drawbacks are great when compared to others who are efficient in an IDE. So, why would you choose a text editor over a robust tool like Visual Studio? The answer used to be simple... control. You see, the visual designers for Visual Studio USED to be like FrontPage and everything you manipulated by hand was almost guaranteed to be jumbled up by the designer. I hate when programs change my source code the way I wrote it!!! There's nothing more annoying than having your spacing and indentations messed up and seeing seemingly randomly inserted code within your work. It's almost like trying to paint a fast car while others keep running around with different colors of touch-up making marks. However, the 2005 version of Visual Studio has taken great strides and I am finally able to "trust" the program not to mess with my code. The "bloat" of a large IDE is still annoying at times when you simply want to make a quick edit, so I'll keep my trusty TextPad handy just in case.
I just realized that all of my posts as of late have simply been about me or random things, but NONE of them help anyone really... So, I'll attempt to write some little software utilities and maybe I'll upgrade or simply re-write AndNBSP.com.
Development is such a great word... and to be a software developer is such a great title... I have found myself very involved with my local development community, discussing high-level security theory with some of the best down to nitty-gritty, hold-your-hand details with newbies that haven't figured out how to visit a search engine and reading a little before sending an e-mail to a few thousand people. Here are some recent posts... or view my AZGroups.com profile here.
I just remembered a conversation that I had years ago with my boss... "Why don't companies provide the software developers with some shared responsibility in the product they develop? Depending on the projected success of the product, why not replace stock options, bonuses, and even future raises with the option to have a share in the product itself? For example, Joe was reponsible for nearly 60% of the functionality of the end-product, so, since we allocated 10% of the profits to our development team, Joe gets 6% of every profit dollar once expenses for the product. So, for every $100 in profit, Joe gets paid $6! He has an investment to keep that product selling!" The developer has a direct interest in the product's success as does the company — unifying coporate objectives.
Until each individual has effectively learned and adopted best security practices for the task they are performing and can be reasonably assured that all others involved in the task have also done the same, there will never be an effective means of security. The very fact that personal security can never be fully guarded against the concerted efforts of determined individuals is an indicator that effective counter-measures and the risks involved must be 1) reasonable and 2) acceptable. One can never fully trust their own security, including the security placed upon them. This includes all forms of security; physical, mental, informational, communicational, etc.
Folks, when developing automated, computer solutions, security hasn't changed much. Although the concept has been around for a while, AJAX is considered on the edge right now and people are about to expose their applications to even more vulnerabilities. Why? In the development rush, less-experienced programmers will forget to always validate requests to the web server ON the web server and will start moving validation on to the client, thinking that it will provide a better user experience. It will, but you have to duplicate your efforts on the server too as a back-up for hacks around your client-side solutions. My recent post to the Open Web Application Security Project outlines my concerns...
Recently I've been actively involved in many discussions on the internet about Microsoft's release of .NET 2.0 and the impact both the upgrade as well as the original transition to .NET has had on development...
I should be used to fad crazes on the internet by now, but I simply can't seem to get over this web programming term "mashup". I already have to deal with REST, "Web 2.0" and all of the wonderful acronyms that come along with technology and American industry. It will never end... But why (ohhhh why) "Mashup"?! I don't want to be known as a "mashup" programmer. I want nothing to do with the term. I guess beggers can't be choosers. World Wide Web, Hyperlink, Website, Portal, Wiki, Blog, ... "Mashup". | ![]() |