Filed under

Tools

 

Creating a Skype add-on using .NET - Part 1

Skype provides pretty rich API for us developers to create add-ons that can customize it's behaviour. There are a number of ways to use this API and access Skype functionality programmatically. Skype4COM is one of these ways and is the recommended one if you want to create your add-on using .NET. Skype4COM is a wrapper dll that provides Skype functionality into the COM world, therefore also to the .NET world, since .NET can use COM dll libraries.

Skype4COM.dll is located into the Program Files\Common\Skype folder (or Program Files (x86)\Common\Skype in case of x64 version of Windows). It is installed (and registered) there if you install Skype with Extras enabled (this is an option of one of the steps of Skype installation). Once done, you can add a reference to it from your .NET project. Simply right click on your project in the Visual Studio solution explorer, select Add Reference and then click on the COM tab. Skype4COM should be in the list populated there.

Example
Here is a simple (self descriptive) example of accessing Skype functionality from your C# code:

SkypeClass skype = new SkypeClass();
Debug.WriteLine(skype.Friends.Count);

Note that once new SkypeClass() is executed, Skype will warn the end-user that some process is trying to access it. End-user must allow your process to access Skype, else you will get an exception.

x64 operating systems!
Here is something you should take care of! I missed this step and in the beginning and spend quite some time figuring out why SkypeClass fails to be initialized! Since Skype4COM is a x86 (a.k.a. 32 bit) library, your add-in should also be x86 in order to be able to use it. In order to configure your project to produce a x86 executable you need to use the configuration manager of Visual Studio. Click on Build menu and then Configuration Manager. In Active solution platform drop down list, select <New>... and on the dialog that opens select x86 as platform. If you miss performing this steps you will notice the problem only on machines with x64 operating system. If operating system is x86, your .NET executable will run as x86 process anyway so it will succeed in instantiating Skype4COM dll.

Resources
Skype4COM Reference (all things you can do with Skype4COM)
Examples (a number of useful examples in many languages)
Forums (unfortunately you will not find prompt help there. most of the threads remain unanswered for days)

Filed under  //   .NET   Remote Collaboration   Skype   Tools  

Comments [0]

Comparison of issue tracking systems

Couple of years ago Sotiris Fillippidis - friend of mine and author of famous Zaharias Dentoftiahno tales - initiated a table of existing issue tracking systems to compare their features. Here is his blog post.

Today I came accross something similar in Wikipedia. It's a list of about 40 or more issue tracking systems. Take a look...

Filed under  //   Tools  

Comments [0]

5 simple (non state of the art) features that make Skype so easy to use

I have been using Skype intensively for some months now, to make both personal and professional voice and video calls. Put aside the superb quality of voice and video (which I've seen also in other solutions like Live Messenger), I noticed some very simple, yet extremely useful features that differentiate it from the competition:
  1. Incoming call notification on all speakers: This means that you can have your headphones pluged in so that you can use them to communicate, but still hear the incoming call notifications when you are not wearing them! (see 1st picture)
  2. Order of preference for sound devices: This is very useful if you are using a laptop and your sound equipement changes frequently. You can specify which device (speakers/microphone) will be used for communication. If not found the next available will be used etc. So if you want to use the microphone of your external camera at work but the integrated microphone of your laptop when you are on the move, you don't have to get into the options page every time. You specify this once and you are done (see 2nd picture).
  3. Mute is canceled when you answer or start a call: Often when you are about to make or answer a call you may forget that you muted your speakers just a while ago. This can also happen to the other participant, especially if he/she is not very comfortable with this way of communication. Skype takes initiative and enables your speakers when a call is started. It's obvious that since you started or answered a call you want to use them! When call is completed speakers are muted again.
  4. Auto answer call: Enable this feature and Skype can be used as a remote surveilance system (see 3rd picture).
  5. Echo / Sound Test Service: A very simple idea that helps you identify microphone, speakers and bandwidth problems. Echo user is a virtual user always present in your contact list. Call this user and see if and how other users hear you.
It seems that web conferencing and remote collaboration will become daily activity of mine in the near future. So stay tuned for more details about this experience.

(download)

Filed under  //   Remote Collaboration   Skype   Tools  

Comments [0]

CNET TechTracker - Scan your computers for new software versions

CNET TechTracker (www.download.com) can help you get notifications when a new version of software installed on your machine is released! It really works! You can configure to automatically run on windows tray and check for new software daily, weekly, monthly or manually. I suppose that this is possible only for software being distributed over download.com, but this is fairly big software database!
The results are reported to you with a tray notification or on the web. I've seen other applications like this one in the past, but none from such an important vendor like CNET. I suggest you try it out! See part of the results for my PC...

(download)

Filed under  //   Tools   Windows  

Comments [2]

Create user interface mock-up smartly and quickly

My start-up weeknd friend Nikos Anagnostou recommended to me a tool called 'Balsamiq Mockups' recently. This tools is excellent! You can create a user interface mock-up (mock-up: a draft graphical design) in a few minutes. You can use this tool to present a user interface idea to your customer, manager, subordinate or any person to whom you want to prove a point. I tried to use Visio for this purpose in the past but somehow it seemed too complicated. With Balsamiq Mockups is pretty simple.

Watch the video...

Filed under  //   Screencast   Tools  

Comments [0]

Reflector acquired by Red-Gate

When that happened? I just found out that Reflector has been acquired by Red-Gate. You know, the company that developed some very useful, yet not always free, tools like SQL Compare and SQL Prompt. In corresponding page they mention that "We will continue to maintain a free version for the benefit of the community". Lets wait and see...

Filed under  //   .NET   Tools  

Comments [0]

Συμπύκνωση εικονικών δίσκων του VirtualPC

Με το VirtualPC μπορεί κανείς να κάνει θαύματα! Ένα μόνο πραγματάκι με ενοχλούσε πάντα. Το μεγάλο μέγεθος των εικονικών δίσκων. Το VirtualPC έχει ένα Virtual Disk Wizard με τον οποίο μπορεί κανείς να συμπυκνώσει (compact) το μέγεθός τους, αλλά αν το τρέξετε μόνο του δεν θα πετύχετε και πολλά. Υπάρχουν διάφορα εργαλεία τρίτων που υπόσχονται να κάνουν καλύτερη δουλειά, αλλά πρόσφατα βρήκα και αυτό το άρθρο στο Technet το οποίο προτείνει τα παρακάτω βήματα. Το δοκίμασα και δούλεψε! Κατάφερα να μικραίνω δίσκους από τα 18 στα 12GB και από τα 13 στα 7GB!

Ορίστε τα βήματα :

  1. Καταρχήν τα βασικά: Εκτελέστε τον Clean-up wizard για να διαγράψετε άχρηστα αρχεία και φυσικά καθαρίστε το Recycle Bin.
  2. Κάντε defragment στο δίσκο. Ίσως μπορείτε να χρησιμοποιήσετε και το PageDefrag το οποίο κάνει defragment στο page file (δεν δουλεύει σε Vista).
  3. ΤΟ ΠΙΟ ΣΗΜΑΝΤΙΚΟ: Χρησιμοποιήστε ένα εργαλείο για να μηδενίσετε τον μη χρησιμοποιούμενο χώρο. Όπως γνωρίζετε όταν διαγράφεται ένα αρχείο απλά μαρκάρεται ο χώρος του σαν διαθέσιμος, χωρίς να καθαρίζεται. Αυτό κάνει τον παραπάνω wizard του VirtualPC να μην μπορεί να αποδεσμεύσει αυτό το χώρο μια που νομίζει ότι ακόμα χρησιμοποιείται. Ένα εργαλείο που μπορείτε να χρησιμοποιήσετε για να καθαρίσετε αυτό το χώρο είναι το sdelete. Απλά εκτελέστε το εξής: sdelete -c c:
  4. Τέλος χρησιμοποιήστε τον Virtual Disk Wizard του VirtualPC και συμπυκνώστε (compact) τον δίσκο.

Ελπίζω να σας φανεί χρήσιμο!

Filed under  //   Greek   Tools   Windows  

Comments [0]

Εργαλείο για Performance Profiling εφαρμογών Compact Framework (και όχι μόνο)

Πριν περάσω στο θέμα, λίγα λόγια για το Profiling. Πόσες φορές στο παρελθόν (ίσως και παλιά στα χρόνια της VB 6) δεν βάλατε ένα timer στην αρχή και στο τέλος μιας συνάρτησης για να μετρήσετε πόσο χρόνο κράτησε η κλήση της; Αυτό ακριβώς πετυχαίνετε με το Profiling, χωρίς όμως να γράψετε ούτε μια γραμμή κώδικα! Ναι! Και το αποτέλεσμα είναι εντυπωσιακό! Έχετε χρόνους κλήσης για κάθε μια μέθοδο του κώδικά σας ξεχωριστά!
Υπάρχουν δυο βασικές κατηγορίες Profiling. Το Performance και το Memory Profiling. Με το πρώτο μετράμε χρόνους κλήσεων και με το δεύτερο την κατανάλωση μνήμης.

EQATEC Profiler
Ο EQATEC Profiler είναι ένα δωρεάν εργαλείο με το οποίο μπορείτε να κάνετε Performance Profiling. Το εργαλείο λειτουργεί δίνοντας του αρχικά το deployment folder της εφαρμογής σας. Επιλέγετε ποια dll θέλετε να "μετρήσετε" και το εργαλείο παράγει ένα δεύτερο deployment folder που το ονομάζει Profiled. Χρησιμοποιήστε τα αρχεία αυτά αντί για τα κανονικά και αυτό είναι όλο. Στο κλείσιμο της εφαρμογής σας θα δημιουργηθεί ένα xml report με το αποτέλεσμα του profiling. Ανοίξτε αυτό το report με τον ειδικό viewer που συνοδεύει τον EQATEC Profiler για να δείτε τα αποτελέσματα (βλ. εικόνα). Γράφοντας μάλιστα και λίγο προαιρετικό κώδικα μπορείτε να παίρνεται reports και όσο η εφαρμογή σας τρέχει, πατώντας για παράδειγμα ένα πλήκτρο της.
Το εκπληκτικό είναι ότι με αυτό τον profiler μπορείτε να μετρήσετε compact και desktop εφαρμογές ή ακόμα και web applications και windows services. Και μάλιστα μπορείτε να το κάνετε ακόμα και στο περιβάλλον του χρήστη χωρίς να χρειάζεται να εγκαταστήσετε εκεί κάποιο ειδικό εργαλείο. Αρκεί να στείλετε στο χρήστη να εγκαταστήσει την ειδική 'Profiled' έκδοση που παράγει ο EQATEC Profiler. Ο χρήστης θα χρησιμοποιήσει την εφαρμογή σας κανονικά, στην mobile συσκευή του ή στο desktop του και θα σας στείλει πίσω το xml report που θα δημιουργηθεί!

Tmpec20

Παρενέργειες και απόδοση

Οι παρενέργειες που προκαλεί αυτό ο Profiler είναι ότι αυξάνει το μέγεθος της εφαρμογής σας περίπου 20% και μειώνει την απόδοσή της κατά περίπου 30%. Νούμερα αρκετά ικανοποιητικά για το αποτέλεσμα που έχει κανείς. Η EQATEC ισχυρίζεται ότι έχει κάνει Profiling στην εφαρμογή World Wind της Nasa, μια που το εργαλείο αυτό μπορεί αν χρησιμοποιηθεί και για εφαρμογές για τις οποίες δεν έχετε τον κώδικα!

Συν και πλην

Εντάξει, δωρεάν εργαλείο είναι, κάτι θα του λείπει! Ο EQATEC Profiler μετράει τους χρόνους κλήσεων των δικών σας συναρτήσεων και όχι των System.*. Που σημαίνει ότι δεν μπορείτε να έχετε αναλυτικά χρόνους εκτέλεσεις της κάθε γραμμής κώδικα ξεχωριστά. Μόνο τους χρόνους των μεθόδων σας. Για αναλυτικότερο profiling θα πρέπει να χρησιμοποιήσετε ένα εργαλείο όπως το εκπληκτικό dotTrace της JetBrains (δημιουργός του επίσης εκπληκτικού ReSharper). Αυτό όμως ούτε δωρεάν είναι ούτε παράγει Profiled εκδόσεις της εφαρμογής σας. Που σημαίνει ότι πρέπει να είναι εγκατεστημένο στον υπολογιστή που θα γίνει το Profiling και μάλιστα η εφαρμογή να ξεκινήσει από το περιβάλλον του. Και φυσικά δεν μπορεί να χρησιμοποιηθεί για mobile εφαρμογές καθώς βέβαια δεν μπορεί να εγκατασταθεί σε Windows Mobile. Εκεί είναι που έρχεται ο EQATEC Profiler και μας λύνει τα χέρια!

Filed under  //   .NET   Greek   Mobile   Tools   VB  

Comments [0]

ResEx - The composite, translation friendly .NET Resource editor

I have just released version 1.00 of ResEx, the composite, translation friendly .NET Resource editor. ResEx has been in beta version for some months to ensure some level of quality in the implementation of supported features. Here is a quick list of feature supported:

  • Translate values side by side (just like the old time classic VB6 resource editor)
  • Lock specific strings so that translator does not translate them
  • Restrict length of translating strings
  • Ensure correct translation of strings with placeholders {0} {1} ...
  • Warnings about shortcut characters (string containing &)
  • View resource strings in tree form
  • Translate resources without Visual Studio IDE
  • Search inside resource files while translating

Tmp321c

You can download ResEx from here.

Please use the discussions page provided to send comments and questions (Anonymous posts are allowed).

Filed under  //   .NET   Desktop   ResEx   Tools   Visual Studio  

Comments [0]

ResEx Version 1.1 is available!

Version 1.1 of ResEx is available! Here is more:

New version fixes some bugs, thus can be considered a stabilization release.

Tmp9e1a

About ResEx

ResEx is the composite, translator friendly resource editor for .NET. Here is a quick list of feature supported:

  • Translate values side by side (just like the old time classic VB6 resource editor)
  • Lock specific strings so that translator does not translate them
  • Restrict length of translating strings
  • Ensure correct translation of strings with placeholders {0} {1} ...
  • Warnings about shortcut characters (string containing &)
  • View resource strings in tree form
  • Translate resources without Visual Studio IDE
  • Search inside resource files while translating

Filed under  //   .NET   ResEx   Tools   Visual Studio  

Comments [0]