My critical view about “the Metaverse”

Recently the term “Metaverse” is across like in every IT related news. Noone really knows what it is but it seems to be the hot shit you have to be into! And it seems to be THE ultimate solution for so many odd problems AND a totally new business market!

The “metaverse” topic has followed me now a couple of months and I had a couple of discussions already about my critical view about the topic. And if it was worth discussing so often – it might be worth writing it down as well. 😀

What is “the Metaverse”?

To make it simple: It’s a marketing term. An extremely fuzzy marketing term. I won’t do an intense review or aggregation about all the articles. Just do a search about “What is the metaverse“. A lot of explanations are horrifically vague.

Gartner writes it a bit incomprehensibly: “The Metaverse is a collective virtual open space, created by the convergence of virtually enhanced physical and digital reality. It is physically persistent and provides enhanced immersive experiences.” (Eh – WHAT?)

Wikipedia is very focused on AR and VR: “A metaverse is a network of 3D virtual worlds focused on social connection. In futurism and science fiction, it is often described as a hypothetical iteration of the Internet as a single, universal virtual world that is facilitated by the use of virtual reality (VR) and augmented reality (AR) headsets.

Wired.com states it pretty nicely: “Ninety percent of the time, the meaning won’t substantially change. That’s because the term doesn’t really refer to any one specific type of technology, but rather a broad (and often speculative) shift in how we interact with technology.

Meanwhile I hear talks and presentations about Metaverse that simply span over all kinds of “new business models”, including VR, AR, digital assets (NFTs), and blockchain technology in general.

And sometimes “the Metaverse” is also used for a community of people with an interest in new technology / business / …

So … it’s about all and nothing.

My Problem with “the Metaverse”

In my opinion there are a couple of problems which I’ll outline a bit. The following listing doesn’t claim to be complete. It’s just a couple of problems that I came across recently:

It’s so Vague

As written above: The term is simply too vague! It describes all and nothing at the same time. For me it has evolved to a synonym for “modern computer stuff”.

It’s not New

Regarding all that I’ve seen so far – it’s just not new. The term itself isn’t new. AR and VR aren’t new. Niantic published the AR games Ingress in 2013 and Pokémon Go back in 2016.

Microsoft published the AR Headset Hololens in 2016 and found a niche in the business sector.

If you define “a metaverse” as a place where people come together in a virtual space in order to interact – congratulations, it’s there already as well: In fact, since the first Multiplayer Mode in any Game was introduced. In nowadays MMORPGs thousands of gamers come together in virtual worlds to interact, buy & sell virtual assets, chat, hangout, have fun together. World of Warcraft might be one of the best examples: Launched in 2004 it is still an active cash cow in 2022. And – according to GameRevolution.com – it has an impressive revenue: “At its best, it held North of 12 million paying customers, equating to roughly $180 million per month in subscription revenue, or $2.15 billion per year.”

Even Blockchain technology is not new. Bitcoin was first published in 2008 and had its breakthrough more or less already. The hype around NFTs has really taken off in 2021. It’s not yet clear if the NFT hype peak is already been passed or is yet soon to come.

No Killer Application in VR

The problem with AR and VR is that the devices are still ways too expensive and / or too inconvenient for long time usage. But the real issue in the consumer market is that there is still no the real killer application. True: there are VR games that seem to have an immense immersion effect (have just played a single one myself).

But still, it’s by for not the case that a game is per se a VR game. And this in a market with solvent customers (Gaming PCs, graphics cards, …) and a business case (the VR game). Of course, this may change when the hardware is getting cheaper and more convenient. – At some time in the future.

Illusion of Interoperability

I’ve heard so often said that in “the metaverse” all kinds of digital assets can be imported from one world into another etc. Yet it’s never explained which worlds we are speaking about and where this would be applicable. – Except in Video Games – where it doesn’t make any sense if you invest just a minute to think about it. Game Two published an excellent ~1h discussion about this topic. That’s why I won’t go any deeper into it.

TL;DR: just no.

Technology vs. Solving a Problem

Most of the use cases that are presented have the simple problem that they do not solve a consumer or business problem. Instead, they highlight the use of fancy technology (usually blockchain / NFT). Hardly any consumer ever wanted to use a blockchain. People want problems solved or needs fulfilled not technology applied. Technology is just a tool to solve a problem. And in 99% of the cases you would not choose a blockchain due to its obvious disadvantages (which are also advantages at the same time).

Also, the example of a virtual world where people can buy houses and hang out. Sorry – we had this in Second Life. And it failed. Because there was no need fulfilled for any person (except journalists who didn’t realize World of Warcraft did a better job already).

Too much Simplification / Abstraction

As written above: the term “Metaverse” is extremely vague, it covers Software / Hardware / Technology / Cyberspace in general. – And with the naming “The Metaverse”, like there is just one, it creates the subtle illusion of an abstraction layer over all these technology and business cases. As if suddenly all those cases could play magically together, are interoperable, play fine into one big thing – the metaverse.

Doesn’t sound too bad, he? But by such a definition the whole internet as we know it through the browser would be the one of Googleverse (or Bingverse). Maybe more precise: all online shops would have to be the one of Amazonverse, Aliverse, Ottoverse. And all the Onlineshops would interact magically (payment, user accounts, returns, shipping) – which – they just don’t.

It’s just the same concept. It simply simplifies too much.

The Disruptive UseCases

I’ve seen / heard SO many disruptive Metaverse use cases. Almost all cases so far were simply naive or the people presenting their idea had absolutely no idea of the business area that they want to disrupt. If you want to disrupt a business area it’s not enough to throw in new technology. You need to know all the players (stakeholders) in the field and identify whom you want to disrupt and why one or some other players have an advantage of it. If no one profits from the disruption, there is no business case.

Also, for every business case: always ask yourself: this sounds so obvious – there was really never ever someone before having this idea? And surprise: It’s not uncommon that companies tried this “disruption” before and failed. And in such cases: look carefully WHY they failed. Was it too early? Was it just bad luck?
Or: Did customers simply not want the product? (In that case: get your hands off!!)

The Name

Okay, this might be a personal thing. But Facebook rebranded itself to Meta and fired the Metaverse hype. Assuming the new business cases really do work etc. Do I want to have it brand-wise all connected to Facebook?

In parallel to the above: I don’t want to call every online shop “another Amazon”. It’s a drama already that “googling” became a synonym for “searching”. But I personally do not like to have Facebook standing as a brand over everything that relates to VR, AR, Blockchain, Virtual Worlds, …

Is Metaverse all Crap?

Let’s make it short: No!
There are applications for AR.
There are applications vor VR.
Blockchain does have use cases.
NFTs do have use cases.

But I also do not see a Metaverse-Layer connecting all kinds of technology and businesses.

So – Who is the Target Audience?

Well, I’m not particularly sure. But playing the sarcastic guy I would say:

Investors: Maybe you find a stupid investor that are totally blinded by the hype train. Maybe you have to have “Metaverse” somewhere in your pitch to be hot.

CEO / Management: If you want to sell a shitty product. Place Metaverse somewhere in your product presentation! It sounds awesomely modern! It makes the impression that you are totally interoperable (so cheap to integrate) and open a totally new business with lots of revenue. (Funnily the same story as “Data is the new Oil”)

Shareholders: If you have a big company, claim to do some Metaverse projects! You show that you are on the bleeding edge of technology! You are ahead of competitors.

Journalists: Ah well – Journalists should have learned from Second Life.

Samsung Soundbar does not connect to SmartTV

When you own both a Samsung Soundbar (HW-[something]) and a Samsung Smart-TV, you would assume that they work in nice harmony. Which they usually do! Just once in a (seldom) while, the both just don’t connect any more and it seems there is no way to connect them again.

Recently we ran into the same trouble. It required a lot of forum reading, searching, reading support pages. Especially as it requires sound-resetting both devices and does not require hard-resetting the TV (loosing channel list, favourites et. al). As it was a real pain to figure it out, I wrote down my process.

The following steps worked for me the last time I had to try it.

  1. Soundbar (maybe this is not required?)
    • turn off
    • press (and hold) the stop button until the soundbar displays “init, ok”
  2. TV:
    • Remove soundbar from the config:
      Menu > System > Device manager > Soundshare > remove Soundbar
    • turn off the TV
    • disconnect from power
    • wait ~3 min
    • reconnect & power on
  3. Soundbar:
    • Power on
    • switch to TV mode and wait for connection
    • MAYBE reset soundbar: press & hold “play” until it displays “reset”

Hope this helps! Leave a comment if it helped you or if there’s a faster way to reconnect both devices.

Where to install custom / portable programs in Windows10/8.x?

There are a couple of programs that cannot be installed / put into the regular locations (c:\Program Files and c:\Progam Files (x86)) as they cannot be run in non-administrator mode. So – where should you put / install those programs?

Fortunately Windows comes with a good place for those programs. Just put them into %LOCALAPPDATA%\Programs which expands to C:\Users\...\AppData\Local\Programs.
No need to tweak permissions (as it is in your user directory).

Downside: If you are part of a large domain (which you will not be with your private computer), your programs will not be synchronized to other computers where you log on. If you would like that you would have to place it in %appdata% (which expands to C:\Users\...\AppData\Roaming). But it would also mean that possibly large installations are synchronized. Don’t blame Windows if you are suffering from long login-times then!

In case you want to go deeper into the differences between Roaming, Local and LocalNow, have a look at the answers at superuser.com:

Roaming. (%appdata%) contains data that can move with your user profile from PC to PC – because data is synced with a server (e.g. web browser favorites or bookmarks.

Local. (%localappdata%) contains data that can’t move with your user profile. This data is typically specific to a PC or too large to sync with a server (e.g. temporary files).

LocalLow. (%appdata%/…/locallow) contains data that can’t move, but also has a lower level of access. E.g., a web browser in protected or safe mode, will only be able access data from the LocalLow Folder.

Mount vmWare shared folder in Ubuntu guest

If you want to share files between a Windows Host and a Ubuntu Linux guest, the “shared folder” feature is really handy. Just enable it in the VM-Settings, install guest additions and … then wonder where this shows up in the VM. “They appear under /mnt/hgfs” I read everywhere.

Well, they do – as soon as you do a

sudo mount.vmhgfs .host:/ /mnt/hgfs/

It took me a couple of minutes to figure this out as all tutorials endet with “the folder appears” …
If it doesn’t work, maybe just rerun

sudo vmware-config-tools.pl

How to fix: Windows 10 store fails to update or hangs during download / update

For a couple of days I saw some pending updates in my Windows 10 store that didn’t seem to install or download. The downloads were either in progress or done but none of them installed. Restarting the downloads didn’t help either.

Some quick research came up with all kinds of Powershell and registry hacks. Quite weird. Then I remembered about a recent issue that I had with Windows 8.1 which was solved by simply disconnecting the Microsoft account and reconnecting it after a restart. And it worked!

Dead easy

 

  • Go to account settings: Hit the Windows Key, type “Account” (german: Konto)
  • Disconnect from your Microsoft account
  • reboot (optional – I didn’t try without reboot)
  • Reconnect to the Microsoft account
  • Open the Store and do the update

 

Windows install error 0x80070002 unable to install App

Yesterday I tried to install a Windows App via its built in App Store. Usually this works like a charm. This time the download seemed to succees (judged by the progress bar) but the installation failed with error 0x80070002;

Googling (and Bing’ing) found various issues with kind of the same description, ranging from “download failed” to “broken registry” (including repair guides). Yet none of the proposed solutions worked for me.

Hoping it would just be a temporary failure on the store side, I hit “retry” again and again while I was searching for other solutions (interrupted by a reboot – well you never know, sometimes it just helps). And suddenly a message appeared saying that a Microsoft account was required to install the app. That was strange as I had just switched to a MS account this day – and this message appeared just once! When I wanted to reproduce it it just failed with 0x80070002 again.

So I disconnected my account from MS again, reconnected afterwards and suddenly: The installation succeeded!

To make a long story short

If you experience an error 0x80070002 when installing an App from the store in Windows 8.1: Try to disconnect and reconnect your account from and to a Microsoft account:

  • Win-C (open charms bar)
  • Go down to settings
  • Go down to PC settings
  • Go to Accounts >> your account
  • Disconnect your account
  • Repeat the above to reconnect to your MS account
  • Try to install the App

How to do automatic tagging of articles using Feedly

In this post I will describe a first proof of concept approach about how to implement a supervised learning system to automatically tag RSS posts in Feedly.

Motivation

Everyone using an RSS reader to read daily news surely knows the situation that certain topics keep (re)occuring in the news. Yet most people have topics that they are simply not interested in. Just think about certain sports, political topics or world events. But of course they keep showing up in the daily news stream.

Therefore a system is needed that automatically assigns predefined tags to the corresponding news entities and (maybe) also marks them as read.

A critical point is that the system must integrate into an RSS reader application. A system not being able to attach to an existing system would not be applicable as one still wants to use a mobile / desktop app to read the news and also to (un)tag articles. Implementing the complete value chain comprising fetching RSS, parsing, classifying, providing an aggregated stream AND an application for reading the news is definitely out of scope for a proof of concept.

I wanted to write such a classifier for quite some time but didn’t find a system that provided a convenient API to plug in  a tool for reading, classifying and pushing back the results. Unless I discovered the Feedly API. Unfortunately the Feedly API is not (yet) fully open, so that one has to obtain a time limited API token by hand. Yet, for a proof-of-concept, this is totally acceptable.

The Learning System

So much for the introduction. Let us go in medias res:

The first thought was to start with some clustering using Elasticsearch (for similarity search). But let’s recall the base facts and requirements:

  • Only a hand full of tags are needed
  • start with the simplest approach first
  • it should be able to run either on OpenShift or on my Raspberry Pi

So the choice was to start with a simple Naive Bayes Classifier. Instead of doing an in depth explanation of the Bayes classifier (I recommend Paul Graham’s A Plan for Spam and the page about combined probability), just recall: a Bayes Classifier is just a 0-1 classifier. So a single classifier is required for each tag. This makes it of course unusable for a very large amount of tags! But the big advantage is that the Bayes classifier is just dead easy. Just count how often a word occurs in the desired in class A (the Tag) and class B.

How to train / apply the classifier(s)

The classifier should be trained perdiodically and the user must have the opportunity to correct classification errors. Before dealing with synchronizing & updating entries, the classification workflow for each tag is:

  1. get all entities for the tag and use them as positive samples
  2. get all read and untagged entities and use them as negative samples
  3. get all unread and untagged entries and compute P(tag)
  4. if P(tag) > 0.95, mark the entity with the tag and probably also mark it as read

As input, the all kinds of properties are used that could distinguish between tags. Including the source URL, site keywords, categories etc. Then the content is tokenized / split by all non word characters. Graham writes about some optimizations for spam detection – yet results were pretty convincing without further optimization.

in order to have some positive samples, this of course requires the presence of some entities being tagged already. In this case I started tagging already quite some time ago as I already assumed that I needed some ground truth.

Raspberry PI: Boon and Bane

Raspberry PIs are great as little home servers. The drawback is that the RaspPi has just a single core, 700 MHz ARM CPU and 512 Mb ram which is shared between GPU and system. So, it is a bit slow and is a bit low on resources. Especially if the RasPi is also used for other purposes at the same time that also consume some RAM. In case of very large RSS streams, this could indeed raise a  problem: Running low on CPU is unconvenient (=slow), but running low on RAM is deadly (OOME). Therefore it might be required to replace the HashMap in the Bayes class with a DB layer like MapDB.

Status Quo

The quick test with the Bayes classifier showed already some really fine results! On the RasPi, each Tag is classified within 200 – 230s (14 – 18s on my notebook). The mission “Reduce the amount of information that I am not interested in” can thus be regarded as “successfully tested“!

Also there have hardly been any misclassifications. And the ones I experienced were quite understandable. In contrast to scientific publications I didn’t do extensive accuracy tests – the first attempts were so promising that I simply saved the time and thought about what to try out next that could make my life easier.

If this approach should be followed any further there are of course (as always) some open issues: Besides code cleaning, one could try to filter by TF-IDF, filter certain tokens, adjusting thresholds, etc. But I doupt that the results would get much better.

And of course, the complete code is available at GitHub. Feel free to fork it and play around with it! Beware: The code can change dramatically from one commit to another. For example if I just want to test a new idea.

How to rename a GIT tag

Once in a while (yet often enough) it happens that I have to change an already pushed git tag. Usually because I violated my own naming scheme.
Yet I also somehow can’t keep the necesserry commands in mind:

git tag newTag oldTag
git tag -d oldTag
git push origin :refs/tags/oldTag

Basically it is just: copy/link newTag to oldTag, remove oldTag, delete remote oldTag.
Also see the git man page for further parameters.

Windows Tomcat start failed command 127.0.0.1 could not be found

I just installed Tomcat 7 on my Windows machine and tried to fire it up through Netbeans. But instead of a running server, I just got an error message that command 127.0.0.1 could not be found (Localized error message: Der Befehl “127.0.0.1” ist entweder falsch geschrieben oder konnte nicht gefunden werden.).

I remember that I read about it in a Tomcat bugtracker (but can’t find it any more). Well the solution is pretty simple:
Just open [tomcat home]\bin\catalina.bat and remove the “-characters from lines 196 and 201 (in the code snippet below it’s line 1 and 6):

set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%

if not "%LOGGING_MANAGER%" == "" goto noJuliManager
set LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
:noJuliManager
set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%