Lenovo ThinkPad Stack Review

The ThinkPad Stack. It’s a new product set from Lenovo which takes a little explaining to realise what it is, but also has plenty of potential use cases.

What Is A ThinkPad Stack?
Follow me on this explanation: It’s a series of devices that can be stacked together, for use by one or more computers.  Each device can run standalone, or somewhat in tandem with each other.
Currently, there are 4 possible components to the ThinkPad Stack – each can be purchased separately, or you can buy the whole kit (currently for $389.97US).

20150821_165810ThinkPad Stack Box

The stack of devices can be placed in any order – they all have pins to connect device above and below. Connectivity through the pins (named ‘pogo’ pins) is primarily for power, but will also pass through data. On top of that, each device has magnets on top and below, so they won’t fall off and become quite stable when stacked – but also gives the option of quickly taking one device off if required.

What Are The Components That Make Up A ThinkPad Stack?

Battery Pack – a 10,000mAH battery pack is the main way of providing power to everything in the stack. It takes in power via Micro USB, and has two USB A (rectangle) ports so you can charge phones, tablets or anything else that can run off USB. It will also power the other devices in the stack.

Bluetooth Speaker – Running Bluetooth 4.0 and 2 x 2 watt speakers, along with a microphone, this speaker can be used wirelessly or wired via a standard 3.5mm audio jack. It has it’s own battery which will provide up to 8 hours of use. Paired with the dedicated Battery Back, it provides up to 48 hours of use. At a guess I’d say the Bluetooth Speaker has a 2500 mAh battery, but couldn’t find any technical details to confirm. This can also be charged seperately through Micro USB if not connected to the battery pack in stack mode.

Hard Drive – a 1 terrabyte hard disk drive (platter, not SSD) is encased within this component. This isn’t upgradable – there are no visible screws or ways to open any of the modules. It is accessable through either the USB 3 port (cable included), or via the router if you’re connected to that.

Router – A standard router that can be used in a few scenarios (bridged, gateway or Wireless ISP): Connect an ethernet cable into the back, and have a wireless access point for internet/network access or connect a 3G/4G dongle via the USB port to share internet to connected devices. The router supports both 2.4G and 5G WiFi running 802.11 a/b/g/n/a.

Managing and Configuring The ThinkPad Stack

Out of the box, most of the components just work. You can download the ThinkPad Stack Assistant software for Windows, iOS or Android. If you enable advanced mode on the router, it’s managable from the url http://lenovo-stack – otherwise check out the admin user guide. It has a bunch of details about the software, and FAQs which will help you get the devices working the way you want.


20150821_165856ThinkPad Stack Unboxed


20150821_165946Size compared to an iPhone 5S

Use Cases

The ThinkPad Stack isn’t a dock replacement, nor is it a standalone PC – those are common misconceptions (which I had too!) on what the product actually is.

Here are several scenarios I can come up with, where the ThinkPad Stack would be useful:

  • Sharing a single ethernet cable to provide network/internet access amongst one or more staff (even one who may not have an ethernet port on their laptop, and forgot the dongle).
  • Centralised storage on small scale – two or three laptops can use the same 1TB storage.
  • Presenting audio/video, and putting the Bluetooth speaker in the middle of the table so everyone can hear
  • Making a call via Skype, and using the Bluetooth speaker (with built in mic) as a portable handsfree kit
  • Emergency charging for phones/tablets

I believe this product is aimed at the mobile worker – if you’re in the same office all day, this probably isn’t for you (you could definitely still make use of it though).

Other Bits

A few extra comments and info around this unit – it comes with a nice fabric pouch to carry the stack, along with cables for the hard drive, power, speaker and a power adapter. It’s surprisingly small for what it is, but I hope they release more modules – I’d recommend a small computer as one, and a monitor extender – plug in USB 3, and you can output to two separate screens. More USB ports is always handy too. I’d like to see it as a full dock replacement, or a full standalone PC.

It’s worth mentioning that there is support for 5 units max currently, which means you can add a second power brick if you really want a lot of battery life.

Overall it’s an interesting looking piece of kit, which will suit certain people in certain situations. I feel it’s well designed and built, and using the pogo pins with magnets to make stacking incredibly easy is a nice addition.

You don’t need to use a Lenovo laptop to connect to these devices either, they’re rather generic.

Got any questions about it? Feel free to post in the comments below.

Lenovo supplied the Thinkpad Stack for this review.

Intel Compute Stick

Thanks to Intel, I’ve been mucking about with the Intel Compute Stick. It’s a mini PC a bit bigger than a normal USB stick, with a HDMI port out and highly portable.

The stick turned up in a nice little box, around the size of a mobile phone box:


Inside was the stick, a HDMI extender cable, a Micro USB cable for power and a power plug with USB port.


Banana for scale of course.

Plugging it in and getting it going was easy, it’s the normal OOTB experience you’d get with any Windows PC. I used a Logitech keyboard/mouse combo with a bluetooth usb dongle to make things easy, and there was no special set up required – both devices just worked.

After setting it up and playing with it, I decided to try Windows 10 on it. I followed this guide, but my experience wasn’t the same – there was enough room to just upgrade without having to do extra storage stuff.


Once Windows 10 was installed, the device was a bit laggy; so I installed the official Intel drivers for Windows 10 on the stick, and then it was running smoothly. That’s fair enough for a new operating system and a new device.


I played around with a few apps, streaming media and so on, and the device ran really well.

If you have any questions, or want to know more about the device feel free to ask in the comments.

Two models available via Amazon:

Ubuntu: Intel Compute Stick Windows BOXSTCK1A32WFC

Windows 8.1 with Bing: Intel Compute Stick Linux BOXSTCK1A8LFCCR

Update 20th August 2015: I’ve written a much more detailed review at The Register


Adding Multiple Cloud Users to an Azure/Office 365 Security Group

This one had me stumped for a while – how do you get a bunch of users in Office 365/Azure and then add them to a security group? This was met with the relevant tweets of frustration, such as:

After mucking around for a while, and getting Microsoft MVP David O’Brien to listen to my woes, I ended up working out a solution.

Part of my confusion was around this TechNet article for the command Add-MsolGroupMember which at the time of writing, I’m convinced is wrong. The example they give is to get a user and a group, then add the user to the group…. except, they’re used the get-msolgroup command to do so.

When I tried to switch this over to a user lookup with multiple user results, I received this error:

Add-MsolGroupMember : Cannot convert ‘System.Object[]’ to the type ‘System.Guid’ required by parameter
‘GroupObjectId’. Specified method is not supported.

Long story short, most Office 365 user/group commands I’ve come across don’t support multiple inputs, so you can’t feed a list of results through – it’s one at a time. Also, groups and users only seem to support using the Object ID of each object, so you can’t easily use names, email addresses etc. This means you’ll need to run commands to get those Object IDs based on the information you know.

To get around this, you’ll need to use the ‘foreach’ command – then it’ll go through each of your results one by one. I’ll go through this step by step:

1. Get your group:

$group = get-msolgroup | where {$_.Displayname -eq “All Office365 Users”}

Pretty self explanatory, we’re making the variable $group equal the object of the group name specified.

To check what users came back, you can just type $group

2. Get your users:

$users = get-msoluser | select userprincipalname,objectid | where {$_.userprincipalname -like “*domain.com*”}

Similar to the above, we’re making the variable $users all the users we want to add to the group, based on the User Principal Name containing “domain.com”. We’re also making sure we grab the object id of each of those users.

3. Adding the users to the group

$users | foreach {add-msolgroupmember -groupobjectid $group.objectid -groupmembertype “user” -GroupMemberObjectId $_.objectid}

This is showing the users we set earlier, then for each record, running the command ‘add-msolgroupmember’ based on the group we discovered in step 1, and the users from step2. Notice we call the Object ID for each of these objects, as the commands only support it as an identifier.

4. Check what users are in the group

get-msolgroupmember -groupobjectid $group.objectid

This will show you all the members of the group you’ve been working on.

With the above, you can use pretty much any search criteria for step 2, and add those users to your group.

Note that all the above is only for ‘In Cloud’ users, if they were on premesis and being synced to Azure AD/Office365, you’d run different commands against your on premise Active Directory environment.

Connect to all Office 365 services via PowerShell

I found this great TechNet article and wanted to share:

Connect to all Office 365 services in a single Windows PowerShell window

It’s a greatly described article about how to connect to each Office 365 service – MSOL itself, Exchange Online, Skype For Business, SharePoint Online and the Compliance Center.

If you go through the article, you can set up a script to prompt you once for Office 365 administrator credentials, and connect to each service for a one stop shop on managing your Office 365 environment from PowerShell.

One catch (which is mentioned in the article) is that you’ll need to run PowerShell in Administrator mode, or you won’t be able to import modules. You’ll see an error like:

The specified module 'Microsoft.Online.SharePoint.Online.PowerShell' was not loaded because no valid module file was found in any directory.

If you aren’t sure if you’re in Administrator or User mode, the default path prompted in the PowerShell window will be “PS C:\users\username>” for User mode, and “PS C:\Windows\system32>” for Administrator mode (along with the word “Administrator” in the PowerShell window title.

I’m only new to Office 365, but I’ve found the GUI via the web for user management rather basic – I can’t do simple tasks such as search for users on a specific domain, then add them to a group. PowerShell is absolutely necessary if you want to manage Office 365.

Vivid Sydney Interview

Vivid Sydney – the Light, Music and Ideas festival is over for another year. I wrote about my experience in attending the event back in June (again, thanks to Intel), and at the time was interviewed about it too.  Now I can present the video addition to my written review, Adam Fowler at Vivid Sydney 2015:


Watching the video (while cringing at my own voice), and re-seeing snippets of the amazing light displays reminded me about how impressed I was. The amount of hours and work that went into the public display is still astonishing to me, with the results speaking for themselves.

Personally, I’m far from being an ‘arty’ type person, but there are things that even the least artistically create of us can take a step back from, and have that feeling of wide-eyed astoundment… even if just for a few fleeting seconds – Vivid Sydney fell into that category for me.

On a more personal note, I look forward to taking my son to experience events like this for the first time. It can be a sensory overload of sorts, but is still a reminder of what we can do as creative human beings. It’s funny how you can find motivation and a sense of achievement from something you had nothing to do with, but get to see the end results. I hope my interview relays these thoughts.

I’m sure all the people behind the event work on many other displays of their talents, but maybe not as much in the public eye as Vivid. I hope they read comments like mine and feel a sense of achievement, as they’ve surely earnt it.

It’s too late this year, but if you get a chance to check out Vivid Sydney in 2016 or beyond, take the opportunity to, have a peek – it’s free!


Create A Custom Email Address for External Office 365 Users

With SharePoint Online, you can create sites that external users can log into and access. This is great for things like sharing documents, with a lot more functionality than a plain file download and upload like Dropbox.

Unfortunately, there isn’t an easy way to create a manual user, but have notifications go to their external email address. When you create a user in Office 365 or Azure AD, they have to be set up with one of your valid, owned domains.

There is a way to modify the ‘Work Email’ field of a cloud user, which is then used by SharePoint Online to send notifications and updates to whatever address they want – but at the time of writing this, can’t be done via the webpage GUI, nor by native PowerShell commands.

There is a way though, thanks to a script written by Ivan Yankulov called “Script to Write and Get User Profile Properties in SharePoint Online with CSOM

The script uses the API’s of SharePoint Online to make changes to users, but read Ivan’s explanation of it on his blog if you’re interested in understanding how it works.


These instructions assume you’ve already created the user in Office 365/Azure AD.

Log on to SharePoint Online as user: http://yourwebsite.sharepoint.com

Install SharePoint Online Client Components SDK

Download script Script to Write and Get User Profile Properties in SharePoint Online with CSOM

To get user’s details (need to be an Office 365 Global admin, and use standard PowerShell to launch the .ps1 file from the script above):

.\Get-SPOUserProfileProperty.ps1 -accountname “user@yourdomain.onmicrosoft.com” -spoadminportalurl “https://yourdomain-admin.sharepoint.com” -username youradminaccount@onmicrosoft.com – password xxx

If you don’t specify the password in the command line, it will prompt for credentials (which is fine). This will make sure things are working, and you’ll see all the fields of that user

To set user’s details:

.\set-SPOUserProfileProperty.ps1 -propertyname WorkEmail -accountname “user@yourdomain.onmicrosoft.com” -value personalemail@customdomain.com -spoadminportalurl “https://yourdomain-admin.sharepoint.com” -username youradminaccount@onmicrosoft.com -password xxx

This is fine on a single user basis, but can also be scripted:

$data = import-csv -path C:\Temp\userdetails.csv
foreach ($user in $data){
.\set-SPOUserProfileProperty.ps1 -propertyname WorkEmail -accountname $user.UserPrincipalName -value $user.EmailAddress -spoadminportalurl “https://yourdomain-admin.sharepoint.com” -username youradminaccount@onmicrosoft.com -password xxx

The password is specified in this script because you’ll be prompted for the password on every single user change. You can always save this script, add your password, run the script but not save the changes.

The CSV file used is the same as my last article Office 365 and PowerShell Cloud User Creation

Richard Sole,Richard,Sole,ILovePSv4,r.sole@contoso.com,r.sole@mydomain.onmicrosoft.com

If you have any issues getting the above working, feel free to ask in the comments below.

Office 365 and PowerShell Cloud User Creation

Getting started with Office 365 and Powershell can be a bit confusing, partly because so many aspects have changed in a short time. This is really for my own notes, but I’ve made it generic and may help others:

Here’s a very brief rundown on how to set yourself up and start creating cloud users. For internal users, DirSync/AzureAD is a much better option, but you may have requirements for external parties to access your Office 365 environment in some way.

Install Microsoft Online Services Sign-In Assistant for IT Professionals

Install Azure AD Module

Launch Azure Active Directory PowerShell

Test connectivity to Azure/Office365 by adding account using command “connect-msolservice” – will get prompted for credentials.

Check you’re connected with a command such as “Get-MsolCompanyInformation”

Create a CSV with your users such as this:

Richard Sole,Richard,Sole,ILovePSv4,r.sole@contoso.com,r.sole@mydomain.onmicrosoft.com

Run this script which will prompt for Azure credentials. This one is hardcoded for the AU region, but can be added as a variable to the CSV.

$data = import-csv -path C:\Temp\myusers.csv
foreach ($user in $data){
New-MsolUser -FirstName $user.FirstName -DisplayName $user.DisplayName -LastName $user.LastName -Password $user.Password -UserPrincipalName $user.UserPrincipalName -UsageLocation AU

Users are now created in Office 365!

You can store the credentials to be used, or use a certificate – this Azure article shows how https://azure.microsoft.com/en-us/documentation/articles/powershell-install-configure/