Mix and Mingle

The past weekend I traveled internationally to work with colleagues on another continent. I’m a lucky volunteering member of IEEE, and so I reached out to the community before I jumped on my flight.

Turns out I have friends in this city, and so I spent a whole afternoon learning about the city and the eventualities it brings along.

Both my old friend and me agreed throughout our conversation that networking is an important activity, and having built an extensive network is an enormous asset.

While IEEE is only one opportunity to meet people, it is a solid recommendation for engineers to actually pick up this activity in first place, even though it may not seem obvious at the beginning of the individual career. Working with and knowing many people is all too often underestimated and need strong soft skills. But even those can be trained, just like engineering can be tought.

Lifelong Learning

IEEE’s Educational Activities Committee (EAC) invited me for their regular meeting, that happens May 13th and 14th in Porto, Portugal. Me being there is to represent Action for Industry Committee (AfI). On first priority, the attendance is to foster inter-committee cooperation. However, one of the items we’d love to promote to industry, but to everybody else, is that education is important. In particular in Industry, where innovation and therefore differentiation from the competition is key to any activity.

To make the point about lifelong learning: upcoming, innovative technology trends, just to mention the Internet of Things, Electromobility or Autonomous-Driving require broad sets of expertise’s, abilities and complex organisations to come to life.

The Internet of Things, while being a vague term, is often associated with an App controlling a device remotely. While this looks easy on the outside, looking into the workings of such a product, it typically requires skills from 2 mobile platforms, Android and iOS, potentially Web. The connectivity part requires knowledge about transport protocols, that need splitting into IP protocols and constraint field busses. The cloud end alone is typically broken down into data transfer, data storage and data processing, while the field offers a broad choice of communication protocols and physical layers, all for different purposes and use cases. Not to mention the engineering, design, production process and supply chain that yields a physical device that a consumer wants to control. Adding in service based products, that give a customer a better understanding of usage patterns, energy savings, potentiation gameification of product use, require data processing and analytics.

This very high level example requires at least 3 major degrees, again, not mentioning the business administration side, that’d increase the count to 4 major degrees, with about 3 minors each, just on the upside estimate.  Highly complex products like this need highly skilled engineers and managers, that do not only need to execute on producing and operating a device, but also keep up on technical ability to stay on top of upcoming technologies, processes and procedures.

Lastly, any requirement to understand peering functions and technology makes the final argument for lifelong learning, because not only does the world change so fast, there is always fields interfering with an engineers major in an evolving market. This way, lifelong learning is not only something desirable to one self’s development, but a fundamental requirement to stay ahead of the market.

IEEE’s main pillars are academic publications, conferences and standards, all carried by an overwhelming number of volunteers. These are all, with no doubt, convinced that sharing knowledge increases knowledge. The really differentiating fact for IEEE is these are not from a single domain of research, but these ~420.000 members are organised in 39 technical societies, spanning all different kinds of technology and research.

Through this large spectrum of interest and the volunteering nature of the organisation, it enables lifelong learning through the exchange of ideas and knowledge alone, with Committees like the EAC fostering the activity, and Action for Industry keeping the relationship with engineers in industry.

On Digitalised Product Management

Again. Having read the few words from yesterday, it’s probably difficult to follow. So, let me try a bit more structured to write up on the points I was trying to make are:

  1. Product and Service Business are different cultures.
  2. Both have established methods.
  3. Digitisation requires Digital Transformation.
  4. Digital Transformation won’t happen without a conscious decision.
  5. Digitised Products need to consider both.

Product vs. Services Business

This is the part with the margins. While the first lives off high enough margins in the retail chain, the later lives off customer satisfaction, with basically very thin margins.

Management Methods

Things require a stock and supply chain. A service requires time to response and time to resolution. Or response time, for interactive services. And so do physical projects require different management methods than services do.

Digitisation requires Digital Transformation

Putting a chip in it is not the single answer to achieve Digital Transformation. It requires to combine product and services business and that process is the actual transformation people are looking at.

Digital Transformation won’t happen without a conscious decision

Very much as #3, just putting a chip into a product will not be sufficient, because the product will work so much different than before and the customers expectations will not be the same either. However, it requires a component that contradicts traditional management behavior as well as financial expectations. Therefore, somebody high enough will have to take a decision and carry it until Digital Transformation happens.

Digitised Products need to consider both

And so, finally, a digitise product needs to be managed with services and the tangible parts in mind. While a product is produced, a service is operated. The product will have development cycles that are much longer and the supply chain needs to be managed, while at the same time the service attached to the product needs to work to the customers expectations and evolve much different.

On Digitalised Product Management

Now the family left me here for the afternoon, I have some time to exercise blogging and put down a few thoughts on my recent job. To write in a cosy environment, a lit the fireplace at the house we are staying in. The result is as favourable as you may imagine. Only the missing bear fur could add to the feeling. The role in marketing, “Product Management”, hasn’t been that cosy recently, for a few reasons, that are more related to corporate behaviour than to individual contribution.

While I will need to avoid mentioning the actual product I am still working on, and it’s probably difficult even not to have any references, the below still tries to explain the tensions that exist in the world of traditional industry, moving towards a digitalised service business, in which tangible products get marginalised.

The primary reason for me, an computer engineer, having spent all his life in service business and so to say “in the cloud“, to come to a marketing oriented role is to design and develop – as in business, not as in a computer programming – a connected product.  The Internet of Things, if you want to. Whereas many companies have Things already. But they want to offer smarter things, that’s why everything gets connected. Now connectivity has to offer many benefits over traditional products, but they’re not the primary value proposition the customer pays for. The customer still pays for the product. And in the market, any customer will ask for the smartest product available. Just like I wanted to light a fire. One that was good and warm, and keep my cosy. And to do so, I had to collect some pinecones, that would easily catch fire. It was bothersome, but necessary. 

The things industry is not very familiar with service offerings. It’s actually something fundamentally different from the internet or services industry. To put it boldly, what a customer expects from a product: something solid. And what a customer expects from a service: something that is available anytime. (Like, literally, in the middle of the night!). While Things are sold physically and can be produced on stock, a service cannot be hold until the customer asks for it. Value through a service is created by making something more convenient. I’d have paid somebody to cut and carry the wood required to light a fire. But I had to do it myself, and that was  not only tiring but also heavy work. While, as a customer, the thing I’d buy is the wood, I would spend a premium for somebody to do the work. To add the service. Probably not much, but hey. The same happens for businesses.  While still everybody produces products, the more convenient products are in the customers favour, only at a small margin, though. Just to make an example, just recently Oracle, a business to a majority based on the sales of products, databases, announced to acquire Accenture, a consultancy service, to add services to it’s portfolio. Others have doubts this merger makes sense, exactly for the above reason. Margin driven things companies will have a difficult time appreciating low margin service as part of their portfolio.

Just like me. I wanted to sit in front of a warm fire when spending my time without the family. It’s very clear I’d need pinecones and wood to get that, and I’d pay for it. However, if some other guy selling wood sells cut wood and carries it to my house for a fee, I’d probably appreciate that more convenient offer. But that decision has to be made very conscious, and people responsible for the service in that organisation can’t be measured on financial goals as their product colleagues, but customer satisfaction.




Celery Worker wide configuration

Celery is a distributed task execution environment for Python. While the emphasis is on distributed in this software, the concept of having workers allows for settings beyond the individual task. While the first rule of optimisation is “don’t”, sharing database connections is a low hanging fruit in most cases. And this can be configured per worker with Celery provided signals. To create a database connection for individual worker instances, leverage these signals to create the connection when the worker starts.

This can be achieved leveraging the worker_process_init signal, and the corresponding worker_process_shutdown signal to clean up when the worker shuts down.

The code should obviously be picked up at worker start, hence the tasks.py file will be a good location to keep these settings.

Example tasks.py:

from celery.signals import worker_process_init
from celery.signals import worker_process_shutdown

app = Celery('tasks', broker=CELERY_BROKER_URL)
db = None

def init_worker(**kwargs):
  global db
  log.debug('Initializing database connection for worker.')
  db = sqlite3.connect("urls.sqlite")

def shutdown_worker(**kwargs):
  global db
  if db:
    log.debug('Closing database connectionn for worker.')

The example above opens a connection to a sqlite3 database, which in itself has other issues, but is only meant as an example. This connection is established for each individual worker at startup.