Interesting, especially since Microsoft is moving Live Messenger users to Skype shortly: Skype and the new Team Explorer – Brian Harry’s blog – Site Home – MSDN Blogs.
–jeroen
Posted by jpluimers on 2013/02/18
Interesting, especially since Microsoft is moving Live Messenger users to Skype shortly: Skype and the new Team Explorer – Brian Harry’s blog – Site Home – MSDN Blogs.
–jeroen
Posted in .NET, Development, Power User, SocialMedia, Software Development, Visual Studio 11, Visual Studio 2008, Visual Studio 2010, Visual Studio and tools, Windows | Leave a Comment »
Posted by jpluimers on 2013/01/10
Disable e-mail notifications on Google+ | How To – CNET.
Posted in G+: GooglePlus, Power User, SocialMedia | Leave a Comment »
Posted by jpluimers on 2013/01/04
Wow, it seems that the most popular posts have nothing to do with software development (:
Happy new year everyone!
–jeroen
The WordPress.com stats helper monkeys prepared a 2012 annual report for this blog.
Here’s an excerpt:
About 55,000 tourists visit Liechtenstein every year. This blog was viewed about 260,000 times in 2012. If it were Liechtenstein, it would take about 5 years for that many people to see it. Your blog had more visits than a small country in Europe!
Click here to see the complete report.
Posted in About, Personal, Power User, SocialMedia, WordPress | Tagged: annual report, blog, blogging, excerpt, happy new year, helper monkeys, new year, software development, technology | Leave a Comment »
Posted by jpluimers on 2012/12/29
WordPress.com silently restored the Please restore the tab order the way it worked 2 weeks ago problem.
I wished they’d send update notifications on those fixes (it seems the underlying ticket 21340 was fixed about 2 months ago in changeset 22250 when I was on a long holiday), so I’m glad to announce it works again.
Even better: you don’t need the tab key to go from “Edit” next to “Publish immediately” into the Month field:
When you press “Edit” the focus automagically shifts to the Month field.
Thanks!
–jeroen
Posted in SocialMedia, WordPress | Tagged: computer, focus, notifications, software, technology, wordpress | Leave a Comment »
Posted by jpluimers on 2012/12/29
Just got my free Flickr holiday gift: 3 months of Pro membership.
If you have a free Flickr account, it will give you three months of Pro to try it.
Yay!
You have now activated your Flickr Holiday Gift.
We’ve extended your Flickr Pro subscription for an additional 3 months at no charge.
Your Pro Account expires on 16th December, 2013
–jeroen
Posted in About, Flickr, Personal, Power User, SocialMedia | Tagged: flickr, gadgets, technology | Leave a Comment »
Posted by jpluimers on 2012/12/18
As of December 3rd, 2012, a WordPress.com blog stat page (https://wordpress.com/#!/my-stats/) now shows unique visitors in addition to total views.
The hint for each bar even does the views per visitor math (seems to average around 1.25 views per visitor on this blog, will update this when a longer period has passed).
The Your Unique Visitors from the Blog at WordPress.com explains some more details.
–jeroen
Posted in Power User, SocialMedia, WordPress | Tagged: blogging, google, stat, technology, unique visitors, wordpress | Leave a Comment »
Posted by jpluimers on 2012/12/17
Interesting, when I browse to https://twitter.com/settings/account, there is no option to download all my past tweets yet so obviously I’m not on the beta.
Are you?
–jeroen
via: Twitter has started rolling out the option to download all your tweets – The Next Web.
Posted in Power User, SocialMedia, Twitter | Leave a Comment »
Posted by jpluimers on 2012/09/27
Somehow my Sharing Pulibicize at facebook.com broken since august 1st. Posts at Wiert.me were not published to my Facebook timeline.
This post is to see if the steps at Publicize to Facebook not working fixed my problem.
–jeroen
Posted in Facebook, LifeHacker, Power User, SocialMedia | Tagged: august 1st, facebook, social-media, timeline | Leave a Comment »
Posted by jpluimers on 2012/08/28
Dang; I thought this had long left the posting queue, but somehow it ended in the drafts (:
Since then, many more event videos made it to Channel 9, including Build 2011, and TechDays 2012.
Anyway, here it is:
Microsoft’s PDC 2010 was held at the end of October 2010 in Redmond, WA, USA.
For the people that could not attend, it is very nice to view the sessions using the PDC10 player (it seems still people didn’t learn and start stripping the century parts from years again!).
Even if you are not using Visual Studio, .NET Azure or other Microsoft Technologies, there are a lot of interesting sessions showing the directions that Microsoft is taking.
Comparing that to what you do today is always a good thing to do: it helps you reflect, an important part of your personal development.
A few things I found interesting (in no particular order):
Enjoy!
–jeroen
Posted in .NET, .NET 4.5, C#, C# 4.0, C# 5.0, Channel9, Cloud Development, Database Development, Delphi, Development, HTML, HTML5, Mobile Development, SilverLight, SocialMedia, Software Development, Visual Studio 11, Visual Studio 2010, Visual Studio and tools, Web Development, Windows Azure, Windows Phone Development, XNA | 2 Comments »
Posted by jpluimers on 2012/08/22
In Generating a WordPress posting categories page – part 1, you learned how to
This episode, you will learn how the data read from the XHTML can be transformed to a simple tree in HTML suited for a posting categories page like mine.
In the final post, the same data will be transferred into a real category cloud with font sizes indicating the frequency of the category usage.
From there, you can go into other directions (for instance generating squarified treemaps from the data).
That’s the cool thing about data: there are many ways to visualize, and this series was meant – next to some groundwork on how to get the data – as inspiration into some forms of visualization.
Hope you had fun reading it!
StringBuilder outputHtml = new StringBuilder();
string rootUrl = args[1];
foreach (optionType item in select.option)
{
if (item.Level == optionType.RootLevel)
continue;
// <a style="font-size: 100.3986332574%; padding: 1px; margin: 1px;" title="XML/XSD (23)" href="https://wiert.me/category/development/xmlxsd/">XML/XSD</a>
string url = String.Format("{0}/category{1}", rootUrl, item.HtmlPath);
string prefix = new string('.', item.Level * 5);// optionType.NbspEscaped.Repeat(item.Level);
outputHtml.AppendFormat("{0}<a title="{2}" href="{1}">{2} ({3})</a>", prefix, url, item.Category, item.Count);
outputHtml.AppendLine();
}
One way of generating an HTML tree, is to prefix every node with a series of dots corresponding with the level of that node. Not the most pretty sight, but it will suffice for this episode.
Inside each node, I want to show the Category and Count.
Since the optionType as generated from the XSD only contains the below properties, a major portion on this posting is how to decode the Value so we can generate HTML like this:
...............<a href='https://wiert.me/category/development/software-development/net/c-' title='C#'>C# (118)</a> ....................<a href='https://wiert.me/category/development/software-development/net/c-/c--2-0' title='C# 2.0'>C# 2.0 (46)</a> ....................<a href='https://wiert.me/category/development/software-development/net/c-/c--3-0' title='C# 3.0'>C# 3.0 (33)</a> ....................<a href='https://wiert.me/category/development/software-development/net/c-/c--4-0' title='C# 4.0'>C# 4.0 (31)</a> ....................<a href='https://wiert.me/category/development/software-development/net/c-/c--5-0' title='C# 5.0'>C# 5.0 (2)</a>
optionType only contains the these properties:
Slug and Value without breaking the links between posts and categoriesThe extra properties needed for the HTML generation logic above are these:
Value undone from leading non breaking space character escapes, and the trailing count informationC# 5.0Value undone from leading non breaking space character escapes, Caption information, separator non breaking space character escapes, and surrounding parenthesis2class undone from the level- prefix4c--5-0 (it consists of lowercase letters and hyphens derived from the Category)/category in the category url/development/software-development/net/c-/c--5-0 that points to https://wiert.me/category/development/software-development/net/c-/c–5-0The really cool thing about XSD2Code is that it generated the optionType C# code as a partial class.
Which means we can extend the generated partial classes in a seperate C# file like the code fragments below (you can download it from the WordPressCategoriesDropDown.cs file at BeSharp.CodePlex.com)
partial class optionType
{
public const int RootLevel = -1;
private const string slash = "/";
private const char hyphen = '-';
public const string NbspEscaped = " ";
private const string emptyCountInParenthesis = "(-1)";
public optionType parent { get; set; }
public string Category
{
get
{
string result;
string countInParenthesis;
splitValue(out result, out countInParenthesis);
return result;
}
}
public int Count
{
get
{
string category;
string countInParenthesis;
splitValue(out category, out countInParenthesis);
string count = countInParenthesis.Substring(1, countInParenthesis.Length - 2);
int result = int.Parse(count);
return result;
}
}
public int Level
{
get
{
if (string.IsNullOrWhiteSpace(@class))
return RootLevel;
string[] split = @class.Split(hyphen);
string number = split[1];
int result = int.Parse(number);
return result;
}
}
/// <summary>
/// This is the HTML part that WordPress uses to reference a Category
/// </summary>
public string Slug
{
get
{
StringBuilder result = new StringBuilder();
foreach (char item in Category)
{
if (char.IsLetterOrDigit(item))
result.Append(item.ToString().ToLower());
else
if (result.Length > 0)
result.Append(hyphen);
}
return result.ToString();
}
}
public string HtmlPath
{
get
{
if (RootLevel == Level)
return string.Empty;
string result = Slug;
if (null != parent)
result = parent.HtmlPath + slash + result;
return result;
}
}
private void splitValue(out string category, out string countInParenthesis)
{
// might want to do this using RegEx, but that is a write-only language https://wiert.me/category/development/software-development/regex/
string result = Value;
int nbspCountToStripFromLeftOfValue = Level * 3; // strip 3 for each Level
for (int i = 0; i < nbspCountToStripFromLeftOfValue; i++)
{
int nbspEscapedLength = NbspEscaped.Length;
if (result.StartsWith(NbspEscaped))
result = result.Substring(nbspEscapedLength, result.Length - nbspEscapedLength);
}
string doubleNbspEscaped = NbspEscaped + NbspEscaped;
if (result.Contains(doubleNbspEscaped))
{
string[] separators = new string[] { doubleNbspEscaped };
string[] split = result.Split(separators, StringSplitOptions.None);
category = split[0];
countInParenthesis = split[1];
}
else
{
category = result;
countInParenthesis = emptyCountInParenthesis;
}
}
public override string ToString()
{
string result = string.Format("Level {0}, Count {1}, Slug {2}, HtmlPath {3}, Category '{4}'", Level, Count, Slug, HtmlPath, Category);
return result;
}
}
The bulk of the above code is in the splitValue method (that could have used RegEx, but I try to avoid RegEx when I can do without it).
Note that the HtmlPath propererty uses the parent property. Without it, the HtmlPath code would have been very complex. The value of the parent properties for all optionType instances is generated in the selectType.FixParents method below since the selectType instance contains all the optionType instances in its’ option property.
partial class selectType
{
public void FixParents()
{
Stack<optionType> itemStack = new Stack<optionType>();
optionType parent = null;
int previousLevel = optionType.RootLevel;
foreach (optionType item in option)
{
int itemLevel = item.Level;
if (itemLevel == previousLevel)
{
if (optionType.RootLevel != itemLevel)
{
itemStack.Pop();
item.parent = parent;
}
itemStack.Push(item);
}
else
{
if (itemLevel > previousLevel)
{
parent = itemStack.Peek();
}
else
{
do
{
itemStack.Pop();
parent = itemStack.Peek();
previousLevel = parent.Level;
}
while (previousLevel >= itemLevel);
}
itemStack.Push(item);
item.parent = parent;
previousLevel = itemLevel;
}
}
}
}
–jeroen
Posted in .NET, C#, C# 4.0, C# 5.0, Development, LINQ, Software Development, Usability, User Experience (ux), Web Development, WordPress, WordPress, XML, XML escapes, XML/XSD, XSD | 4 Comments »