Emoji URL’s are Cool

•2015/06/09 • Leave a Comment

funny-emoji-rob-bankWhat’s an emoji URL?

This is one: http://🍺🏈💻🎸.ws

Go Ahead. Click it.

I promise it’s safe.

That’s an emoji URL.

Pretty neat huh?

Last night I accidentally stumbled across this article – You Can Now Visit Norwegian Airlines Using an All-Emoji URL

That’s cool I thought. I wonder how it works.

Which then led me to this article.

Which then led me to creating my own emoji URL. The magic behind all of this is something called “Punycode“. If you don’t want to read the Wikipedia article, it boils down to this: It’s basically a text version of a binary table. As you add and arrange emoji’s (or any character, really) a unique ASCII hash gets created. For the emoji’s in the URL above, the Punycode is:


And here comes the final bit of joy – take some Punycode and register a domain name with it. Any very-modern browser will translate the emoji to Punycode and then do the DNS lookup to see where it is supposed to go. If you click on the emoji URL again –http://🍺🏈💻🎸.ws – you’ll notice that the address bar will quickly change to the Punycode domain name of xn--xj8h2dwb17d.ws. I then just told my registrar to URL forward back to this blog.

There are a few caveats with emoji URL’s –

Either the .com domain doesn’t support emoji URL’s, or someone bought up all the emoji URL names already. I’ve found a lot of success registering with .ws as the Top Level Domain. So be prepared to use some less well known TLD’s.

Not all emoji’s show up on all devices yet, so hold off on using brand-new emoji’s. For example, I had trouble with the global soccer (association football) emoji but oddly the (American) football emoji showed up everywhere just fine.

Not every registrar plays nicely with emoji URL’s. I stumbled upon name.com and they do an amazing job. Look inside my control panel. They don’t show the domain in Punycode, they show it in emoji instead.

name emoji

Emoji URL’s are supposedly an easier way to type in a URL on a phone than a fully spelled-out domain name. However, on Windows Phone the keyboard brought up by both Internet Explorer and Opera Mini don’t let you enter emoji’s. Depending on your Android keyboard, it is supported and iOS seems to support it as well. (I haven’t tested on all devices if an emoji URL actually works, just that the keyboard in the browser let’s you enter them).

It’s also not supported on older desktop browsers however both IE11 and whatever version of Chrome I have running on Windows seem to work fine.

To make anemoji URL, you first need to find the emoji’s you want to use. I used these two websites to help me out – Emojipedia and Getemoji.

You need one more website to convert your emoji collection to a Punycode. I used Punycoder

Copy the emojis into the left hand side of Punycoder and click “Convert to Punycode” to get the ASCII representation. Once you have a string of emoji’s you want, go register a domain name somewhere.

As mentioned above, I used name.com. I have no loyalty to them other than my primary registrar didn’t seem to want to play ball. I tried a few and name.com seemed to work well and charge only $15 for a .ws domain name.

The only major problem I have with an emoji URL is that I don’t think it really saves time in entering a URL. I find I spend way more time looking for the emoji’s than it would take to type in a “regular” URL – including fixing typo’s.

But that’s not the point is it?

My website has an emoji URL and yours doesn’t. So that makes me better than you. Right?

Isn’t that how it works?

Windows 8.1 Apps Won’t Update

•2015/06/09 • Leave a Comment

80070490For the past year or so, my home Windows 8.1 PC wouldn’t update most of the apps. So as Microsoft has slowly improved the Music app, I’m not getting any of those benefits. Heck, the apps wouldn’t even start.

Every so often I would spend an hour or two trying to fix this, eventually giving up and hoping the inevitable Windows 10 upgrade will fix it. Last night I spent way too much time on this problem. I spent over 4 hours trying to fix it.

I spent the night Googling/Binging and trying everything I could find.

Wsreset didn’t fix it.

SFC /Scannow didn’t fix it but it did send me on a side project to figure out why that was failing. SFCFix with some sfcfix.zip file fixed that problem. My apps still wouldn’t update.

I smoked the C:\Windows\SoftwareDistribution folder a few times.

AppsDiagnostic.diagcab and app.diagcab? Ran those along with WindowsUpdateDiagnostic.diagcab with no fix for the issue.

I tried a bunch of other things so let me skip ahead.No Update Apps

I tried uninstalling the Apps form Windows Store but I couldn’t. It wouldn’t let me click on the apps at all – it just showed them on the list. So I figured I would try to manually uninstall them hoping a re-install would fix them.

That brought me to this article – http://all4naija.blogspot.com/2015/04/how-to-remove-microsoft-apps-using.html

While the article says it’s for Windows 10, it worked like a champ on windows 8.1. I had the list up of my failed updates and then pecked around via PowerShell to delete them. Once I got them all uninstalled, I rebooted and went to install them again. While it took a long time, they all started installing and were working fine.

So that problem is (mostly) fixed. There are three apps still in the list that wont update. But that is a huge improvement over what I had.

My theory is that they were in Windows’ list of “installed apps” but they weren’t actually installed. So when Windows tried to install the updates, it failed because there was actually nothing to update.


For the search-ability reasons, here are some of the errors I had and couldn’t resolve using any of the popularly recommended issues:




Event Viewer Event ID 1001

Problem signature: P1: 9600 P2: 788 P3: 115 P4: 1 P5: US P6: en-US P7: 120 P8: -2147023728 P9: Microsoft.BingFoodAndDrink_8wekyb3d8bbwe P10: 0

Fault bucket , type 0 Event Name: WindowsStoreUpdateFailureV2 Response: Not available Cab Id: 0


Calls Not Completing for user with “Non-Western European” characters

•2015/05/21 • Leave a Comment

This topic has already been covered in Spanish here  and in German hier.

I am just adding an English language version because I recently ran into the same issue and there is no blog in English about it.

If I ever wondered why we buy support from gateway vendors, this issue validated it for me.

We were bringing up a new location with a PRI. Through testing, I was able to make outbound calls but the people in the actual location were unable to complete the calls. This didn’t make sense. How can I make a successful call, sitting thousands of (pick one: miles/kilometers) away, and the people in the actual office could not?

In this case, our gateway was an AudioCodes Mediant 1000 and we were working with an AudioCodes engineer on the implementation. The AudioCodes engineer had given us numerous things to try to no avail. Finally he had us e-mail him some WireShark logs so he could spend more time on the issue.

A day later, he recommended that we set this value in our ini file:

ISO8859CharacterSet = 0

After making this change, the users in the location were suddenly able to make calls.

The issue is that the users in that location all use the following character in their display name as part of the spelling of their office location:


So what does this ISO8859CharacterSet value actually mean? For one, it’s not documented anywhere. I followed up with AudioCodes and they sent me the following documentation.



Basically, this value expands the default character set that AudioCodes uses to parse SIP traffic. Why isn’t it set to zero by default? Who knows. I asked that question to the AudioCodes engineer and he had no answer. I asked if maybe there was a performance impact to this value. He replied that there isn’t one that he knew of. I asked a second AudioCodes engineer and he confirmed that he had never heard of an issue by setting this to 0.

It’s surprising to us that we hadn’t run into this issue before but then our standards are to use the generic ASCII character set in all display names, usernames, etc.

How do you know you might have this issue? I don’t have the AudioCodes syslog files anymore so I swiped the below from the German blog mentioned above.


<132>[S=831454] Error Indication: Last Command (Primitive) was not performed due to cause 100  [Trunk:0 Bchannel:1 ConnID:2] [Code:0x23127]
<133>[S=831455] (   lgr_psbrdex)(833974    )   recv <– UnHandled event:EV_ISDN_ERROR_INDICATION (317)
<133>[S=831456] [SID:766997237] (   lgr_psbrdex)(833975    )   pstn recv <– CALL_RELEASED Trunk:0 Conn:2 RetCause:73 NetCause:255
<132>[S=831457] REPORT_TYPE_ERROR_IN: ErrorCauseString = Incorrect parameter type, DiagnosticString= Condition unknown, ErrorCause = d, Diagnostic =  [Trunk:0 Bchannel:-1 ConnID:-1] [Code:0x23127]
<133>[S=831458] [SID:766997237] (   lgr_psbrdif)(833976    )   pstn send –> PlaceCall: Trunk:0 BChannel:1 ConnID:2 SrcPN=xxx SrcSN= DstPN=151xxxxxxxx DstSN= SrcNT=4 SrcNP=1 SrcPres=0 SrcScrn=0 DstNT=2 DstNP=1 ServiceCap=M RdrctNum= RdNT=0 RdNP=0 RdPres=0 RdScrn=0 RdRsn=-1 Excl=1 Display=Müller, Max IE= UUIE=0, RawData:0 CLIRReason:-1 OrigPN= OLI=-1 OffhookInd=0
<133>[S=831462] [SID:766997237] (   lgr_psbrdif)(833980    )   Abnormal Disconnect cause:255#?reason(255)? Trunk:0 Conn:2


If you see the above that’s a clue. In this case, it was the u-umlaut (ü) in “Müller, Max” causing the issue.

Quick RegEx Trick

•2015/05/14 • Leave a Comment

AnientRegExI thought I blogged this but I guess I didn’t. So I am posting this mostly to save myself time finding this the next time I look for it.

I had a regular expression that returned 2 variables. Here is what I wanted:


However Lync interprets “$1555” as a variable instead of what I want which is just $1 as the variable. So how do I tell regular expression that it should stop at the first 1 and not continue until the next delimiter ($2)?


Use curly braces

Re-writing it in this format got me the desired result:


The fourth paragraph on this website is what got me the answer – http://www.regular-expressions.info/replacebackref.html

Script: Query Front Ends for Specific Event Log ID’s

•2015/05/11 • 1 Comment

I was troubleshooting today with my main Lync man “JP” (who chooses to remain anonymous). Part of our troubleshooting was checking against 6 (and sometimes 12) front ends to see if a specific Event ID appeared in Event Viewer. This was tedious, going to each server and then a lot of them getting no results.

JP said “there should be a script to do this for us”.

And from that comment this script was born. It’s possible someone has already written this script. We didn’t bother looking since it is a fairly simple script. If someone has written this, then let me know and I will give you credit.

The script – Get-CsEventID – is pretty simple. There are 2 mandatory parameters:

-Pool is the name of your Lync pool which is then sent to Get-CsSite to get the names of each of the servers in your pool

-EventID is the Event ID for which you are looking.

The two optional parameters are:

-LogName By default the script searches in the “Lync Server” log but setting this will let you search against other logs like Application or System

-StartTime If you want to limit your search to the past few hours or days, then set StartTime to the number of hours you want to go back. By default, this is set to 72, so it will search back for the past 3 days.

Here are 2 examples:

.\Get-CsEventID -Pool skypepool.flinchbot.com -EventID 12288

This will search for Event ID 12288 across the skypepool.flinchbot.com pool. It will search for the past 72 hours for this entry.

.\Get-CsEventID -Pool skypepool.flinchbot.com -EventID 6005 -LogName "System" -StartTime 4

This will search the same pool, but now for EventId 6005 in the System log. It will search back the past 4 hours.

Note that Windows Firewall will need to permit access to remote event logs. You can run the following on a Windows 2012 or later server to enable this.

Get-NetFirewallRule | where DisplayName -like  '* Event Log*' | Enable-NetFirewallRule

Grab the script here.


Skype for Business Notes

•2015/05/04 • 2 Comments

I’ll be tracking my notes with installing and working with Skype for Business.

1. I did an in-place upgrade of my existing Lync 20reset-cspoolr13 pool and everything started up and appeared to be working fine. The upgraded pool is named “lyncpool.flinchbot.com” which is a bad name for a pool that actually contains Skype4B servers. So I decided to reduce that pool from 3 front ends to 1 which will give me enough space on my VM hosts to build some new, native Skype4B servers. So I removed 2 of the 3 front ends via Topology Builder. Now my pool won’t start. I get the following error when try to do a full reset of the pool:


Fabric version is unknown. No it’s not. It’s what came on the install image! It’s version 3.

Good ol’ Windows Fabric strikes again. I’ve tried rebooting and forcing the reset a few times. Finally I uninstalled Windows Fabric and installed it again from the Skyp4B .iso. Same problem. So this pool is hosed and since this is a lab I don’t want to spend any more time figuring this out.

Update: As I removed roles from Topology for this pool, like conferencing and enterprise voice, I tried to start the service again. It finally started. It is possible that re-running the deployment wizard straightened a few things out. I’m wondering if running Enable-CsComputer separately would have fixed it too.

My takeaway: Don’t do in-place upgrades of production machines. Now this error may not be related to the in-place upgrade process. However, doing a fresh install assures that you can test the pool before moving users. It also gives you the chance to do things like installing the latest OS, building it on newer hardware, installing the latest Windows patches if you’ve fallen behind, etc.

2. Control Panel still can’t sort. This is about unacceptable. Seriously Microsoft? You can get media to traverse NAT’s, firewalls, edge servers, etc but you can’t sort a list? You’d think by the 3rd release of the Lync line of software that they could get some intern to show them what he learned in his first programming class ever: How to sort a list. At work we have admins scattered all over the place, a few dozens pools, and more supported SIP domains than I want to count.. Trying to find the right entry in some of our lists is very difficult and frankly a waste of my time.

Sorting is hard

Sorting is hard. It’s like math but hardererer.

3. When adding your Skype4B server to Topology, be sure to put them in the Skype for Business folder. I know, this should be obvious but I guess habit got the better of me. I added my Skype4B Enterprise settings into the Lync 2013 foled in Topology. To no surprise, I got the following errors in the install logs:

Wrong-folderSo if you get this error, remove the Skype servers you put into the Lync 2013 folder and add them again to the Skype for Business folder. Removing them from Topology might give you an error that a conference directory already exists on the pool you are trying to delete. Delete that by running the Remove-CsConferenceDirectory  with the -force switch and then try the Topology removal again.

4. Not everything is a straight port from Lync 2013 with the “Skype Look”. The certificate wizard was actually simplified and I like it better.


They also updated the “Start Services” text to explain that you really shouldn’t start the services until your pool is ready. It’s a minor fix but I bet it will reduce some of their support calls.


What they should also add in there is when running Start-CsPool that it must be done form a shell opened to “Run as Administrator”

5. There is no way to in-place upgrade an SBS/SBA. While this would have been *really* useful and possibly the only use of in-place upgrades I would have used in production, Microsoft doesn’t support this. My guess is that this is because Microsoft foolishly still makes the SBA vendors provide custom (and wholly redundant) “Install code” which could fail to function in an upgrade scenario. This is yet another reason why the SBA/SBS model is excellent on the drawing board but is full of issues and miss-steps in production.

So much like the upgrades from 2010 to 2013, you have to do full re-installs to get to up to Skype4B. The SBA code hasn’t been released yet because of the reliance on 3rd party vendors to provide their no-value-add install wizards. An SBS does not rely on this pointless vendor integration so you can upgrade those on your own – full uninstall of Lync followed by the Skype4B install off the .iso.

6. That annoying 29820006 patch. You can’t install it. Oh you keep trying. Then you realize it’s the x86 patch. So you download the x64 patch and it still won’t install. So I’m not sure exactly what the magic is, just make sure everything in Windows Update that is mandatory or recommended is installed. I think there is an update to Windows Update that has to be installed before you can install this patch.


Announcing the UC Now apps!

•2015/03/24 • Leave a Comment

A few years ago I created a Lync “aggregator” which scours 120+ blogs and other related sites for Lync articles and posts what it finds to various places. You can see the output in Twitter, Twitter again, Bitly, Facebook, Google+,  Tumblr, and in various apps I’ve put out over the years. I’ve also added a less-complete aggregator for Exchange which you can see on Twitter.

I’ve unpublished all my previous Windows Phone apps and now have a universal app called UC Now that is the same app on Windows 8.1 and Windows Phone 8.1. Here is the link to the Windows store and here is the link to the Windows Phone store.

For those on Android devices, you can download the Lync News 2013 app which will get you by until I can get that updated to add the Exchange feeds and a bit more in-line (at least content-wise) with the Windows apps.

If you are using an iPhone then you are hosed. But you probably already new that.

Below are some quick screen shots from the Windows 8.1 app.

Main page

Main launch page

Exchange news feed

Exchange news feed

Skype for Business (Lync) news Feed

Skype for Business (Lync) news Feed

Resource links

Resource links

The Windows apps were done using Microsoft App Studio. The Android app was done using AppYet.

If you have any of the older Windows apps installed, please uninstall them as they will never get updated.

%d bloggers like this: