Category Archives: Misc

Goodbye Gutenberg Editor

WordPress is a powerful Content Management System ( CMS ) which powers a majority of the blogs and web pages out there in the Interlands. The reason for its popularity is the convenience of using it, another reason is the simplicity and flexibility as well as the sheer number of available plugins.

WordPress itself is an open-source project and you can download and install it on your own servers with a few short linux commands. www.WordPress.com is the company behind wordpress which is earning money through is free-to-use blog sites on their main web page ( E.g. https://varolokan.wordpress.com/ ).

As CMS go, WordPress is leading the pack and its simplicity comes in part from the ability to add a new blog post or page to your site with a no-thrills text editor.

Enter the Gutenberg

Well, that was before the upgrade to WordPress 5.0, which happened in December 2018 . This upgrade brought the Gutenberg Editor as the default editor to WordPress. Gutenberg tries to improve the usability for editing blogs/pages by sectioning off different paragraphs, and injecting all kinds of HTML into the ensuing result.

If you want to tweak the output just a little you will want to switch the section back into HTML-Mode, and then adjust as needed. While most people may never need to get to that level of visibility, a lot of the hard-core bloggers do want to maintain full control over the look and feel of any aspect at any time in their blogs.

I have tried for the past month or so to get used to Gutenberg. I have tweaked and written, and added custom CSS. I played and wrote, and finally I caved in and ‘uninstalled’ this pile of garbage.

Yeah well the only way to uninstall Gutenberg, is to install a new plugin, of which you can choose from the officially supported Classic Editor, or the Disable Gutenberg plugins.

The official plugin by WordPress itself will be supported at least until 2022 ( and then ? ). The “Disable Gutenberg” promises to be around for longer.

What is impressive with those plugins is that they have been installed more than 1 million times for the “Classic Editor” plugin, and 70000 for the “Disable Gutenberg” plugin. These numbers should give WordPress a bit to think about, and maybe, just maybe consider to revert the order of Gutenberg vs Classic editor.

In my opinion the Gutenberg Editor should be the plugin for those few who like it and want to use it. For the vast majority it seems that the classic editor is the way to go. I am certain that over time more people will revert back to the classic editor ( which is based off TinyMCE ) and some will stay with Gutenberg not because they like it better but because they don’t know how to revert back.

This disaster comes close to the likes of the initial “Windows Vista” disaster where the might of a company is turning against their core user base with more or less dire consequences. It remains to be seen if WordPress will change course or will continue to try to push this time eating, confusing, ugly and no-good interface onto its user base.

Think about workflow

If you write a blog post or anything really you are going to write letters which build words which build sentences which eventually build paragraphs and if you write some more you likely have some chapters in your book.
In Gutenberg every chapter will be a new section, however in practice each sentence will try to become its own little section. This will force you to move your mouse and click the hell out of your text to read, edit, and format your text. If you press enter once to many times you will have to fiddle around to un-section the now two distinct sections. Don’t get me started if you want to use shortcuts, well good luck trying to not kill yourself figuring those out.

If the goal of Gutenberg has been to destroy a writers workflow, then good job guys. You have spent your time, development efforts, and money to achieve just that. If the goal was t improve the workflow and usability, then I’d like to suggest to fire the guy in charge of the design. Maybe he and his friend like using the shiny new click and drop interface however a whole bunch of existing users hate the new interface with a passion. Historically people who really like a tool like WordPress become really passionate about it and the worst enemy you can make is to have a whole bunch of obsessively passionate fans you just upset.

Ps. This blog is of course written on wordpress and is now free of Gutenberg 😉

2019 is going to be a great year

It has been a long year. well it was one year long but as they say everything is relative and as such it felt much longer to me.

One area which helped to distort the objectivity of time was definitely related to politics. I don’t want to utter any political leanings here but I believe that regardless of which side you are on that the constant daily attacks on constitutional and presidential norms has taken its toll on the US populus and likely many, many people around the world.

Another area for me was related to my nine to five work, which is also something I do not usually talk about. However this year has seen a sea of change at our mid-size company where after going through 4 managers, the only constant seemed to be change and re-order ( Aka chaos ). I have come to believe that this is what will happen to any company when you replace your leaders with managers but that is for another post.

Now to the pleasant things of 2018

2018 has been the year where my family traveled to Europe together for the first time in 14 years. For my younger son it was the first time in his life, and the older one last saw Europe when he was a mere 6 months old. Ah memories.

Our trip started in Paris on June 19’th, when through Kelkheim, Germany where I grew up ( close to Frankfurt Main ) and then continued down south to the Cote d’Azures Nice, Monaco for a brief two days. We then continued along the southern part of France where we spent a few days in Château des Ducs de Joyeuse before we ended up in Toulouse for a week.

Toulouse is where the older one was born while I was working there in the early 2000’s, so it was very nice to be back there and re-discover the area. A lot has changed in Toulouse in the past 14 years and a lot has remained the same.

We returned back to Paris only to stay the last night close to the airport before returning July 10th.

There is an app for that

I have also started to take my apps a bit more serious and developed a whole bunch of new ones. I also bought a set of apps from Flippa, and became obsessed with ASO, SEO, Marketing methods, AdWord campaigns and so forth. I think this year I may tip my toes into the Apple Store with a port of one of my Android apps. On average there is still about two times as much money to be made on the apple store as compared to the google play store.

Apps are an interesting area, as some of the apps I put on the market were exceeding my expectations and most of the apps were underperforming from how they should have performed. I though that the time and money I invested in Reverse Video Magic would perform very well but it flopped on me. On the other side I had MP4 Video Converter was doing better than I could expect.


My current focus is on CPU Information which I would love to drive through a million downloads and more. Obviously I am very excited about the app and I am willing to spend time and resources in improving it. We shall see how far I can push this app along the way from a technical, marketing, ads, and social marketing point of view.

I would really like to develop another app which is backed by some sort of funny AI Chatbot. This is a project I have had in my head for the past decade or so. We shall see if I can put it all together on the backend. The apps itself will not be the problem. There are so many possible smaller or larger projects I have in mind that it would require a full time commitment from my side to provide all of them onto the app store.

My plan for this year is to do more on the Marketing and Social media front. I think if I can get this to the point where I earn enough organic downloads to replace most of my paid advertisement it could be very beneficial to my side hustle.

Screw Fiverr

As I mentioned before I got viciously removed from Fiverr for not breaking any Terms Of Service from either Fiverr or from any other company. The issue has left me be-dazzled as I was helpless in getting banned from a platform I have been using for years without any cause, just because Fiverr felt like it.
I hate companies which bully their customers and I am certain Fiverr will vanish if they continue doing this kind of random, self destroying thing, as they have been doing to many users before and certainly will do to many users after.

History is plastered with plenty of examples of companies ignoring or attacking their customers. None of those are around anymore.

Wow what the …

So 2018 is over and we are about to embark onto 2019. This year is going to be a great year. I feel it in my bones. I have a lot of things I want to accomplish this year. I am looking forward in looking back on 2019 and see all the things that will have happened by then.

Though let’s take it one step at a time and enjoy the journey from now to then.

Cylinder in OpenGL ES 2.0

For my current project, CPU Information I wanted to create a 3D representation for a Battery to indicate the remaining charge of it to the user in a visually appealing way.

Initially I used a 3D battery model but after playing around with it some time, I decided to build the Battery model in code instead. All that was required for it was to find a algo I could easily adjust for my program.

After searching for a few hours ( yes hours ) I came to realize that there was no good example for OpenGL ES 2.0 and I had to write my own.

It seems that there are plenty of examples for OpenGL 1.x or examples in many other different shapes and forms but none that I could find which simply creates a GL_TRAINGLE_STRIP – buffer and passing it to OpenGL ES 2.x.

Algolite

The algorithm will create a cylinder in one buffer by first creating the top circle, then the cylinder and finally the bottom circle. The OpenGL Drawing mode is GL_TRIANGLE_STRIP.

You only have to provide radius, height, and number of segments to create the cylinder. Once the floating point buffer with the vertices is created we have to convert it to OpenGL digestible FloatBuffer and the pass the information to OpenGL for rendering … Done.

Decomplexify

The passing of the data to OpenGL is cookie-cutter OpenGL code which you can find easily. I do not want to complexify this sample here by cookie cutting.


    // Creating a cylinder object to be rendered in OpenGL
    Object3DData createCylinder ( float radius, float height, int segments, float yOffset, float clr[] ) {
        float buffer[]  = createCylinderBuffer ( radius, height, segments );
        FloatBuffer vertices = makeFloatBuffer ( buffer, buffer.length );

        Object3DData     obj = new Object3DData( vertices );
        obj.setDrawMode ( GLES20.GL_TRIANGLE_STRIP );
        obj.setColor    ( clr[0], clr[1], clr[2], clr[3] );
        obj.setPosition ( 0.0f, yOffset, 0.0f );
        return obj;
    }

    // GL_TRIANGLE_STRIP -=> Standing cylinder
    float[] createCylinderBuffer ( float radius, float height, int segments )  {
        int iBuffSize = segments * 3 * 3 + (int)( ((float)segments/3.0f+1.0f )) * 3 * 2 + 6;
        float buffer[] = new float[ iBuffSize ];
        int t, idx = 0;
        float increment = (float)( 360.0f / (float)( segments - 1 ) );

        //create the top
        int iZeroCounter = 2;
        float hh = height / 2.0f;
        for ( t=0; t<segments; t++ )  {
            float angle = (float)( Math.PI/180.0f * t * increment );
            float cos = (float) ( radius * Math.cos ( angle ) );
            float sin = (float) ( radius * Math.sin ( angle ) );

            if ( iZeroCounter++ >= 2 )  {
                buffer[idx++] = 0.0f;
                buffer[idx++] = +hh;
                buffer[idx++] = 0.0f;
                iZeroCounter  = 0;
            }
            buffer[idx++] = cos;
            buffer[idx++] = +hh;
            buffer[idx++] = sin;
        }

        // create the cylinder
        for ( t=0; t<segments+2; t++ )  {
            float angle = (float)( Math.PI/180.0f * t * increment );
            float cos = (float) ( radius * Math.cos ( angle ) );
            float sin = (float)-( radius * Math.sin ( angle ) );

            buffer[idx++] = cos;
            buffer[idx++] = hh;
            buffer[idx++] = sin;
            hh *= -1.0f;
        }

        hh = height / 2.0f;
        for ( t=0; t<segments; t++ )  {
            float angle = (float)( Math.PI/180.0f * t * increment );
            float cos = (float)-( radius * Math.cos ( angle ) );
            float sin = (float) ( radius * Math.sin ( angle ) );

            if ( iZeroCounter++ >= 2 )  {
                buffer[idx++] = 0.0f;
                buffer[idx++] = -hh;
                buffer[idx++] = 0.0f;
                iZeroCounter = 0;
            }
            buffer[idx++] = cos;
            buffer[idx++] = -hh;
            buffer[idx++] = sin;
        }
        return buffer;
    }

    public static FloatBuffer makeFloatBuffer ( float[] arr, int iSize )  {
        if ( iSize == 0 )
             iSize = arr.length;
        ByteBuffer bb = ByteBuffer.allocateDirect ( iSize * 4 ); // Size of Float is 4 bytes
        bb.order ( ByteOrder.nativeOrder( ) );
        FloatBuffer fb = bb.asFloatBuffer ( );
        fb.put ( arr );
        fb.position ( 0 );
        return fb;
    }

Promising results

Here is the result in all its glory after stacking a few cylinders on top of each other, coloring them and give the battery a heart beat. Yeah, I think you can’t enough Special effect this one.

Please feel free to install CPU Information onto your Android device and try it out in action.
Get it on Google Play

Throwing money at google

Here, take these $26.​60 google to find me some nice people to install my app.
... but why would you do that ? Google already rakes in billions of dollars in revenue … Well let me tell you why.

I have been running a few AdWord campaigns in the past and I wanted to run a new ad campaign for my latest app :
CPU Information

CPU Information

As I just started out with this campaign and as I am not a huge corporation but a small indy-developer, I started with $20,- and thought to myself I want to get up a bit on the high side and then reduce my bid target to stretch the money throughout a 24 hour time period. So I started to target at $0.15 per conversion.

Chill time

Off I went onto doing different things. Then about an hour later I checked back and I had spend $26.60 already on this campaign. so 30% over budget and way earlier than expected. However this is not the reason I told you that I threw money at Google, the real head scratcher came when I wanted to correlate the approximately 200 conversions to my play store account.

Interestingly The play store hourly installs did not budge at all. So it is almost as if another app profited from my investment :(. I have no idea how this may have happened as I would have expected to see at least the bump of an additional 200 installs during that time period. Also My AdMob account showed the same unmoved result, as if nothing had happened and the 200 conversions did not reach my app at all.

I have shifted my approach now and reduced my bids down to $0.05 to stretch the installs out. Next thing to do is to go and dig a little bit deeper into stats from Firebase, the Play store, AdMob, and AdWord.

I want to find out what happened to my supposed conversions and the approx 42k views of my app. If you have an idea of what could be going on, please share and let me know.

AdWord where …

After some more digging I found one issue with the campaign which was location. Originally I wanted to only target the US and Canada. I set this up but I must have forgotten to click on the [Save] button before starting the campaign.
Thus my ads were distributed worldwide and a good chunk of the installs went to the southern hemi-sphere, to countries like Libya, Algeria, Iraq, India to name a few.

While this explains why the money was exhausted as fast as it was at the target bid prices, as well as why my AdMob revenue did not jump up. After all the cost-per-click in these regions is usually way below
what you will get in the northern hemi-sphere, I.e.  Europe or northern America. 
So from a regional targeting you get more per click however at the same time it is also way more expensive to get traffic to your app.

App Store stats …

I am still investigating as to why my app-store does not reflect the additional 200 installs.

And finally this mystery has been solved as well. It took The play store around 6hours to get the hourly stats to reflect the actual installs which came from this one-time boo-boo of mine.

What have we ( I ) learned

  • Be careful when starting a new ad campaign. Going forward I will set the max allowance to a small enough amount so that in case something does ot work out as expected, I can re-adjust before go all in.
  • Look at the stats of all available sites, like AdMob, AdWord, Google Play, and Firebase
  • Be patient. I have had some interesting correlation dissonance happened to me in the past. Especially the google play store stats are somewhat funky.

Shader Editor app

Android and iOS smart phones support the OpenGL ES 3D library.

The latest version for OpenGL Stand currently at 3.2 which was released in August 2015. Most phones on the market however support OpenGL 3.0 since Android 4.3 or iOS 7.

Those is versions we released in or around 2013 such by now was five years ago.

The OpenGL API had changed a lot between 1.x and 2.0 in that it introduced vertex and fragment shader languages as part of the spec. Prior to this, the OpenGL library stopped a set of will defined API calls to handle most aspects of the OpenGL Städte engine.

OpenGL shaders

As stated above, the shader language became past of the OpenGL Standard with version 2.0 and onwards. What it provides is more flexibility in programming the GPU tender pipelines. Instead of trying on a fixed, hardcore pipeline you can go ahead and code your own shader program.

This flexibility comes at the expense of some additional complexity alas this can greatly be migrated through the usage of or defined coffee snippets or libraries which sit Stop OpenGL.

The shader language is leaning heavily on c-style and is functional in nature. As the code is compiled, linked and will then be loaded into the GPU and run with a limited set of instructions, this language is limited in certain aspects and I would really recommend to find online courses or read a book if you want to truly understand the inner working of OpenGL.

 

OpenGL ES

The ES Stand for embedded systems, and is an indication that it has some limitations to the desktop version. Alright although those limitations are really not as big as one would think.

What is more is that WebGL is basically identical to OpenGL ES and many of the shaders you will find running in the browse will also run in your phone.

For example, the web page Http:www.shadertoy.com has a lot of very interesting looking shader samples which you can adapt easily to run on your phone.

But how ?

Shader editor

The shadertoy app can help you play around with some really cool looking shader examples. When you first download the app you will only see a limited set of available samples. Burger you can easily edit and save new shader samples on your device with this app.

The editor is using a just in time compilation of the code on a semi transparent editor window. This allows you to easily explore you shaders and view the results in real-time.

The way that this tool used the OpenGL libraries is to use a fixed vertex shader code base and have all the code executing in the fragment shader. Which is to say that the whole logic is about coloring the fragments ( parts of a pixel ) to achieve those stunning effects.

If you like to experiment and OpenGL is something you have always wanted to play around with, then Shader Editor is a small app you can not afford to miss.


Get it on Google Play

Get it on Google Play

D-Tube, video cryptonite

D-Tube is a distributed video platform based on Steem . Say what ???
Okay I can see the proverbial question marks popping off of your head. No worries, I am hear to help.

Lets  go through this one fancy term at a time.

Steem, Steemit, Steem-Dollars, Steem-Power


We all know Bitcoin or we have heard of it. That magical unicorn currency which created billionaires over night. And while a lot of what has happened in the past few months was mostly negative, such as the collapse of bitconnect, the underlying technology is sound and offers many new opportunities in the tech sector.

As bitcoin has eased off last years heights of over $19000,-US per bitcoin, it currently stands at around $3200,-US per bitcoin, the whole blockchain technology front is in search of providing value beyond the selling of dreams of digital currency backed by … well I leave that up to you to figure out …

Steem is a crypto currency which is in contrast to bitcoin is based off the. Here is a good rundown of what steem is. This article goes into steem vs steem-dollar vs steem-power.
Overall, steem solves a major problem in digital content creation. You can consider Steemit as similar to Reddit, where users can create and publish their content online and get rewarded for it. However, there is one major difference. it also rewards its users using cryptocurrency!

Oh and it is uncensored, decentralized and safe .. in theory.

D-Tube, the YouTube alternative

D-Tube was started by Adrian M  as an alternative to other digital content platforms such as YouTube. The whole concept is build around the steem cryptocurrency and as a creator you will be rewarded with Steem instead of US Dollars.

There is a lot to learn about Steem and D-Tube in the beginning but once you created your account with steemit you can go ahead and create contents and publish it on D-Tube without the fear that your video may be removed by a corporate working slave with a set agenda.

What’s more is that Steem will reward you for any kind of contents you create and publish on the Steemit platform. For example I am publishing this WordPress blog post on the Internet and also on Steemit to increase visibility, and potentially earn a few cents of Steem ( Dollars and Power ).

D-Tube app

​​ 
The D-Tube app can be used to view videos in a very similar fashion as you would watch YouTube videos. However the functionality at this point in time is not much further advanced as creating a shortcut to the d.tube mobile friendly web page on your home screen. Both solutions allow you to get very similar functionality as YouTube’s video client.

From a technological point of view I think that both YouTube, and D-Tube are neck-to-neck and you will have no issues finding your way around the app.


Video Quality

Now I am not talking about the resolution, bitrate etc here. What I mean with quality is the contents of the video provided on the platform.

While it is true that you can earn money on D-TUbe, the ability to do so heavily depends on the Whale’s on Steem. In reality what you will realize is that while there is no censorship on steemit, there is an indirect censorship driven by the people with the most money ( Steem-Power ).

If you make a video which one of those whale-people likes, you stand to earn a lot of money. On the other hand, if you like to create contents about knitting or Java, there will be very little you can earn.

But on the positive side, just like YouTube, you can create your audience over time and if you are truly good at what you do and you do provide real value to — the community –, then you can grow your income as well over time and eventually become one of those whales yourself.

App vs web-page-shortcut

Android App
Android App
If you are thinking about installing the app or simply creating a web-page-shortcut, then either one will do the trick at this time. I am confident that over time there will be more advantages in choosing the app.

For not my recommendation though has to be to go to your mobile browser, navigate to https://d.tube, then find your settings and “Add to Homescreen”.
Web Page Shortcut
Web Page Shortcut


Creator vs Consumer

The answer is Yes ( or 42, depending on your leaning ). You have to check this out and decide for yourself if you like it. I found myself fascinated with the whole concept and given the proper circumstances, I can see this platform grow by leaps and bounds over the coming years.

YouTube killer … not quite yet. But if YouTube continues to disregard the smaller contributors and build more negative sentiment I have no doubt that a platform like D-Tube will give the multi billion $ behemoth a run for its money ( and future ).

Overall app rating : 3 stars out of 5.
Overall technology rating : 5 stars out of 5.
Overall honesty rating : 5 stars out of 5

Get it on Google Play

JAMFOX earbits

A few weeks ago, my trusted BT headphones broke. I had them for about a 1.5 years and I was very happy with them.

They were comfortable and quality was great and they were omni-present to the point where I forgot I was wearing them around my neck.

 
I charged them up once in the morning and when I returned from work they could still give me company until bedtime. Obviously not un-interrupted.

Then one day the left side speaker gave out. It was the cable. In my younger days I would have fixed it with my soldering iron but as you grow older you tend to value your time more and so I decided to get a pair of new bluetooth headsets. 

JAMFOX Earbits

Wireless headphones have shrunk down to the point where they have been renamed to earbuds. Well JAMFOX thought earbits may be more along the lines of their marketing strategy and indeed those speakers are tiny bits of Bluetooth technology.

You get two bluetooth devices which connect to your phone. You can also use them individually. For example, you could loan one to your friend and keep the other one connected to your phone.

A fun experiment is to connect them to different phones and listen to both at the same time. Absolutely the best solution for people with multiple personality disorder.

In my case I was more the normal user and wanted to listen to music most of the time, talk on my phone, and also have the ability to use only one side to have the second ear available for my colleagues at work while I am in the kitchen eating lunch. 

Setup and usage.

In order to pair the set to your phone you have to only pair the JAMFOX-L and ignore JAMFOX-R. That is you do not need to pair the right side with your phone. The Left earbit will connect to the right earbit and thus allow you to listen to stereo.

The bits both come with built in microphones and allow you to do a normal phone call. They behave as you would expect, which means they will stop playing your music or video when a call is coming in.

Another great thing about those little gems are the touch sensors sitting on top of each earbit. They are used to pause / play, as well as increase and decrease the volume through double-tapping the left of the right bit.

Troubleshooting

I used them the first 4 weeks without any issues and eventually I gotten myself into the situation where I could only listen to the left earbit OR the right one but not to BOTH at the same time.

Searching online did only reveal a set of instructions which did not work for me but eventually I figured out how I could get stereo back:

I could fix it by

  1. unpairing from my Android device ( Nexus 6 )
  2. pairing it with another phone ( Remember to only pair JAMFOX-L, and ignore the right channel ). Stereo came right on.
  3. I then unpaired it with the second phone and could
  4. finally get stereo back on my Nexus after re-pairing JAMFOX-L

I hope this helps people with similar problems.

Conclusion

Those are great earbuds / earbits / headphones to have and they are well worth the investment. The battery pack will allow you to basically survive the whole day without the need to plug in.

The sound quality is the only thing which could be better however this is mostly due to the size of the speaker and I would not expect them to of the same quality as a full sized headset.

Please share your experience with them if you have the same set of earbits.

Android Storage Wars

If you have ever tried your hand on coding for Android you certainly have found google’s JAVA based API to be somewhat of a incoherent mess in certain areas, which over time has evolved into an even larger incoherent mess in even more areas.

One of those messy areas is that of the android secondary storage API. All phones have a primary storage area, where you can store images, videos, apps, and application data, and some phones come with a secondary storage option. The API to gain access to the primary storage has evolved over time but allows you to seamlessly integrate proper functionality into your app.


Now you may assume that the Android secondary storage would follow the same paradigm, and grant the same access as the primary storage to your app. However you would be wrong making this assumption. The reason you have apps like the “ES File Manager” handling this for you seamlessly is purely through tricky code in the background which circumvent googles protective scheme for secondary storage, Aka a hack.

Dont do evil … yeah right!


Yes, google in its drive to push people into using their cloud storage is actively pressuring phone makers to get rid of that large secondary storage, or worse the micro-SD slot. That overarching goal of google is driving the API and the access rights to the Androids secondary storage media in a negative way.

Let’s start with a small bit of terminology. Since the dawn of Android, nearly every type of storage has been considered “external storage” even the non-removable flash memory that comes in every device. To distinguish, the non-removable flash memory is called “primary storage”<, while a removable micro SD card is called “secondary storage”. In the early Android versions, an app merely needed permission to WRITE_EXTERNAL_STORAGE to be able to fully access both primary and secondary storage.

In March, 2011, a drastic change to Android was made which changed how secondary storage mediums (external SD cards) were mounted by the Android OS. Specifically, the commit read like this: “Mount secondary external storage writable by AID_MEDIA_RW rather than AID_SDCARD_RW.” This meant that the media would now have to belong to the “media_rw” group to modify the contents of the SD card. As a result, a new permission, called WRITE_MEDIA_STORAGE, was added to the source code. Basically, WRITE_MEDIA_STORAGE replaced the original WRITE_EXTERNAL_STORAGE.

This change has a devastating effect on apps trying to utilize secondary storage because from now on forward only system apps could request the permission to read/write to the external storage ( I.e. sdcard ).

Android secondary storage

Since the WRITE_EXTERNAL_STORAGE permission could be used by any normal app and thus any app can write to the primary storage but not to the secondary storage (external micro SD cards). The WRITE_MEDIA_STORAGE permission could write to the external micro SD card, but regular user apps could not request the permission. This change took place on Android 3.2 Honeycomb, but due to the logistics of hardware and storage mediums at that time, it was barely noticed.

Quote: “Starting around the time of Android 4.4 4 KitKat, and even a little earlier, the implementation of the userspace FUSE filesystem, in conjunction with changes to the open source code, resolved this problem. Yet, still to today, even with Android 8.x.x Oreo, third party apps must explicitly get the user’s permission for both primary and secondary storage before the app can alter either storage medium in any way. And of course, the newer concepts of adoptable storage have alleviated problems in this regard.” — end quote.

Bottom line

Thanks to google the way that most apps now handle android secondary storage heavily depends on the Android version being used. Unfortunately at this time most phones will have a hard time working with the secondary storage, but some phones do. I have updated the file browser integration into my apps and have fixed the issue of secondary storage on some Android versions and not on others.

This whole debacle has not only cost me weeks of effort and research, it has negatively affected all apps with file system access and is the main reason that almost all apps only storing their data on the primary storage, which in most cases is much smaller than the external storage. At this tmie you can get a cheap microSD card with up to 512 GB. However what good is this in your phone if most apps can only use the built-in 16GB ?

What martial arts has taught me about leadership

As a leader and manager of people you are at times confronted with tough choices and when the pressure rises and things start to get heated, I like to lean back and reflect at my younger years.

During my late teens and all the way into my thirties I have been a student of martial arts. I have spent countless hours in Dojos all around the globe and I have enjoyed it to the point of obsessing over it.

Shotokan Karate Kata bunkai
Shotokan Karate Kata bunkai, Nijushiho

My base has been traditional Shotokan Karate but I loved straying off course and discovering other martial arts such as JuJitsu, Judo, Aikido, Aikibudo, Shinjitsu, Kempo, and more.

I could go on about my glory days and the benefits of practicing these arts and the physical strengths you will gain if you are practicing between four and seven times a week. However this article is not the about physical strength but about mental strength.

Kihon

Karate requires practice, and it requires a lot of it. This is due to learning the proper coordination of movements to end in a single focused blow to your opponents body.

You start out to learn your basic moves. At first, they will look and feel odd. You have to use your mind to force your body to follow the moves. Then, as you move up in the ranks, you learn to internalize these moves and as they become more natural to your body, you start to learn how to apply those moves in combination with other moves.

kihon, the basics
kihon, the basics

Oi zuki, mae geri, gyaku zuki, or in tongue-in-cheek-English “Punch, kick, other-punch”, is a basic combination you learn early on. It will take about three to four training sessions to get used to this particular combination, and it will take you between five and ten years to master it. Really, I mean it, it will take that long to learn this basic combination to the point where you can apply it as a matter of reflex rather than -Think- about applying it.

Here is where this will help you with your leadership development.

As a leader you too have to learn basic moves in order to learn and grow in your field. You usually start at level one, which John Maxwell calls the positional leader. At this level you have become a manager of sorts over a team of people. At this point you will have to learn to Earn Trust.
At first this will feel odd. You have to Think about every decision and every meeting you have with your team. Then, as you grow your trust in your team, you learn to internalize these lessons and as they become more natural to your mind, you start to learn how to get to level 2, which is the permission level.

The Oddness of leadership
The Oddness of leadership

Kata

From Wikipedia: “Traditionally, kata are taught in stages. Kata is often described as a set sequence of karate moves organised into a pre-arranged fight against imaginary opponents. The kata consists of kicks, punches, sweeps, strikes and blocks. Body movement in various kata includes stepping, twisting, turning, dropping to the ground, and jumping.”

Shotokan Kata
Shotokan Kata

While this will seem strange at first you will eventually come to realize that performing a Kata with the right emphasis and the right mindset will help you improve your techniques, your strength, your form, and your timing.

Once you have a fair grip on the basics ( kihon ) as a leader, you need to learn to combine a whole range of different qualities and environments in order to achieve the best results with and for your team. You have to study different approaches to solve certain situations to be able to pull them out when you have to. You have to be able to set and monitor goals, give feedback, encourage, request, teach, be empathetic or strong. You have to add as many tools to your repertoire as you can, and as a leader you have to be willing and able to use those tools.

In most cases you will be able to select your management style. From tough love, to lending a shoulder to cry on. There have been plenty of studies which seem to show that there is no one-size-fits-all approaches to management. However in Leadership you have to have certain characteristics which will help you achieve level two with your team members. You have to have a mindset of servanthood. You grow yourself and your team. You are very good at observing and listening.

At level two, the permission level, people will follow you because they want to. Your team trusts your decisions and they trust that you have their back. It is where you build relationships with your team, they like you and you like them. In return, they do work hard to keep their commitments to you and your company.

Now at this level, results starting to appear.

One of my Sensei in Kata Bunkai – action

Kumite

Kumite is the practical application of kihon and kata. It is, in essence, a formalized fight following stringent rules. These rules are in place to allow the student to learn and practice a combat situation without the fear of a broken nose or other bodily harm. Kumite is what most people think of as a martial arts competition and is as close to combat as traditional Karate will get you.

You will not only learn to apply your techniques but you will also learn to be relaxed, concentrated, anticipate when an attack will happen and improve your reflexes. One important lesson I have taken home from practicing kumite was to always move forward, never move back. The best benefit of kumite however is that of friendship.

If you as a leader are at level three, the production level, you will lead by example. You work hard and you start to help the bottom line of the company. You start to build positive, reinforcing momentum and that momentum will help you break through the largest obstacles.
If you can get yourself and your team to this level, you will soon learn to be relaxed in a stressful environment, concentrate and focus on finding the required solution for the business, and anticipate when an you will have to make a change to the team, the project, or the goals before they become a real issues.

Kumite
Kumite

At this point you will always move forward. The only time you can lose is when you give up on something. You cannot be defeated for as long as you learn and grow and try again. And that folks is true in all parts of life.

Bushido

Karate, which stands for empty-hand, the karate-do, or the way of karate is given great emphasis. It is where the bushido, or the way of the warrior, makes its mark on Karate and lets us reflect on the roots of the art we are students of. This is in contrast to sports like UFC, or modern self defense styles which may or may not borrow from the traditional martial arts. In the self-defense sports, the goal is to enable the trainee to defend himself in certain situations.

My personal motivation to training martial arts has always been to seek control over mind and body, as well as staying in good shape. I was never under the illusion to defend with a single kick against a knife or a semi automatic. I have had the pleasure of training kids, and lower ranks in those days and it was one of the most rewarding activities I have ever experienced.

karate - do
karate – do

After all, in nature, we are bound to grow up, Learn from others, Apply the lessons learned, and then pass the information on to The next generation. Do as I do, not as I say has become one of my rules. In order to get there though I had to become the best I could be and I had to remain in that shape for as long as I wanted to teach.

Leaders as well should always strive to follow learn from others, apply those lessons, and then pass them on to your team.

“Leadership is a journey and not a destination”

The wise Sensei

For me, those days have long since passed and I know that the younger-me could pick me apart in an instance. However the ‘do’ ( the way ) has remained with me ever since. I am working hard, I am humble in working with and for my team. As a leader, I am forward looking and I have the back of every single individual in my team.

I try to lead by example and teach and grow my team. As a leader you should strive to be the Samurai and not the Ninja. Be committed to your team and your company, learn, read, study your whole life and most importantly practice what you preach.

John Maxwell – 5 levels of leadership
http://www.youtube.com/watch?v=aPwXeg8ThWI

The most beautiful thing

I found the most beautiful thing while going down memory lane this morning I stumbled over this video from way back when.

Sometimes it is good to sit back and reflect on the wonders we have in our lives today which we no longer perceive as such. We are surrounded by wonderful things which we notice the same way we notice a ghost before our eyes. We are sleep-walking by them refusing to give our brain the chance truly understand.

From the omnipresent cellphone to the internet of things. The space projects which received a recent boost through Elon Musk to the vast data centers set up by Amazon and Google. These are all man made marvels. However I challenge you to think back to the last time you marveled at a butterfly or the beautiful lines in a tree from the ground to the sky.

Think back at the progress human kind has made in your lifetime and then think forward to the change our kids may see.

In the sixties it was all but certain that by the year 2000 we will be traveling to the moon on a regular basis. While this has not panned-out we have accelerated in other areas. We have overcome the cold war, rivers were cleaned up and nature was preserved. We are working towards high-tech, higher-tech, and cyber-tech. When the borg meet Wall-E, HALL 9000 will be forgotten.

The Borg find Wall-E
The Borg find Wall-E

So wake up and look around. What are the wonders that you see ?