During my recent Borders’s-browsing, I came across Richard Monson-Haefel’s book, 97 Things Every Software Architect Should Know with the tag line, “Collective Wisdom from the Experts”. The book is interesting and even though it falls short in providing details, gives a good overview of architectural principles. Mind you, this is not a book with case studies or principles of how to define an effective interface with example but more of a 10K ft view of software architectural “principles”. Recently I have seen few books which belong to this genre of collective wisdom aka geek interviews such as “Secrets of the Rock Star Programmers: Riding the IT Crest” and “Coders at work”. I think 97 things is a good addition to this observe-and-report tradition from people presumably working in the trenches of software development.
Following is the table of contents and I have highlighted the chapters/metaphors I liked.
1. Don't Put Your Resume Ahead of the Requirements
2. Simplify Essential Complexity; Diminish Accidental Complexity
3. Chances Are, Your Biggest Problem Isn't Technical
4. Communication Is King; Clarity and Leadership, Its Humble Servants
5. Application Architecture Determines Application Performance
6. Seek the Value in Requested Capabilities
7. Stand Up!
8. Everything Will Ultimately Fail
9. You're Negotiating More Often Than You Think
10. Quantify
11. One Line of Working Code Is Worth 500 of Specification
12. There Is No One-Size-Fits-All Solution
13. It's Never Too Early to Think About Performance
14. Architecting Is About Balancing
15. Commit-and-Run Is a Crime
16. There Can Be More Than One
17. Business Drives
18. Simplicity Before Generality, Use Before Reuse
19. Architects Must Be Hands On
20. Continuously Integrate
21. Avoid Scheduling Failures
22. Architectural Tradeoffs
23. Database As a Fortress
24. Use Uncertainty As a Driver
25. Warning: Problems in Mirror May Be Larger Than They Appear
26. Reuse Is About People and Education, Not Just Architecture
27. There Is No 'I' in Architecture
28. Get the 1,000-Foot View
29. Try Before Choosing
30. Understand the Business Domain
31. Programming Is an Act of Design
32. Give Developers Autonomy
33. Time Changes Everything
34. "Software Architect" Has Only Lowercase a's; Deal with It
35. Scope Is the Enemy of Success
36. Value Stewardship Over Showmanship
37. Software Architecture Has Ethical Consequences
38. Skyscrapers Aren't Scalable
39. Heterogeneity Wins
40. It's All About Performance
41. Engineer in the White Spaces
42. Talk the Talk
43. Context Is King
44. Dwarves, Elves, Wizards, and Kings
45. Learn from Architects of Buildings
46. Fight Repetition
47. Welcome to the Real World
48. Don't Control, but Observe
49. Janus the Architect
50. Architects' Focus Is on the Boundaries and Interfaces
51. Empower Developers
52. Record Your Rationale
53. Challenge Assumptions—Especially Your Own
54. Share Your Knowledge and Experiences
55. Pattern Pathology
56. Don't Stretch the Architecture Metaphors
57. Focus on Application Support and Maintenance
58. Prepare to Pick Two
59. Prefer Principles, Axioms, and Analogies to Opinion and Taste
60. Start with a Walking Skeleton
61. It Is All About The Data
62. Make Sure the Simple Stuff Is Simple
63. Before Anything, an Architect Is a Developer
64. The ROI Variable
65. Your System Is Legacy; Design for It
66. If There Is Only One Solution, Get a Second Opinion
67. Understand the Impact of Change
68. You Have to Understand Hardware, Too
69. Shortcuts Now Are Paid Back with Interest Later
70. "Perfect" Is the Enemy of "Good Enough"
71. Avoid "Good Ideas"
72. Great Content Creates Great Systems
73. The Business Versus the Angry Architect
74. Stretch Key Dimensions to See What Breaks
75. If You Design It, You Should Be Able to Code It
76. A Rose by Any Other Name Will End Up As a Cabbage
77. Stable Problems Get High-Quality Solutions
78. It Takes Diligence
79. Take Responsibility for Your Decisions
80. Don't Be Clever
81. Choose Your Weapons Carefully, Relinquish Them Reluctantly
82. Your Customer Is Not Your Customer
83. It Will Never Look Like That
84. Choose Frameworks That Play Well with Others
85. Make a Strong Business Case
86. Control the Data, Not Just the Code
87. Pay Down Your Technical Debt
88. Don't Be a Problem Solver
89. Build Systems to Be Zuhanden
90. Find and Retain Passionate Problem Solvers
91. Software Doesn't Really Exist
92. Learn a New Language
93. You Can't Future-Proof Solutions
94. The User Acceptance Problem
95. The Importance of Consommé
96. For the End User, the Interface Is the System
97. Great Software Is Not Built, It Is Grown
Slides SQL Azure Presentation.pptx and code sample Connectivity.rar
Along with slides and code samples, I demonstrated the connectivity from SSMS (workaround for connecting with SQL Server Management Studio), discussed SQL Azure Pricing and SQL Azure SLA (Service Level Agreement) for which “Monthly Availability” of 99.9% with a 9.99 fee, is pretty awesome.
Feedback from Attendees (in the order of strong opinions)
· Connectivity with SSMS needs to be fixed ASAP to avoid the workarounds
· 10GB is too small and makes the v1 not enterprise ready.
· Error log un-availability in V1 could be a deal breaker for some DBA’s.
· SQL Agent Support is an absolute must have from a DR and on-premise replica standpoint.
· Programmatic way of finding the size of database
· Linked Server Support is really important.
· CLR Support is needed for a lot of practical purposes.
· SQL Profiler support should be there.
The slides, code samples and links from the talk are as follows.
· SQL Azure, Let’s get started - Lynn Langit
· SQL Azure Migration Wizard v1.9
· SQL Azure Explorer on Channel 9
· David Yack on Starting with SQL Azure
· geekSpeak: REST and the Windows Azure Services Platform with Adnan Masood
· Getting Started with SQL Azure | David Gristwood | Channel 9
· Hands on with SQL Azure (CTP 2) | David Gristwood | Channel 9
· Billing system testing behind Microsoft's SQL Azure outage this week
· Amazon Attempts to Preempt PDC 2009 Release of SQL Azure with MySQL 5.1 Relational Database Service
· SQL Data Services Abandons REST for TDS API and Knocks My Socks Off
· Frequently asked Questions about SQL Azure
· Stephen Forte`s Blog - Building a RESTful application with SQL Azure
· Project Rivera, Windows Azure Code samples
If I had a dollar for every time someone asked me this question, I would have enough money to buy Trevor Hastie's The Elements of Statistical Learning Second Edition :). Anyways, here is a good explanation from Algorithm's of the intelligent web on what is so naïve about naïve Bayesian?
"This is the calculation of the conditional probabilities p(Y|X). The term naïve has its origin in this method. Note that we’re seeking the probability of occurrence for a particular instance, given a particular concept. But each instance is uniquely determined by the unique values of its attributes. The conditional probability of the instance is, in essence, the joint probability of all the attribute value conditional probabilities. Each attribute value conditional probability is given by the term (aV.getCount()/concept-Priors.get(c)). In the preceding implementation, it’s assumed that all these attribute values are statistically independent, so the joint probability is simply the product of the individual probabilities for each attribute value. That’s the “naïve” part. In general, without the statistical independence of the attributes, the joint probability wouldn’t be equal to that product."
And the interesting part is
"We use quotes around the word naïve because it turns out that the naïve Bayes algorithm is very robust and widely applicable, even in problems where the attribute independence assumption is clearly violated. In fact, it can be shown that the naïve Bayes algorithm is optimal in the exact opposite case—when there’s a completely deterministic dependency among the attributes"
BTW, Algorithm's of the intelligent web is this excellent book by Haralambos Marmanis and Babenko Dmitry; recommended reading.
Web Application Testing using WATIN
Thursday, October 8th, 2009 at 6:30 PM
Jeff of course disagreed and pointed out the Christian’s Weyer’s article on flattening. For my excellent logging and tracing in WCF argument, he stated that “for asmx, you can add the [SoapLoggerExtensionAttribute] to get some kind of logging of soap requests”. Therefore I am quoting his argument below; I am still somewhat unconvinced 'in principle' but pragmatically speaking, he drives a hard bargain!
I prefer convention
over configuration and simplicity of code instead of injection as a general
principle.
My preference would to be to use WCF in situations where you have more control over the client (internal uses mainly) and want to support different communication channels. At the end of the day when dealing with partners, Interoperability is the biggest challenge and making things as simple to consume as possible is desirable.”
Have you encountered an interop issue with your WCF service and what has been your approach? Leave a comment or email me.
Call for volunteers: Seeking volunteers for the code camp support team to help register speakers, attendees, & help with general organization on the up coming SoCal Code Code Camp LA event days (Saturday/Sunday Nov 21/22).
James Lin and I are heading up Volunteer Coordination effort so if you are available please contact us directly via my email (my full name @ gmail.com or james at chasecom dot com and put volunteer in subject line). You can also sign up via the "Contacts" menu of www.socalcodecamp.com.
Thanks!
Adnan Masood
Volunteer Coordinator
SoCal.NET Code Camp
www.SoCalCodeCamp.com
President & Co-Founder
San Gabriel Valley .NET Developers Group
www.SGVdotNet.org
The Large Hadron Collider was created to help unlock the secrets of the universe. And also to create a working SOA implementation. (SOAFacts.com)
In a recent all-things-technology dinner conversation with a friend and developer extraordinaire Rashid, we talked about his recent purchase, Thomas Erl’s Service-oriented architecture: concepts, technology, and design. During this discussion he rightfully pointed out how virtually any and every distributed system is being dubbed “service oriented” raising a great point that since a lot has been said about “what SOA is?”, we should now talk about “what SOA is NOT” since this might be a able to clear things up as compared to, if it walks like SOA and talks like SOA... Hence I figured a typical non-SOA conversation may go as follows.
RealWorldPHB: “Do we have service oriented architecture? I have been hearing good things about it lately and the new partners really prefer it. Let’s go and buy one SOA or do they come in bulk?”
PerpetuallyPleasingIncompetentArchitect: “Of course we do have SOA sir, we are using web services for a long time, ahead of the curve!”
RWPHB: “Great; so we promote reuse, share contracts and schemas, do all those good things?”
PPIA: “No no, that’s too much work. Instead we share the dll’s and email it to our partners as soon as we sign the contract so they can build according to the specs. You gotta have specs for SOA”
RWPHB: “Even better; who cares about interop, right? If they have their SOA in order, they should be able to talk to us!”
PPIA: “Yessir!, you are right. We are loyal to our platform and we try to enforce uniformity, its better this way. Also our services share one database to ensure concurrency and integrity; someone called it violation of autonomous service principle and a bottleneck but we got rid of him!. We also bought that expensive SOA hardware solution and matching software suite to make sure our SOA works fine”.
RWPHB: “Glad you got rid of darn naysayer, these people upset me!. Anyways, so when we release the API update next month, how is going to work in SOA?”
PPIA: “Well, we want everyone to strictly follow our standards so we made sure our SOA does not allow any versioning. All 2000+ partners will be informed on deployment night to update their interfaces or they won’t be able to use our services. Now this is iron SOA as in iron fist!. I should patent this term.”
RWPHB: “Not sure what that means but it sounds good! I am going to tell board of directors we have SOA, woot!”
Now I should mention as a disclaimer that above mentioned conversation is a poor satirical attempt on my part on general state of SOA. Any similarity to actual persons or SOA’s, living or dead is purely coincidental. And that if you hear any such conversations in the corridors of power, hide! (No not really, educate please).
To make sure that you don’t have one of these conversations, let’s design with SOA tenants in mind. If this sounds too fancy, a simple breakdown of what is NOT SOA would be as follows.
There you go! This sums up all the things which would make your SOA design, a non-SOA design.
Ok, may be just adding a negation operator is not the best approach, let’s go with catch phrase methodology.
You might be a non-SOA if
Yeah, I agree the last one is probably just plain bad design.
and as if this has not been fun enough, let’s end with a knock-knock joke courtesy of SOAFacts.
Knock, knock
Who's there?
SOA
SOA who?
You're fired.
References
Following is the list of WCF out-of-the-box bindings, brief information about them (from MSDN) and the link which points to further details. I have ordered them according to the frequency of use in my opinion, YMMV.
BasicHTTPBinding
Represents a binding that a Windows Communication Foundation (WCF) service can use to configure and expose endpoints that are able to communicate with ASMX-based Web services and clients and other services that conform to the WS-I Basic Profile 1.1. The BasicHttpBinding uses HTTP as the transport for sending SOAP 1.1 messages. A service can use this binding to expose endpoints that conform to WS-I BP 1.1, such as those that ASMX clients consume. Similarly, a client can use the BasicHttpBinding to communicate with services exposing endpoints that conform to WS-I BP 1.1, such as ASMX Web services or services configured with the BasicHttpBinding. Security is turned off by default, but can be added setting the mode attribute of the <security> of <basicHttpBinding> child element to a value other than None. It uses a "Text" message encoding and UTF-8 text encoding by default.
webHTTPBinding
A binding used to configure endpoints for Windows Communication Foundation (WCF) Web services that are exposed through HTTP requests instead of SOAP messages.The WCF Web Programming Model allows developers to expose WCF Web services through HTTP requests that use "plain old XML" (POX) style messaging instead of SOAP-based messaging. For clients to communicate with a service using HTTP requests, an endpoint of the service must be configured with the WebHttpBinding that has the WebHttpBehavior attached to it. The WCF Web Programming Model also requires that the individual service operations are annotated with the WebGetAttribute or WebInvokeAttribute attributes. This defines a mapping from a URI and HTTP method to the service operation, as well as the format of the messages used to call the operation and return the results. Support in WCF for syndication and ASP.AJAX integration are both built on top of the WCF Web Programming Model.
wsHttpBinding
Represents an interoperable binding that supports distributed transactions and secure, reliable sessions. The WSHttpBinding is similar to the BasicHttpBinding but provides more Web service features. It uses the HTTP transport and provides message security, as does BasicHttpBinding, but it also provides transactions, reliable messaging, and WS-Addressing, either enabled by default or available through a single control setting.
netTCPBinding
A secure, reliable binding suitable for cross-machine communication. The NetTcpBinding generates a run-time communication stack by default, which uses transport security, TCP for message delivery, and a binary message encoding. This binding is an appropriate Windows Communication Foundation (WCF) system-provided choice for communicating over an Intranet.
BasicHTTPContextBinding
Enables context for the BasicHttpBinding to be exchanged with HTTP cookies as the context exchange mechanism. The BasicHttpContextBinding adds a ContextBindingElement to the stack of BindingElement objects in the system-provided BasicHttpBinding. This enables SOAP headers to be used to exchange context.
NetMsmqBinding
Represents a queued binding that is suitable for cross-machine communication.
The NetMsmqBinding binding provides support for queuing by leveraging Microsoft Message Queuing (MSMQ) as a transport and enables support for loosely coupled applications, failure isolation, load leveling and disconnected operations.
wsDualHttpBinding
A secure and interoperable binding that is designed for use with duplex service contracts that allows both services and clients to send and receive messages.The WSDualHttpBinding provides the same support for Web Service protocols as the WSHttpBinding, but for use with duplex contracts. WSDualHttpBinding only supports SOAP security and requires reliable messaging. This binding requires that the client has a public URI that provides a callback endpoint for the service. This is provided by the ClientBaseAddress. A dual binding exposes the IP address of the client to the service. The client should use security to ensure that it only connects to services it trusts.
netPeerTCPBinding
Provides a secure binding for peer-to-peer network applications.The NetPeerTcpBinding binding provides support for the creation of peer networking applications that use a TCP-level peer-to-peer mesh infrastructure.
netNamedPipeBinding
Provides a secure and reliable binding that is optimized for on-machine communication.
The NetNamedPipeBinding generates a run-time communication stack by default, which uses transport security, named pipes for message delivery, and a binary message encoding. This binding is an appropriate Windows Communication Foundation (WCF) system-provided choice for on-machine communication. It also supports transactions.
MSMQIntegrationBinding
The MsmqIntegrationBinding class maps Microsoft Message Queuing (MSMQ) messages to Windows Communication Foundation (WCF) messages.
netTCPContextBinding
Provides a context-enabled binding for the NetTcpBinding. The NetTcpContextBinding adds a ContextBindingElement to the stack of BindingElement objects in the system-provided NetTcpBinding. This enables SOAP headers to be used to exchange context.
ws2007HttpBinding
Represents an interoperable binding that derives from WSHttpBinding and provides support for the updated versions of the Security, ReliableSession, and TransactionFlow binding elements. The WS2007HttpBinding class adds a system-provided binding similar to WSHttpBinding but uses the Organization for the Advancement of Structured Information Standards (OASIS) standard versions of the ReliableSession, Security, and TransactionFlow protocols. No changes to the object model or default settings are required when using this binding.
wsHttpContextBinding
The WSHttpContextBinding adds a ContextBindingElement to the stack of BindingElement objects in the system-provided WsHttpBinding. This enables SOAP headers to be used to exchange context when HTTP cookies are not enabled.
wsFederationHttpBinding
A secure and interoperable binding that supports federated security.
This is my tentative schedule for the PDC'08. Listing of all the sessions I want to attend however this requires human cloning and hence I might be watching streaming of the sessions I am unable to attend due to these scheduling conflicts.
|
KDD 2008 was a great learning experience, providing opportunities for life-long learning, career development, and professional networking. It helps very much in getting to know the data mining community, the current trends in knowledge discovery & machine learning areas and that all these prolific authors and researchers are actually humans, not robots like previously thought.
Social Networking was the dominating theme of the conference and research areas specified, no doubt about that. They key sessions were as follows.
One of my personal favorites was Foster Provost and Jennifer Neville's tutorial session on predictive modeling in social networks. Also, I got a chance to meet and talk to the the following luminaries of the genre.
And to see the following
However, I missed the chance of meeting Dr. Jaiwei Han. He had to leave early.
It was a well organized event with breaks. There are a few suggestions I have for improvement.
1. Provide a voting mechanism to allow people to choose their sessions of liking in advance; allocate the size of room according to the interest. This might not be perfect but will provide a good estimation. This is because some of the rooms were completely packed when people were sitting on the floor in the alleyway and some of them were half empty.
2. Full disclosure and reproducibility is important in academia and research. Some of the data used in the papers and presentations was unavailable for verification of the claims due to the proprietary nature of it, especially some of the vendor specific presentations (Yahoo, Microsoft and Orkut etc). There are very effective anonymization and privacy preserving techniques to allow the sharing.
3. Slides of the presentations should be made available to the attendees.
and next time, J'aime la vie en Paris!
15-minute presentations
Lunch was sponsored by Yahoo! and it was pretty cool décor with their gadgets, puzzles and YahooDokus. Later in the afternoon I attended
25-minute presentations
And then
I later got a chance to talk to Dr. Grossman about the cloud computing initiative that he is very passionate about. He discussed in his presentation how Sector is approximately twice as fast as Hadoop and how Sector has been used to distribute the Sloan Digital Sky Survey (SDSS) via the web site sdss.ncdm.uic.edu.
The day concluded with Poster reception where I get to talk to several authors and presenters including Wen-Yen Chen, Pooja Mittal, Yabo-Arber Xu, Kaustav Das of Anomaly Pattern Detection in Categorical Datasets and one of the authors of Information Extraction from Wikipedia, not sure who.
Day 4
The last day of conference started with Jitendra Malik’s invited talk on “The Future of Image Search”. (Greg Linden’s Blog Post about the talk). It was a great talk where Jitendra discussed the evolution of vision, image search, shortcomings of tagging and textual taxonomies and pushed for "category recognition" for objects in images.
Later there were the following excellent sessions.
The conference concluded with closing remarks from the general chair, Ying Li.
]]>Greetings Southern California .NET Community
I was wondering if any of you would be able to volunteer to help register speakers, attendees, & help with general organization, etc. on the Code Camp event days (Saturday/Sunday October 25/26).
I am heading up Volunteer Coordination so if you are available please contact me directly () and put volunteer in subject line) or sign up via the "Contacts" pull-down of www.socalcodecamp.com.
Thanks!
Adnan Masood
Volunteer Coordinator
SoCal.NET Code Camp
www.SoCalCodeCamp.com
President & Co-Founder
San Gabriel Valley .NET Developers Group
www.SGVdotNet.org
"In a statistical world faced with an explosion of data, regularization has become an important ingredient. In many problems, we have many more variables than observations, and the lasso penalty and its hybrids have become increasingly useful. This talk presents some effective algorithms based on coordinate descent for fitting large scale regularization paths for a variety of problems. Joint work with Rob Tibshirani and Jerome Friedman"
After the keynote talk, there were combined and research sessions. I attended one with social Networks which comprised of the following presentations.
25-minute presentations
15-minute presentations
During lunch which was sponsored by Microsoft adCenter labs, they talked about challenges in advertising and applying it to get the best out of revenue share and context base hits. They also announced adCenter labs challenge which I have yet to find any information about online.
Later in the afternoon, Microsoft Research’s Thore Graepel talked about Large Scale Data Analysis and Modeling in Online Services and Advertising. It was a very interesting and pragmatic presentation about the real world problems in online search and advertising. Even though the first part of presentation was online ranking and matchmaking heavy, the later discussion on advertising made up for it.
Then there were 25-minute presentations
And on a separate track,
15-minute presentations
Later after the automated cyclone discovery session, I got a chance to meet Dr. Talukder of Jet Propulsion Laboratory/NASA to talk about a mutual acquaintance, Dr. Homayoun Seraji
This concluded day 2 of the conference.
Also, keep an eye on geek speak blog for future updates. Overall. there is a lot of concern about security in REST. I’ll be doing a series of blog posts on security in REST in near future however in the mean time, following resources would be provide a good starting point.
Mark O'Neill's Radio Weblog
Message Level Security in REST
Taking Amazon S3 as a model for secure REST services can be one way to implement security in REST. As mentioned in this article by Eric Heuveneers
“Amazon S3 REST resources are secure. This is important not just for your own purposes, but also because customers are billed depending on how their S3 buckets and objects are used. An AWSSecretKey is assigned to each AWS customer, and this key is identified by an AWSAccessKeyID. The key must be kept secret and will be used to digitally sign REST requests. S3 security features are:
The signing algorithm is HMAC/SHA1 (Hashing for Message Authentication with SHA1).’
Reference: Introduction to Amazon S3 with Java and REST
Links to the books and reference articles mentioned in the webcast are as follows. Please feel free to send me your questions and comments on my email
Books
KDD 2008 Day 4
]]>ACM's KDD 2008 is the annual premier international forum for
data mining researchers and practitioners from academia, industry, and
government to share their ideas, research results and experiences. This year
this event was held in Loews Lake Las Vegas resort where Jeff Bergman and I
attended it. Details of the program can be found here http://www.kdd2008.com/program.html and the summary is as follows.
Full Day Workshop W1 - ADKDD'08
Full Day Workshop W2 - WEBKDD'08
Full Day Workshop W3 - Sensor-KDD
Full Day Workshop W4 - PinKDD'08
Full Day Workshop W5 - SNA-KDD
Full Day Workshop W13 - Multimedia Data Mining
9:00 am - 12:00 pm
Half Day Workshop W6 - KDD CUP and Mining Medical data
Half Day Workshop W7 - Multiple Information Sources
Half Day Workshop W11 - BIOKDD08
Half Day Workshop W12 - Mining for Business Applications
9:00 am - 12:00 pm
Tutorial - Mining Massive RFID, Trajectory, and Traffic Data Sets
Tutorial - Predictive Modeling with Social Networks
Tutorial - Mining Uncertain and Probabilistic Data: Problems, Challenges,
Methods, and Applications
Tutorial - Detecting Clusters in Moderate-to-High Dimensional Data: Subspace
Clustering, Pattern-based Clustering, and Correlation Clustering
2:00 pm - 5:30 pm Half Day Workshop
W8 - Large Scale Recommender Systems and NetFlix Prize
W10 - Mining using Matrices and Tensors
2:00 pm - 5:00 pm
Tutorial - Blogosphere: Research Issues, Applications, and Tools
Tutorial - Graph Mining and Graph Kernels
Tutorial - Applied Text Mining
6:15 pm - 6:45 pm : Award Presentations
6:45 pm - 7:30 pm : Innovation Award Talk
Day 1 was very informative and provided good learning experience. The program
included several full day workshops and tutorials listed below.
·
J. Han, J. Lee, H. Gonzalez, X. Li, "Mining
Massive RFID, Trajectory, and Traffic Data Sets"
Jiawei Han, Jae-Gil Lee, Hector Gonzalez, Xiaolei Li
Department of Computer Science, University of Illinois at Urbana-Champaign
·
J. Neville, F. Provost, "Predictive
Modeling with Social Networks"
Jennifer Neville, Purdue University
Foster Provost, New York University
·
J. Pei, M. Hua, Y. Tao, X. Lin, "Mining
Uncertain and Probabilistic Data: problems, Challenges, Methods, and
Applications"
Jian Pei, Simon Fraser University, Canada
Ming Hua, Simon Fraser University, Canada
Yufei Tao, The Chinese University of Hong Kong
Xuemin Lin, The University of New South Wales, Australia
·
H. Kriegel, P. Kroger, A. Zimek, "Detecting
Clusters in Moderate-to-High Dimensional Data: Subspace Clustering,
Pattern-based Clustering, and Correlation Clustering"
Hans-Peter Kriegel, Peer Kröger, and Arthur Zimek
Institute for Informatics, Ludwig-Maximilians-Universitat Munchen, Germany
·
H. Liu and N. Agarwal, "Blogosphere:
Research Issues, Applications, and Tools". Huan Liu, Arizona State
University, Nitin Agarwal, Arizona State University
R. Feldman, L. Ungar, "Applied Text Mining"
Social Networking being the prominent theme at the conference, I decided to get a head start by attending the half day tutorial on "Predictive Modeling in Social Networks" by Jennifer Neville and Foster Provost. The abstract from the tutorial is as follows.
Recently there has been a surge of interest in methods for analyzing complex social networks: from communication networks, to friendship networks, to professional and organizational networks. The dependencies among linked entities in the networks present an opportunity to improve inference about properties of individuals, as birds of a feather do indeed flock together. For example, when deciding how to market a product to people in MySpace or Facebook, it may be helpful to consider whether a person's friends are likely to purchase the product.
This tutorial will explore the unique opportunities and challenges for modeling social network data. We will begin with a description of the problem setting, including examples of various applications of social network mining (e.g., marketing, fraud detection). We will then present a number of characteristics of social network data that differentiate it from traditional inference and learning settings, and outline the resulting opportunities for significantly improved inference and learning. We will discuss specific techniques for capitalizing on each of the opportunities in statistical models, and outline both methodological issues and potential modeling pathologies that are unique to network data. We will give links to the recent literature to guide study, and present results demonstrating the effectiveness of the techniques.
Dr. Provost started by establishing the core foundation for social networking and further get in depth with network targeting, disjoint inference, learning & classification, wvRN, ACORA, RBC, RPT, SLR and context of collective inference. Dr. Neville then continued with Gaussian random fields and elaborated with her work on questionable broker detection. Semi-supervised learning, conventional bias vs. variance analysis, homophily, social influence, external factors and open research issues were also part of tutorial. Later in a discussion with Dr. Provost, he mentioned that the collaborative techniques described can also be implemented for outlier analysis which was encouraging.
For the second tutorial, I attended the "Graph Mining and Graph Kernel" tutorial by Karsten M. Borgwardt (http://mlg.eng.cam.ac.uk/~karsten/) and Xifeng Yan (IBM Research Center). This tutorial presented a comprehensive overview of the techniques developed in graph mining and graph kernels and examines the connection between them. As described by authors, “The goal of this tutorial is i) to introduce newcomers to the field of graph mining, ii) to introduce people with database background to graph mining using kernel machines, iii) to introduce people with machine learning background to database-oriented graph mining, and iv) to present exciting research problems at the interface of both fields.”
Applied Text mining tutorials by Dr. Ronen Feldman & Dr. Lyle Unger was also an excellent talk. Dr. Feldman, author of applied text mining, has a great style of pragmatic discussion and connects with the audience really well. I am looking forward to his future presentation and discuss the idea of natural language corpus extraction implementations in Text mining for my Urdu machine translation work; he must have some great ideas about it.
After the tutorials Bing Liu, the program chair presented conference statistics; apart from all other numbers, salient ones are submission from the US, 323 papers out of which 81 were accepted. In total there were 593 submissions and 118 accepted ones, a less than 20% or less than 1 out of 5 ratio! These guys are picky.
Then came the best research paper award, best application paper award, student travel awards, KDD dissertation award, KDD Cup awards, KDD innovation award and finally concluded on innovation award talk by Raghu Ramakrishnan. KDD Cup 2008 winning announcements in medical data mining was a highly practical and quite challenging problem. Details of the cup submissions can be seen here. http://www.kdd2008.com/kddcup.html
Dr. Ramakrishnan is the author of “Cow Book” and his final talk
for the day covered his past research and a broad spectrum of future directions
of information retrieval. With educated “predictions” from a seasoned data miner, the first day
concluded.
I’m very much looking forward to tomorrow’s sessions; till then, happy mining.
I've taken a lot of photos of the presentations Photos of the event are shared on the facebook. Click here to see them.
]]>Testing web services is a pivotal part of contemporary enterprise project life cycle; developers, QA and even system guys do it to validate different aspects of the middleware. This testing comes with its own set of challenges; Aside from being ineffective, testing complex types is not possible via the default browser based test client and WCF services don’t even offer it!. So what’s the remedy?
This webcast demonstrates web service studio and WCF Test client, two tools specifically designed to test web services without the need of writing custom test harnesses. Web Service Studio is a codeplex project is the revival of good old .NET Webservice Studio tool. Web Service Studio is a tool to invoke webmethods interactively. The user can provide a WSDL endpoint. On clicking button Get the tool fetches the WSDL, generates .NET proxy from the WSDL and displays the list of methods available. The user can choose any method and provide the required input parameters. On clicking Invoke the SOAP request is sent to the server and the response is parsed to display the return value. My intent is to further enhance it to add the support for WCF, Nullable Types and REST style API to allow a complete composite type testing from one tool. For details on WCF Test Client, please see my article here.
Webcast on Web Service Studio and WCF Test Client
References
http://www.codeplex.com/WebserviceStudio
www.codeproject.com/KB/WCF/WCF35Utils.aspx
August and the next couple of months looks
really busy. I’ll be teaching WCF at
UCSD and will be attending the following conferences along with doctoral
cluster meeting. Therefore I am seriously considering “The Terminal” style living.
KDD 2008, 24 – 27 Aug 2008, Loews
Lake Las Vegas Las Vegas, NV
The
annual ACM SIGKDD conference is the premier international forum for data mining
researchers and practitioners from academia, industry, and government to share
their ideas, research results and experiences. KDD-08 will feature keynote
presentations, oral paper presentations, poster sessions, workshops, tutorials,
panels, exhibits, demonstrations, and the KDD Cup competition.
IASA
Connections, October 6 - 8, 2008, San Francisco Marriott, San Francisco, CA
I'll be speaking to IASA connections
conference in San Francisco on Aspect Oriented Programming in Distributed
Systems. More details here.
Microsoft PDC 2008 – 27 – 30 Oct, Los Angeles
Convention Center, Los Angeles, CA
Since
1991, the Professional Developers Conference (PDC) has been Microsoft’s premier
gathering of leading-edge developers and architects. Attend the PDC to
understand the future of the Microsoft platform and to exchange ideas with
fellow professionals. You’ll learn about upcoming products, meet Microsoft’s
leaders and top engineers, write some code, and be inspired! Unplug for a few
days and think about the future.
Programming
Windows Communication Foundation (WCF) (Summer 2008)
Sa, 8:00 a.m. - 5:00 p.m.
8/9/2008 - 8/23/2008
Room 134, UCSD Extension Complex, 9600 N Torrey Pines Rd, La Jolla
Programming
Windows Communication Foundation (WCF) (Fall 2008)
Sa, 8:00 a.m. - 5:00 p.m.
10/4/2008 - 10/18/2008
Room 110, UCSD Extension Sorrento Mesa Center, 6925 Lusk Blvd, San Diego
OWASP’s list have been changed since 2004 in terms of priorities; XSS and inject flaws are on the rise. Details can be found on OWASP’s website.
2007 |
2004 |
OWASP .NET Projects
http://www.owasp.org/index.php/Category:OWASP_.NET_Project
References and Papers on Financial Data Mining
Following are the links to my talks from the SoCal Rock and Roll Code Camp in UCSD Extension Campus, San Diego.
Using ASP.NET MVC to build a blogging engine in 60 minutes or
less.
MVC is a framework methodology that divides an application's
implementation into three component roles: models, views, and controllers.
ASP.NET now has built-in support for MVC style development and this session is
an introduction to using this technique for building a sample application, a
blogging engine. This session will
elaborate on differences between traditional ASP.NET post-back style
development versus the routes and REST architecture based thinking around MVC.
ASPECT.NET – Aspect
Oriented Programming in .NET, an Introduction
Aspect Oriented Programming (AOP) deals with factorization in code i.e. separation of common concerns, specifically cross-cutting concerns, as an advance in modularization. AOSD has been a popular trend in development for quite some time in other programming environments and IDE’s however it’s scope and exposure is limited among .NET developers.
This session is focused on getting developers a deeper understanding of what AOP is all about and how to use it in their everyday development. Aspect.NET is a language-agnostic visual environment for developing aspect-oriented applications for Microsoft.NET that was implemented as an add-in to Microsoft Visual Studio.NET 2005. Using Aspect.NET, the user can define and weave aspects and assess the results of the weaving in his or her projects.Collaborative Filtering (CF) is defined as profiling or classification of information based on specific entity relationships i.e. making automatic predictions (filtering) about the interests of a user by collecting likelihood information from many users (collaborating). The underlying assumption of CF approach is that those who agreed in the past tend to agree again in the future. For example, a collaborative filtering or recommendation system for music tastes could make predictions about which music a user should like given a partial list of that user's tastes (likes or dislikes).
In this session, we will discuss collaborative filtering
algorithms and applications in the current e-commerce systems. A wide array of
topics such as market basket analysis, association trees, singular value decomposition (SVD), naïve
Bayesian classification will be briefly discussed along with the implementation
of these algorithms in sites like Netflix, Amazon and digg / (google pagerank).
In the second half of the talk, attendees will get to see the step by step
implementation of a small scale recommender system using SQL Server 2008
business intelligence studio and C#.
Everyone of has seen it; the default namespace TempUri reference in our otherwise neatly published WSDL, looks like an out of place not-so-thought-out part of your otherwise ironclad contract. Hence the question arises, how to get rid of it and put your company’s corresponding namespace in there.
In the asmx services, it was rather easy to do it; just modify your webservice attribute.
[WebService(Namespace = "http://tempuri.org/")]
However, in the new uncharted waters of WCF, things are wee bit more complex than this. Now you’d need to do it in multiple places. The point to remember is that an endpoint has an associated behavior with it.
The web.config file.
Service Endpoint
<endpoint address="" binding="basicHttpBinding"
contract="Acme.Services.WCFNamespaceSample.IService"
bindingNamespace
="http://acme.com/Acme/Services/WCFNamespaceSample/">
Behavior Endpoint
<endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange" bindingNamespace="http://acme.com/Acme/Services/WCFNamespaceSample/"/>
Also, for the general namespace changes, you need to specify the attribute as follows.
namespace Acme.Services.WCFNamespaceSample
{
[ServiceBehavior
(Namespace = "Acme.Services.WCFNamespaceSample")]
public class Service :
IService
…
And
namespace Acme.Services.WCFNamespaceSample
{
[ServiceContract(Namespace
= "Acme.Services.WCFNamespaceSample")]
public interface IService
…
This should do the magic. Following source code is a good place to start.
WCFNamespaceSample.zip (4.1 KB)While reading up on outlier cohesion analysis in collaborative social networks, I came across this article which I found pretty interesting in the security niche; “Structural Analysis and Destabilizing Terrorist Networks” by N. Memon et al. The article discusses key areas in network analysis such as
(i) cohesion analysis (such as cliques, ncliques, n-clans
and k-plex) to determine familiarity, robustness and reachability.
(ii) role analysis (such as position role index) to
determine critical nodes and
(iii) power analysis (such as degree centrality, Eigenvector centrality and dependence centrality)
This work has further been refined and published as IEEE conference on intelligence security and ADMA
Practical
Algorithms for Destabilizing Terrorist
Networks
N Memon, HL Larsen - Proceedings of IEEE Conference on
Intelligence Security …, 2006 – Springer
And
Structural Analysis and Mathematical Methods for Destabilizing Terrorist Networks Using
Investigative Data …
N Memon, HL Larsen - … Conference on Advanced Data Mining Applications (ADMA 2006),
2006 – Springer
From a generic covert network perspective, there has been previously a lot of work done for darkNet exploration, automated discovery for nodes with case studies in Allpeers, anoNet, Freenet, GNUnet, I2P , Tor, Turtle F2F and WASTE.
A good overview can be found here.
Destabilizing dynamic covert networks
KM Carley, M Dombroski, M Tsvetovat, J Reminga, N … - Proceedings
of the 8th International Command and Control …, 2003 - casos.cs.cmu.edu
The problem of network outliers is not only crucial in intrusion detection but also an interesting network theory problem where a leaf node posses attributes out of the ordinary. As discussed by N. Memon et al for the social aspect of network; “The analysis of the interaction structures that is involved in social network analysis is an important element in the analysis of the micro-macro link, the way in which individual behavior and social phenomena are connected with one another. In this perspective, social networks are both the cause of and the result of individual behavior.”
References from the paper and further readings
1. Scott, J.: Social Network Analysis: A Handbook, 2 edn. Sage Publications, London 2000.
2. Wasserman, S., Faust, K.: Social Network Analysis. Cambridge University Press.1994.
3. Sageman, M.: Understanding Terrorist Networks. University of Pennsylvania Press, 2004.
4. Berry, N., Ko, T., Moy, T., Smrcka, J., Turnley, J., Wu, B.: Emergent clique formation in terrorist recruitment. The AAAI- 04 Workshop on Agent Organizations: Theory and Practice, July 25, 2004, San Jose, California, 2004. http://www.cs.uu.nl/virginia/aotp/papers.htm
5. McAndrew, D.: The structural analysis of criminal networks. In: D. Canter, L. Alison (eds.) The Social Psychology of Crime: Groups, Teams, and Networks, Offender Profiling Series, III.Aldershot, Dartmouth ,1999.
6. Davis, R.H.: Social network analysis: An aid in conspiracy investigations. FBI Law Enforcement Bulletin pp. 11–19, 1981.
7. Chen, H., Chung, W., Xu, J.J., Wang, G., Qin, Y., Chau, M.: Crime data mining: A general framework and some examples. Computer 37(4), 50–56, 2004.
8. Krebs, V.: Mapping networks of terrorist cells. Connections 24, 45–52, 2002.
9. Bonacich, P., Power and Centrality. American Journal of Sociology 92: 1170-1184, 1987.
10. Burt, R. S., Structural Holes, Cambridge, MA: Harvard University Press, 1992.
11. Hanneman, R. E., Introduction to Social Network Methods.Online Textbook Supporting Sociology 175. Riverside, CA: University of California, 200.
12. Burt, R. S., Structure, A General Purpose Network Analysis Program. Reference Manual, Newyork: Columbia University, 1990.
13. Luce, R., Perry, A.: A method of matrix analysis of group structure. Psychometrika 14, 95–116, 1949.
14. Seidman, S.B., Foster, B.L.: A graph theoretic generalization of the clique concept. Journal of Mathematical Sociology 6, 139–154, 1978.
15. Freeman, L.C.: The sociological concept of “group”: An empirical test of two models. American Journal of Sociology98, 152–166 ,1992.
16. Luce, R.: Connectivity and generalized cliques in sociometric group structure. Psychometrika 15, 169–190, 1950.
17. Mokken, R.: Cliques, clubs and clans. Quality and Quantity 13, 161–173, 1979.
18. Balasundaram, B., Butenko, S., Trukhanov, S.: Novel approaches for analyzing biological networks. Journal of Combinatorial Optimization 10, 23–39, 2005.
19. Latora, V., Massimo Marchiori How Science of Complex Networks can help in developing Strategy against Terrorism, Chaos, Solitons and Fractals 20, 69-75, 2004.
20. Memon, N. Henrik Legind Larsen, Practical Algorithms for Destabilizing Terrorist Networks, In Proceedings of IEEE Intelligence Security Conference (ISI 2006), San Diego, California, USA (to appear), 2006.
Newman, M. E. J. The structure and function of complex networks, SIAM Review 45, 167- 256, 2003.
And on a humorous side, here is an interesting video about how NOT to do it.:)
I'll be speaking to IASA connections conference in San Francisco on Aspect Oriented Programming in Distributed Systems.
Following are further details.
Conference Page
October 6 - 8, 2008
San Francisco Marriott
San Francisco, CA
IASA02: Service
Aspects—Aspect Orientated Designs in Distributed Enterprise Architecture
Adnan Masood
Aspect Oriented Programming and Aspect-Oriented software development (AOSD)
support the software development paradigm which leverages separation of concerns,
especially cross-cutting concerns as a next step to modularization. Separation
of concerns can be defined as breaking down a program into distinct parts that
overlap in functionality as little as possible. The similar concerns are
factored and defined as aspects which are separated out from the main logic
making the implementation more maintainable. In this session we approach the
service orientation as an aspect of a distributed system. Using attribute
oriented design for aspect implementation, this presentation focuses on merits
of exposing service end points from business objects by using AOP practices.
The attendees will: gather the understanding of AOP, a fast growing research
and development area in modern software development; understand the state of
affairs of AOP in the current IDE’s and programming languages especially with
Spring, AspectJ and Aspect.NET; explore the rationale of aspect-based nature of
services and deep dive into the open source ServiceAspect CodePlex project for
a sample implementation. This session’s focus is the architecture and design
practices that AOSD brings to the enterprise architecture. Best practices and
design patterns followed in AOP will be discussed with a demo of Aspect.NET and
ServiceAspect, which is used to publish business objects as WCF services using
attributes.
Returning HTTP 500 internal server error as your web service / asp.net REST responses in case of failures may sound like an odd idea but it has its merits; with handlers and load balancing environments where you want your intelligent routing devices to redirect request to a different server based on an HTTP header response, this approach can come in handy.
In order to return an HTTP 500 server error custom response, there are two simple ways to achieve it.
By throwing an HTTP exception
throw new System.Web.HttpException(500,
"Internal Server Error");
Or by modifying the headers.
HttpContext.Current.Response.Status = "500 Internal Server Error";
HttpContext.Current.Response.AddHeader("Status Code", "500");
HttpContext.Current.Response.End();
Looking at the response from the HTTP headers, they are almost identical. The only difference is that due to termination of response stream in the later case, the content length is 0.
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language:
en-us,en;q=0.5 Accept-Encoding:
gzip,deflate Accept-Charset:
ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive:
300 Connection:
keep-alive Referer:
http://localhost:17109/HTTP500Test/Service.asmx?op=ThrowHTTPException Content-Type:
application/x-www-form-urlencoded Content-Length:
0 HTTP/1.x 500
Internal Server Error Server:
ASP.NET Development Server/9.0.0.0 Date: Fri, 30
May 2008 15:58:24 GMT X-AspNet-Version:
2.0.50727 Cache-Control:
private Content-Type:
text/plain; charset=utf-8 Content-Length: 152 Connection:
Close |
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language:
en-us,en;q=0.5 Accept-Encoding:
gzip,deflate Accept-Charset:
ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive:
300 Connection:
keep-alive Referer: http://localhost:17109/HTTP500Test/Service.asmx?op=ResponseHeader500Error Content-Type:
application/x-www-form-urlencoded Content-Length:
0 HTTP/1.x 500
Internal Server Error Server:
ASP.NET Development Server/9.0.0.0 Date: Fri, 30
May 2008 15:57:10 GMT X-AspNet-Version:
2.0.50727 Cache-Control:
private, max-age=0 Content-Length:
0 Connection:
Close |
The similar result can be achieved by throwing an ApplicationException or custom exception as well because for the runtime, it still means an internal server error.
The source for the web service project can be downloaded from here. HTTP500Test-Src.zip (2.79 KB)
]]>With the rapidly changing horizon of upcoming tools and technologies, technical certification is an organized way of studying and keeping oneself up-to-date with the latest and greatest features which software frameworks have to offer. Even though hands on experience is an absolute necessity, usually when using a particular framework in everyday job, a developer only gets exposed to a smaller set of features pertaining to the task at hand. On the contrary, certification study provides a breadth first approach to the general underlying framework, its mechanics and features. Since it covers a much broader area, studying for a certification exam becomes a daunting task; luckily not for those equipped with tools such as uCertify’s certification study products which allow you to focus your study in the key areas and provide you with instant feedback and help during the preparation process.
uCertify’s 70-526 – C# Exam. TS Microsoft.NET Framework 2.0 Windows based client preparation tool assists you to get ready for the test in a well organized and effective way. It consists of three practice tests with 35 well diversified questions, flash cards, adaptive tests, a detailed study notes section and final exam with 40 questions. This product lets you evaluate your readiness level, provides you a test history to ensure the progress and also allow you to create a custom test, based on the areas you find yourself not so strong. The product is customizable and allow you to create your own entries for test preparation but I believe the sections such as How To’s could have been expanded and made more effective. A test can be conducted in both “test” and “learning mode”; detailed explanation and references are provided in the later mode for follow up and understanding. The preparation engine is also equipped with features such as bookmarking, tagging and rating the questions.
Having taken the tests in the classical way, by using Microsoft courses, MSDN and books for prep, I find uCertify’s product quite relevant and helpful. Looking back if I’d have to prepare for the future exams, I’d use this tool in association with recommended text to help gauge the learning.
For details and trial downloads, please visit UCertify's website.
“ 4 of the 10 largest
sites on the internet are ASP.NET. Live.com (#3) MySpace.com (#5) MSN.com (#7)
Orkut (#10)”
This weekend at a social event, friend of a friend (fof) brought
up an interesting topic; their company which shall remain nameless is moving away
from ASP.NET / SQL / Win 2K3 to JSP / JBOSS / MySQL / Linux platform because apparently
someone have told them that ASP.NET does not scale. Also, they have been having
slowness issues with their website during the time of high traffic. They are in
movie business so slowness during high traffic means loss of revenue when
people cannot buy tickets and have to go for alternatives. But of course it has
nothing to do with the underlying technology so I had to ask the obvious, "Was
it designed to be scalable?"
A prototype which works on two machines may not be the perfect solution for large scale websites when no single point of contact can be a bottle neck, you have to make sure that the connections are handled properly and threads are available when needed.
So I had to defend the ASP.NET honor, counter that false belief therefore I tried explaining to the fof that this view about ASP.NET being unsuitable for enterprise systems is completely untrue. ASP.NET scales just fine, and that’s why four out of ten largest sites are in ASP.NET despite the fact that other platforms have been around longer and competing with free is a lot harder even with all the ROI results you can get. So it might be the configuration, connection pooling, number of open thread or a multitude of different issues which might be causing the problems they are having and can easily be resolved by an independent review. Also, these issues can happen with any platform. I hope I am not starting a religious war here between .NET and Java web technologies but the truth is, they are both equally fine. Being a developer focused on Microsoft technologies, I have my personal bias towards ASP.NET. I have seen it working perfectly and there is enough empirical evidence to back up this claim. Some of the good ASP.NET optimization tips can be found here.
And here is an excellent Morgan Stanley guide on Internet Trends describing this and other zeitgeists; must see.
Exploring WCF 3.5
Tools - WcfSvcHost and WcfTestClient
Disucssing use of WCFSvcHost and WcfTestClient for Service
hosting and testing
Publishing RSS and
ATOM Feeds using WCF 3.5 Syndication Libraries
This article focuses on using the WCF 3.5 libraries namely System.ServiceModel.Syndication namespace to create and publish an RSS and Atom
feed from the same code base.
Enjoy!
]]>
WCF
3.5 Code Samples, Links and Presentation Download
ASP.NET MVC Code Samples, Links and Presentation Download
ASP.NET MVC Presentation Videos (Jeff’s part of the talk)
From the user’s comments, it
seems that my WCF talk was well received. It’s reassuring when seen
from an independent observer. I’m planning to do a follow up on it in the
RSS*
Atom here.
I’m doing the following two sessions in the upcoming Fullerton Code Camp on Jan 25 and 26th.
.NET 3.5 Enhancements for WCF :: Syndication and REST Support
ASP.NET MVC Framework - An Introduction
Code Camp is Free! Feel free to come and join the geekiness.
International Conference on Artificial Intelligence and Pattern Recognition (AIPR-08)
International Conference on Enterprise Information Systems and Web Technologies (EISWT-08)
International Conference on Software Engineering Theory and Practice (SETP-08)
International Conference on Theoretical and Mathematical Foundations of Computer Science (TMFCS-08)
Dear Amazon.com Customer,
We've noticed that customers who have purchased or rated Expert Service-Oriented Architecture in C# 2005, Second Edition by Jeffrey Hasan have also purchased Workbook to accompany Anatomy & Physiology Revealed Version 2 CD by Robert Broyles. For this reason, you might like to know that Workbook to accompany Anatomy & Physiology Revealed Version 2 CD will be released on January 11, 2008. You can pre-order yours by following the link below.
Interesting, isn't it? :)etc...
In short, the answer is, there is no silver bullet when it comes to interop. There are several case by case things you’d need to consider when trying to make your contracts visible to outside world. Having said that, there are best practices you can follow which I’d cover in this and upcoming blog posts.
One of the big benefits of using WCF meta-data generation engine is that you
can get XSD’s out of it too. Other platforms (read Java) tools understand and
prefers XSD's (even though WSDL is the standard, XSD’s are cleaner IMHO). You
can now easily generate them via a WCF service like follows.
Each of these xsd's has separated out contract, type and
type definition.
Similarly you'd have WSDL0, WSDL1 and WSDL2 so
Again, the wsdl's
are separated to keep the contract, type and type definition (what is a double
in interop environment) apart and not in giant one big file, which seems to be
much easier but in essence its not.
Improving
WCF Interoperability: Flattening your WSDL is an excellent
article by Christian Weyer on increasing the interop bar. It explains the reasoning
behind why a simple basic http binding service based WCF generated WSDL cannot
communicate with its Java counterparts anymore and how to fix this problem.
Also, the other areas of research interest mentioned in the data
mining literature are
Visual Studio 2008 VHD makes life a lot easier if you want to explore the upcfeature-set of C# 3.0 compiler. Make sure to get the differencing image Visual Studio Code Name Orcas Base Image else you’d be getting the following error.
"OrcasBeta2_VSTS" could not be started because a disk-related error occurred.
Feeling bad for fellow .netters (Yes Ben, its you) who had to clean install the beta2 upgrade from beta1. For me, it was plugging in the new machine :) VM Rocks..errr...I meant virtual PC VM, not the other VM.
Anyhow, support for lambda expressions is one of the gems in C# 3.0, as defined in the C# 3.0 Language Specification
lambda-expression:
( lambda-parameter-listopt ) => lambda-expression-body
implicitly-typed-lambda-parameter => lambda-expression-body
This is essentially the same thing you’d do in CLisp, the function definition, application and recursion, all in quite elegant way. Therefore, the implication inherently defines the method without any explicit declaration. So you can say
x => x + 1 which translates to a function that takes one argument, c, and returns the value x + 1.
A less trivial example is as follows.
List<string>
XFilesEpisodes = new List<string>();
XFilesEpisodes.Add("Little
Green Men");
XFilesEpisodes.Add("The
Host");
XFilesEpisodes.Add("Blood");
XFilesEpisodes.Add("Sleepless");
XFilesEpisodes.Add("Duane
Barry");
string
episodeMatch = XFilesEpisodes.Find(p => p.Equals("Sleepless"));
Console.WriteLine(episodeMatch);
Console.Read();
string episodeMatch = XFilesEpisodes.Find(delegate(string name) {
return XFilesEpisodes.Equals("Sleepless");
});
The lambda methods evaulated within closures; these anonymous delegated blocks are not called closures because their understanding would give closure to your intellectual feat but because they can access the local members. As defined on precious wikipedia (since I can never find my PL book handy), a closure is a function that is evaluated in an environment containing one or more bound variables. When called, the function can access these variables.
Now on the IL level, this can be seen as a static predicate class of anonymous delegate (hence the expansion)
.field private static class [mscorlib]System.Predicate`1<string> '<>9__CachedAnonymousMethodDelegate1'
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
It is defined as anonymous delegate in the general metadata and further performs a string comparison with virtual call (in bold below).
.method
private hidebysig static bool '<
{
.custom instance void
[mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() =
( 01 00 00 00 )
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldstr
"Sleepless"
IL_0006: callvirt instance bool
[mscorlib]System.String::Equals(string)
IL_000b: ret
} // end
of method Program::'<
The Main method is as follows which shows the generic list
of items and then the actual call to CachedAnonymousMethodDelegate.
.method
private hidebysig static void
{
.entrypoint
// Code size 110 (0x6e)
.maxstack 4
.locals init ([0] class
[mscorlib]System.Collections.Generic.List`1<string> XFilesEpisodes,
[1] string episodeMatch)
IL_0000: newobj instance void class
[mscorlib]System.Collections.Generic.List`1<string>::.ctor()
.......
IL_003e: ldsfld class [mscorlib]System.Predicate`1<string>
VS.NET2008Features.Program::'<>9__CachedAnonymousMethodDelegate1'
IL_0043: brtrue.s IL_0056
IL_0045: ldnull
IL_0046: ldftn bool VS.NET2008Features.Program::'<Main>b__0'(string)
IL_004c: newobj instance void class
[mscorlib]System.Predicate`1<string>::.ctor(object,
native int)
IL_0051: stsfld class
[mscorlib]System.Predicate`1<string> VS.NET2008Features.Program::'<>9__CachedAnonymousMethodDelegate1'
IL_0056: ldsfld class [mscorlib]System.Predicate`1<string> VS.NET2008Features.Program::'<>9__CachedAnonymousMethodDelegate1'
IL_005b: callvirt instance !0 class [mscorlib]System.Collections.Generic.List`1<string>::Find(class [mscorlib]System.Predicate`1<!0>)
IL_0060: stloc.1
IL_0061: ldloc.1
IL_0062: call void [mscorlib]System.Console::WriteLine(string)
IL_0067: call int32 [mscorlib]System.Console::Read()
IL_006c: pop
IL_006d: ret
} // end
of method Program::Main
The extension methods are a very powerful feature. Think of them as highly sophisticated version of poor man’s global overrides. For instance, in the example below I’d convert all the temperature by “extending” the method on the double type which does not define a Convert method.
namespace
VS.NET2008Features
{
static class Program
{
static void Main(string[] args)
{
double temperature = 0;
temperature.Convert();
Console.Read();
}
static void Convert(this double temp)
{
double tempF = (9/5)* temp +32; //
9/5.0 not done on purpose.
Console.WriteLine(tempF);
}
}
}
For a simple program like this, the underlying IL and
reflector code looks quite interesting. First of all, note the clever IL as it
will evaluate the 9/5 as 1 (integer value) since it is not a double calculation
(9/5.0 would have been). Also, the extension attribute is added and redirection
to this new extended method is done at the IL level. Clever eh?
private
static void Convert(this double temp)
{
double num = (1 * temp) + 32;
Console.WriteLine(num);
}
.method private hidebysig static void Convert(float64 temp) cil managed { .custom instance void [System.Core]System.Runtime.CompilerServices.ExtensionAttribute::.ctor() = ( 01 00 00 00 ) // Code size 29 (0x1d) .maxstack 2 .locals init ([0] float64 tempF) IL_0000: ldc.r8 1. IL_0009: ldarg.0 IL_000a: mul IL_000b: ldc.r8 32. IL_0014: add IL_0015: stloc.0 IL_0016: ldloc.0 IL_0017: call void [mscorlib]System.Console::WriteLine(float64) IL_001c: ret } // end of method Program::Convert |
.method
private hidebysig static void
{ .entrypoint // Code size 23 (0x17) .maxstack 1 .locals init ([0] float64 temperature) IL_0000: ldc.r8 0.0 IL_0009: stloc.0 IL_000a: ldloc.0 IL_000b: call void VS.NET2008Features.Program::Convert(float64) IL_0010: call int32 [mscorlib]System.Console::Read() IL_0015: pop IL_0016: ret } // end of method Program::Main |
The extension method is depicted here by setting the extension attribute in the CLR. The call to the Convert gets translated and redirected to VS.NET2008Features.Program::Convert(float64)
Scott Guthrie defines it best, from both developer and framework architect prospective. And till then, I'm waiting for Jeffrey Richter's addendum to CLR via C# which would discuss the C# 3.0 enhancements.
The classes are scheduled every Thursday, 6:35 p.m. -
10:00 p.m. from 8/16/2007 - 9/20/2007 (6 mtgs.).
WCF
Course -UCSD Extension
CSE-40114 Credit: 3
units
“.NET 3.0 introduces Windows Communication Foundation (WCF) providing
a service-oriented programming model for distributed application development. This
course will use the C# programming language and cover designing, implementing, configuring
and hosting WCF servers and clients to leveraging this new communication stack
and its protocol facilities for security, reliability, transactions and other
services.”
The course’s text book is Michele Bustamante’s “Learning WCF – A Hands on
Guide”. The source code for the book labs can be downloaded from here. We will be
discussing a lot of interesting topics in WCF and connected systems so spread
the word.
As a web method
[WebMethod] public int Add(int p1, int p2) { return p1+p2; } |
[WebMethod] [SoapRpcMethod] public int Add(int p1, int p2) { return p1+p2; } |
Or as a SoapDocumentMethod
SoapDocumentMethod( "http://www.dotnetsmith.com/DocumentLiteral", RequestNamespace="http://www.dotnetsmith.com", ResponseNamespace="http://www.dotnetsmith.com", Use=SoapBindingUse.Literal)] public string DocumentLiteral(Address1 address, bool useZipPlus4) { |
[SoapDocumentMethod( |
With WCF's seperation of Data and Service Contracts, it has become much more cleaner and clear.
[ServiceContract] [DataContractFormat(Style=OperationFormatStyle.Document)] //Or Rpc public interface IOrderEntry {...} |
[ServiceContract] |
and the one way attribute as an operation contract.
public interface IOrderEntry
{
[OperationContract(IsOneWay = true)]
void PlaceOrder(PurchaseOrder order);
}
Remember that RPC/encoded is not WS-I compliant!
Following is difference in the output from the two different
References
]]>Jeremiah is CTO of white hat security and a security enthusiast. In a brief conversation with him about CAPTCHA's effectiveness, he summarized it as "bad guys are winning". By using promiscuous websites as CAPTCHA validation engines, they have created a mechanical turk to avoid the bot detection; and of course the OCR's are getting better and better too. In response to another question about blocking IP's for suspicious activity, he mentioned that intelligence based on IP is not a bad solution but in presence of anonymity engines like Tor, its not quite deterministic and should be used with care. The CTO of White hat security mentioned Cross-site request forgery as one of the biggest up coming threats which is getting more and more press.
The presenter listed the following as his top 10 web 2.0 vulnerabilities list and provided samples during his demo about each of these. Here is an excerpt from his blog. Check out the fill list on his blog.
Here is a link to his earlier talk this year. From a .NET developer's point of view, effective usage of framework features to avoid XSS was highly recommended. Most of these issues would be covered by following the OWASP top 10 list best practices however web developers should also be at least aware of exploits which are beyond their control and are more browser/platform dependent (item 3, 4, 5 and 6 on the list) so they will be able to respond with a contigency plan in case of any such compromises.
With Ajax talking directly to web services, the risk of attack is on the rise. Here are multiple videos about Ajax Hacking (and prevention using ASP.NET)
References:
]]>Michelle has raised an important concern about web service software factory; Why Web Service software factory? For someone who is skeptical of tools and believes in the raw power of framework and associated IDE, this is a genuine point of unease. Why use a fancy new piece of software which creates some arbitrary code and projects while you can start from scratch in your favorite IDE and do it all by yourself? What is the architectural and development advantage of the prior approach?
Web Service Software factory is an integrated collection of tools, best practices, design patterns, sample source code and guidance. Following are the five key reasons I recommend usage of Web Service Software Factory in the enterprise development.
1. Service Orientation Comes Standard
The templates generated by WSSF are built with SOA tenants in mind. The template comes with separate projects and folders dedicated to project entities such as business logic, resources, data access, service interfaces, data, fault and service contracts, service host and client for self hosting. This enforces the SOA design practices such as type separation, having contracts and interfaces, separate service policy from implementation, keeping boundaries explicit and schema enforcement. As a result, this becomes a better overall design resulting in better compatibility and interoperability when the service is published or modified at a later date.
Figure: Solution interactively creates the business logic and service interfaces.
2. Executable Architectural Guidance
In contemporary development, we developers heavily rely on intellisense. We like IDE’s to do little syntax corrections for us and press F1 to see a new class’s syntax; Wouldn’t it be nice if one can see step by step instructions for basic things like “How to create a Message contract” or for relatively advance things such as “Decorate type as DataContract”. How about if you can “run a recipe” i.e. have a built-in macro which would do all the underlying work for you. Sounds interesting? WSSF provides both the documentation style and executable guidance for Web Service developers. See it for yourself.
3. Service Targeted Code Analysis
I’m sure you use FxCop as part of your daily continuous integration process? No? ok, I didn’t hear that. Seriously, what is the better way to enforce enterprise level coding conventions, security rules et al. Web Services software factory comes with WCF Semantic code analyzer which uses the FxCop engine to perform the semantic rules check and provide necessary recommendations. Using service factory, you can easily create a code analysis rule that will inspect service contract code and check code compliance with WCF service model. See chapter 13 of hands on labs for further details.
4. UI Consoles for Housekeeping Chores
This is your first WCF service and you want to expose it to the world. What is the first error you get when you run it?
Now you have to copy and paste few behavior attribute lines to the web.config. No big deal but how about if you want to tweak with interop and communication? Would it be easy if all these are part of a management console? Service factory team heard you. These and many more attributes are now part of context menus for each and every project. You can right click on the project and see how you can do general maintenance tasks by few mouse clicks.
Figure: Context menu for exposing the service
5. Project Template – Avoid the blank page
syndrome
Being an architect you want your development team to follow
an enterprise template for service orientation; They are free to innovate but
within boundaries so no one starts writing their ADO.NET code inside the web
service class file. Makes sense? Now apart from visual studio.NET enterprise
templates, you can do it now with service factory templates to enforce the
coding standards and provide a good starting point for your developers.
Figure: Context menu for exposing the project template.
Figure: Template Export Dialog
Like WCF itself, the service factory also greatly helps
developer to stay focused on business logic programming, service versioning,
service, data and message contracts, the core concepts instead of doing the repetitive
tasks and plumbing work. I’m not sure how many would actually buy into it but
for what it’s worth, treating WSSF even as an SOA learning tool would be quite effective.
Happy 4th of July; now I’m going out to enjoy
some fireworks.
Also during the SoCal Code Camp I attended a talk by Richard Campbell on ASP.NET scalability (also dubbed as “Killing web servers for fun and profit”) and there was a equation he mentioned during the presentation which is also available as part of Stephen Forte’s PDC slides. The equation goes as
R ≈ (Payload / Bandwidth ) + AppTurns(RTT) + Cs + Cc
Where
AppTurns is the turn count required to generate a user response
Bandwidth is the minimal bandwidth (bits per second) across all the network links between the user and the application server.
Cc (Compute Client) is the total processing time (seconds) required by the client device.
Cs (Compute Server) is the total processing time (seconds) required by the server(s).
Payload is information content (bytes) that must be delivered to/from the user’s device.
R is the response time, which is the elapsed time (seconds) between a user action and the system response (client, network, server),
RTT is the round-trip-time (seconds) between the user and the application server.
Aside from figuring out the weakest link in your system using the above equation, you should definitely check out the following resources if interesting in making your website more “responsive” and effective. Feel free to drop me a line (adnanmasood at gmail dot com) if you have any interesting problems in this area and I’d love to assist.
References
]]>
I gave a
talk on Web Service software factory in the SoCal Rock and Roll code camp
this afternoon. It was well received (at
least I am under this impression since there was nothing thrown at me, ok yes, one tomato, big deal!) and following are the links to the WCF resources
discussed.
Presentation Abstract
Windows Communication Foundation is Microsoft's Unified Programming Model which allows us to build secure, reliable, transacted, and interoperable distributed applications. WCF integrates the distributed computing paradigms such as ASP.NET Web Services, .NET remoting, and Enterprise Services and provides a unified model for connected system development
This session on WCF will cover the basics of WCF Architecture, the concept
of messaging end points and the supported communication protocols. After a
brief review of existing connected systems technologies such as asmx and remoting,
we will talk about channels, messages, data and operation contracts, bindings,
service hosting techniques and communication security offered by WCF. The
intent of this presentation is to provide hands on technical overview of WCF,
showing audience how they can build their very own WCF services and client
application from scratch. Time permitting, audience will be able to participate
in intermediate topics such as ASMX to WCF migration strategies, best
practices, service oriented architecture and web service factory WCF support.
Some good software and website
resources for belief networks.
Software
·
The Association for Uncertainty
in Artificial Intelligence
·
A Brief
Introduction to Graphical Models and Bayesian Networks
·
Artificial
Intelligence: Probability studies may give computers a chance to learn, by
Kevin J. Delaney,
The Wall Street Journal
·
Association for the
Advancement of Artificial Intelligence
http://www.cs.umd.edu/class/spring2005/cmsc838s/viz4all/viz4all_a.html
References
and Further
Step 1. Add the following at the top of the application
config file. This tells the config engine that there is a Log4NET section
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section
name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
Step
2. Add the following before/after appsettings.
<appender
name="MyApplicationLogFileAppender" type="log4net.Appender.RollingFileAppender">
<param
name="File" value="log\\MyLogFile"/>
<param
name="DatePattern" value=".yyyy-MM-dd-tt".log""/>
<param
name="AppendToFile" value="true"/>
<param
name="RollingStyle" value="Date"/>
<param
name="StaticLogFileName" value="false"/>
<layout
type="log4net.Layout.PatternLayout">
<param
name="ConversionPattern" value="%r %d [%t] %-5p %c -
%m%n"/>
</layout>
</appender>
<root>
<level
value="DEBUG"/>
<appender-ref
ref="MyApplicationLogFileAppender"/>
</root>
</log4net>
Step 3. Add the following in the AssemblyInfo.cs
[assembly: log4net.Config.DOMConfigurator(Watch
= true)]
Step 5. Add the following line in the code where you want
logging to be done.
This will log the info in the MyLogFile in the log folder.
The above steps provide a cookie cutter recipe for jump start using Log4NET. For further information about what the above config sections actually mean, please see the following reference articles below.
His blog can be found at
http://jeffbergman.com/cs/blogs/csjeff/default.aspx
http://jeffbergman.com/cs/blogs/csjeff/rss.aspx
-Richard Feynman
Los Alamos From Below: Reminiscences 1943-1945 - Caltech
"No, it's not going to work. It's not efficient.
. . Blah, blah, blah."
This morning at the Vista Launch event in Los Angeles Convention Center, I met Gerald Walsh in the hall way. Gerald is a Microsoft MVP and has spoken to our user group last year when he was working with Microsoft. He’ll be presenting advanced ASP.NET session in the code camp on Sunday which is rated as the most favorite session on the code camp’s website. I’m definitely looking forward to attend it. Also, hopefully I’d be able to get some good speakers signed up for San Gabriel Valley .NET user group meetings this year.
Happy Coding!
]]>
http://www.masteringbiztalk.com/atlasworkflowdesigner/
http://www.masteringbiztalk.com/wiki/default.aspx/MyWiki/Workflow%20Samples.html
Jon Flanders is an industry-leading author and instructor of
in-depth developer training materials at Quicklearn. Jon is the author of
"Mastering Visual Studio .NET" from O'Reilly and "ASP
Internals" from Addison-Wesley and co-author of "Presenting Windows
Workflow Foundation" from Sams. Jon holds a Juris Doctor from
The idea is not novele as papers has been written about Toward models for probabilistic program correctness as early as 1978 however, we have yet to see the availability for a commoner in a unit testing framework developers actively use.
For instance, this simple teller based simulation for management from Discrete Event Simulation which I’ve translated to C#, an ideal candidate for such a text fixture.
using System;We definitely need something better than the following pseudo code
String.Replace
(String.IndexOf(<companyName>), <companyname>.StockSymbol)
A text based context sensitive substitution which actually recognizes when word “Amazon” as in the jungle and Apple as in the fruit.
As a principle, all software estimation methods share the Gödel's incompleteness theorems as their fundamental axiom i.e. the modeling of system is essentially not perfect. Traditional software engineering approaches to estimation include decomposition techniques like LOC (lines of code) based estimations, function point based estimates, process-based estimates, use case oriented estimates etc. These techniques essentially quantify the task breakdown via different methodologies and then estimate the time based on how long a single entity would take. Sounds like common sense, right? The empirical estimation models include function oriented metrics, COCOMO model and its variations. Aside from these heavy weight processes, Agile methodology describes the estimation process as follows.
This sounds more realistic, five step process and you are done with it. As we already know as Moore et al described “Our preliminary results suggest that complicated methods may not necessarily yield a more accurate estimate, particularly when developers can incorporate their own intuition into the estimate”, or simply that making fancy estimations won’t make you more accurate.
In order to determine the rough order of magnitude (ROM), i.e. a rough estimate of the number of person-days to complete the task, I prefer the agile way. A typical workflow would be as follows.
Identify: Go through the specs (purpose statement/business requirement document or any other document) you have which identifies what needs to be done. Identify how you would do it in the scope and boundaries of current system.
Divide and Factor: With a rough sketch of identified tasks, factor out the similarities and what components can be shared across the board. Split the tasks into smaller pieces until it reaches ‘sane atomicity’. Try to think in service context so the responsibility is centralized instead of shared across the components, it helps the bottom line.
Raise the Unknown: Always identify unknown as risk, it helps. If you don’t know that the new mail server can handle bounce back processing for your application or you have not evaluated the ISO format file parser library performance yet, please make note of it.
Estimate: Take an educated guess of how long it would take you to complete the tasks. If you are working as a team, knowing their respective skillets, ask fellow developers for their estimates. Most likely they would be the ones working on some of the components too. Find out the median, pad it to include the process factors (documentation, release notes, collaboration delays) and here your ROM guesstimate.
Repeat: As you identify the tasks more and more clearly, re-iterate through the steps for accuracy and effectiveness.
This process does not take too long, depending on the size of project it could be less than an hour and its much better than “hmmm, there are 1000 M&M’s in this bottle”. This is more like “In one square inch of this jar, I can see almost 20 chocolate goodies. Providing the curve and integrating below it, I think it would have…”, you got the idea. You can re-calibrate it with future iterations as it would be a good learning exercise in estimation. This method will get more and more concrete proportional to your specifications as they say, requirements are like water. They're easier to build estimate when they're frozen.
“I love deadlines. I like the whooshing sound they make as they fly by.”
-- Douglas Adams
References and Further Readings
The value of any practice depends on its context.
There are good practices in context, but there are no best practices.
People, working together,
are the most important part of any project's context.
Projects unfold over time in ways that are often not predictable.
The product is a solution. If the problem isn't solved, the product doesn't work.
Good software testing is a challenging intellectual process.
Only through judgment and skill, exercised cooperatively throughout the entire project, are we able to do the right things at the right times to effectively test our products.
]]>
There has been several discussions about CAPTCHA's effectiveness over the years. Jay Allen has spoken, have yet to see what Paul Graham has to say about it. Breaking a Visual CAPTCHA: High Level Description describes the underlying mechanics. The bigger question is, are these methodologies efficient or just band-aids to the existing tricks which will only work till spammers find a new way around it. I think I'd agree with author of On Intelligence on this matter when he suggested that our approach to AI is inherently wrong. How do a person sees an image or an email and know that it's unsolicited commercial email, cerebral cortex? lets map it. Possibly the problem of the century but we would have it sort out, sooner than later.
References and Further Readings
Telling humans and computers apart automatically
Luis von Ahn, Manuel Blum, John Langford
Communications of the ACM, Volume 47 Issue 2
Shape Matching and Object Recognition
Berkeley Computer Vision page
Email and security: Designing human friendly human interaction proofs (HIPs)
Kumar Chellapilla, Kevin Larson, Patrice Simard, Mary Czerwinski
Proceedings of the SIGCHI conference on Human factors in computing systems
Poster 2: applications track: IMAGINATION: a robust image-based CAPTCHA generation system
Ritendra Datta, Jia Li, James Z. Wang
Proceedings of the 13th annual ACM international conference on Multimedia MULTIMEDIA '05
Games: Preventing bots from playing online games
Philippe Golle, Nicolas Ducheneaut
Computers in Entertainment (CIE), Volume 3 Issue 3
Invited workshop on conceptual information retrieval and clustering of documents: Spam filters: bayes vs. chi-squared; letters vs. words
Cormac O'Brien, Carl Vogel
Proceedings of the 1st international symposium on Information and communication technologies ISICT '03
With session titles like “Put Testing Where It Belongs--At the End”, “The Joy of Silence: Cube Farm Designs That Cut Out Conversation” and “Unfactoring from Patterns: Job Security through Unreadability”, this is a must attend conference for software developers and architects, not.
The registration page is riot, as it states:
“We're sorry but registration is not yet ready. Our
software developers have a really wonderful design. They're almost done
entering it into it a UML tool. They've told us not to worry and that finishing
it will be "trivial" because "all that's left is the coding."
Credit goes to Richard
Hundhausen for the mention, go agile!
Dan Wahlin’s sessions were also recorded.
Video: ASP.NET AJAX, XML and Web Services (with a little Virtual Earth)
Video: Minimize Code with TableAdapters and Strongly-Typed DataSets
-Dan Wahlin and Spike Xavier
Some pertaining posts with slides and samples.
Microsoft IronPython for ASP.NET CTP is available; I’ll be trying it out shortly.
And for you “Heavy .Netal” music fans, pleasure for your ears, not.
No More DLL Hell - The Song
Written and Performed By: Spike Xavier & Dan Wahlin
Couple of good white papers I encountered from MSR & MS.
Can Abstract State Machines Be Useful in Language Theory?
Yuri Gurevich; Margus Veanes; Charles Wallace
Microsoft Research
Windows Workflow Foundation - Performance Whitepaper
Performance Characteristics of Windows Workflow Foundation
Microsoft Corporation.
And last but not least, food of thought for your <substitute your favorite player here>.
Free Academic Podcasts;
145 podcasts for your educational pleasure.
“Plumbing is evil. Developers are inherently disadvantages by plumbing. ”
-Juval Lowy
Juval Löwy is the founder of IDesign and a seasoned software architect specializing in system architecture and large applications design. He is the author of Programming .NET Components and upcoming Programming WCF Services. As a post conference session, I attended Joval Lowy’s “Mastering WCF in a Day”. It was a crash course in all things WCF with the following agenda.
The entire day presentation was essentially what Joval has described in this article “WCF Essentials-A Developer’s Primer” however, his concise examples and simplistic explanation has made a significant difference in understanding windows communication foundation (WCF).
I’ll discuss topics discussed in his session in detail as a separate post; following are the code samples, links and references to further explore WCF.
The IDesign WCF Coding Standards can be downloaded from here.
Books and References
Programming WCF Services
by Juval Lowy (On Safari Rough Cuts)
To request the WCF Resource CD, click this link and check the CD Checkbox:
WCF Essentials-A Developer’s Primer
Vista Series: Windows Communication Foundation
Discover Mighty Instance Management Techniques For Developing WCF Apps
What You Need To Know About One-Way Calls, Callbacks, And Events
WCF sample: Chat room client and server for .NET Framework 3.0
Windows Communication Foundation Architecture Overview
Windows Communication Foundation Part 1.
MSDN TV: Windows Communication Foundation Bindings and Channels
Distributed .NET: Learn The ABCs Of Programming Windows Communication
]]>Thursday was the last day of the conference, tiring but enlightening nevertheless. We however had one more day of Post Conf. session before we could head home. Following are the chronicles of the last day of the conference.
Implement a Data Access Layer with the Visual Studio 2005 Dataset Designer
Brian Noyes
Brian Noyes is a software architect, trainer, writer, and speaker with IDesign. His presentation on the data access layer design was a masterful explanation of how easily this tool can facilitate a decent workable design.
The demos and slides are available here.
Real World ClickOnce: Slides Demos
Workflow Driven Windows Applications: Slides Demos
Implement a Data Layer with the VS 2005 DataSet Designer: Slides Demos
The presentation is also available from the devConnections website. Noyes_VDA302_DataSet Designer
Preparing Code for Debugging
Kathleen Dollard
I tried to attend most of Kathleen’s sessions because she is to-the-point, concise and stay away from the trivial.
My litmus test selection for a speaker usually comprises of the following two rules.
Following are the salient features of her presentation. It was a nice reminder of things you ought to do.
Pattern to allow global catch of exception in a single place. The class library should inform the calling application what exception has occurred.
After this interesting session we had lunch break and harley raffle.
Black-belt Data Binding
David Sussman
David Sussman did an intermediate course in data binding and how to use it with .NET 2.0 controls.
The code samples will be available here. http://www.ipona.com/samples/. Here is an interesting topic which David discussed in his last presentation.
SiteMapPath and URLs with spaces
Unit Testing in the Real World
Kathleen Dollard
With quotes like
“The concept of what happen in Vegas stays in Vegas does not apply for this Conference”,
“Test early, after and forever”
and
Every bug replaces two bugs
Kathleen did another excellent presentation on Unit testing as the last presentation of the conference. I felt as this presentation was in conjunction with the previous “Preparing code for debugging” session but this time she emphasized on usage of the enterprise templates, Cruise control (build management) and following Sprints style life cycle approaches.
The big question which was posed in the session was, “Why unit testing?” The answers which came from audience was as follows.
Providing unit testing guidelines, Kathleen dug into the team system unit testing tool which raised an important question of, who is using team system.
Audience ubiquitously said that they are unable to take advantage of the Team System unit testing tools because of the pricing and still working with the open source alternative, NUnit. The speaker recognized this as a problem and asked us to blog about it, hence here it is. I believe testing is an integral part of SDLC and to capitalize on it might seem like a good idea but in the long run, it is going to hurt the platform.
There were several other good sessions for instance designing distributed application using the application designer. Pertaining links are as follows.
Designing a Distributed Application using the Application Designer
Designing Applications with Application Designer
Workflow Across Distributed System Designers
Mark Miller @ DevXpress stall in the expo.
During the ice-cream break we got the tasty Häagen-Dazs and then headed to the Q&A closing session.
With the questions as straight as
I found the Q&A session to be a big disappointment. The questions were not being taken seriously and there was virtually no Microsoft representative on stage to take the lead and answer things in a decent appropriate fashion. Some speakers did a good job in explaining the future strategy and “why’s” of things but overall it wasn’t nearly as good as last year’s Q&A.
With Alex Homer
Digital Guru Book Store
Conference presentation updates are available here.
]]>Wednesday was a good day @ dev connections; interesting, informative, useful talks all day long. The details of talks I attended follows but first let me tell you about a quote I found on a session attendee’s T-Shirt yesterday.
#!/usr/bin/perl
print "Content-type:text/html\n\n";
@a=(Lbzjoftt,Inqbujfodf,
Hvcsjt); $b="Lbssz Wbmm"
;$b =~ y/b-z/a-z/ ; $c =
" Tif ". @a ." hsfbu wj"
."suvft pg b qsphsbnnfs"
. ":\n";$c =~y/b-y/a-z/;
print"\n\n$c ";for($i=0;
$i<@a; $i++) { $a[$i] =~
y/b-y/a-z/;if($a[$i]eq$a
[-1]){print"and $a[$i]."
;}else{ print"$a[$i], ";
}}print"\n\t\t--$b\n\n";
I’ had to google it right there and then and it turned out to be the following quote of Larry Wall.
"The three great virtues of a programmer:
Laziness, Impatience, and Hubris.
-- Larry Wall"
A Data Driven Approach to internationalization with ASP.NET
Rick Strahl
We have been managing multi-lingual (bi-lingual) applications for over two years by using resource files. As easy at they sound, resource files are not all that great. The management, the changes, the satellite assemblies and providing that there is no auto-extraction of elements in 2003, they could be quite painful. Therefore Rob and I were really looking forward to this session and were not disappointed. Rich did an excellent job explaining the internationalization in a non-trivial, in-depth style. His presentation included (but was not limited to) the following topics
Rick highly recommended the following book from Addison Wesley
.NET Internationalization (Addison Wesley)
References and Links
ASP.NET 2.0 Navigation
David Sussman
Last I saw David speak was in 2003 in a London .NET User group meeting. This time he has flown across the pond for our user group meeting (Thanks David) and talked to us about navigation in ASP.NET 2.0. The topic was interesting and different because it was not a demo of Sitemap data source / controls of ASP.NET 2.0 but more like real world scenarios, making it data driven etc. David discussed topics like ASPXMLSitemap provider, handling of nodes, gotchas, using treeviews, adapter framework, staticsitemapprovider, multi-threading and locking when explicitly handling the paint, using cache invalidation for posting the updates, CSS Menu and much more to list here.He highly recommended [Danny Chen]- Blog of an ASP.NET QA tester blog for reading up on ASP.NET 2.0 features and issues.
The samples will also be available from his website. http://ipona.com/samples/
For the presentation download, David has said that he is going to clean up the code and will upload it on the conference website shortly. Looking forward to play with his samples and build a new sitemap provider from, lets say an object data source reading from a menuing web service! Lame? Or cool…you decide.
The home of Al and Dave
ASP.NET 2.0 Illustrated
Layout and Navigation in Windows forms 2005
Kathleen Dollard
“Winforms are going to stay; they still have a life of about 3-5 years before WPF takes over” says Kathleen Dollars during her powerful presentation on Layout and Navigation in Winforms during which she presented tons of useful information on the following
ASP.NET 2.0 tips and tricks
Rob Howard
Rob Howard, former Microsoft ASP.NET team member discussed multitude of cool techniques, tips and tricks during his presentation including but not limited to
Rob Howard's Blog
code.CommunityServer.org
Writing Reliable Code with .NET Framework 2.0
Stephen Toub
This was an in-depth, down to the CLR insightful session providing that you do “unsafe” development otherwise its still something to keep at the back of your head while development. Steve discussed topics like managed debugging assistants, ThreadAbortException, reliability MDA, PrepareConstrainedRegion, safe handles, handle recycling attacks, reliability constraints, escalation procedures, constrained execution regionsm fail fast etc.Very interesting things to explore; Steve’s articles and blog links are as follows.
Stephen Toub’s blog
High Availability: Keep Your Code Running with the Reliability Features of the .NET Framework (MSDN Magazine)
.NET Matters: Debugger Visualizations, Garbage Collection (MSDN Magazine)
Bug Bash: Let The CLR Find Bugs For You With Managed Debugging Assistants (MSDN Magazine)
Chalk Talk Session – Ajax.NET
Microsoft Corp.
The chalk talk session was a last minute announcement from 7:00 – 9:00. The topic was good but the speakers lost us in first ten minute so Rob, Ajit and I ended up heading to Mandalay Bay Buffet where tasty salmon was waiting for us.
Alex Homer addressing the Enterprise Library
Brian Noyes on Windows Workflow foundation.
The updated slides and samples for devConnections are/will be posted here.
VS.NET Connections
http://www.devconnections.com/updates/LasVegasFall%5F06/VS%5FConnections/
ASP.NET Connections
http://www.devconnections.com/updates/LasVegasFall%5F06/ASP_Connections/
Following is the order in which I attended the sessions and some details about each of them.
Web Development of IIS 7.0. Integrating IIS into ASP.NET Development Process
Eric Woersching and Andrew Lin
Eric demonstrated Microsoft’s new approach of integrating ASP.NET with IIS 7, the new and improved control panel and ease of tasks administration with the new IIS console.
Their presentation included
He recommended www.IIS.net as a prime resource for all things IIS 7.0 and ASP.NET.
Be more productive with SQL Server 2005 tools
Michael Raheem
This was a developer focused and quite informative session about SQL Server 2005 tools.
Michael showed demos for SQL Server Management Studio, SQL Agent, Profiler and Database Engine Tuning Advisor. If you have been using SQL Server 2005 or its client tools for some time now, you probably already know part of these things but some of the things I found new or cool are listed below.
This was more of a demo session in which Mike demonstrated different features of SQL 2005 tools.
I had to go for our company’s data center visit to I ended up missing lunch and 1:30 sessions. The next session I attended was the following.
Data Warehousing with SQL Server 2005
Eric Hanson
I was quite interested in learning the basics of data warehousing using SQL Server 2005 so I decided to take this session and it was well worth it. Eric Hanson described best practices for relational data warehousing with SQL Server 2005 along with the following.
His suggestions about not creating PK and FK’s on large warehouse DB’s to speed up ETL too some time to settle in. Similarly the idea of using OLEDB instead of SQL managed provider in events of imports; quite an interesting topic but when I left the session, I was equating flat files with DW approach, bizarre, isn’t it?
Tips & tricks for building websites with Visual Studio 2005, ASP.NET 2.0 and IIS 7
Scott Guthrie
For those of you who know Scott Guthrie, unlike most of the other product managers he is a hardcode development guru at heart and an excellent presenter. His sessions are no fluff, period. Like Rob said, “if you miss something during his session, you know something else you didn’t know is coming shortly”. Scott’s presentations are a balance of demo’s and power points, the best I have seen so far.
This particular presentation was full of ‘wow’ and ‘aha’ features, even for a topic like ASP.NET 2.0 which has been presented many times now. Even though Scott focused on Ajax feature-set during most part, he also provided a non-trivial discussions of master pages, themes/skins, site navigation, SQL output caching, personalization, membership, role management, Web site administration, IIS7 management and Web deployment process. I came in quite late after attending the data warehousing session but from what Rob and Ajit said, it was quite interesting.
Scott said he will be posting the slides and sample source on his blog. His blog can be found here.
http://weblogs.asp.net/scottgu/
Developing Data Driven Applications with .NET Integrated Language Query (DLINQ)
Scott Guthrie
This was quite an interesting topic and spark up a debate. Rob got all hyped up about it seeing how cool it was and kept saying that “this will revolutionize the way we code” and “here comes the demise of all ORM tools, I can just see it”. However Ajit was skeptical of having bunch of DLINQ statements laying around and felt like it won’t be a good enterprise architecture, analogous to having dynamic SQL in the code. I was thinking more towards
How does it work under the covers: While doing a project recently I got a chance to actually run reflector on DLINQ assemblies to see what it really does? Common understanding is that it builds a SQL query and let the relational engine of SQL server 2005 take over however I believe its wrong. From what I saw it provides its own set of relational operations and perform them on the returned result set, I have to further investigate it.
Further details on LINQ from Scott’s blog on the following links.
Tips/Tricks and LINQ Slides+Demos from my Talk in Dallas
Using LINQ with ASP.NET
Using DLINQ with ASP.NET
DLINQ with Stored Procedures
Tip/Trick: Handling Errors with the UpdatePanel control using ASP.NET AJAX
Later on there was vendors exhibition in the expo hall from 7:00 -8:00 PM and Microsoft unplugged night later during the evening. We got bunch of swag including T-shirts (special thanks to xmlspy guys), product DVD’s, cool toys and so on. Code Smith rep has almost promised me a license so I’m looking forward to it.
The internet kiosk @ DevConnections.
The Three Musketeers; Adnan Masood, Ajit Kumar and Rob Walling.
Microsoft @ the Expo Hall
Microsoft Unplugged Event.
Crew filming about Pet-Peeves you ever had with Microsoft.
Looking forward to another busy learning day…
]]>My first session this morning was Ken Getz’s Windows
Forms, Beyond the Basics. The agenda of the session comprised of the following four
topics:
During the first half of the session, Ken Getz did a great job in explaining the first two topics; Asynchronous programming with windows forms and Graphics with GDI+. In a Threading 101 way, he provided an in-depth explanation of performing day to day multi-threaded activities without touching System.Threading namespace. The topics of context switching, time slicing and thread mapping are sometimes counter intuitive however with just the right amount of code, examples and demos, it was made quite interesting and easily understandable. Along with a thorough explanation of background worker component, he also discussed three timer controls provided with .NET framework (windows.forms.timer, System.Threading.Timer and System.Timer.Timer) and their appropriate usage in preemptive, deterministic and cooperative task management.
WMI -
Windows Management Instrumentation (WMI) is a powerful tool which can be
used with Visual Studio.NET to associate raw power of machine related
operations with .NET framework. Ken gave a demo about how can an application
determine if web server status has been changed (stopped, started, re-started).
I asked Ken about his code samples and he emailed me back saying
“Here are the three projects I made up on the fly this morning. The rest are posted at www.mcwtech.com/2006/devconnections.”
-Ken
Ken Getz on the fly presentation slides and source can be downloaded from here. His blog can be found here.
Since Robert Green’s Data Binding was not exactly beyond basics, with organizer’s permission I moved in to Dino Esposito’s “Developing Rich and Interactive ASP.NET Controls”.
Dino’s presentation was mostly focused on the following four
topics.
• Building controls from scratch
• Building controls from existing controls
• Injecting script
• Reflecting on ASP.NET AJAX Extensions
In his usual style, Dino dissected the ASP.NET user controls and kept the emphasis mainly on the scripting and code generation for state persistence by the controls.
Click to download the presentation slides and source. Thanks for Dino to providing it.
Due to an assignment, I had to miss the evening Microsoft
keynote, heard from Rob it was ok. Last but not least we got a bunch of goodies in a cool bag; more swag
on the way.
Hopefully there would be no duplicate network SSID issues
tomorrow. Gotta catch some sleep to get ready for tomorrow.
Also, Kim Greenlee of Digipede networks has recently spoken
to our user group about Concurrent
Software Development. Her presentation comprised of two parts; a. best
practices in concurrent development and b. grid computing 101. Kim explained
that In order to distribute a task to grid, we should be able to decompose it
into executable segments which can be distributed on the grid. However, the
distribution should be justified for instance ‘task A’ maxes out CPU on the
machine, it would not be beneficial to make it multi-threaded since it will
only increase the context switching; this task when distributed across
different CPU’s would perform better and would be more efficient. Kim
elaborated on why threading is non-deterministic and how a single statement, as
we see it, can result in multiple lines of IL instructions. She emphasized that
now that CPU power is not following
Her presentation slides and sample code can be downloaded from here.
A Day in the Life Kim Greenlee’s blog
Amazon.com Amazon Web Services Store: Amazon EC2 / Amazon Web Services
]]>
MSR Turned 15
http://research.microsoft.com/aboutmsr/15years/default.aspx
Grid Computing: Powers Unfiltered by John Powers
http://powersunfiltered.com/
Grid Computing: dan
ciruli's West Coast Grid
http://westcoastgrid.blogspot.com/
Grid Computing: A Day in the Life
http://krgreenlee.blogspot.com/
And who would not love LISP, it’s so simple and self explanatory
by
; function select_min(L:list of integers):integer
; returns the minimun interger in the list
;
; Invariants:
(defun select_min(L)
(cond ((null (rest L))
(first L ))
( t (let ((min
(select_min (rest L))))
(cond ((<= (first L) min) (first L))
(t min))))))
-
Do they sell food at grocery store?
-
“It’s my pet peeve but why do people get all hyped up when Google does something? Code search for example, Koders has been doing it all along and much better!”
-Kim Greenlee
“I’m in coma”
-Richard Trinh when mentioned that Tim is in band-aid and
Jeff is in panic mode for fixes.
]]>
5th
November - Pre-Conference Workshop - Windows
Forms—Beyond the Basics by Ken Getz
Conference
Sessions (November 6-9)
“So, the movie would be like, Einstein actually found a more
sophisticated and better explanation for the theory of relativity but for some
reason, his life was in jeopardy if he releases this new set of equations immediately.
Therefore, he encrypted the equations, hid them in his daughter’s diapers and
put her up for adoption. Hence the quest of our modern day hero to first search
for Lieserl, her adoptee parents and then search for the diapers for the special
theory of relativity.”
The Einstein’s Code!
The Quest for Lieserl & Equations in the Lost Diapers.
The same typo was spotted by Dr. Homayoun Seraji as well.
Dear ASP.Net Pro editors,
I believe there may be a small typo in one of your formulas in your September
2006 article Naïve Bayesian Classification Using C# and ASP.NET. If you look at the bottom of the left column
on page eight, you'll see the formula:
P(A|X) = (0.3) (0.5) / 0.037 = 0.405405... ~40.5%
The 0.3 should be 0.03 and the formula should read:
P(A|X) = (0.03) (0.5) / 0.037 = 0.405405... ~40.5%
Normally I'm not such a typo-Nazi - great article, by the way. I may have
to start subscribing if you're going to do more math and
statistically/probability
Greg Pyatt
Information Systems Program Analyst
The Boeing Company
Beside Web 2.0 and
This 250 page book is divided into nine chapters and in
mainly three logical sections.
Clarity is the one of the major traits of Jeff’s writing; the book is written in no-nonsense developer friendly language; it employs effective use of diagrams, selected listings and notes to convey its message in short and concise manner. The book also addresses common SOA myths and tries to bust them. For instance, how can MSMQ and web services co-exist and can even be used in the same enterprise solution? For most people, these technologies including Enterprise Services and remoting sound like rivals. Author debunks these ideas by providing examples and scenarios which explain service orientation as an architectural concept instead of a development framework. This book goes beyond the common realm of design and further explains that SOA is not tied together with SOAP/XML web services but can be implemented using any distributed communication protocol providing that it supports loosely coupled message exchange and other primary SOA traits discussed above.
Since I’ve read the first edition and have worked with WSE
3.0 in the past, I jumped right to the chapter 9 regarding WCF and was not
disappointed. Jeff has done a fairly good job explaining the nuts and bolts of
Windows communication foundation however it’s still the tip of iceberg since
the book is not mainly about windows communication foundation. (For a
detailed study of WCF, please check David Pallman’s Programming WCF (Indigo) by
MS Press.)
If you are development manager who wants to grasp the WSE
concepts to know what can be done in the world of advance web services, chapter
1-5 will give you well rounded foundation and understanding while chapter 9
would help you building a migration strategy to WCF. For an application architect or an API
developer, you’ll find this book specially interesting and valuable because of
its architectural approach. As an example, there are numerous times that as a
developer you build request and response objects for your web service
components with end to end security in mind. Client informs you that SSL won’t
be a silver bullet anymore since they have to do re-routing between different
layers of application process. Sound like user name token manager
authentication and SOAP headers to me, no problem! Open page 161 and code it
away. It will enlighten you about the differences between HTTPS and WS-Secure
Conversation, very well done. Even your IT folks may admire a complete step by
step direction of setting up Kerberos authentication on Windows Server 2003.
The source code provided with the book is converted using the Visual Studio.NET 2005 wizards, contains UpgradeLog.XML and not really reflect the WSE 3.0 changes. For instance building Chapter8\WSSecureConvService\App_Code\StockTrader.asmx.cs throws warnings such as
Microsoft.Web.Services3.SoapContext.Security' is obsolete: 'SoapContext.Security is obsolete. Consider deriving from SendSecurityFilter or ReceiveSecurityFilter
and
// Use the SCT to sign and encrypt the response
SoapContext
responseContext = ResponseSoapContext.Current;
responseContext.Security.Tokens.Add(sct);
Highly recommended!
The source code can be downloaded from the
following link
Download
Source Code File
Also, you can read a sample chapter from here.
Ch.
04 - Design Patterns for Building Service-Oriented Web Services
-Vince Chan
-Neal Hardesty
“Why don’t we do it like,
if
<retailername>
{
Fee = 3.35
}
-
|
|
IEEE INTELLIGENT
SYSTEMS Special Issue on Argumentation Technology
Submission deadline: 2 Mar. 2007
A PDF version of this the call is available here:
The theory of argumentation is a rich, interdisciplinary area of research lying
across philosophy, communication studies, linguistics, and psychology. Over the
last few years, formal models of argumentation have been gaining increasing
importance in artificial intelligence, and have found a wide range of
applications ranging from specifying semantics for logic programs, to natural
language text generation, to supporting legal reasoning, to facilitating
multiagent dialogue and negotiation.
Topics including, but not limited to,
Submissions due for review: 2 Mar. 2007
Notification of acceptance: 27 Apr. 2007
Final version submitted: 22 June 2007
Issue publication: Sept./Oct. 2007
PADM'06 - IEEE International Workshop
on Privacy Aspects of Data Mining
December 18, 2006
Privacy is essential for the provision of electronic and knowledge-based services
in modern e-business, e-commerce, e-government, and e-health environments.
Nowadays, service providers can easily track an individual’s actions,
behaviors, and habits. Given large data collections of person-specific
information, providers can data mine to learn patterns, models, and trends that
can be used to provide personalized services…. (read more)
Important
dates
===============
o July 30, 2006: Submission deadline
o September 8, 2006: Author notification
o September 29, 2006: Submission of Camera-ready papers
o December 18, 2006: Workshop
Topics
================
The workshop will seek submissions that cover aspects of privacy protection
solutions and threats as they pertain to various data mining endeavors. The
following comprises a sample, but not complete, listing of topics:
Taking Place On Sep 5, 2006, As Part Of ECCBR 2006 - 8TH EUROPEAN
CONFERENCE ON CASE-BASED REASONING,
The paper submission deadline of our workshop has been extended to
JUNE 11. For detailed information, please visit the workshop website at http://wwwiti.cs.uni-magdeburg
The website thumbnail view tells you all about what websites are open, a live version of print preview.
and yes, its ironic to have www.ie7.com pointing to FF and Clipboard exploit (Retrieve Clipboard Text To A Web Page With Javascript) still there.
References
So far, I'm loving it!
PCMAG Review Dell Latitude D610
Dell Latitude D800 review by PC Magazine
Dell Latitude D810 review by PC Magazine
Forbes Magazine in its January 2006 issue ran its cover story titled “A Super Computer for your living room”. This discusses the IBM cell processor powered by eight co-processors with their own memory being used in multimedia. This helps providing realistic imaging by realtime rendering as it states
“Cell crunches through millions of lines of topographical and photographic data per second to paint topographically accurate, photo-quality pictures at a movie quality 30 frames per second. On a similar program a pentum take two minutes to sketch a single frame.” –Forbes, Jan 2006.
Beside the chip’s power whenever it comes to large scale parallel processing, Linux is usually the first name which comes to mind. Even though Microsoft is trying to catch up, it’s seems already a bit late in the OS/hardware game. However, while assisting a friend’s Masters thesis for “Grid computing with XML web services”, I came across several decent Microsoft application frameworks and services augmenting the grid computing. Grid computing is a form of distributed computing infrastructure “that provides the ability to perform higher throughput computing by taking advantage of many networked computers to model a virtual computer architecture that is able to distribute process execution across a parallel infrastructure.” (wikipedia). Microsoft’s early initiatives on Grid are explained in this Jim Gray’s talk and the future eScience workshops have augmented the blitz. This list of services and frameworks comprises of TerraService.net which is a poster child for both eGovernment and for .NET, SkyServer.sdss.org or SkyQuery.net, windows clustered version, Web services resource framework (WSRF.NET Webcast: Grid Computing Using .NET), and last but not least, Alchemi.
Alchemi is defined as “an open source software framework that allows you to painlessly aggregate the computing power of networked machines into a virtual supercomputer (computational grid) and to develop applications to run on the grid.”
Distributed Fractal Generator is an interesting example and with a little setup, programming for a grid can be as intuitive and simple as following sample taken from Alchemi’s user guide.
class MultiplierApplication
{
static GApplication ga;
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("[enter] to start grid application ...");
Console.ReadLine();
// create grid application
ga = new GApplication("localhost", 9099);
// add GridThread module (this executable) as a dependency
ga.Manifest.Add(new ModuleDependency(typeof(MultiplierThread).Module));
// create and add 10 threads to the application
for (int i=0; i<10; i++)
{
// create thread
MultiplierThread thread = new MultiplierThread(i, i+1);
// set the thread finish callback method
thread.FinishCallback = new GThreadFinish(ThreadFinished);
// add thread to application
ga.Threads.Add(thread);
}
// set the application finish callback method
ga.FinishCallback = new GApplicationFinish(ApplicationFinished);
// start application
ga.Start();
Console.ReadLine();
}
References & Further Reading