Author Archives: Paolo Brocco

Uninstall DaVinci Resolve 14 on Ubuntu

If you, like me, were tempted to Download DaVinci Resolve “free”* for Linux. Be aware that when you add folders to your media library, you won’t see your videos encoded in h.264 (which is the most used format).

Install instructions

Unzip the contents, then from the terminal run:

sudo sh DaVinci_Resolve_14.0.1_Linux.sh

Try to launch it from the command line too, you find the “resolve” program in /opt/resolve/bin

If you see some errors about missing .so files, you may need to install the packages containing the libs:

sudo apt install libssl-dev

You may also need: libgstreamer-plugins-base1.0-0

Then create symbolic links as follows:

sudo ln -s /lib/x86_64-linux-gnu/libcrypto.so.1.0.0  /usr/lib/libcrypto.so.10
sudo ln -s /lib/x86_64-linux-gnu/libssl.so.1.0.0  /usr/lib/libssl.so.10

I wanted to quickly try this video editor on Ubuntu 17.04 and I was highly disappointed not to be able to import any of my DJI drone videos. What’s the point of having a powerful professional editor that doesn’t even natively open any of my videos, while other open source editors like kdenlive, openshot can open these files? And no, I don’t want to convert my videos in a different format, just to open them in DaVinci.

Uninstall instructions

Also I struggled to find a way to uninstall this software, so here the instructions if you want to clean your hard drive after a disappointment similar to mine:

sudo rm -f -r /opt/resolve
sudo rm /usr/share/applications/DaVinci\ Resolve.desktop

If you this page was helpful, visit banggood to find a cheap gadget or something useful for a few bucks (free delivery worldwide!), if you buy from my link I get a small commission, thank you.

Jenkins: checkout Gerrit patchset (Gerrit Trigger plugin)

Today I had to setup automatic pipeline triggering for each new patchset pushed to Gerrit for review. The Gerrit Trigger plugin makes it a piece of cake to achieve the goal.

In reply to How to Checkout a Gerrit Change in a Jenkins Sandbox Pipeline: such a snippet can be easily found directly in Jenkins > browse to your pipeline > click “configure” > click “pipeline syntax” > Sample step: select checkout: General SCM > fill what you need, click on advanced and add a refspec and generate the snippet. Here a snippet using the GERRIT variables exposed by the plugin.

node {
 stage('checkout gerrit patchset') {
 echo "gerrit branch: ${GERRIT_BRANCH}, gerrit refspec: ${GERRIT_REFSPEC}"
 checkout([$class: 'GitSCM', branches: [[name: "${GERRIT_BRANCH}"]], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CleanBeforeCheckout']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'jenkins-rsa', refspec: "${GERRIT_REFSPEC}", url: 'ssh://yourgerritserver:29418/yourrepo']]])
 }
}

Note extensions: [[$class: ‘CleanBeforeCheckout’]] is a good idea if you need to build from different branches, if your setup is simpler, you can just use extensions: [].

MSBuild command line ignoring publish properties: solution

MSBuild 2017 command line seems to ignore your publish profile? You are trying to run a command similar to this and your projects/artifacts are not copied where they are supposed t be copied?

msbuild /p:Configuration=Release /p:DeployProjects=true /p:PublishProfile=Release

I have msbuild in my PATH, which is here just in case:

C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\amd64\msbuild.exe

Maybe you are using a build server, with Jenkins or a similar tool and you did not install Visual Studio 2017. I have such a setup and I installed just the ms build tools standalone package, find it at the bottom of this page: Build Visual Studio Downloads > find Build Tools for Visual Studio 2017.

This seems to be a well known issue, on github somebody reported the problem, and many people joined with a comment “Same to me”.

Solution

In my case, I noticed I forgot to select also Web development build tools > .NET Framework 4.6.2 development tools:

Updating ms build tools and adding this missing component did the job. Now when I run msbuild I get my artifacts as expected.

If this solution helped you, consider buying something at my favorite affiliate website. I consider this better than asking a donation, because like this you get a product you may need and use and I just get a little commission, which doesn’t affect the price, so win to win 😉

Maintain an offline NuGet source

To restore nuget packages in an offline VM, at work we need to regularly add those packages in a folder. We do it from our local packages folder, running a command like this:

C:\MySolution\packages>..\.nuget\NuGet.exe init . D:\NuGetSource

Then on the build server we configure a task to run this command before bulding the solution:

.nuget\nuget restore MySolution.sln -Source d:\NuGetSource

I’m sharing this, because I was thinking I could manually create a folder with the package name, then a subfolder with the version, then copy the nuspec and nupkg files. But the package I needed was never found. It seems that the init command I shared above adds also a sha512 file, this is the only difference and probably that’s why the package was not found.

iOS App Store Submission headaches

At work, from time to time we have to update our app. With Android the process (automated in TeamCity) goes smoothly. With iOS, if you are reading this chances are that you already know that it can be quite a pain: expired certificates, Mac OS updates, Xcode updates (at the moment of writing we use Xcode 8.2.1), plist updates, command line commands updates… even if you want to use an old system you can’t, you always need to update something (grr!).

In our TeamCity setup, we have the following 2 steps:

echo "Step 1: Building xcode project..."
 xcodebuild \
 -configuration Release \
 -project "./myapp.xcodeproj" \
 -scheme "MyApp" \
 -archivePath "./build/myapp.xcarchive" \
 clean build archive

and:

echo "Step 2: Exporting application..."
 xcodebuild \
 -configuration Release \
 -exportArchive \
 -exportFormat ipa \
 -archivePath "./build/myapp.xcarchive" \
 -exportPath "./build/myapp.ipa"

After the second step, we normally get an IPA file and upload it to itunes connect via Application Loader. In the last week, after apparently successful upload, as usual I checked in itunes connect > my app > activity > all builds, but I could not see the build! I waited a few more minutes, nothing. Usually it should be visible as “processing” and that can take some more time, but I was worried to see nothing at all… so I checked the command line output and noticed:

Codesign check fails : /var/folders/vk/…/myapp.app: a sealed resource is missing or invalid

and also:

xcodebuild: WARNING: -exportArchive without -exportOptionsPlist is deprecated

So I thought that maybe it would work better using the Xcode UI: “Product” > Archive, then “Window” > Organizer > Upload to App Store… this somehow gave more feedback:

ERROR ITMS-90035: “Invalid Signature. A sealed resource is missing or invalid.[…]”

Seems the same problem, but this time I could see the error upon upload attempts. So as suggested in this blog post by Ash: iOS App Store Submission Problems I added an export.plist file containing just the bare minimum:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>teamID</key>
 <string>MYTEAMID123</string>
 <key>method</key>
 <string>app-store</string>
 <key>uploadSymbols</key>
 <true/>
</dict>
</plist>

I had to find out our team id: https://developer.apple.com/account/#/membership

Then I adapted the export step and added the exportOptionsPlist option, like this:

echo "Exporting application..."
 xcodebuild \
 -configuration Release \
 -exportArchive \
 -exportOptionsPlist export.plist \
 -archivePath "./build/myapp.xcarchive" \
 -exportPath "./build/"

I could upload the resulting IPA via Application Loader and could see the build processing in Itunes Connect, but then it disappeared after a few seconds (I was reloading the page to see if there were updates). This time my boss received an e-mail that something was wrong. In our case:

*Missing Info.plist key* – This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.

After adding the missing info.plist key and value, the app could be uploaded and processed without problems. The story, written like this seems kinda easy, but I wasted at least half a day to try different commands and figuring out the proper solution. Sharing in the hope to help a poor soul with similar/same problems, as Ash did (thx man!). Good luck!

Samsung S Planner Sync now: all events disappeared

Yesterday I was in the bus with my wife and I asked her if she received a calendar invitation, she did but the event didn’t show up in her Samsung S Planner calendar. She said that normally, when she accepts an invitation it shows up*… she clicked “yes” again, still no event in the calendar. I checked in the app if there was an option to fetch the updates, I found one called “Sync now”, I touched it. With show, we noticed that all her past and future events disappeared. My invitation was there. So what happened?

My wife has a Samsung phone (Samsung Galaxy S5 mini) with a Google account. For some reason she doesn’t like the Google Calendar and for another strange reason (maybe to save some data traffic**) she deactivated the synchronization with the google account. She also hasn’t a Samsung account. So basically she has no synchronization with any online service, everything is local. Some entries (like my invitation to an event) appear in her calendar because the S Planner app shows the google calendar entries.

I believe that the S Planner app is so buggy that if it doesn’t find a Samsung account and one touches “sync now” it simply sync from an empty calendar which the app thinks it’s the “master”. So if you sync from master to slave, slave gets all updates from master, thus in this case everything is lost. What a stupid buggy app, really! A synchronization feature should be smart enough to sync in both directions to avoid data loss like in this case.

Anyway, I suggest people not to trust apps and always do backups. How do I do backups? Well, I synchronize my important stuff (contacts, calendar, notes) with the cloud so if my phone get broken, stolen, lost etc. I can simply open a browser anywhere else and see my data.

Another app I use, for all those apps that save data locally on the phone is Titanium Backup: I scheduled an automatic backup every morning a few minutes before my alarm for all my important apps and kept a few versions, just in case (so e.g. if an app erases everything and I notice a few days later I can still restore an earlier version, not just the last useless one).

So: activate that damn sync and use it (Google, or Samsung, or both). And if you still wanna use buggy apps such as S Planner, make sure to make backups of your local data if you don’t synchronize it with any cloud.

Open your Android Settings > Accounts > Google > touch your Google account > make sure “sync” is on > you can select and deselect what you wanna synchronize.

*You can activate the Google account synchronization and selectively choose what to synchronize. E.g. if you backup your pictures manually you can deselect photos, but sync at least contacts and calendar and other data that matters to you.

**I believe my google calendar event invitations showed up when she accepted them from a browser, so e.g. logged in in gmail, when clicking yes, gmail would update her google calendar.

How to easily resize a qemu disk image for Windows

To add e.g. 30 GB to an existing raw image usethis command:

qemu-img resize nameofimg.img +30G

In my case, the command was run instantly and it added 30 GB to my existing file, as expected. The output was:

WARNING: Image format was not specified for ‘nameofimg.img’ and probing guessed raw.
Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
Specify the ‘raw’ format explicitly to remove the restrictions.

See also QEMU Emulator User Documentation > qemu-img Invocation or the man page:

man qemu-img

In my case my image was used in a Windows 10 virtual machine. In the Windows 10 VM: click Start and search “partitions” > the search finds “Create and format hard disk partitions” > which clicked opens up “Disk Management” > Right click target partition > Extend > follow the instructions to extend your partition. It’s super easy.

Eachine E50 Elfie WIFI FPV mini drone review

Did you ever want to have a mini drone with the size of a smartphone? Read on before buying…

eachine_e50_elfie_4701

Eachine E50 WIFI FPV With Foldable Arm Altitude Hold RC Quadcopter RTF – only 41 USD !!!
(price checked and last updated on 2017-03-21)

Technical details

  • Size: 13.5 * 6.5 *2.5 cm (arms folded) – 13.5 * 16 * 2.5 cm (arms unfolded)
  • Weight: 73g
  • Flying time: 8-15 minutes
  • Battery: 500 mAh (included) – compatible with other mini batteries, I tested it with a 250 mAh battery (from my Eachine H8 Mini) but I had a very short flight (around 3 minutes)
  • Charging time: 120 minutes (USB adapter included)
  • Camera quality: 720 x 578 px (recording on the smartphone/tablet)
  • Built-in barometer: included (to hold the altitude, very nice feature for a mini drone!)
  • Many more features, check the product page

Unboxing and test flights

The Eachine E50 box is like the one of a smartphone. Quite elegant. I liked all contents provided in the box, especially the mini drone of course.

The arms (containing the propellers) can be expanded just like the DJI Mavic Pro, like this:

eachine_e50_elfie_4706

To turn it on you just press the power button and the front lights will turn on, just like a car:

eachine_e50_elfie_4708

Tell me if this isn’t a bad ass mini drone just by the looks!

eachine_e50_elfie_4707

You control this mini drone via smartphone or tablet with the WiFi UFO app. In the instructions they provide a QR code pointing to the wrong app, so don’t even bother installing that app, it doesn’t work. Use these apps:

WiFi UFO app instructions

img_0136

img_0137

To begin, turn on the mini drone, then after a few seconds on your smartphone or tablet connect to the “Eachine” WIFI (the number after “Eachine” can vary) :

eachine_connect_wifi

When you open the app, the initial screen looks like this, touch “play”:

img_0132

If you connected to the Eachine WIFI, you will see the drone camera view:

img_0133

Now touch “Off” to show the controls:

img_0134

You’re almost ready, touch the hourglass icon (the one after “30%”) to show the controls to be able to take off and to land:

img_0135

Now you are ready to fly. Make sure that the 1st time you try this where you have a lot of space. Don’t try this indoors if you are not an experienced RC pilot! Go outside, find a place with a lot of grass, try thee to get familiar with the controls. When you are experienced you can try indoors. I warned you… Here how the controls work:

img_0138

img_0139

Touch the “up” icon (bottom left) to take-off.

Touch the “down” icon (bottom right) to land. Please note that when you touch “down”, the mini drone takes a bit of time to automatically land. You may still have to control it a bit.

I use “stop” to land, when the drone is very low in altitude, close to the place where I want it to land.

Control this drone with a PlayStation 3 controller

Controlling this drone via touch screen is a real pain. I almost lost it a few times and so a friend of mine owning the exact same drone. But I recently found online a hack that improves the experience a lot. It’s a driver that allows you to map a PlayStation 3 (also PS4) Dualshock controller to the touchscreen virtual sticks and buttons. It’s awesome! Check the tutorials here (courtesy of rc fly base):

Tutorial, part 1, check the compatibility (you need an Android device with root access):

Tutorial, part 2, create a touch profile and see the hack in action:

Similar drone: Eachine E52

If you can’t or don’t want to use “hacks” like the PS3 above, you can still buy a newer version of this drone, which comes with controller included and costs even a bit less: 34 USD

Eachine E52 WiFi FPV Selfie Drone With High Hold Mode Foldable Arm RC Quadcopter RTF

But it uses a different type of battery hat I don’t really like. E.g. the E50 model supports even the smaller batteries of my Eachine H8 mini drone, and since I have a 5-pack + charger I can use them also for the E50 model, which is quite nice.

Mini Review

From what I’ve tested, this is the 1st mini drone I’ve ever had with a built-in barometer for this price. The video quality is not good, check my video and see the footage I took. I do drone videos and the footage I took is unusable. Controlling it via smartphone or tablet can be a plus or a minus. I’m used to remote controllers and I hate controlling a drone with a tablet…

Pros:

  • very small, can fit your pocket
  • altitude hold
  • really a true new awesome experience controlling this drone with the PS3 hack (see above)

Contra:

  • bad video quality, not stabilized at all
  • too light: a bit of wind and the drone is moving around
  • sub-optimal touchscreen control, can be frustrating sometimes
  • you can’t really use it for selfies as advertized

Pro or contra (depends on you): controllable via app.
If you intend using this to start the drone hobby, you will start wrong because you will focus on the app and not on the drone. Also, the control via app is very bad compared even to a mini remote controller available in other toy drones.

If you still wanna Order one, keep in mind you are buying just a toy!

Conclusion and my honest suggestion: for 15 USD you can buy a mini drone with remote controller, but no camera to distract you form flying. Check my mini drones comparison.

The price is ok, free delivery in many countries worldwide!

eachine_e50_pocket

Compact drone alternative to DJI Mavic Pro (Xmas 2016)

If you are a shopaholic, drone addict, don’t own yet a compact drone, you are tempted to get one, you are looking for special deals, or waiting for Christmas: have a look at this interesting idea for a present or just for fun.

Buy a small quadcopter before buying a bigger, more expensive drone. If you don’t know this website yet, give it a try: it’s where I purchased all my mini drones, drone accessories and spare parts.

I recently ordered a few mini drones with camera, to connect to the smartphone/tablet. I will review them soon, asap I receive them. For now I wanna share the most unique one (which I’ve just found a few days ago):

Eachine E50 WIFI FPV

Eachine E50 WIFI FPV With Foldable Arm Altitude Hold RC Quadcopter RTF – only 42 USD !!!
(price checked and last updated on 2016-12-20)

eachine_e50_wifi_fpv_with_foldable_arms_altitude_hold_compact_drone

eachine_e50_pocket

  • Weight: 73g
  • Control distance: about 40m
  • Control: via WIFI UFO app
  • Flying time: 8 – 15min
  • Battery: if you own other Eachine mini drones you may re-use the ones you already have


It’s a mini quadcopter with camera (advertized for selfies) and foldable arms.I believe that this could be an awesome choice for a beginner: it has a built-in barometer to hold the altitude, a feature that I don’t easily find in other mini drones for this price, thus a big plus. I really like it because it reminds me the DJI Mavic Pro compact drone! Of course you can’t even compare this with the Mavic, but still, it looks fun and costs just a fraction. Looking forward to receive it!

See also my comparison between 2 mini drones for beginners.

Good and exciting reading about the future

Today a friend of mine shared a quote: “Every moment in business happens only once. The next Bill Gates will not build an operating system. The next Larry Page or Sergey Brin
won’t make a search engine. And the next Mark Zuckerberg won’t create
a social network. If you are copying these guys, you aren’t learning
from them.” ― Peter Thiel, Zero to One: Notes on Startups, or How to Build the
Future

Good that we have already the next big guy! On my opinion Page & Brin (which I highly respect) are not as exciting as Elon Musk… and in fact I read they even support him with some donations they believe would have a better return on “investment” than charity donations.

I recently discovered this blog “Wait But Why” (WTB), do you know it? I wanted to read the latest article about SpaceX, but it suggested to read the entire series about Musk. So I started here (putting the links in a more organized way than in the WTB pages):

Elon Musk: The World’s Raddest Man – “blog style” biography of Elon Musk (probably you have read enough about him, so you may skip, but if not, good read).

How Tesla will change your life – very good article (my favorite) explaining the story of cars, energy and how Tesla will revolutionize the world. I loved it.

The deal with the Hyperloop – very cool article about super fast public transportation

How (and Why) SpaceX Will Colonize Mars – humans as multi-planetary species and human backup on Mars lot to read (divided in several parts), available also as audio book(s). I listened the audio books and it was well narrated: understandable and entertaining voice.

The AI Revolution: The Road to SuperintelligenceAI and super artificial intelligence, what it is and thoughts on how it could be reached

The AI Revolution: Our Immortality or Extinctionthoughts about super artificial intelligence outcomes: it takes over the world or we get all the good stuff from a friendly AI

All good stuff I can recommend… so have a good read or good listening.

By the way, for such very long articles you may find it useful to have an app to read them later on a tablet or smartphone (that’s what I do, I read most of the articles I find in the public transports or comfy at home on the sofa, not in front of the PC), if you still don’t know the Pocket app, I recommend it. See also my article about Pocket.

Last but not least, if you ended in this page and you like this kind of stuff, you may be on a similar wave length as mine and may be interested in drones. Check my page about drones.