This is a cut/paste of the material that was posted to my old blog site. The old site was nuked at my request. Some of the links may not work...

Demonstrations at Tech.Ed 2005 Australia

Well Tech.Ed Aus 2005 is now over. What a week! I had an opportunity to demonstrate some of Microsoft's great UNIX interoperability capabilities in my UNIX Interop and Migration session.  Thanks to all of you who attended. I hope you found it interesting and went away with some new ideas. I also had the good fortune to have René Michau of the National Australia Bank join me to elaborate on the people and process aspects of integrating UNIX and Windows support teams. Nice work, thanks René!

All the demos worked (of course! Well one with a little audience participation - pointing out my typo).  If you're interested in more information about any of these demonstrations please drop me a line.

  • Windows Server 2003 UNIX User environment provided by SFU 3.5
  • Windows Server 2003 NFS Client using SFU 3.5
  • Windows Server 2003 NFS Server using SFU 3.5
  • Windows Server 2003 AD as a NIS Master using SFU 3.5
  • UNIX host as an AD domain member using Vintela VAS
  • Monitoring UNIX syslogs with MOM 2005
  • Porting UNIX/C applications to the SFU 3.5 Interix subsystem
  • Extending UNIX/C code with .Net
  • Wrapping UNIX/C code with .Net Web Services
  • What's new for UNIX Interop in Windows Server 2003 R2

Thanks.

Chris.

posted by chris.green with 0 Comments [Edit]

I didn't know I was addicted until...

I have just spent 4 days in "the hills" away from it all - including Internet access. I am amazed at how dependent I have become 24/7! I have been using the Internet for work since 1987ish but on the domestic front I've only had broadband always on since 2002ish. In those three years my whole family has become dependent on the web. Many times during those 4 days away we caught ourselves saying "I'll just check the {weather|email|webcam|news|search|...}" then realizing we couldn't. Bring on global wireless broadband! I'm ready for my implant :-)
posted by chris.green with 0 Comments [Edit]

I used Apache to prove to myself that SFU works

Last week I conducted a simple test of Microsoft's Services For UNIX (SFU) free download. Being an old UNIX guy I was a little skeptical at the real capability SFU offered. I am pleased to say I downloaded the Apache HTTPD Server UNIX source (httpd-2.0.53.tar.gz) from apache.org and had a UNIX Apache web server compiled and running under SFU on Windows XP Pro in minutes! Here are some little tweaks I had to make to get it running...

------------
Use this command line to set build vars

CPPFLAGS="-D_ALL_SOURCE -I/usr/local/include" \
CXXFLAGS="-D_ALL_SOURCE -I/usr/local/include" \
CFLAGS="-D_ALL_SOURCE -I/usr/local/include" \
LDFLAGS="-L/usr/local/lib" \
./configure --prefix=/opt/apache

-------------
Add "|| defined(__INTERIX)" to the #if defined... line in the server/mpm_common.c file to avoid the _setgroups undefined error message while linking

#if defined(QNX) || defined(MPE) || defined(BEOS) || defined(_OSD_POSIX) || defined(TPF) || defined(__TANDEM) || defined(OS2) || defined(WIN32) || defined(NETWARE) || defined(__INTERIX)

-------------
make install

-------------
Change "User nobody" to a valid Windows account name (preferably one with low privileges in {INSTALLDIR}/conf/httpd.conf

-------------
{INSTALLDIR}/bin/appachectl start

Simple as that!

J

posted by chris.green with 0 Comments [Edit] Rated Excellent [5 out of 5].

Keep a journal and publish you work

I just noticed Brian Groth's (http://blogs.technet.com/bgroth ) post linking to Tim Bray's blog entry http://www.tbray.org/ongoing/When/200x/2005/03/08/BloggingIsGood and it reminded me of what Clifford Stoll (http://www.ocf.berkeley.edu/~stoll/ ) once said to me (and the other 300 people in the auditorium :-)

"If you don't write it down it didn't happen, and if you don't publish it you didn't do it."

Stoll kept (keeps?) a journal on his desk and wrote notes each day. This came in very handy when he noticed some odd behavior on one of his UNIX systems one day. It turned out to be a KGB hacker! Get the full story in the Cuckoo's Egg (http://www.amazon.com/exec/obidos/ASIN/0743411463/qid=1110634582/sr=2-1/ref=pd_bbs_b_2_1/104-1876256-4386316).

The essence and the moral of his story is (if I may paraphrase): Keep a journal and publish you work :-)

Good advice I think.

Chris.

posted by chris.green with 0 Comments [Edit]

Using SFU? What do you think?

Do you use the Microsoft Services for UNIX interoperability toolkit?(http://www.microsoft.com/windows/sfu/)

Does it meet your needs?

Any problems?

I've spent quite a bit of time looking at it lately and find it quite comprehensive and robust.

Thanks.
Chris.

posted by chris.green with 2 Comments [Edit]

Migrating UNIX to Windows?

Are you migrating (or have you migrated) any UNIX apps or whole platforms to Windows? If so what type of apps/platforms.

I'm trying to guage the actual demand for UNIX/J2EE migration skills.

Thanks for your feedback.

posted by chris.green with 1 Comments [Edit]

Are developers special?

I recently read Robert Bogue's thought provoking article on Developer Specialisation (http://www.developer.com/design/article.php/3439651) - an excellent read. I agree with the need for specialisation. The field is so broad these days, specialisation seems inevitable – just like other engineering and science fields.

I wonder if there is a specialist role missing in Robert’s article – the role of the systems integrator. Traditional EAI and contemporary WS development would fit into this category. Maybe it’s captured in Roberts's "Technical Developer" category.

Just a (another) thought J

 

posted by chris.green with 0 Comments [Edit]

The Newbie Architect

Does this look at all familiar? Can you help?

George: You won't believe this Jerry; I've landed an "Architect" position at TheFicticiousVeryBig Co.

Jerry: Wahoo! That's excellent George, well done. From Developer to Architect. When do you start?

George: Next Monday! I'm so excited. There's just one small catch ...

Jerry: Mmm.. What's that?

George: I don't know what an "Architect" is supposed to do!?

Jerry: What!? Well how on Earth did you get the job? Don't tell me - let me guess. The "Architect" title is used and abused by many and understood by few. My guess is that your interviewers assumed you shared a common understanding of the role. Right?

George: You may be on to something. So what does an Architect do? I need a plan Jerry. Can you help me prepare for Monday?

Jerry: Maybe. We don't have much time. Meet me at the coffee shop for lunch. We can discuss your new role then.

So what does an (IT) architect do?
Can you help George?
How do you think Jerry should explain the role to George?
What does an architect do on the first day on a new project at a new organisation?
What should George's plan be for day 1?

By the way all this is fictitious of course. Any similarity to real or other entities is unintended and purely coincidental; and this posting is provided "as is" with no warranties and confers no rights.

posted by chris.green with 6 Comments [Edit]

Web Services – Life on the Edge not the Inside.

 

This is as much a note to myself as it is a public blog entry. A word of advice - don’t try to build systems with Web Services.

 

In my travels I have seen a number of engineers and architects with good intentions, attempt to use HTTP/SOAP/WSDL at every interface without considering the need for the interface to be visible beyond the system boundary. In many cases it’s just plain wrong to use the WS technologies within the system boundary.

 

There is no WS language that can be used to implement algorithms or business logic. The growing number of Web Services specifications only provide a means for describing system interface contracts and data exchange formats. This is a simple but easily overlooked characteristic of the WS-* movement.

 

There appears to be a common misconception that Web Services are the new panacea for systems development. Well history does repeat and today’s panacea can easily become tomorrow’s anti-pattern. For example, did you witness an over use of XML for data transfer and storage in enterprise applications in the early days of XML adoption? I have seen designs (and implementations unfortunately) that needlessly use XML over HTTP at all subsystem interfaces. The end result is inter-subsystem communications bottlenecks that ultimately result in poor overall system throughput.

 

Common syndromes of technology de jure miss use that come to mind are:

  • Object Oriented Design - the opaque design technology. OOD emphasises inheritance, polymorphism, encapsulation and data hiding. Strict adherence to this emphasis can lead to the “inherit everything” syndrome. Unfortunately over use of inheritance can lead to the creation of complicated dependency chains that can have negative polymorphism ramifications when base classes are modified. The contemporary view is to design using class composition not inheritance.
  • CORBA – the distributed systems design technology. CORBA emphasises interface centric design which can lead to the “everything is remote” model. The focus on the interface is spot on in my view but the temptation to over use remote interfaces can lead to unnecessary network or IPC chatter and very busy ORBs. IDL ambiguities and version synchronisation seem to have hampered the wide spread adoption of CORBA - with the exception of Telco BSS/OSS systems.
  • XML – the data centric design technology. XML emphasises data portability which can lead to the “all data must be portable” syndrome. Data portability is only necessary when system or subsystem data has meaning beyond the current system boundary, which should be applicable to a minimal number of datasets.
  • J2EE – the platform independent design technology. The EJB model for business logic implementation, which quite frankly does not appear to be holding mindshare, emphasises portability and platform independence. The concept of expressing your company’s business logic in a vendor neutral implementation has great appeal, but the reality is that the need to port between J2EE application servers arises very infrequently. EJBs centric designs for the sake of conformant J2EE architectures can lead to "all business logic in EJB" syndrome and can result in a complicated abundance of distributed runtime objects with no real gain other than for the application server vendor. By the way take it from me J2EE vendor lock in is real. Most of the important functionality of a J2EE application, such as transaction management, messaging, database access, is vendor implementation specific. Subtle design choices can lead to inadvertent vendor lock in which can be pretty difficult to undo.

 

So, in summary, understand the different characteristics and requirements of sub-system and system boundaries and use the appropriate technologies for each. Loosely coupled well defined sub-system boundaries do not need HTTP/SOAP/WSDL to be architecturally sound. If, after careful analysis, Web Service façades are deemed necessary then so be it but the default implementation choice should be good old, fast, native wire implementations.  Native interface implementations are not brittle if the interface is well defined.

 

 

I’m all for the use of Web Services and the amazing new potential WS-* brings to our industry. However, like all relatively new technologies we must conduct some experiments in order to fully understand their appropriate use; and as is usually the case we have no time to do this other than in the heat of systems design and implementation. So take a moment to look back on our history of over enthusiasm for the next big thing and use the results of our previous experiments to make prudent design decisions today.

 

Just a thought J

 

This posting is provided "as is" with no warranties and confers no rights.

posted by chris.green with 3 Comments [Edit]

.Net/J2EE interop

Are you using J2EE to .Net interop technologies?
If yes, what specifically? Please let me know.

I am one of the many recently converted - from specific implementaiton technologies, such as J2EE, to.NET and the broader opportunity that WEB SERVICES provides.

I have a long and deep background in UNIX and J2EE and recently (a year ago?) began to truly understand the value of Web Services and the profound change the WS-* specs could have on our industry.

My current focus is interoperability, largely based on web services technologies but I'm also considering other technologies. For example I'd like to complete a matrix with proven solutions and guidance.

Eg.

.Net and Java protocol interoperability matrix Server
COM+ .Net Remoting HTTP Java RMI SOAP CORBA JMS SMTP FTP
Client COM+                
.Net Remoting                
HTTP                
Java RMI                
SOAP                
CORBA                
JMS                
SMTP                
FTP                   

If you have an interest in interop or have experiences you'd like to share please drop me a line.

Looking forward to hearing from you.

This posting is provided "AS IS" with no warranties, and confers no rights.

posted by chris.green with 7 Comments [Edit]