2008-12-28

2008-12-29 Sunday - Recommended Books for Enterprise Architecture

An email arrived today from someone in Australia, asking for recommendations on Enterprise Architecture books.

The topic is so broad that I am almost hesitant on where to begin. It seems likely that this is a person who is beginning their journey toward architect from the perspective of a software developer background - and wishes to develop a foundation of knowledge and expertise with a broader architectural perspective.

Security is itself such a deep and specialized topic that I will defer touching upon recommendations for that area of enteprise architecture [for now].

To be sure, this list is incomplete - but please recognize it is a first draft - and is subject to change as I have more time to reflect...


The first book that comes to mind, Martin Fowler's Patterns of Enterprise Application Architecture:





The practice of enterprise application development has benefited from the emergence of many new enabling technologies. Multi-tiered object-oriented platforms, such as Java and .NET, have become commonplace. These new tools and technologies are capable of building powerful applications, but they are not easily implemented. Common failures in enterprise applications often occur because their developers do not understand the architectural lessons that experienced object developers have learned.

Patterns of Enterprise Application Architecture is written in direct response to the stiff challenges that face enterprise application developers. The author, noted object-oriented designer Martin Fowler, noticed that despite changes in technology--from Smalltalk to CORBA to Java to .NET--the same basic design ideas can be adapted and applied to solve common problems. With the help of an expert group of contributors, Martin distills over forty recurring solutions into patterns. The result is an indispensable handbook of solutions that are applicable to any enterprise application platform.

This book is actually two books in one. The first section is a short tutorial on developing enterprise applications, which you can read from start to finish to understand the scope of the book's lessons. The next section, the bulk of the book, is a detailed reference to the patterns themselves. Each pattern provides usage and implementation information, as well as detailed code examples in Java or C#. The entire book is also richly illustrated with UML diagrams to further explain the concepts.

Armed with this book, you will have the knowledge necessary to make important architectural decisions about building an enterprise application and the proven patterns for use when building them.

The topics covered include:

  • Dividing an enterprise application into layers

  • The major approaches to organizing business logic

  • An in-depth treatment of mapping between objects and relational databases

  • Using Model-View-Controller to organize a Web presentation

  • Handling concurrency for data that spans multiple transactions

  • Designing distributed object interfaces




  • The second book, Thomas Erl's Service-Oriented Architecture, Concepts, Technology, and Design:





    This is a comprehensive tutorial that teaches fundamental and advanced SOA design principles, supplemented with detailed case studies and technologies used to implement SOAs in the real world.

    Erl uses more than 125 case study examples and over 300 diagrams to illuminate the most important facets of building SOA platforms: goals, obstacles, concepts, technologies, standards, delivery strategies, and processes for analysis and design.


    My third recommended book, although a bite dated (2003) is Enterprise Integration Patterns, by Gregor Hohpe and Bobby Woolf:




    Utilizing years of practical experience, seasoned experts Gregor Hohpe and Bobby Woolf show how asynchronous messaging has proven to be the best strategy for enterprise integration success. However, building and deploying messaging solutions presents a number of problems for developers. Enterprise Integration Patterns provides an invaluable catalog of sixty-five patterns, with real-world solutions that demonstrate the formidable of messaging and help you to design effective messaging solutions for your enterprise.


    The Coad Series book, A Practical Guide to Enterprise Architecture, by James McGovern, Scott W. Ambler, Michael E. Stevens, James Linn, Vikas Sharan, Elias K. Jo, provides a nice concise general overview of many enterprise architecture topics:




    In my experience, many people that move into an architect role often let their technical skills lapse. Theory and strategy all too often consume the majority of the architect's time and attention. To maintain that technical edge, you need to keep your hands in the code and continue to maintain hands-on practical implementation knowledge.

    One practical book for this might be Mark D. Hansen's SOA Using Java Web Services:



    Or, the more recent, Service Oriented Architecture with Java: Using SOA and web services to build powerful Java applications, by Binildas A. Christudas:




    (not that I'm specifically suggesting Java as the only language - there are plenty of books on other programming languages that are just as applicable)

    To balance the above recommendations, I would throw in three additional must-reads:

    Scaling Software Agility: Best Practices for Large Enterprises, by Dean Leffingwell:




    Although the next recommended book may not appear to be relevant to the writer's inquiry - the concepts that are covered in Large-Scale C++ Software Design, by John Lakos, are so important to developing maintainable systems that I consider it an essential text.




    What architect can call their bookshelf complete without a solid book on algorithms?

    Introduction to Algorithms, by Thomas H. Cormen, is my preferred text:




    My final book recommendation for this list, although it has only recently been released (December 22, 2008), is Thomas Erl's newest book, SOA Design Patterns, which is also high on my own list of books to read next.







    The above is what I consider essential for the beginning of a solid foundation for an entperise architect. Beyond these initial stepping stones on the journey, there is the need to add a solid foundation in the areas of security, performance, and testing.

    Additional research topics for further study would include spending time developing expertise with the design of applications using:


    I've also assembled a short list of Cloud/Grid computing resources that may be of some interest.

    Update: 2008-12-30 Tuesday
    Martin Cooke and Vimal Bana contributed suggestions on a LinkedIn discussion of this topic that I thought were noteworthy.

    Martin noted the distinction between Enterprise Architecture and Solution Architecture:
    "Of course depends on what one means by 'enterprise architecture'. If it ('enterprise architecture') is the set of models required to support the development of IT Strategy in support of business strategy (as opposed to 'solution architecture' - the set of models needed to support the development of working solutions - in which case SOA, EAI, Data etc books are relevant) then I would recommend starting with an understanding of 'strategy' as understanding this ('strategy') gives purpose / defined outcomes / requirements to the 'enterprise architecture' activity."


    He also suggested a book, Strategy Maps: Converting Intangible Assets into Tangible Outcomes, by Robert S. Kaplan and David P. Norton:




    Vimal suggested Enterprise Architecture as Strategy, by
    Jeanne W. Ross, Peter weill, David C. Robertson


    2008-12-29 Sunday - Windows Recovery Tools

    I happened to visit PC World web site today and came across this article on their home page: Reinstall and Restore Your Windows PC in Eight Easy Steps

    Some of the following are mentioned in the article:

    PC World: Editor's Review of Norton Ghost

    PC World: Acronis True Image Home 2009

    PC World: DriveImage XML

    PC World: Editor's Review of [Ultimate Boot CD for Windows] UBCD4Win

    List of Tools on the Ultimate Boot CD for Windows - wow(!), nice(!)

    2008-12-27

    2008-12-27 Saturday - Business Development

    Business Development in Tumultuous Times



    I've lived through some tough business cycles: 1984, 1987, 1997, 2001-2004, and now 2008. 2009 is looking like it will be a very tumultuous year - and may exceed anything I've seen before.

    But I am very optimistic.

    Here's why: Just like we saw in the dot.com boom-bust cycle - too much money has been flowing into the wrong hands and was grossly mis-managed.

    We are where we are today because of Wall Street greed & malfeasance, Mortgages that were handed out like candy to children (nonsense like interest-only, adjustable rate), Credit Cards (given out like candy to children), and Real Estate (that was treated like a casino). What we are seeing in the news, the U.S. and world economies, and the global financial markets is simply the hubris, dross, and underbrush being burned away.

    What will remain will be weakened - but what will thrive afterward will be stronger and more sustainable.

    Companies and organizations will have to do more with less. They will have to do it faster (and better!) to stay competitive in this increasingly globally competitive marketplace. Poorly designed IT systems will kill or cripple companies that do not invest in improving their infrastructure. Poorly designed processes will be a crucial competitive dis-advantage. The false sense of comfort that many organizations have lived with - accepting sub-optimal performance from business units (and trading partners) - will no longer be par for the course.

    Growth will prevail, value will prevail, waste will not.

    Now is the time to sharpen your tools for increasing sales, for adding value.

    Here are some recommendations to help you prepare:

    Persuasive Business Proposals: Writing to Win More Customers, Clients, and Contracts




    The One-Page Proposal: How to Get Your Business Pitch onto One Persuasive Page




    Powerful Proposals: How to Give Your Business the Winning Edge




    Handbook For Writing Proposals




    Request for Proposal: A Guide to Effective RFP Development




    Writing Winning Business Proposals: Your Guide to Landing the Client, Making the Sale and Persuading the Boss




    Guerrilla Marketing for Consultants: Breakthrough Tactics for Winning Profitable Clients




    Federal Contracting Made Easy, 3rd Edition




    Successful Proposal Strategies for Small Businesses 4th edition




    Writing Killer Sales Proposals




    Million Dollar Consulting: The Professional's Guide to Growing a Practice




    Million Dollar Consulting (TM) Toolkit: Step-By-Step Guidance, Checklists, Templates and Samples from "The Million Dollar Consultant"




    Process Consulting: How to Launch, Implement, and Conclude Successful Consulting Projects




    The Ultimate Consultant: Powerful Techniques for the Successful Practitioner




    How to Acquire Clients: Powerful Techniques for the Successful Practitioner




    The Consultant's Toolkit: High-Impact Questionnaires, Activities and How-to Guides for Diagnosing and Solving Client Problems




    Also, you may want to consider subscribing to the following:
    Consultants News

    Consulting Magazine

    2008-12-26

    2008-12-26 Friday - Link Harvest

    Excel Financial functions for .NET
    This is a .NET library that provides the full set of financial functions from Excel. The main goal for the library is compatibility with Excel, by providing the same functions, with the same behaviour. Note though that this is not a wrapper over the Excel library; the functions have been re-implemented in managed code so that you do not need to have Excel installed to use this library.


    Microsoft F#, September 2008 Community Technology Preview
    F# is a type-safe, scalable language for the .NET platform that supports both functional and object-oriented programming. This CTP release includes the F# compiler and tools, as well as Visual Studio 2008 integration for F# development.

    2008-12-23

    2008-12-23 Tuesday - 2009 SOA Predictions

    2009 SOA Predictions

    (work in progress, more coming...)


    1. A shift in corporate IT's interests and spending - with more frequent references to Cloud/Grid computing - and less mention of SOA.


    2. Premise: Many corporate IT departments are already stretched thin with existing obligations and responsibilities to support their existing infrastructure and deployed applications.

      SOA is more complex.

      The effort to establish, communicate, train, support, sustain, and manage the infrastructure necessary to implement a SOA-enabling environment is an additional cost - in terms of staff time and budget costs.

      That additional complexity/cost/effort impacts the total cost required for the management of development, testing, and production environments.

      That additional cost/effort will exceed the technical capacity and financial budgets for many IT departments.

      Many organizations will be driven to offload the cost and burden to a 3rd party (Cloud/Grid vendors) - where the operating overhead can be spread across the subscriber base.


    3. SOA Consultants, Vendors, Writers...will attempt to drive a whole new set of buzz-words, perhaps abandoning the term SOA altogether, as they struggle to generate Sturm and Drang in their quest to sell more software, articles, books, and generate billable revenue.


    4. Premise: Without a strong perceived need/mandate for change, organizations are less likely to perceive a need for expensive consultants.

      Observation: Too many consultants appear to be mired in waging religious debates over their differences in defining the The One True Definition of SOA. The focus of the conversation needs to be refocused on the business value - not on the techno-mumbo-jumbo.


    5. UDDI will finally be recognized for the bloated pig that it is.


    6. Premise: The business need to get things done in as simple and painless a way as possible will finally convince the major SOA solution vendors that they need to deliver a registry-repository solution that is affordable, understandable, simple to use, and doesn't consume a significant percentage of the total SOA program budget. A "light" version of their products will be offered (which will more likely than not be based on a RESTful service model).


    7. Business managers will be driven to define an ROI for their SOA initiative before obtaining continued funding of the program.


    8. Premise: The cookie jar lid will be slammed shut on IT folks that just want to play with the latest software toys (just because it is "cool technology").

      I am extremely doubtful of any SOA justification based upon the claim/expectation of a high-level of service reuse. Loose coupling, perhaps (if you spend enough time getting the semantics of the messsage models right).

      Focusing on improving the processes and efficiencies of Enterprise Value Chains seems a better candidate approach for ROI justification.


    9. IT management of large-scale enterprise organizations will realize that they can't obtain the benefits of agility and reuse if their fundamental software development processes are still mired in chaos.


    10. Premise: If you don't have the fundamental processes nailed (e.g. Source Code Management, Iterative/Agile Development, Automated Testing, Continuous Integration Build, Issue/Bug Tracking, etc.) - then all that adopting SOA will do (with its greater complexity and number of moving parts) - will simply decrease the organization's agility and increase its inefficiencies.


    2008-12-22

    2008-12-22 Monday - Windows Vista - ISATAP adapter error

    Microsoft Support: Article ID: 932520
    http://support.microsoft.com/kb/932520
    On a Windows Vista-based computer or on a Windows Server 2008-based computer, the Microsoft ISATAP adapter appears with a yellow exclamation mark next to it in Device Manager, and you also receive an error message
    Symptoms:
    On a Windows Vista-based computer or on a Windows Server 2008-based computer, the Microsoft ISATAP adapter appears with a yellow exclamation mark (!) next to it in Device Manager. Additionally, when you open the properties dialog box for the device, you receive an error message that resembles the following:
    Windows cannot load driver (Code 31)
    (...)
    Resolution:"You can safely ignore this error message. This error message does not indicate a problem with the adapter. The adapter will continue to work correctly. "

    2008-12-21

    2008-12-21 Sunday - Link Harvest

    Will Cloud-based Multi-Enterprise Information Systems Replace Extranets?

    Servlet 3.0 Public Review Sparks a Debate

    The Gundersons get us ready for Basil, the robot of our dreams

    Interview with Linus Torvalds of The Linux Foundation

    Jim McCarthy's classic presentation to Microsoft: The 23 Rules of Thumb - here's a link to the rules broken down as 23.5 individual podcasts.

    I've caught a show on PBS a few times: Animusic - and have been amazed at the animation of musical instruments. Being a geek, I was curious what tools they use to do it.


    IBM Developerworks Library Series:
    Services-based enterprise integration patterns made easy
    "This series of articles explains services-based enterprise integration patterns in an easy-to-understand, step-by-step way. In this installment, Part 1 of the series, you learn about the two earliest integration patterns—data sharing only and remote procedure call (RPC)—which help introduce the concepts of service provider and service consumer, platform independence, and connectivity. Exploring RPC helps you get familiar with the basic steps necessary for two applications to share functionality. This article also includes a general description of the concepts of loose coupling, code reuse, and layering and componentization. Part 2 of the series continues the discussion of the early patterns, while Part 3 and Part 4 cover the Service-Oriented Architecture (SOA)-based integration patterns, including examples."

    Part 1: The evolution of basic concepts

    Part 2: More on the evolution of basic concepts

    Part 3: Web services and registry

    Part 4: Enterprise service bus

    2008-12-21 Sunday - SOA Challenges, SOA Pain v2

    RedmondDeveloper: Will SOA Fly in 2009?

    What to do when insanity reigns

    Q&A: Miko Matsumura on the State of SOA
    (Miko Matsumura, vice president and deputy CTO, SOA products at Software AG webMethods)
    Khan: "If you had to take a pause and assess the state of the SOA today, what do you see?"

    Matsumura: "People have gone through all of the Kubler-Ross stages now and have come to acceptance of SOA. SOA isn't utopian in the sense that Adoption is painful and difficult. We have been through a lot of cycles where people look for escapist alternatives. But when you get down to it, IT System and Organizational sprawl is a disease, and if you don't cure this disease, your IT systems will become ossified, atherosclerotic, and will slowly become the cement boots that will drown your business. People are understanding both that the cure is as painful as the disease, or perhaps even more painful"


    Joe McKendrick wrote in August 2007:
    How do we really know when SOA ‘fails’?
    "Lack of a true SOA...."

    "Lack of reuse or sharing by multiple business units...."

    "More money spent than gained — over the long run...."

    "More, not less, vendor lock-in...."


    From a March 2007 podcast (transcript): BriefingsDirect SOA Insights Analysts Explore SOA's Role Through Failure, Governance, Policy and Politics

    Udi Dahan's recent presentation: Avoid a Failed SOA - Ness Tziona Usergroup meeting #2 - (pdf)

    David Linthicum wrote in November 2007: Are You in SOA Project Hell?
    "...a few key issues..."

    • "Not enough budget..."

    • "Not enough influence..."

    • "Wrong people..."

    • "Bad schedule..."

    • "No plan, approach, or method..."



    More recently, David Linthicum wrote in September 2008: SOA Deployments: What Actually Works

    • "People: From Leadership to Staff, the Right Aptitude and Commitment Is Critical..."

    • "Processes: SOA Requires a Change in How You Develop, Manage, and Test Applications..."

    • "Architecture: The Core of SOA Is Usually Given Short Shrift..."

    • "Technology: Your Technology Should Follow the Requirements, Not Drive Them..."



    Anne Thomas Manes recently wrote: SOA vs SOI
    Service oriented architecture is hard work. It's disruptive. It's a political minefield. It involves going through the application portfolio and identifying redundant applications that can be decommissioned and replaced by a single service. But no one ever wants to open that can of worms. Many folks live by the adage, "If it ain't broke, don't fix it." There's way too much other stuff to do. But each additional application increases the annual maintenance and operations budget. And for many of those applications, the cost of maintaining the application exceeds the value it brings to the business.


    Also worth reading: Burton On Real World SOA Experiences

    And just for the record, in general, when I find myself sometimes disagreeing with something Anne has written, I carefully review my assumptions and usually find myself altering my conclusions.


    Mike Kavis: Top 10 Reasons Why People are Making SOA Fail
    "1. They fail to explain SOA's business value...."
    "2. They underestimate the impact of organizational change...."
    "3. They fail to secure strong executive sponsorship...."
    "4. They attempt to do SOA "on the cheap"..."
    "5. They lack the required skills to deliver SOA...."
    "6. They have poor project management..."
    "7. They think of SOA as a project instead of an architecture..."
    "8. They underestimate the complexity of SOA...."
    "9. They fail to implement and adhere to SOA governance..."
    "10. They let the vendors drive the architecture...."



    Two SOA Projects That Can Pay For Themselves in Six Months


    Frank Kenney (Gartner Analyst): Ahh Shucks, SOA Is A Failure

    The Laws of SOA

    Nicolai Bonne's blog: Thoughts on SOA successes and failures

    Eclipse kills open-source SOA projects (After the hype, the hurt)

    2008-12-21 Sunday - My Next Laptop...

    I know what I want in my next laptop:


    • Quad-Core cpu processors

    • 1TB of storage, via solid-state drives


    • 2009-03-06 Update: Hmmmm...SSD Disadvantages

    • Running a 64-bit version of Linux (Fedora or perhaps Ubuntu)



    This looks like a promising candidate:

    Lenovo to release ThinkPad laptop with 2 LCD screens
    The ThinkPad W700ds appears to be the first laptop ever to sport two LCD screens -- a 17-in. primary and a 10.6-in. secondary screen.

    The souped-up "mobile workstation," as Lenovo calls it, also comes with customers' choice of quad-core Intel Core 2 processors and Nvidia Quadro mobile graphics CPU with as many as 128 cores. It also comes with as much as 8GB of DDR3 memory and a pair of hard drive/solid-state drive bays for up to 960GB of storage.

    The W700ds is expected to be available in January starting at $3,600.


    Perhaps by next summer there will be even more competitive choices.

    2009-03-10 Update:
    Living free with Linux: 2 weeks without Windows

    Living free with Linux: Round 2

    Installing Linux software 101 for Windows users

    2008-12-17

    2008-12-17 Wednesday - Communicating SOA Concepts

    In my SOA consulting practice I recently needed to find a better way to communicate the concepts of SOA and the benefits its realization can bring to an organization - without requiring extensive, acronym-laden, reading by the very busy executive management team.

    In my research, I came across this excellent animated presentation that beautifully captured the essence of what I wanted to communicate:

    http://www.jisc.ac.uk/whatwedo/programmes/eframework/soa

    (JISC develops partnerships to enable the UK education and research communities to engage in national and global collaborations to overcome the challenges of delivering world-class ICT solutions and services)

    2008-12-17 Wednesday - Microsoft Business Intelligence

    A recent question asked on LinkedIn:

    Business Inteligence costs
    How costs are lowered with Microsoft Business Inteligence?



    There are several links to white papers and case studies on the Microsoft Business Intelligence web site: http://www.microsoft.com/bi/

    You may also be interested in this Gartner report:
    Magic Quadrant for Business Intelligence Platforms, 2008
    http://mediaproducts.gartner.com/reprints/microsoft/vol7/article3/article3.html

    Case Study: Community Health Network Saves Time and Improves Performance of IT Services Using Microsoft Business Intelligence Solution
    http://www.microsoft.com/casestudies/casestudy.aspx?casestudyid=4000002023

    2008-12-14

    2008-12-15 Sunday - Presentation Tools

    I've given a lot of presentations in my career. Often those presentations were given in well designed multimedia-equipped board rooms and conference rooms - and quite often - using a wireless mouse and a laptop was sufficient. But I've noted the benefits recently of other presenters relying on a wireless presenter control, so I stopped and picked one up today:

    Targus Wireless Presenter with Laser Pointer




    Product Description
    The Wireless Presenter with Laser Pointer features all of the necessities that other competitive presenters offer. This presenter has the ability to page up, page down, escape slide show, darken screen and resume screen. It also has a laser pointer button and an on/off switch. It also includes an alt tab application switch. The long-range 2.4GHz wireless technology has up to a 30 ft. range, which is ideal for a large conference room. The preset RF connection enables true plug-and-play capability


    Sweet.

    2008-12-12

    2008-12-12 Friday - Link Harvest

    Challenges in Adopting Scrum

    TeamCity 4.0: Distributed Builds and Continuous Integration

    Microsoft Robotics Developer Studio 2008 Released

    Presentation: Ian Flint Explains Yahoo! Communities Architectures

    Scaling memcached at Facebook

    Free website templates: http://andreasviklund.com/templates/

    2008-12-12 Friday - QCon 2008 Special Report

    Infoq has just published this article, Key Takeaway Points and Lessons Learned from QCon San Francisco 2008, with many links to some good blog commentary from the attendees (and they kindly included several links to my own blog posts about the conference).

    In over 25 years in the Information Technology industry - which has included attending such conferences as Object World East, Software Development West, Java One, No Fluff Just Stuff, Seattle Code Camp (v3, v4), etc. - QCon 2008 was by far the very best conference I have ever attended. I will be going back!

    One of the personal highlights of the trip was a chance meeting with Martin Fowler during one of the breaks between sessions and being able to tell him how much of an inspiration his writing has been to me personally. The other was a chance to catch-up with my old friend and former Mercata.com colleague, Dr. Dean Wampler, now a consultant with Object Mentor.




    As a small side note, I had an interesting exchange awhile back with someone on a certain message forum, in which I had initiated a thread of conversation around the question of "What conferences do you find most useful?".

    It was suggested that conferences were useless - and that better value would be obtained by reading books and reading blogs of others.

    In general, I agree that the level of technical information retained from attending a conference pales in comparison to reading a book. However, those who dismiss conferences on the basis of such thinking miss important (and not inconsequential) benefits of attending conferences:


    • The synergy of ideas that occurs in conversations with other attendees


    • The revitalizing "enthusiasm" that arises from being in the presence of others who share a like passion


    • The serendipitous knowledge that is acquired by spontaneous conversations

    • The opportunities to network with peers


    • Hearing the experiences that others may not feel disposed to post to public blogs

    2008-12-07

    2008-12-07 Sunday - SOA Semantic Resource Links

    Semantic Community Wiki
    http://semanticommunity.wik.is/

    Knoodle.com
    http://www.knoodl.com
    "Knoodl is sort of an ontology editor, registry/repository, and wiki all rolled into an easy to use online application"



    SOAInstitute.Org’s
    Service-Oriented Architecture Conference Series
    A Brainstorm Event in Washington, DC
    Brand Niemann, Senior Enterprise Architecture, US EPA
    June 25, 2008
    Ontology for Segment Data Architecture: E-Rulemaking Case Study



    Ontology for Segment Data Architecture
    http://gov2.wik.is/Ontology_for_Segment_Data_Architecture

    2008-12-07 Sunday - Link Harvest

    A friend sent me a link to the OBM.org Open Source project - which looks interesting:
    http://www.obm.org/doku.php
    OBM is enterprise-class messaging and collaboration platform for workgroup or enterprises with many thousands users. OBM includes Groupware, messaging server, CRM, LDAP, Windows Domain, smartphone and PDA synchronization…

    OBM is licensed under the GNU General Public Licens


    http://www.magentocommerce.com
    I also came across the site for the Open Source Magento eCommerce solution. The feature set looks impressive.

    I came across Alexander Ananiev's MyArch Solutions tonight - I like a lot of what he has written about SOA and ESBs.

    2008-12-01

    2008-12-01 Monday

    Last night I upgraded my soapUI SOA / West Services / SOAP testing tool to the latest 2.5 release. A most excellent tool.

    Copyright

    © 2001-2021 International Technology Ventures, Inc., All Rights Reserved.