So when I started this journey I was excited to learn new environments and to get my hands dirty with the Android studio 2.1.
I made fair progress until the point where I wanted to add support for native libraries to my project.
Cross compiling the ffmpeg libraries took a bit of fiddeling, but I eventually got it to compile for all android architectures. The next small step though turned out to be mission impossible.
Adding ndk support for jni in android studio using the experimental plugin for Gradle. Quite a mouth full and honestly I would have preferred to not needing to learn all of the intrinsic details of the build system. I would have preferred to do serious programming instead.
I have literally spent a whole working week fighting build issues, and mind you I did make a lot of progress however every single approach I tried, every route I took ended in failure.
Each possible route costing me between 4h and two days.
For example the refusal of the build system to build a module without test cases. Then the constant complaining about duplicate entries when trying to assemble the apk. Why is the linker/assembler unable to resolve the basic task of NOT including the same library more than once?
Add to this frustration a bewildering set of ever changing keywords and structs in/for the Gradle build system and you will understand why it takes weeks to get basic operations to work. Trying to google any information requires to pay close attention on the post date of the answer to avoid outdated information
I am a big believer in tools which support the developer. It seems though that you must study the Gradle system and know all of the thousands little details an keywords and their meaning before you can actually use it.
Why this pain for a basic use-case which goes just beyond the brim of Java is just mind boggling.
Fallback to progress.
After spending a long time on many different things I have decided that it is time again to learn new tech and start a new project
360Tube came about after I purchased a 360 hemi spherical camera and found that it was quiet cumbersome to handle uploads to YouTube’s new immersive 360 experience.
The first step for me was to find a possible solution to convert the video from the circular shape to the required equi-rectangular format using Linux.
After some quality time searching I came up empty and decided to roll my own ffmpeg filter to convert the input appropriately.
After I had completed the filter I found myself playing a lot with the parameters yaw, roll, and pitch for every individual video.
What was missing was an easy and intuitive way to set the proper values using a GUI and most importanty I wanted this to work on my smartphone.
So the idea of 360Tube was born.
Since I have never written a mobile app before and since I am also new to Java it took a bit longer to get the initial set of GUIs working, mainly because they required custom controls to be integrated into the app.
Thought there is a lot I still don’t know I am now able to create almost all required interfaces. The integration of a custom media player which uses hardware acceleration to morph the input video will come in a later release
I am currently porting the spatialmedia Python scripts provided by Google to C++. These scripts will inject appropriate meta data into the mp4 container to enable YouTube to recognize the video as a 360 immersive video.
Once completed what’s left are only two things
1) finish up the GUI to achieve a MVP. This includes the real-time display of the roll and pitch settings.
2) integrate FFMPEG into the overall app as the rendering engine.
Of course there are tons of improvements that can follow, like the integration and handling of multiple lens, rendering of the preview in hardware using OpenGL, and an addition of a backend rendering farm and/or a cloud based service.
Also I want to enable the export to Facebook’s 360 box-format.
I guess once I cross the initial MVP stage I can gather some data on the order of building out the next set of features.
This past weekend I have been working on some issues with the creation of a kickstart image for RedHat and spent all of Saturday working.
In between the different test cycles I had also had the time to look a bit deeper into the integration of Cloud 9 with Python as I wanted to see if Cloud 9 can be a web based productivity suite.
As I don’t want to use the online version of Cloud 9, I installed the offline version on my computer at home.
I started by cloning the github repository:
bash> git clone https://github.com/c9/core sdk
bash> cd sdk; ./scripts/install-sdk.sh
bash> node server.js -p 8080 -l 0.0.0.0 -a : -w /ide/workspace
… and next you have to do ….
Well that was easy …
I have been talking about the cloud for years now CloudStack, StackOps, OpenStack, and RDO and it has gotten to the point where I want to get much more active in this area again.
Having setup a mixed environment for my pet project AstraNOS
I want to see if I can auto-scale the backend if I ever need to be able to scale out. This will help me build up my cloud admin muscles as well as giving me an opportunity to learn a bit more about Python.
Now however I wanted to get more in touch with a more streamline scripting language. I have gotten to the point where I used Perl enough to know that the tools are awful and debugging is usually done through tons of logging and print statements.
Python seems to come with a much larger set of debugging tools and IDE support from almost every possible editor ( Including Cloud 9 )
There are a few trademarks a good scripting language must have
1) A real good packet management system.
2) A huge amount of tutorials.
3) A huge amount of available third party packages.
Now I need to find the killer app I want to hook my teeth in.
I write this post to sort through the thicket of my thoughts on success.
While working out the other day I had a slew of thoughts crossing my mind. Namely what is the evolution of success and how do successful people achieve their results.
Sure there are those who get lucky, those who are at the right time at the right place. There are others who grow up in riches and those who are so mind-boggling stupid, they become an immediate internet sensation and earn millions.
Most of us though don’t want to eat a ghost pepper to get a shot on retirement. We are hard working professionals captured in a system which exploits the fact that most people stand by their obligations and family. Which of course is a very positive thing.
I started this stroll-of-the-mind by trying to figure out why it is that I seem to work so much harder than others of my peers and yet I have not been able to advance in any measurable sense. Actually I have found that becoming the best in your field of work can be a hindrance to your professional career in corporate america.
If you are very good at what you are doing, there is a lot of pressure to keep things going, when things are going good. If you are good and you are promoted away there will be a negative impact on your group and most likely on your manager as well.
I have seen a lot of people moving up the ladder of success all-the-while lacking an in-depth understanding of our products and the technology. It does not suffice to know the buzzwords, you have to actually understand why and what it does and whom it helps.
So back to this deep path of thoughts I realized that I was focused on trying to compare myself to the average working person who is doing their 8 hours daily and then go home, watch a reality show and get drunk. This bottom-up comparison is indeed a problem because the bar is set so low, just going for a walk seems like an accomplishment.
Instead I will now try to focus on the top-to-bottom approach and will seek those who went before me, down the path of success and personal freedom. The first part is finding one or multiple mentors. Successful people willing to share their knowledge and more importantly their experiences.
Looking at where I am currently at, where I want to be, and what it will take to get there, I realized that I have to know whom and where to look for.
I continued with my physical exercise and my thoughts continued to flow like a warm stream of magma from the top of my head to the sea of knowledge.
I came to the conclusion that there are four fundamental stages to success.
The Believe Stage
This level is where the vast majority spends their living days. The following bullet points capture the attributes
- Work ( Income to support the below points )
- Pleasure / Eat
- Relax / Sleep
- Save Money
- Complain / Shift the Blame
- Drugs / Alcohol / Smoke
- Avoid the Pain
- Being led
I would like you to look through this list and identify which are good and which are bad attributes to have, as well as trying to find out how they have affected your career and your life.
The Opinion Stage
- Food / Drinks
- Recreation / Exploration
- Games / Fun / Pleasure
- Passively Invest
- Having Stuff
- Ignore the Pain
These are attributes I’d call those of the aspiring middle-class. They love the competition for competitions sake. They like to earn big bucks and spend big bucks. They manage their lives with the knowledge they accumulated early on and are content with this. A strong opinion helps them to make up for the lack of knowledge.
The Adoption Stage
- Improvements / Learning
- Competition / Winning
- Influence / Power
- Actively Invest
- Embrace the Pain
- Becoming a Leader
Now this is a level where a lot of people spend a lot of time, energy, and money. Continuous learning and adopting to the changing circumstances will allow them to stay ahead by enough to remain on top of their game. Winning has become a habit and a major driver in their lives and they will go to extreme lengths to capture the next flag.
You are rich because you embody the above attributes.
The Giving Stage
- Heritage / Leaving a mark in history
Finally the last stage is to give back. To lead people into a better future. Leaving a mark on history is the ultimate success. Think of Henry Ford or Elon Musk. From the affordable car for everyone to Spaceship One and the first trip to Mars.
I will know you if you made it here. Actually billions of people will know you.
Hot off the press, you are now able to create some links in your folders.
I have also found and fixed an issue with linking your box account to AstraNOS.
So if you want to add a program to your folder, you can now pick and choose for a list of apps or you can specify a link to a web page such as youtube.
I have also added a menu item to the Folder object which now allows you to upload files easier than to go and open the ContentBrowser first.
Finally if you would like to take a little survey to help me add some real value to AstraNOS for you.
While playing with the Leap motion controller the past day or two I have found that the available computer controller software is quite raw. It does not allow for a enhanced user interaction but it seems to get in its way.
If this does not change then the Leap or similar controller will never become common interfaces for computers.
I believe that this would be a great loss and I know that this does not have to happen, as there are interactions which will absolutely enable the Leap to become an integral part of the end user experience.
OpenSuSE and Leap:
Unfortunately the Leap motion software is currently only available as a deb package. However it is fairly simple to extract the data and manually install it on your Linux system.
ar vx Leap-2.3.1+31549-x64.deb
tar -xf data.tar.xz
cp lib /lib -rf
cp usr /usr -rf
Following the above steps ( not you have to extract the proper deb package for your system ( 32bit or 64bit ) you can start leapd as root, and then run LeapControlPanel as a user in the background
I have been tinkering with the TaskBar a little ( or a lot ) as of lately and have now three options for you to chose from.
I like the all for various reasons. The first one is original and matches well with bright background themes and a playful personality.
The second is cleaner and and combines a common layout and usability while maintaining its own personality.
The XP Bar lastly will allow you to fool with people’s mind into thinking they are actually using Win XP ( just press F11 )
It is interesting in how simple it is to screw up basic functionality if you never use it.
I have a fairly old installation of OpenSuSE on my computer at home and I want to upgrade it to the most recent version. Of course one of the first things you’ll want to do is to backup your home directory, and move files around.
So why not simply move some of the files into the cloud, after all, this is what AstraNOS can do in a jiffy … right ? Wrong. I found that the upload functionality required some more loving to properly handle large files ( > 100Megs ).
Once I fixed this and the move began I also found to my amazement that non of the audio files would play. Phew a simple mis-configuration on the web server caused that headache.
I am now happy to report that I can watch videos, play audio, and copy files back and forth between Desktop, AstraNOS, and DropBox.
Since I am already at the storage layer I have also spent some more time to get box working. They have announced a solid 15GB for free.
So there I found yet another major bug, which would prevent proper download of any files to your desktop. So I quickly fixed this one as well and you are now able to use box, Dropbox, and AstraNOSs storage space.
I still have to finalize certain functionality within the next day or two and tidy up the code base but you should already be able to use this feature in its current form.
Update. I finished the integration of box. I have to admit that I like the Dropbox API better, as it is closer tailored towards the end user. box is using a object store on their side and the API exposed reflects this. I would think they could provide an extended API for ‘Normal’ users like me, which built on top of the core API.
This would most likely ease the adoption curve and draw more developer in
… Just my thoughts ….
The intertubes are a great place to discover new and usable toys ALL-THE-TIME.
One of those discoveries I had when I stumbled over the following video
Since I have been able to spend more time over the past few days on AstraNOS I have been able to integrate a dashboard like feature, which I intend in tweaking such that you will be able to generate these overlay gadgets in a resolution independent way.
So what else has happened in the past few weeks with AstraNOS ?
I have been busy working on the Conference app to improve the overall usability and user experience. You can now see the cursors of every user in the conference. It is now also possible to change you username in this session on-the-fly.
I enhanced the system such that you can now share the ImageViewer app with a conference. This feature still requires some work. At this moment only the presenter has the power to interact ( I.e. change images ). All other users are bound to a view-only mode.
What is left to be done for the Conference app ? In short : a ton.
1) For startes, I want to add the capability to share a file directly with each other peer-to-peer using WebRTCs data-channels.
2) I am also currently working on the [Advanced] feature which will allow you to control the Conference to a great degree and will allow you to E.g. lock the Conference, set a password for it, define if the video should start automatically, and if you want to receive a notification if some one entered the Conferencing session.
3) Adding capability to watch a Youtube video together and investigate Netflix, Amazon Prime Hulu Plus etc.
4) Implementing the TURN server such that you can have group sessions with more than a few people. This is to counter the WebRTC mesh strains. That is every connected participant in a simple WebRTC mesh requires to receive the data streams from all other participants. With a TURN server on the Internet I will be able to adopt to a star-topology which will trim down the connections to a central server.
5) Another thing high on my list is to fail back the communication over a WebSocket in case your browser does not support WebRTC.
This is a serious shortcoming of E.g. Safari at this moment, and from what I can tell WebRTC is not going to make it into Safari any time soon. So for all of you Appler’s out there, no video for you😦 However at least the remainder of the provided functionality will eventually work. And who knows I may end up writing a plugin which would allow for similar capabilities
6) Also missing completely at this point in time is a mobile app, which would make this experience so much more fun to use. Just imagine you can share in real-time images, videos, text etc with your friends who are online.
A leader creates an environment where each individual in his group enjoys coming to work, gets excited about the work ahead and will get out of his way to achieve a common set of goals for the benefit of the company.
A good leader will also work diligently on growing his team members to the point where they will be able to take on parts or all of his main responsibilities. He will in a sense spend a lot of his energy to make himself obsolete.
The disappearing leader
Let me clarify that I don’t mean to quit the company. After all, everyone could walk into their bosses office and quit when the going-gets-tough. Good leaders don’t quit when it is tough. They quit when times are good.
I am reminded of our former CEO, John Kealey, who has re-built our company from a near collapse to a thriving, multi-million dollar company. He achieved this in a few short years by his relentless focus on corporate culture and alignment.
He left the company when everything was on the rise. Revenue, growth and the size of the company. He left when the company was at its best. I remember the days where we were all working towards the next step, the next release, and the next exciting new feature.
I am now in a position, where I want to build up my team to the point where all members are aligned around the same vision of building the next industry leading product. This vision can only be achieved with a strong team, which is working together not with each other but for each other. I want to build a team which does not need to get managed anymore.
Coming from an engineering background, I have long since shed my zeal of forcing my personal coding style and product improvements onto my team members and have enjoyed tuning into their understanding of the lower level improvements required to advance the products which we are working on.
I help guide them when needed but I see my role mainly as enabler of sorts, balancing the set goals with the team members needs and understanding of the technical implications. Nudging them along to be aligned with our common goals.
For some individuals you need a stronger push than for others. The important part however is communication and clarity of vision. What is it that we want to achieve and why are we working so damn hard. Answering the number one question for each and every employee, “What is in it for me ?”
Interestingly for a lot of people it is not a bigger bonus, but recognition and opportunities. While a performance based bonus is always a nice thing to receive, once the company is not doing to well it can actually have the opposite effect and the good people are leaving.
Recognizing people for their achievements is the best way I know off to building a strong team. Best of all it does not need to cost much more then your time.
Talking to your team when things are going well is as important as addressing shortcomings when things don’t work out as expected. Positive reinforcement has always delivered better results in the long term than bossing people around with an iron fist. Focusing the group on getting things done and moving forward is obviously better than pointing fingers and playing the blame game.
Take that coffee break. Get your team members out of the office and to the nearest Starbucks. Talk about all possible, and impossible things. These may not necessarily be work related. If you have ever wondered where the Think-Outside-The-Box ideas are coming from, that’s one place.
You don’t have to become friends with every single team member, though if you are genuine you will discover a lot of commonalities and build some type of friendship and trust. Family, Work, Hobby, Sports are all great ways to do so. Though try to stay away from Religion and Politics, that could backfire in a big way.
I consider all of my team members friends, and have also built friendship within other teams. I love talking about our hobbies. If you ever want to see someones eyes light up with a fiery passion then I suggest to tune in. Listen to the cool and world changing ideas which come out in a setting like this. You may discover that there is a lot out there which you did not know about.
Offer them opportunities
Offer them opportunities to grow in their profession. If there are small side projects which need to get done, and if it is at all possible, I would recommend to find a new, exciting technology which could be used instead of using the existing tools and frameworks which are already in use by the team.
The very best opportunities however come along when the company is in need of a senior person and you only have junior or mid-level team members available. This is when you should lead and mentor, provide feedback, suggest tools and techniques. This is where you earn your stars as a leader.
Be honest about the opportunity, and re-iterate the expectations to the individual on a regular basis in a friendly setting. Help him overcome obvious obstacles. Ask him how he would go about achieving the next step and nudge him along, but always let him make the final decision even if you know that it won’t work. During these times I am a source of suggestions but never a micro-manager.
You will find that this will not always be a success and you need to embrace yourself for some set-backs. However on the flip side you may just have trained a home grown new senior member and leader.
To the outside these steps are invisible and seem like the sole achievements of the individuals. You simply hired good people who thrive naturally. In reality you have been the enabler. You are the invisible leader.
Love what you are doing
Love what you do and do what you love, that is the best way to achieve success. Leading a team offers great joy and challenges. As a leader you are in a position to make a real impact on your team and your company.