Author: Lisa

Maths: The Wall

I think the wall is a completely stupid idea — based on emotion rather than statistics about the source of immigration violations, not an effective solution even if the problem were people sneaking across the border. But I am seeing a way to get this whole debacle sorted within the Executive branch (which may not be legal, because government budgeting isn’t quite the same as corporate budgeting). When we’ve got projects that are under-budget, the extra money can get moved over to some other purpose. Well, if we can shut down the government for no good reason during budget negotiations … what if the Executive branch shut down all those “non-essential” services for a while to free up money that can be transferred over to DHS? How long would the government need to be shut down?

 

For a five billion dollar wall (again, HA!) … since the FY2019 budget is like 4.4 trillion dollars, we spend 12 billion a day. Say 90% of that is essential. Five days of shutdown would fund the wall. Which doesn’t make the wall a good idea. Or mean Congress should just approve it to get the whole debacle over with. But it certainly says something about government spending that the wall is half of a day worth of spending. And it certainly says something about our government that it gets shut down over half a day worth of spending.

 

 $         5,000,000,000.00 The wall
 $ 4,407,000,000,000.00 FY2019 budget
 $       12,073,972,602.74 Daily spending
 $         1,207,397,260.27 10%
4.141139097 shutdown days

Using LDP To Browse Active Directory

One of the RSAT tools, ldp.exe, can be quite useful if you are trying to interact with Active Directory via LDAP but don’t know anything about the domain.

From “Connection”, chose “Connect”. Most domain controllers have A records registered for the domain name, so you can connect to the domain name.

Active Directory generally prohibits anonymous read, so you’ll need to bind to the directory. From “Connection”, chose “Bind”. If your computer is logged into the domain, you can select “Bind as currently logged on user”. If not, select “Bind with credentials” — in addition to the fully qualified DN of an account, AD allows you to bind with both userPrincipalName and sAMAccountName. userPrincipalName is userid@<domain.name> and sAMAccountName is domain\userid.

Now that you’ve logged into the domain, you can select “View” and “Tree”. If you leave the BaseDN blank, LDP will find the root of the directory partition.


Voila, you’ll see your domain. You can click around, or right-click the root of the domain and select “Search”. Look for something generic like “(&(objectClass=person))” to find user accounts. You’ll be able to see what attributes are used for what data.

Additionally, at the top of the window, you’ll see the hostname of the domain controller you are using and the root base DN for the domain.

The Military Industrial Complex

Will withdrawing from Syria and Afghanistan be move that swings Senate Republicans against Trump? Matt Taibbi speculates exactly this. I’ve wondered why Republicans stand by Trump so relentlessly — it’s not like Pence *wouldn’t* deregulate environmental and financial industries, create refugee crises at the border, and cut taxes without a care to deficit spending. Figure it’s got to be the 30 percent (or whatever) of the voters who actually think Trump is doing the right thing. Say the country is split pretty evenly between the two parties — and that the 50% on the Democratic side aren’t likely to be talked into voting Republican … that means Trump’s deplorables *are* the majority of the Republican voters. Now a historically successful (not to mention reasonable) ploy is to adjust your platform to appeal to more voters … but evidently no one wants to walk that path. Motivate your voters or put the other guy’s voters off works too — but the circus act that is the Trump campaign is about the pinnacle of motivating voters, and no one is sure who is running next cycle to dissuade people from fully supporting the individual. So they’re sticking by Trump … unless. Could the military industrial complex — and all of that money — be the thing that turns them?

The question makes me think of Trent Lott. Who had all sorts of faults, but public opinion turned on him when he said “I want to say this about my state: When Strom Thurmond ran for president, we voted for him. We’re proud of it. And if the rest of the country had followed our lead, we wouldn’t have had all these problems over the years, either.” Which … anyone who bothered to find out could have known Lott liked Thurmond. It’s like Capone going down on tax evasion — yeah, I’m glad the dude got put in prison (or resigned from office, or thrown out) but over that?!?

The Secret Plan!

Good news, we know know Trump’s secret plan to defeat ISIS — have Erdogan do it! Now I don’t think we’ve got much business in the Middle East (or Afghanistan). And “have countries in the region – Syria, Turkey, Iran, Iraq, Lebanon, Jordan – sort it” isn’t exactly a novel approach. But it is especially ironic for someone who touted their secret plan to subsequently say anyone else told him they’d take care of it.

All and all, it’s just another brick in the wall

Good news — at this rate, they’ll have collected enough money for “the wall” sometime before the fourth millennium.


The wall costs 5 bill (ha!). They raised 6 mil between 16 Dec and 3PM today — which I’m calling three and a half days because today isn’t over & maybe he created it at 23:58 on the 16th. A five billion dollar wall would be fully funded in a mere 8 years — or the year 2026. But there’s also the half billion a year to maintain the wall — failing to maintain the thing creates a dilapidated monument to Trump’s … oh, wait, that’s fitting. Their daily contribution rate exceeds the estimated operating run rate, so they’ll need to keep raising funds until they’ve got a trust to cover the wall’s expenses. 

And the whole thing is pointless since there’s a GoFundMe to buy ladders too 🙂 

In all seriousness, *this* is the only way I’d be OK building the wall. In fact, I think government services should move into a new non-profit category where donations are exempted from AMT and offset tax dollars owed. I could give 10k to the EPA (provided they’re actually enforcing regulations to, ya know, protect the environment) and owe nothing else in taxes. Otherwise I’ll fund arts, broadcasting, WIC, civil rights … I’ll find some agency Trump doesn’t know exists to ruin.

Did you know … you can lock “Format Painter” on?

How many times have you clicked a second time expecting to “paint” your format only to realize the format painter is a one-click deal-e-o. Well, it’s not — you just have to know the trick to ‘locking’ it on. Double click the format painter button — now you can paint as many things with the format as you like.

Microsoft Teams: Creating A Bot – No Code Method

If you want to create a simple bot that uses natural language processing training to allow users to ask questions that aren’t exactly what has been attached to the answer (i.e. I could say “I forgot my password”, “I don’t remember my password”, or “what’s my password” and be directed to the password portal URL without anyone having to come up with every possible iteration of the query),you can create one without actually programming a bot. You’ll need to enter some questions and answers – and it’s best to have a few questions associated with each answer so the bot can ‘learn’ what a real user might ask.

Before we start, understand how the billing works for Microsoft’s cloud services. There are generally free tiers for selections, but they are resource limited. When you first start with the Azure magic cloudy stuff, you get a 200$ credit. A message indicating your remaining credit is shown when you log into the Azure portal. Pay attention to that message – if you think you are using free tiers for everything but see your credit decreasing … you’ll need to investigate. Some features, like usage analytics,cost extra too.

Instead of programming a bot, you can use a pre-built bot and a question/answer knowledgebase maintained at https://www.qnamaker.ai/ Sign in to your company account

Select “Create a knowledge base” to start.

Click the button to “Create a QnA service”

A tab will open to the Azure portal, and you’ll see a wizard to create a QnA Maker resource. Provide a name and select your subscription – you may be walked through creating a new trial subscription. For the management pricing tier and search pricing tier, select the free plans unless you expect high usage or need to store a lot of documents. The selections below are the free tiers.

Disable app insights unless you want to study usage of the q&a – app insights is a paid add-on. Click create to create.

Return to the Azure Portal dashboard and click “Refresh” in the “All resources” section. Eventually, you will see your knowledge base appear.

Return to the QnA Maker tab. In “Step 2”, click the drop-down arrows to select the Azure Directory (you should just see our company), the subscription (again, probably just the one), and the knowledge base we just created.

In “Step 3”, provide a name for your knowledge base. If you have an existing Q&A file, or a URL with Q&A pairs, you can import them here. I will enter question/answer pairs manually later.

Optionally, add ‘chit chat’ – this allows your bot to respond to common things users type like “do you know Siri” or “how are you”. It isn’t needed, but it saves adding answers to “are you there” manually. This imports question sets to your KB, so you can remove any you don’t feel are appropriate for your implementation.

Click “Create your KB”.

And wait a few minutes.

Once the KB has been created, click “Add QnA pair” to begin adding questions. You can also scroll through the imported “chit chat”questions and modify/remove any you don’t like.

Answers use markdown formatting, so you can add hyperlinks, italics, bold, numbered lists.

Once you have added your question/answer pairs, click “Save and train” – training allows the bot to respond with an appropriate answer when the question isn’t exactly one of the questions provided.

Wait again … when you are returned to the q&a pair screen, click “Publish” – this implements your changes in production. You can stage changes, allowing others to review them, by waiting to click Publish.

Read the warning – assuming you actually want your changes to be in production, click “Publish”.

Wait some more, and you have an endpoint!

Copy the ‘stuff’ from the box into a text file somewhere. Find your QnAEndpointHostName, QnAKnowledgebaseId, and QnAAuthKey

Unless you are going to be the *ONLY* person editing your KB (and never go on holiday, never ring up sick), you’ll want to share access with others. Log into https://portal.azure.com and locate your “cognitive service”. Click on its name to edit it.

Click on “Access control (IAM)”

In the “Add a role assignment” section, click “Add”.

Select either “Cognitive Services Contributor” or “Owner” as the role (owners are allowed to manage all settings, including permissions whereas service contributors can only manage data within the knowledge base). Enter an Active Directory group name – you can enter individual people, but then someone will need to manually edit the permissions as people join and leave your group.

If you didn’t select owner, make sure you add some other owners (either a group or a few people)

Now we’re ready to set up a bot …

 Microsoft Teams uses Azure bots – so you’ll need to create an Azure bot. From https://portal.azure.com, click on ‘Create a resource’.

Search for “bot” and find the bots you are looking for. Either “Functions Bot’ and “Web App Bot” can be selected – I am using a WebApp bot because that’s what I’ve used for other bots I’ve coded. Functions bots use Azure functions, which are C# scripts, for logic processing; WebApp bots use WebAPIApp Service for logic processing (C# or NodeJS). If you’re not planning on tweaking anything … doesn’t much matter. Click “Create” to create the bot.

Give your bot a name – this needs to be unique. In the pricing tier, click on “View full pricing details” to see the options. Again, I am selecting the free tier. Don’t forget to hit ‘select’, or your selection will not be updated.

When you get to the bot template section, you can pick either C# or NodeJS – again, if you don’t plan on tweaking anything … doesn’t much matter. I am using C# because I know C#. Select the SDK v3, then find the “Question and Answer” bot template. Again, don’t forget to click “Select” or your selection won’t be saved.

Create a new storage location, disable application insights (it’s a for-fee add-on), and click “Create”.

Wait for it …. You’ll see a blue bar running under the bell icon in the upper right-hand corner of the site.

Soon, you’ll see a success message in the upper right-hand corner.

Refresh the resources on the dashboard and select the “WebApp Bot”. Under ‘App Service Settings’, go into “Application Settings”. Here’s where you enter the QnA information we saved after your knowledge base was published. Click in the “Value” column to paste in the values for QnAAuthKey, QnAEndpointHostname, and QnAKnowledgebaseId. Don’t have them? No big – go back to QnA Maker, open your KB, and select the “Settings” tab. There it is again!

Click “Save” to commit your changes.

Return to the Dashboard and select your “Web App Bot”

In the left-hand navigation column, select “Channels”. Click on the Teams logo.

The “Calling” tab will enable IVR or real-time media interaction with your bot – I have never done this, it may not be possible with our product set. “Publish” is to publish your Bot in the Microsoft store – not something I want to do with a bot designed to answer employee-specific questions, but I could see creating a Enterprise Customer Q&A bot that enterprise customers can add to their Teams spaces … in which case, making the bot available in the Microsoft Store would be convenient. Click “Save” to create a Teams channel for communication with your bot.

Read the publication terms and privacy statement. If you agree, check the box and click “Agree”.

In the Channel section, click the “Microsoft Teams” hyperlink.

This will open a new browser tab. Click “Cancel” so you can copy the URL.

Once you’ve copied the URL, click “Open in Teams web app” to interact with your bot using the Teams web client (or ‘launch it now’ for Teams desktop client)

It’s alive! Ask some questions and verify that your answers are being delivered. Check for formatting problems or bad hyperlinks.

I don’t want a bunch of people attaching to my test data, so the resources created above have been deleted. I’ve created a new bot with different details. Open https://teams.microsoft.com/dl/launcher/launcher.html?url=%2f_%23%2fl%2fchat%2f0%2f0%3fusers%3d28%3aab23fc5a-3151-495c-a02c-592b38148599&type=chat&deeplinkId=64b01c1e-5a2a-4456-a673-c02c3e04b532&directDl=true&msLaunch=true&enableMobilePage=true in Teams, you’ll be able to interact with my bot.

Q&A Maintenance

Anyone you have set as “Cognitive Service Maintainer” or“Owner” should be able to use QnA Maker to maintain the question and answer set. Log in to https://www.qnamaker.ai, select the “My knowledge bases” tab, and click on the knowledge base name. Modify/add question/answer pairs, then click “Save  and train”, then “Publish”.

Did you know … Microsoft Teams Chat can help you find messages others post into Teams spaces?

I am a member of multiple Teams, and I can remember that Keith posted something about creating a Q&A a few days ago … but I don’t remember where he posted that message. I cannot reply to it until I find it. Search can help — chat conversations are searchable. But did he type QnA, Q&A, Q and A … 

Instead of clicking through all of the channels in all of my Teams spaces trying to find a single post or working my way through the various ways of phrasing “questions and answers”, I can look at my chat with Keith. Click the “Activity” tab. Now I am looking at things Keith has posted to our shared Teams spaces in the past two weeks.

The Team and channel into which the activity was posted is included before each message. An icon indicates if the activity is a reply to an existing thread or a message starting a new thread.

You can click on any entry in the activity log.

Your Teams client will show you the message in its context – you are in the correct Team and Channel, and the message is briefly highlighted. This makes replying to the message we found in the activity feed quite quick.

What if you’ve never chatted with the person? Start a new chat and type in their name. You don’t have to send a message to them (although I could totally see myself writing “ignore this message – I just needed to get you listed in my recent conversations”), just click away and there will be a draft chat with them. Click on that draft chat, and you’ll have an “Activity” tab.

Azure App Service Plan: Free Tier

If you’re just playing around with something in Azure, ensure your service plan is using the free tier. Yes, it’s resource limited. It’s free. From the https://portal.azure.com dashboard, click “See more…” to see all of your resources.

Filter to view only app service plans.

In each app service plan, go into “Scale up”. Click on the “Dev/test” tab and select F1 – the free tier. Click “Apply”.