Month: July 2019

GPO Changes Not Reflected On Computer

A year or three ago, we had set up a group policy to display logon information in the Windows welcome screen — last logon time, information about any bad passwords since your last successful logon. It’s nice, but you are unable to log in if the information is unavailable. So we disabled the setting (just clearing a GPO setting doesn’t always remove the config from anywhere it’s already set … you’ve got to change to the desired setting). Aaaaand … one server still shows the logon info. Or, more accurately, fails to display it and prevents the domain account from logging on. Luckily it’s a member computer and we can just log in with local accounts.

I thought about just editing the local computer policy (which would have priority anyway) to disable the logon info, but the computer policy could not be opened. It threw a strange access denied error. I could edit the local user policy. Just not the computer policy.

It seems that the local computer policy got corrupted. After deleting registry.pol from c:\Windows\System32\GroupPolicy\Machine … I am able to modify the local computer security policy. GPO settings from the domain are also applied as expected. WooHoo! I can sign in using domain IDs again!

New Embroidery Project

I finally got larger blank t-shirts for Anya. Anya and I will spend an hour or two in the evening relaxing and embroidering the shirts. About nine shirt-sized images fit on a 8.5″x11″ sheet of dissolving, printable transfer paper. I’ll create a single image and arrange all of the embroidery patterns to fill the page (needs to be black lines on a white background as the printout is fuzzy, and color or gray-scale makes a big mess). Cut out one image, stick it onto a shirt, add a hoop (I love Darice’s spring tension hoops!), and go.

I taught Anya to back-stitching along lines last year, and I taught her how to make a satin stitch today. She’s working on a cute little owl. I’m working on this hand embroidery pattern from Urban Threads. Should be finished tomorrow too!

Sparse Checkout With Git

I’ve encountered a few repositories that are huge. Unwieldy huge, and stuffed with files that aren’t relevant to what I need. The straight-forward solution is to use multiple repositories — that’s what I do at work with my code samples. There’s a different repo for each language because the PHP developers really don’t care what the C# code looks like. The Java developers don’t need a copy of the Python code. But there are advantages to having a single repository that may preclude you from taking the simple solution. Git sub-modules are an interesting approach — combining multiple repositories into a single functional unit. But that’s a pretty big change to an existing repo. And, if you participate in open source projects, it may not be your decision anyway.

There’s another option for selectively cloning when you’re working with a large repo — an option that doesn’t require any changes to the repository. An end user can perform a sparse checkout — essentially use a filter like .gitignore to select or deselect certain files/folders from being pulled into the local working directory. The file is named sparse-checkout and is located in .git\info — unlike a .gitignore file which indicates what shouldn’t get included, sparse-checking controls what is included (if you want an entire repo except one folder, use !path/to/folder/**)

The sparse-checkout file used to get just the core components of Scott’s OpenHAB helper libraries plus the OpenWeatherMap community scripts is:

.github/**
Core/**
Community/OpenWeatherMap/**

To use sparse checkout, set the core.sparseCheckout config value to true. You can add sparse checkout to a repo you’ve already cloned and use

git read-tree -mu HEAD

to “clean up” unwanted files. Or you can set up sparse checkout before you clone the repo

D:\tmp>mkdir ljrtest

D:\tmp>cd ljrtest

D:\tmp\ljrtest>git init
Initialized empty Git repository in D:/tmp/ljrtest/.git/

D:\tmp\ljrtest>git remote add origin https://github.com/openhab-scripters/openhab-helper-libraries

D:\tmp\ljrtest>git config core.sparseCheckout true

D:\tmp\ljrtest>copy ..\sparse-checkout .git\info\
1 file(s) copied.

D:\tmp\ljrtest>git pull origin master
remote: Enumerating objects: 3591, done.
remote: Total 3591 (delta 0), reused 0 (delta 0), pack-reused 3591R ), 7.00 MiB | 6.95 MiB/s
Receiving objects: 100% (3591/3591), 9.26 MiB | 7.22 MiB/s, done.
Resolving deltas: 100% (1786/1786), done.
From https://github.com/openhab-scripters/openhab-helper-libraries
* branch master -> FETCH_HEAD
* [new branch] master -> origin/master

D:\tmp\ljrtest>dir
Volume in drive D is DATA
Volume Serial Number is D8E9-3B61

Directory of D:\tmp\ljrtest

07/03/2019 09:07 AM <DIR> .
07/03/2019 09:07 AM <DIR> ..
07/03/2019 09:07 AM <DIR> .github
07/03/2019 09:07 AM <DIR> Community
07/03/2019 09:07 AM <DIR> Core
0 File(s) 0 bytes
5 Dir(s) 386,515,042,304 bytes free

D:\tmp\ljrtest>dir .\Community
Volume in drive D is DATA
Volume Serial Number is D8E9-3B61

Directory of D:\tmp\ljrtest\Community

07/03/2019 09:07 AM <DIR> .
07/03/2019 09:07 AM <DIR> ..
07/03/2019 09:07 AM <DIR> OpenWeatherMap
0 File(s) 0 bytes
3 Dir(s) 386,515,042,304 bytes free

Using sparse checkout, no one else has to do anything. Configure your client to get the files you want, and you’re set.

 

Two Approaches to Using PIP Through an Integrated Authenticated Proxy

The proxy at work uses integrated authentication. While BASIC auth prompts happily let you use a proxy of http://uid:pass@proxy:port, ours does not. There are two ways I’ve managed to use pip to install packages.

Proxied Proxy

The easiest approach is to use something that can handle the authenticated proxy, like Fiddler, as an intermediary. I do the same thing with perl’s PPM, docker pull … basically anywhere I’ve got to use a proxy that wants to pass through a proxy username.

Select Tools => Options to open the configuration dialog. Make sure you are handling SSL traffic — if not, check the box to “Capture HTTPS CONNECTs, “Decrypt HTTPS traffic”, and “Ignore server certificate errors” (it’s only unsafe if you don’t understand what you’re doing … don’t log into your bank account bouncing traffic through this config!)

On the “Connections” tab, check the port on which Fiddler is listening. If you cannot install Fiddler on the same box where you want to use pip, you’ll need to check off “Allow remote computers to connect” (and you won’t use localhost as the proxy hostname). Click OK, start capturing traffic (F12), and we’re ready to go.

Use the PIP command line to install the package but proxy the request through your Fiddler instance. In this example, Fiddler is installed on the local box and uses port 8888.

pip –trusted-host pypi.org –trusted-host files.pythonhosted.org –proxy http://localhost:8888 install SomePackage

This is nice because pip will automatically resolve dependencies. Not great if you’re not allowed to install your own software and cannot get Fiddler installed.

Dependency Nighmare

Back in the early days of Linux (think waaaay before package managers working against online repositories), we called this “dependency hell” — navigating dependency chains to get all of the required “stuff” on the box so you can install the thing you actually wanted.

Make a folder for all these wheels we’re going to end up downloading so it’s easy to clean up once we’re done. Search PyPi for the package you want. On the package page, select ‘Download Files’ and then download the whl

Use “pip install something.whl” to attempt installing it. If you’re lucky, you’ve got all the dependencies and the package will install. If you don’t have all of the dependencies, you’ll get an error telling you the first missing one. Go back to the pypi website & get that. Use “pip install somethingelse.whl” to install it and maybe get a dependency error here too. Once you get a dependency installed, try the package you want again. Got another error? Start downloading and installing again. Eventually, though, you’ll get all of the dependencies satisfied and be able to install the package you actually want.

Did you know … Windstream’s Teams usage statistics through 2Q2019

Windstream will replace Skype for Business with Teams by the end of 3Q2019. That’s only three months away, so I wanted to provide another update on our progress toward this goal. There are just under 14,000 IM-enabled accounts (this includes both employees and contractors). About 3,800 accounts (about 27% of Windstream’s IM users) have been upgraded to Teams Only. Two third of the company should have already received communication letting them know when their accounts will be upgraded. The remainder of the company will see messages throughout July and August. If you are ready to upgrade before your scheduled date (visit Stream for more info on what to expect when your account is upgraded), use <redacted> to upgrade your account.

Teams accounts for around 80% of Windstream’s IM activity. This is a significant change from the same time last year when under 10% of our IM traffic was in Teams.

From 20 May onward, there have been more people logging into Teams than Skype each day. About 80% of our IM enabled accounts have logged into Teams at least once; and over 8,000 people, about 60% of our IM enabled accounts, are logging into Teams each day. If you aren’t one of these people who are already using Teams, check it out.

In the past year, the number of chat messages sent in Teams has increased 20-fold – from under 10,000 messages a day in July 2018 to around 200,000 messages in June 2019. We’ve seen a reduction in the number of instant messages sent through Skype – from 100,000 daily messages last year to under 50,000 daily messages this month. Some messages that would have been sent in Skype are now being sent in Teams, but the number of IMs sent across the company has doubled in the past year too – from 110,000 messages each weekday this time last year to 220,000 messages each weekday today.

How are people accessing Teams? Teams is predominantly accessed with the Windows desktop app. About 80% of the people using Teams each day use the Windows desktop app (OSX users haven’t been left out, but there are only 20 people using the Mac desktop app). About 5% of the people using Teams each day use the web client. Most of the desktop features are available in the web app, and you can use the web app from a computer that isn’t managed by Windstream. While screen sharing isn’t yet available in private chats, screen sharing is available in meetings when using the Chrome browser. We’ve seen mobile app usage increase from about 10% at the beginning of the year to 15% today, and the mobile app is used by about 30% of Teams users over weekends. The Teams mobile app makes it easy to check in at work while you’re working away from the office, and setting ‘quiet time’ keeps work from intruding on you time.

At the beginning of the year, mobile app usage was split about 50/50 between Android and iOS. By the end of 1Q2019, the percent of Android users dropped to 40%; and, at the end of 2Q2019, iOS accounts for 75% of the mobile app usage.

The Teams: Teams is more than just a replacement for Skype. In addition to private chats, Teams offers collaboration spaces too. The Teams spaces include conversations, shared files, tabs – even a SharePoint Online site. More than 7,000 messages a day are posted in Teams channel conversations.

There are over 3,000 Teams groups – over 1,000 of which were created this quarter. You can search public Teams groups at <redacted>. Microsoft is currently testing a setting which will allow private Teams to be searchable too. Follow our Stream space – we’ll post information on how to mark your private Team as searchable when the feature becomes available.

Fifteen percent of these groups are public – meaning anyone can join the group. Public teams are a great way to solicit end-user feedback, organize local events, provide mentorship, or even discuss “fun stuff”. You can currently search public Teams groups at <redacted>. Microsoft is currently testing a setting which will allow specially-configured private Teams to be searchable too. Follow our Stream space – we’ll post information on how to mark your private Team as searchable when the feature becomes available.

82% of our Teams have between 2 and 25 members. For anyone wondering what the point of a Team with one person is … Teams doesn’t let you send messages to yourself, but you can send messages to a Team that is just you. You can add tabs to provide quick access to your frequently used sites, use connectors to make external data readily available (as an example, I use my Teams space as an RSS aggregator), and play around with Teams functionality without annoying your colleagues.

59% of our Teams have had conversation activity in the past week. Most of the Teams with no conversation activity in the past year have been archived. Archived Teams keep information accessible – visible and searchable – without risking individuals starting conversations in a Teams space that is no longer watched by members.

If you want to see more information about Windstream’s Teams usage, current Teams usage information is available at <redacted>.