On Software

• “Google App Engine Flexible Environment: Beyond the Bounds of PaaS” (Video).  The first ever talk or article dedicated to this new Google PaaS. Multicloud Engineering, 2017.

• “Breaking boundaries: How Freightos achieved high speed graph search in the cloud,” CloudTech, 2016.

Running heavy-duty graph algorithms against a very large dataset require some unusual design principles. Freightos may not be the only company doing it, but no cloud platform today is optimized for this; in fact, the usual design assumptions in cloud platforms are quite the opposite of what we needed. Here is how we did it.

• “Modeling Retail Products: A Big Data Approach”, The Software Generalist, 2015.

• “Search and You Shall Find,” Medium, 2015.

Today’s e-tail search  engines return inaccurate results; merchants stuff all product information into long titles. To optimize revenue, online retailers need a search engine that understands the product selection.

• “Apache Spark and Java 8: The Big Data Team for 2015,” Datanami, 2014.

Apache Spark with Java 8 is proving to be the perfect match for Big Data.  In this article, I show an example of collaborative filtering using Spark on Cassandra data, and explain how much  easier this is to do with the lambdas of Java 8. Code to accompany it is here at GitHub.

• “Documents in the cloud: Dynamic, Privacy-customized views,” Cloudbook, 2012.

As documents move to the cloud, it becomes harder to protect the private information in them, but on the other hand becomes easier to control distribution of specific private information to exactly the people who are authorized to see it.

• “Flexible, Dynamic Redaction”, MasterDataManagement.com, 2012.

Complying with privacy regulations used to mean “redaction,” blacking out words with a pen, slowly and expensively. But natural language processing techniques can protect exactly the information regulated by law while giving convenient access to authorized users.

• “Breaking Walls: How to Get Departments to Share Information,” with Michael Pelts, Technology and Humans:, 2011.

• “People Who Live in Glass Houses Should Put Up Some Shades,” InfoSecurity, 2011.

Too much openness, as well as too little, both pose risks. Document viewing with automated privacy control is one part of the balance. Allowing authorized users to retrieve the redacted information is another.

• “Privacy for the Deeper Web,” with Michael Pelts, Technology and Humans, 2010.
• “Openness and Privacy for Regulatory Compliance,” with Michael Pelts, Information on Demand Europe, 2010.

• “IBM Optim Data Redaction: Reconciling Openness with Privacy,” IBM White Paper, 2010.

The White Paper for the product which I launched in IBM.

• “Openness and Privacy,” with Michael Pelts, Security and Privacy Symposium, 2009.

• “Clojure: Challenge your Java Assumptions,” JavaWorld, May 2009.

The article is aimed at senior Java developers, encouraging them to learn more about this exciting language. A dialect of Lisp, Clojure runs on the JVM with excellent integration with Java, and provides new, improved solutions for the biggest challenge to programming languages today: concurrency.

• “Mining Meaning from Java Code with Java Data Mining API”, JavaOne, San Francisco, 2008. As with the 2004 talk, the JavaOne committee gave this presentation the “Cool Stuff” award.

• “Mining for Services: Discovering Business Realities in Mainframe Metadata,” IMPACT, Las Vegas, 2008.
• “Finding Mashup Ingredients,” Web 2.0 and Beyond Summit, 2008.

• “Mining for Meaning: Discovering Business Realities in Mainframe Metadata,” Mainframe Executive, 2008.

To expose siloed mainframe functionality now locked up in siloed systems, it is essential to understand its business value. Automated classification technologies help make this happen.

• “Metadata Mining: Automated Semantic Classification for Service Repositories,” XML Conference, Boston, 2007.

• “Approaches for Modeling Metadata in XML”, industry experts panel, XML Conference, Boston, 2007

• “The Portal as People-Centric SOA,” MainSoft Corporation White Paper, 2007.

As a consultant for a leading provider of Java-.NET interoperability software, I wrote a white paper evangelizing the company’s IBM WebSphere Portal product, showing how it functions as a user-facing on-ramp to SOA.

• “The Hub and the Edge: Balancing the Responsibilities,” Architecture and Governance Magazine,  2007.

Architecture is as much about the organization as about technology. This article explains how to divide responsibilities in Service Oriented Integration to let each team do what they do best.

• “JRuby on Rails,” JavaWorld, February 2007.

Exciting news about JRuby in late 2006: Sun hired the two lead developers a beta for Java 6 with built-in scripting API. Sun also announced plans to support dynamic languages on the JVM-level, and the JRuby team announced support for Rails.

The article explain Ruby on Rails to Java developers, comparing it to Java web frameworks. It presents an example based on JavaSpaces, which leverages Java from within the Rails application. Even those Java developers who do not adopt Rails will benefit from the design principles built into the framework, as well as the rapidly emerging concept of non-Java languages integrated with Java and the JVM.

• “Ruby in the Java World,” JavaWorld, 2006.

Dynamic languages are rapidly gaining in popularity. Ruby in particular has attracted attention, with a big boost from the Ruby on Rails Web framework. In this article, I introduce Java programmers to Ruby, focusing on the similarities, differences, and connectivity between the two languages, and describing the value of JRuby on the Java-platform. The article got some buzz on the net, including from Frank Sommers at Artima.

• “Enterprise Semantics: Aligning Service Oriented Architecture with the Business,” with Joram Borenstein,Web Services Journal, 2005.

A business-focused overview of the value that semantics bring to Service Oriented Architectures.

• “Business Processes: Connecting the Design-Time to the Run-time” (presentation here),  Programming Languages and Development Environments Seminar, Haifa, 2005.

• “XMI and the Many Metamodels of Enterprise Metadata,” with Joram Borenstein, XML Conference, Atlanta,  2005.

• “Semantic Enterprise Systems Management for Program Trading,” with Simon de M. Walker, Securities Industry Middleware Council, New York, 2005

• “Java Metadata and the Semantic Web,” JavaOne, San Francisco, 2004. Awarded  “Intriguing and Unexpected: New and Cool” by the conference committee.

• “Aligning Business Process and Business Information Models: a Semantic Approach,” with Zvi Schreiber, Global Business Process Forum, London, 2004.

• “Metadata Management Converges with Business Modeling,” DAMA Symposium and Wilshire Meta-Data Conference, Los Angeles, 2004.

• “Semantic Information Management for Data Integration in the Enterprise,” Tech Target, 2004.

• “Semantic Information Management: Controlling Complexity with a Central Information Hub,” Securities Industry Middleware Council, New York, 2003.

• “Web Services: Trends Toward Adoption,” invited appearance at industry experts panel, EIDX/CompTIA, San Diego, 2003.

• “Know What Your Schemas Mean: Semantic Information Management for XML Assets,”  XML Conference, 2003.

Schemas control the structure of information, But they don’t specify what a field means. Is that “salary” field monthly or annual? Semantic data management helps you keep track and avoid expensive mistakes.

• “Active Information Models for Data Transformation,” eAI Journal (later renamed to Business Integration Journal and Align Journal), 2003.

EAI gives O(n) complexity for connecting n applications on the network, but there remains an O(n2) complexity for integrating the message formats that the applications use as input and output. With an ontology-based approach, however, this too can be reduced to O(n).

• “Semantic Discovery for Web Services,” with Joram Borenstein, Web Services Journal, 2003.

Web Services lookup with UDDI requires client and server to agree on the exact syntax of the interaction. Using the principles of ontology, providers can publish and clients can discover Services based on the desired functionality rather than the syntactic details.

• “Generating XSLT with a Semantic Hub,”  XML Conference,  2002.

XLST was a promising XML technology that never fulfilled its promise because it was so hard to write and maintain. But when generated automatically from semantic information about what data is used for, XSLT becomes an automated information interchange language.

• “Information Quality through Semantic Models ,” Enterprise Data Forum, Pittsburgh, 2002.

• “Deploying Jini: HTTP Servers for the Dynamic Download of Code ,” JavaWorld, 2001.

I’ve found that once new Jini developers learn about the exciting distributed architecture, they often get bogged down by the challenge of simply configuring their system for development. They encounter a yet greater challenge in moving from the development configuration to deployment. Even experienced developers can get confused by the variety of components involved.

In the article, I review a number of solutions and explain the advantages of various solutions such as ease of development,ease of migration from development to deployment, low memory and CPU burden, portability, compatibility with RMI Activation, security, and enterprise-class web-app features.

• “Ontology: Automated Integration of Enterprise XML,” Web Services Edge, Santa Clara, 2001.

• “Building a Successful Wireless Web Site ,” Wireless Business and Technology, 2001.

If you’re a software development manager with experience leading the development of a three-tier distributed application for the World Wide Web, perhaps you’re about to move on to spearhead the construction of a WAP-site. This article has reuse as its theme: I explain when you can reuse skillsets, infrastructure, and software components from the WWW site, and when you’re better off developing new skills, buying new infrastructure, or building new software.

• “When is a Singleton not a Singleton,” JavaWorld, 2001.

The Sun Java Developer Connection also published the article , which was linked from the JDC front page. Sometimes you implement the Singleton Design Pattern, but mysteriously find that more than one object of the class is instantiated. This article explains how that can happen and how to avoid it.

• “Distributed Garbage Collection and Socket Option Keep-Alive,” JavaOne, San Francisco, 2000.

• “Opaque Bodies, Transparent Envelopes,” XML-Journal, 2000.

Separating layers of abstraction by packaging a body of one layer in an envelope of another layer is one of the fundamental design principles in data transfer. This principle holds for XML just as for any data transfer format, but implementing a system that observes layer separation can be difficult. This article describes how to do it.

• “Developing Java Servlets.” Software Productivity Center, Vancouver, Canada, 2000.

• “So what is SO_KEEPALIVE?,” Dr. Dobb’s Journal, 2000.

Garbage collecting distributed leases requires mechanisms such as keep-alives, heartbeats, leases, and Are-You-There/I-Hear-You protocols. Interestingly, the keep-alive mechanism built into TCP/IP sockets is not really practical; for this reason and the JDK didn’t allow access to Socket Option Keep-Alive until the recent release of JDK 1.3. I explain the problems with SO_KEEPALIVE and how to implement your own garbage collection mechanism for distributed resources.

• Seminars: Servlets, JSP, RMI and JDBC. Interbit Training and Consulting, a Sun Microsystems Training Center, Herzliya, Israel, 2000.

• “Collaborative Applications with the Java Shared Data Toolkit,” Dr. Dobb’s Journal, 2000.

I describe and review a toolkit for allowing distributed applications to share objects, and more generally discuss the challenges of managing distributed objects. The JSDT was an official product from Sun, although it never made it to the status of a Java extension. It implemented some interesting ideas for distributing objects. I enjoyed collaborating with the  creator, and some of my suggestions (like one on failure detection), actually made it into the toolkit.


Recruiting and Career