Saturday, December 22, 2018

Using my iPad as a Laptop Replacement, and for Coding!

By Steve Endow

For the last month, I've been using an iPad Pro with the Apple Smart Keyboard Folio and Apple Pen to see how much work I could do on the iPad, and see whether I could use it to replace my laptop.

When I am away from the office and have a few minutes to get some work done, I want to start working immediately, and get a task done immediately.  It feels like it's getting harder for me to do that without interruption on my Windows laptop. Sometimes WiFi is flaky and I have to reboot. Other times the VPN won't connect and I have to reboot. Then there are the incessant, nagging Windows updates that regularly interrupt my work and sometimes require a reboot. I'm currently having a weird issue where Windows File Explorer is unresponsive for 10-60 seconds, CPU utilization spikes for no obvious reason, and I either have to wait for things to calm down, or have to, you guessed it, reboot to try and clear things up.

Obviously, this topic isn't even relevant for many people who primarily work at a desk, but if you regularly work remotely, or regularly use a laptop for productivity tasks, I think the iPad is worth trying.

In this video, I show how to code Azure Functions on an iPad and use the Azure Continuous Deployment feature to automatically deploy the changes made on the iPad.

The entire video was made on my iPad.  The presentation, the screen shots, the code, and even the video editing was done completely on my iPad.

Thursday, December 20, 2018

Bulk Export Dynamics GP Document Attachments using .NET

By Steve Endow

1/23/2019 UPDATE:  Version 1.20 released

A user on the GPUG Open Forum asked if there was a way to export all of the documents that are attached to Dynamics GP customers.

I previously wrote a blog posts showing how to export a single document attachment using BCP:

And another showing how to export a single document attachment using .NET:

But the BCP solution is only for a single attachment, and the .NET solution didn't have any features for filtering or organized export of attachments.

So today I updated the .NET solution to allow the user to select a Database, Record Type, and indicate whether Deleted attachments should be exported.

Once those options are selected, the user can retrieve a list of all of the attachments, which shows the type, the associated record number, the file name, and file size.

The user can then select an export path and click a button to export all of the attachments to disk.

The application and full source code can be downloaded here:

       Version 1.20:!Au567Fd0af9TpRUtDRq_heyOh50p

Version 1.20 includes several enhancements:

-Login dialog allows you to specify SQL Server, username, and password for SQL login
-Support named system databases
-Config file allows you to add additional document types
-Added PM and POP document types

New record types can be added by editing the SaveDocAttachFiles.exe.config file. Locate the RecordTypes setting at the bottom of the file and add new name + code pairs to the list.

Please note that this .NET application was assembled in a few hours, and is not a refined, polished, commercial software release.  It does not have lots of configuration options or error handling, so you will want to test it in a TEST environment and be aware that it may need some modifications to work in your environment.

Steve Endow is a Microsoft MVP in Los Angeles.  He is the owner of Precipio Services, which provides Dynamics GP integrations, customizations, and automation solutions.

You can also find him on Twitter and YouTube

YubiKeys are neat, but have very limited the moment.

By Steve Endow

TL;DR: If you're a typical computer user, save your money and do not purchase U2F keys at the moment.  The technology is promising, but adoption is still so limited that it probably doesn't make sense for most people to use U2F on just one or two accounts.

January 2019 Update:  A security researcher has developed a tool that can intercept logins and 2FA codes through a man-in-the-middle attack.

This type of attack can apparently defeat most, if not all code based 2FA systems.  The article only mentions that the tool "is inefficient against U2F-based schemes that rely on hardware security keys."  I am not sure if author did mean inefficient, or if he meant ineffective, but I don't think U2F tokens would prevent the browser from authenticating with a YubiKey with the MITM in place.  This YubiKey article explains that U2F prevents authentication with a fake phishing site, but does not appear to directly address the MITM proxy attack used by the Modlishka tool, which accesses the real Google site.

If anyone has information indicating that U2F validates the URL and / or can prevent a MITM proxy attack, I would love to read about it.

I read about physical USB security keys quite a while ago, but it wasn't clear to me exactly how they worked and I couldn't fully understand the value that they provide.

They go by various names:  'security key', 'USB security key', U2F, or FIDO.  And then there are specific brand names for the keys, such as YubiKey (by Yubico) and Titan Security Key (by Google).

I had previously considered trying one, but couldn't figure out what I would use it for, until last month when Troy Hunt wrote an article on how he researched Google's new Advanced Protection Program and how it uses U2F.

The article is very informative and speaks well to how easy it is to setup the U2F keys.

Shortly after, I read some announcements claiming that Microsoft had added YubiKey support to Microsoft logins. Awesome, right? (I failed to read the fine print)

So I decided to buy some and give them a try.

The reviews I read about Google's Titan keys were mixed. While they are more economically priced, the key fob version is apparently cheap plastic that can fall apart or break if dropped.

So I decided to pay more and get the YubiKey version, which appears to be much higher quality.  And that's where the first issue becomes obvious.

Restoring data from a broken Business Central Docker Container

 By Steve Endow  (This blog post is inspired by a forum question. Credit to Arvydas for the question and sharing the solution.) What if I ma...