Archive for the 'Development' Category

MMITunes: Create playlists for your Audi MMI/RNS-E on the Mac

I have an iPod Classic connected to the Audi Music Interface (AMI) in my car to listen to music over the Audi multimedia system MMI 3G. The iPod is able to store a vast collection of music but sometimes I just want to listen to the tracks I recently downloaded in the iTunes music store without having to walk down to the garage, disconnecting the iPod, sync it on my Mac and so on. Read more »

Nofollow tag cloud for WordPress

I love the tag cloud widget that comes with WordPress. There’s just one thing that bugs me: it floods every post or page with lots of internal links that a search engine crawler will follow. The SEO community says that this could be seen as some sort of artificial link generation by a search engine and eventually lead to a disadvantage in a site’s SERP ranking. Having fewer internal links on a post should also pass a higher page rank to linked posts as well. See this post from Matt Cutts detailing how it makes sense to nofollow non-essential internal links:

There’s no stigma to using nofollow, even on your own internal links; for Google, nofollow’ed links are dropped out of our link graph; we don’t even use such links for discovery. By the way, the nofollow meta tag does that same thing, but at a page level.

Unfortunately, it’s not possible to instruct the built-in WordPress tag cloud sidebar widget to use nofollow tags for the generated links. Read more »

Must Read Posts: New version 2.0

After quite a long time with no updates I just released a new version of my WordPress plugin “Must-Read Posts”. The new version adds several configurable sorting options which was the most requested missing feature. With the exception of the custom sort order they’re pretty self explanatory and include:

  • Post date descending (latest posts/pages first)
  • Post date ascending (oldest posts/pages first)
  • Random (randomizes the sort order)
  • Custom

The custom sort order allows pre-defined ordering of posts or pages and was the default and only sort option in the earlier versions of the plugin. If you update from an earlier version of the plugin this still is the default sort order. The sort ordering option can be found on the widget’s configuration area.

In case you’re using the non-widget PHP function, the sort order parameters are:

  • date_asc
  • date_desc
  • rnd
  • custom

If you don’t specify a sort order, the default is “custom”. If you’re using a plugin like WP Super Cache don’t expect the random sort order to show a different order every time you load the page.

The plugin can be installed/updated from the plugins admin page within your WordPress site or downloaded here.

MMI VIM login-code generator Windows application

Due to popular demand there’s a MMI 2G/3G VIM login-code generator application available in the download area. Windows-only. And you need .NET Framework 3.5 in order to run it. You will be asked to download it from Microsoft during the installation if it can’t be found on your system.

WordPress Plugin/Widget for Must Read Posts

Today, I was looking for a simple WordPress widget that allows me to statically display links to certain posts in the sidebar. I could have used the links widget but it wasn’t flexible enough for me. My idea was to use a certain custom field of a post or page as a trigger to display it in a widget. I searched for almost an hour but I just couldn’t find any simple, widget-capable WordPress plugins that could do this?! 

In the end, I ended up writing my own widget-capable plugin. I decided to publish it so anyone else can use it on her/his blog too. The plugin’s name is “Must Read Posts”. It shows your most recommended posts and pages in a sidebar widget or in a page. As the widget’s title is editable in the WordPress Dashboard you could change it to something like “Recommended Posts”, “Important information”, “Tips & Tricks” or whatever you like. Read more »

SSO between BEA WebLogic Server and SAP Enterprise Portal (Web Dynpro) using Web services

You’re looking for a way to consume Web services in SAP NetWeaver 2004s (and SAP Composition Environment aka NetWeaver 7.1) from BEA WebLogic Server 8.1 (and newer versions) using Single Sign On (SSO)?

You may have figured out already that SAML is not an option here because the SAP side is just a SAML consumer and not a provider (as of today). The only way left is to use the proprietary SAP Logon Tickets. Proprietary authentication mechanisms always require some extra work. In this blog article I’ll fill you in on what you need to SSO-connect those two J2EE platforms. Read more »

SSO with SAP Logon Tickets and Java

To validate/verify a SAP Logon Ticket in a non-SAP Java environment you have to call into native libraries. Fortunately there’s some Java sample code provided in the SAPSSOEXT library archive.

Go to service.sap.com (you need a valid user and download permissions) -> Download -> Support Packages and Patches -> Entry by Application Group -> Additional Components, follow the SAPSECULIB and SAPSSOEXT links and download the library versions for your operating system. You’ll also need SAPCAR to extract those .SAR files. Both libraries – sapsecu.dll and sapssoext.dll – are needed to validate a SAP Logon Ticket. Read more »

QName problem with BEA WebLogic Server (WLS) 8.1

One day I was looking for a fast and easy to use Java webservice implementation. I found XFire, the next gen java SOAP framework which is based on a low memory StAX model. There’s a FAQ on the XFire website about how to run XFire in a WebLogic environment. XFire requires a newer version of the javax.xml.namespace.QName than is included in weblogic.jar. Now, this cures the problem with the missing constructor. Depending on what exactly you do in your webservice other errors may occur. The most prominent exception being this one:

java.lang.LinkageError:
loader constraints violated when linking
javax/xml/namespace/QName

The problem occurs if there’s the combination of an older version of QName (being loaded from the application server at boot time) and a library which uses the 3-string constructor introduced in a later version of QName. This most likely is a class loading issue because the QName class in weblogic.jar is loaded earlier by the system classloader and can’t be “overridden” by the EAR/WAR classloader. But that’s just my best bet as I am not a classloader expert when it comes to WebLogic’s classloading mechanism.

This is neither an XFire-only problem nor is it a WebLogic-only problem! I read about XML libraries (eg. XMLBeans, Spring, Muse) having the same issues with QName if running in an application server environment (e.g. IBM Websphere). Read more »