Electric Skateboard

Bill Of Materials

This assumes you already have a deck, some tools, and a way to charge the battery.

Total cost for this build was around $250 minus the charger, which gives you a battery and a motor that’s around double the capacity and power of the cheap stuff you can order online.

Yes I realize the pulley should be on the other side, but there is no way with this motor to make that happen because the shaft is too short and the mount only attaches properly on this side. It’s not ideal, but it works. Remember to tie your shoelaces tight. Or just buy the good motor from hobbyking for 3X the price.


More photos, video, and build guide coming soon.

Battery Holder $30, a bit pricey but holds everything almost perfectly.

Electric Motor $26 on sale

Single Motor Controller with Remote Control $33 on sale

Calibur Trucks $44, these are needed to get the mount to fit right

Battery $49 on sale. Biggest capacity I could find, hopefully not drawing too much current from it

Hobbyking eSK8 kit $40 on sale, nearly always sold out 🙁

You’ll need a balance charger and leads for charging the battery, these are the ones I got:

XT60 Y cable one end goes into the battery, one into the controller board, and one hangs out the side to plug in the charger.

balance charger board with plug

You’ll need some kind of plug for the balance lead, this is easy enough.

balance lead extension cables You’ll want balance lead extension cables unless you make your own.

you also need a 4mm banana plug to female xt60, unless you change the end on the Y adapter. I had real trouble finding one on amazon, you might have to make your own.

ezlok nutserts

I think these are the shortest ones they have. You may have to epoxy glue them in depending on how hard your deck is, as screwing them in can be difficult in harder woods.

screws that fit the nutserts
These are really good screws and they are black.

Get an exacto knife for cutting plastic.

You’ll also want some blue locktite and a good set of sockets and allen keys.

More soon!

Get a full text dump of all safari cloud tabs from other devices like iphone, ipad, or other mac

The data is stored in ~/Library/Safari/CloudTabs.db which is an SQLite database that can be opened with the free tool DB Browser for SQLite

Once you have it opened you can dump out the URLS by going to the Browse Data tab, opening the cloud_tabs Table and copying out the URL column. 

If you use OneTab You can even copy out the title field as well, dump it in Excel, put the URL field in column A, a | in column B and the Title in column C

copy that to the clipboard, dump it into your favorite text editor, do a find and replace on the | and replace the tabs with spaces,

then copy the whole thing into OneTab.

dump your list in there and then you can open them all at once or browse at your leisure.

I found an Alfred Workflow that automates this and edited it to dump the output to a text file on my desktop that I can then open and import into OneTab.

The main thing I changed was to output to text instead of markdown, and the format of the outtext at the end. Thanks to kmarchand for the code.

outtext += '%s | %s\n' % (tab['URL'], tab['Title'])
outtext += '\n'

Now I can just open the file and dump it into OneTab. Next step will be working out how to automate that.

MAS and Director integration

doesn’t seem to work on just HTTP
Needs a host file or DNS to be done if using wildacrd cert.
Needs cert chain to be correct.
Can’t use a pfx cert on MAS even though you can on netscaler, so export the wildcard.pfx.ns cert off the netscaler and rename it to a .pem then import to MAS, which will then reboot.

Need to run the exe in C:\inetpub\wwwroot\Director\tools

Use the parameter /confignetscaler from command line.
add MAS FQDN and select secure.


If it doesn’t work you’ve probably got either SSL or DNS errors (or both!)

device registration error with server 2016 and Windows 10 0x801c001d10

It looks like there is a bug in Windows 10 / Server 2016 where it automatically tries to register as a device with Azure for some reason.
Not a lot of info out there on it.

It’s related to a scheduled task. If you disable the task, logins through Server 2016 and your Windows10 VDI will work again.

The Scheduled Task “Automatic-Device-Join” is located in: Task Scheduler Library\Microsoft\Windows\Workplace Join.

The task calls %SystemRoot%\System32\dsregcmd.exe.

The work-around is disable the task or configure the GPO Computer Configuration > Administrative Templates > Windows Components > Device Registration.

Help text from the GPO:
This setting lets you configure how domain joined computers become registered as devices. When you enable this setting, domain joined computers automatically and silently get registered as devices with Azure Active Directory. Note: Additional requirements may apply on certain Windows SKUs. Refer to Azure Active Directory Device Registration Overview. http://go.microsoft.com/fwlink/?LinkId=307136

Notes to self

When using pvs with ram cache overflow to disk, be sure to assign the disk a drive letter before running the imaging wizard. Failure to do so can cause a bluescreen.

When using a client configured netscaler make sure to check if Client IP is configured globally. This can really mess up routing if you’re not expecting it. You can turn it off per service.

If your login isn’t working or you get “cannot complete your request” message from StoreFront after logging in via the Netscaler, check to make sure you are in the correct AAA group. This should be your first troubleshooting step.


How to Update XenDesktop MCS Master Image for Dedicated and Pooled Machine Types using PowerShell SDK Console

I’ve called Citrix Support about this exact issue several months ago and was told there isn’t a supported way to do it and I would have to create a new machine catalog.

It turns out that isn’t correct!

There is a fairly simple way point to a new snapshot with PowerShell.

You may need to stop any Provisioning Tasks and remove them. They can get stuck when they can’t find the snapshot.


Get-ProvTask -Active $True

To see if you have any active tasks on your provisioning scheme

If you do, run

Stop-ProvTask -TaskId UidGoesHere


Remove-ProvTask -TaskId UidGoesHere

After that you should be good to go with the commands from here http://support.citrix.com/article/CTX129205

Publish-ProvMasterVmImage -ProvisioningSchemeName "%provisioningSchemeName%" -MasterImageVM "%templatePSPath%"


Publish-ProvMasterVmImage -ProvisioningSchemeName win7_new –masterimagevm XDHyp:\hostingunits\NEW\NEW-Win7.vm\existing.snapshot\Citrix_XD_win7- pooled.snapshot\Citrix_XD_win7-pooled.snapshot\sp1.snapshot\2505438.snapshot\afterupdate.snapshot

Hopefully this helps anyone that will inevitably run into this!

Full text of the CTX article below in case it disappears.


Complete the following procedure to update the master image on Dedicated or Pooled machine types using PowerShell SDK:

Note: Changes applied to the master image of a Dedicated Catalog takes effect only for the new machines created from the image. These changes are not applied to the existing machines in the Catalog.

  1. Modify the master Virtual Machine or new virtual machine with the required changes.
  2. Take a snapshot of the modified virtual machine.
  3. Start PowerShell on Delivery Controller (Controller).
  4. Run command Add-PSSnapIn citrix*.
  5. Run command Get-ProvScheme.

    This displays a list of Provisioning Scheme(s) from the XenDesktop site. Make a note of the MasterImageVM entry.


    ProvisioningSchemeUid      : 2a01126c-0352-41e0-9603-9118120e15c3
    ProvisioningSchemeName     : win7ded_anu
    MasterImageVM        : XDHyp:\HostingUnits\anu\Anu- Win7.vm\existing.snapshot\Citrix_XD_win7-pooled.snapshot\Citrix_XD_win7-pooled.snapshot\sp1.snapshot\248813.snapshot
    MasterImageVMDate          : 4/14/2011 6:01:21 PM
    IdentityPoolUid            : 1d227066-f5ee-41b9-8a99-753e9d060e42
    IdentityPoolName           : win7ded
    HostingUnitUid             : d534c437-6c65-4659-97db-d6b86534685b
    HostingUnitName            : anu
    VMMetadata                 : {A, A, E, A...}

    Note: This preceding information is also required for reverting to the previous image.

  1. Run the following command to display the list of snapshots on the virtual machine:

    Get-ChildItem -Recurse -Path ‘XDHyp:\hostingunits\%hostName%\%vmName%.vm’

    ExampleGet-ChildItem -Recurse -Path ‘XDHyp:\hostingunits\anu\Anu-Win7.vm

    Where, hostname is anu and vmname is Anu-win7.


    PSPath         : Citrix.Host.Admin.V1\Citrix.Hypervisor::XDHyp:\hostingunits\anu\Anu- Win7.vm\existing.snapshot\Citrix_XD_win7-pooled.snapshot\Citrix_XD_win7- pooled.snapshot\sp1.snapshot\2505438.snapshot\afterupdate.snapshot
    PSParentPath  : Citrix.Host.Admin.V1\Citrix.Hypervisor::XDHyp:\hostingunits\anu\Anu-
    Win7.vm\existing.snapshot\Citrix_XD_win7-pooled.snapshot\Citrix_XD_win7- pooled.snapshot\sp1.snapshot\2505438.snapshot
    PSChildName   : afterupdate.snapshot
    ObjectPath     : /Anu-Win7.vm/existing.snapshot/Citrix_XD_win7-pooled.snapshot/Citrix_XD_win7-pooled.snapshot/sp1.snapshot/2505438.snapshot/afterupdate.snapshot
    FullPath       : XDHyp:\hostingunits\anu\Anu-Win7.vm\existing.snapshot\Citrix_XD_win7- pooled.snapshot\Citrix_XD_win7- pooled.snapshot\sp1.snapshot\2505438.snapshot\afterupdate.snapshot
    IsSymLink      : False
    AdditionalData : {}
  1. Run the following command to publish the details of the master virtual machine:

    Publish-ProvMasterVmImage -ProvisioningSchemeName “%provisioningSchemeName%” -MasterImageVM “%templatePSPath%”


    Publish-ProvMasterVmImage -ProvisioningSchemeName win7ded_anu –masterimagevm XDHyp:\hostingunits\anu\Anu-Win7.vm\existing.snapshot\Citrix_XD_win7- pooled.snapshot\Citrix_XD_win7-pooled.snapshot\sp1.snapshot\2505438.snapshot\afterupdate.snapshot

    Where %provisioningSchemeName% is win7ded_anu and %templatePSPath% is XDHyp:\hostingunits\anu\Anu-Win7.vm\existing.snapshot\Citrix_XD_win7- pooled.snapshot\Citrix_XD_win7- pooled.snapshot\sp1.snapshot\2505438.snapshot\afterupdate.snapshot.

    The preceding command updates the master image and displays the result.


    TaskId                     : c6b5acf4-f950-428c-82a4-0150dab99945
    Active                     : False
    Host                       : XX-W2K8R2-DDC
    DateStarted                : 4/15/2011 5:01:44 PM
    Type                       : PublishImage
    Metadata                   : {}
    WorkflowStatus             : Completed
    ProvisioningSchemeUid      : 2a01126c-0352-41e0-9603-9118120e15c3
    ProvisioningSchemeName     : win7ded_anu
    MasterImage                : XDHyp:\HostingUnits\anu\Anu- Win7.vm\existing.snapshot\Citrix_XD_win7-pooled.snapshot\Citrix_XD
                                 _win7- pooled.snapshot\sp1.snapshot\2505438.snapshot\afterupdate.snapshot
    HostingUnitName            : anu
    HostingUnitUid             : d534c437-6c65-4659-97db-d6b86534685b
    ADIdentityPoolName         :
    ADIdentityPoolUid          : 1d227066-f5ee-41b9-8a99-753e9d060e42
    TaskState                  : Finished
    TaskStateInformation       :
    TaskProgress               : 100
    DiskSize                   : 24

    The following confirmation message appears in the Citrix Studio action pane:


Citrix for HelpDesk staff

There is an awful lot of technical documentation out there for engineers and admins but not a lot of you are first level IT support.

What I get asked for a lot is a run sheet for support staff to quickly troubleshoot the most common Citrix issues. Now Citrix has gotten a lot better over the years to the point where you may not even have issues on a day to day basis anymore.

But for those time that you do, here is a brain dump of links and some helpful tips that I’ve pulled together from existing Citrix documentation.


Sample Call Script

Steps Details
1 Name of Customer, particular site or location if possible.
2 Name of User, department, Logon ID and callback number.
3 Do any other users at the site experience the same issue?  Can they have a colleague logon from same and/or different workstation?  Helps to determine whether this is a workstation issue vs. user account issue.
4 Identify workstation name or Inventory ID.
5 Name of Application attempting to access.
6 Review high level steps taken to authenticate.  This validates that steps are performed correctly.
7 Can user see the Web Interface or authentication page?  Can users see other web pages, such as google.com?  This helps to identify and troubleshoot network issues.
8 Does user see the appropriate icon?  Helps to troubleshoot user access and group memberships.
9 Does application launch when icon is selected?  Does the application logon screen appear?  Helps to determine if a connection is made into Citrix architecture.
10 Can user authenticate into the application?  Does the issue occur after application authentication? Helps determine if this is a Citrix infrastructure vs. Application Issue.
11 What is the application error(s)?  Provide a screenshot.
  Question Answer
Contact Number /Email
Contact Preference (Phone/Mail)
Resident Office
Current Location
Current Time Zone
Severity of the incident
# of affected users
Name of affected application
Description of the incident <Provide Screenshot / Video when escalating>
Troubleshooting performed
  Question Answer
Client name
Client IP
Client hardware type
Client OS
Version Citrix Receiver
Name of XenApp Server / virtual desktop
Name of PubApp / PubDesktop
User’s issue See these suggestions:
Logon takes a long time or fails intermittently or repeatedly Diagnose user logon issues
Application is slow or won’t respond Resolve application failures
Connection failed Restore desktop connections
Session is slow or not responding Restore sessions
Video is slow or poor quality Run HDX channel system reports


  • Remember that Citrix Printing policies and Group Policy Objects can alter printing behavior.
  • Printer property changes are stored in the end-user profile on the Server OS machine.
  • Endpoints do not inherit changes until the end user logs off and back on.
  • The Citrix Universal Print Server uses auto-discovery to connect network printers when enabled.
  • The Universal print driver usage policy determines whether to use only the Windows-native driver or only the Universal print driver.
  • The Universal print driver can print to any client-side printing device.
  • Proximity printing defines the IP address range of connected end users in order to automatically provide them access to network printers in the same range.
  • Proximity printing is a form of session printing, restricting network printers enumerated during a session.

By default, end users can add network or client-defined printers using the Windows Add Printer wizard. Such printers are auto-retained and enumerated at the start of the next session, if the printing policy allows.

By default, end users of thin clients and non-Windows plug-ins cannot add printers to their sessions.

Common Issues and Resolutions

  • End users see or print to another end user’s autocreated client printer.
    • Verify the end-user’s membership to the Domain, Local Administrators, or Power Users group.
  • Print jobs are garbled or fail to print.
    • Verify the printer driver name for the client is the same as the one for the server. If not, map the driver names. Remove incompatible printer driver, restart the Citrix Print Manager service and use the Citrix Universal print driver instead.
  • Network printers are not available in the session.
    • Verify that you applied the Session printers policy rule to the session. Verify that a higher priority policy does not conflict with lower-level policies. Use the net use command from the end-user device to verify permissions to the print server.
  • Session appears to stop responding at startup when end users disconnect from the network.
    • Verify that network printers are attempting to autocreate for the end user and then set the Auto-create client printers policy rule to Auto-create local client printers only for mobile users.
  • The Universal Print Server does not appear.
    • Verify the Universal Print Server is enabled. Ensure the OS is Windows Server 2008 or later.
  • Printers no longer in use are still created in sessions.
    • Verify that you have uninstalled all unused drivers.


Hopefully by following these links it is enough to get your helpdesk staff up to speed on what Citrix is and how to troubleshoot the major issues they are likely to run in to. If you have any additional resources please let me know via the (moderated) comments.

Citrix XenApp/XenDesktop and MS SQL Compatibility recommendation

Looking at the XenDesktop 7.9 ISO they still haven’t included the Share Management Object library SharedManagementObjects installers from the SQL 2014 Feature Pack.
Given that the files are backwards compatible, I would recommend replacing them in your ISO/install folder for any future projects, as I’m seeing a lot more clients using SQL Server 2014 these days, or calling it out in upcoming designs.
Files can be found here: https://www.microsoft.com/en-us/download/details.aspx?id=42295 grab both x86 and x64 (save to different locations as they have the same name).
This will give you support for SQL 2008R2 up to 2014.
If you use an incompatible version when creating the Farm, you’ll get an error similar to “Cannot write Property Collation. This Property is not available on SQL Server 7.0”.
More info here (http://support.citrix.com/article/CTX132438)