Book review: C# 2008 and 2005 Threaded Programming
A couple of weeks ago, Packt publishing asked me to review Gastón C. Hillar book “C# 2008 and 2005 Threaded Programming: Beginner’s Guide”. They sent me a copy of this book and today, I’m ready to write a review for it. But before I’ll start reviewing it, I want to apologize to the publisher and author for the impartial review.
First of all, you should understand, that this book is about how it possible (for this book author) to write four programs (with awful user interface) using different classes from System.Threading namespace to perform tasks, rather then what is multithreaded programming and how to achieve best performance by utilizing multiple CPU power. Your own programs will not run faster after reading this book, but you’ll probably know (if you did not know before) how to use BackgroundWorker, Thread, ThreadPool, AutoResetEvent and WaitHandle classes. Also, there is a small chapter about thread context switching for UI thread delegates invocation and parallel extensions.
There are some technical misconceptions and errors in this book. But it is not the major problem of it. The problem is that while reading this book I question myself whom this book aimed at? Language style is somewhere between blog chatting (better then mine) and MSDN style documentation. I admit I don’t know quite how to categorize this, the author writes in a style that is just bizarre (even more bizarre then mine in this blog
) Overall, it sounds like I’m reading a conversation between two beginner-level programmers trying to explain one each other why they are using certain coding convention in C#.
Another half of this 395 pages book is just copy-paste stuff from Visual Studio (including it default tabulations and indentations). Here one of representative examples of such copy/paste
// Disable the Start button
butStart.Enabled = false;
// Enable the Start button
butStart.Enabled = true;…
// Some very useful property, which used as private member for another public property
private int priVeryUserfulProperty;
public int VeryUserfulProperty
{
get
{
return priVeryUserfulProperty;
}
set
{
priVeryUserfulProperty = value;
}
}
Verdict: Not very exemplary introduction to some classes inside System.Threading namespace for fellow students who like to read blogs, rather then books and documentation and do not want to understand how it works under the hoods, but write something and forget it.
3- of 5 on my scale. This book is not all bad, though, but apparently suitable for very specific audience, which definitely excludes me.
March 20th, 2009 · Comments (7)
Math world, simple mental calculations or what’s going on with education?
Today, I want to write blog post which is absolutely not related to programming. It related to math and education in general those days. During work interviews, I see a lot of people, who was absolutely unable to calculate mentally. They just can’t understand, that it’s possible to do without calculators. When my kids (2nd, 6th and 7th grade) were small I taught them to play with numbers, and until 4th grade (bigger kids) they were able do it. but then school teachers “killed” this ability. Why people should use calculator for simple math operations, if he can do it mentally? Shame you, the modern educational system. Let’s go back and try to understand how people were able to live without devil devices, such as calculators…
Following the paint of Nikolai Bogdanov-Belsky “Counting in their heads”. This painting is dated 1895.
As you can see at the painting, peasant kids trying to solve following exercise mentally:
(102 + 112 + 122 + 132 + 142) / 365
This is not very simple exercise, especially when should be solved without your favorite calculator. However, when I was 4th grade I learned to square two-digit numbers mentally (my, and I think, yours too): First, find the nearest multiple of ten, by raising or lowering your number, then add and remove the rest to each of numbers and add the square of oddment. For example
45 * 45 = (45+5) * (45-5) + (5 * 5) = 50 * 40 + 25 = (5 * 4) * 100 + 25 = 20 * 100 + 25 = 2000 + 25 = 2025
14 * 14 = (14+4) * (14-4) + (4 * 4) = 18 * 10 + 16 = 180 + 16 = 196
So, now it can be solved easily:
102 = 100
112= (11+1) * (11-1) + 1 = 12 * 10 + 1 = 121
122= (12+2) * (12-2) + 4 = 14 * 10 + 4 = 144
132= (13+3) * (13-3) + 9 = 16 * 10 + 9 = 169
142= (14+4) * (14-4) + 16 = 18 * 10 + 16 = 196
And so on… but wait, 100+121+144 already equals 365, which is our denominator. Next sequence will bring us 169+196, which is also 365. So the answer to this black board brain teaser is 2.
However, it can be rather complicated to calculate 862 for instance:
862 = (86 + 4) * (86 – 4) + (4 * 4) = 90 * 82 + 16…
Let’s try another way – multiple the difference between the number and 25 by 100, then add the square of the difference or excess of the number and 50. For example
862 = (86 – 25) * 100 + (86 – 50)2 = 61 * 100 + 362 = 6100 + (36 – 25) * 100 + (50 – 36)2 = 6100 + 1100 + 142 = 7200 + 196 = 7396
Isn’t it really simple and fun to calculate squares of numbers?
Bonus: how to calculate multiple of two digit numbers with the sum of its unity digits equals to 10?
- Multiply first digit of the first number by 10
- Add 1 to first digit of second number and multiply the result by 10
- Multiply results of step 1 and step 2
- Deduct second number and the result of step 1
- Multiply second digit of the first number by the result of step 4
- Add results of steps 3 and 5
Looks complicated? Let’s make it easier. Assuming that first number is X = 10x + z and second number is Y = 10y + (10 – z), the formula for quick multiplication calculation is: 100 * x * (y + 1) + z * (Y – 10 * x). For example:
96 * 84 = 100 * 9 * (8+1) + 6 * (84-10 * 9) = 100 * 9 * 9 + 6 * (84 – 90) = 8100 – 6 * 6 = 8100 – 36 = 8064
37 * 93 = 100 * 3 * (9+1) + 7 * (93 – 10 * 3) = 3000 + 7 * 63 = 3000 + (100 * 6 * 1 + 3 * (7 – 60)) = 3000 + 600 – 3 * 53 = 3600 – 159 = 3441
Have a nice day and be good people. Also, throw out all hardware calculators and uninstall all software
February 8th, 2009 · Comments (5)
Line-Of-Business vs. Beautifulness or two dogmas comparison as exemplified by two Twitter applications
Today I want to speak about two dogmas: design and functional driven programming. As the example of those two approaches, I want to introduce two Twitter clients: *Chirp by thirteen23 and TwitterFox by Naan Studio
As you can see, *Chirp is state of art application with outstanding user interface, and well-defined usability studies. While TwitterFox is wacky grey boring kind-of-grid only. However, you cannot judge app by only how it looks like. Let’s try to understand first what’s for you need twitter client?
Defining application goals by user story
I’m using twitter as quick and handy business tool to write my thought, feelings and everyday events. It is not my main (not even secondary) task during the day, so I want to be able to open, write and forget. Thus, I need an application, that can be invoked by one click and dismissed after writing. Also, I do not want background application to gasp valuable space in my screen, when not in use. Thus it should be background process with reduced workset and one textarea, to be focused when the main window become active. Also the application should hide itself when unfocus, yet be able to notify me about events without disturbing.
Let’s see how it done in *Chirp:
- 140MB workset
- No ability to hide
- Bouncing thingy at left upper corner to disturb you – it designed as you main desktop beautifier.
- No ability to know that new twittes arrived without showing main window
- Twit process required to click additional button (named “Update” for some reason)
- If you not finished typing, you can either dismiss all text of post it.
- Strange 140 characters countdown on background absolutely esthetical, yet very disturbing.
- You cannot type more, then 140 characters – this restricted by textbox. If pasted bigger text all additional characters truncated.
- You need mouse to operate an application
Now TwitterFox:
- 10MB workset
- You can hide it by hitting escape or clicking X button
- Small and portable without disturbing elements – it not designed as your main everyday app.
- New twits counter over small icon in browser tray, all other notifications can be disabled
- Once focused text are become active, expanded automatically and ready to write
- If you’re hiding it without clearing area, all un write text remains – you can clear it by one click
- Small 140 characters countdown which is visible only when typing
- You can type more, then 140 characters – counter becomes red, and you cannot post, however you’re able to fix, by dismissing unnecessary spaces or characters.
- Can be operated by only keyboard.
Bottom line: *Chirp designed to show how good it looks, while TwitterFox to twit only. Thus for my specific user story TwitterFox won!
Defining functional specifications
Next task defined for Twitter is read other twits. I used to read all my following and followers when I have free minute. Sometimes I retwit things, rather often reply followers and read replies and rarely send direct messages.
*Chirp provides twit area without scrollbar, yet not restricted to number of twits. Other words, you can scroll with mouse wheel only or by holding somewhere inside and dragging unlimited up and down. When the mouse is over specific twit, it fades and show three buttons: reply, direct and retwit. Also each twit contains the name of the client was used (just like in regular web interface). When clicking user avatar it brings to special internal screen with last twit of the user, information and statistics about him, three functional buttons: UnFollow, Fave and Block and huge button Get User’s Tweets. When clicking the line displays the time of the twit it puts twit url into clipboard.
Also *Chirp contains five main functional buttons: Faves, Home, Direct, Update and Refresh. When Home tab unfocused (for example you’re on other screen), it also displays a number of new twits.
Error screen of *Chirp is really odd. It contains everything you not really need to know and beautiful whales moving on screen.
TwitterFox is much simpler. It contains two buttons on mouse/keyboard over – reply and fave. When clicking on user’s avatar it opens it’s page in Twitter with all necessary information. Main TwitterFox window contains three buttons: Recent, Replies, Messages.
No doubt, that *Chirp provides much richer functional spec, but wait, am I really need all this? I told earlier, that I used to read twits and replies, while *Chirp has no such view at all. You can easy copy twit url into clipboard, but what for? Also, you can read bio and statistics of people you following whenever you want without opening browser window. But how often you’re doing that?
TwitterFox concentrated on functionality – twit, read, reply, read replies (and direct messages) – base tasks , Twitter designed for. It also marks replies with contrast color in public timeline, while *Chirp has inline reply functionality with threaded discussions support (which is very odd for Twitter)
Bottom line: *Chirp is enriched with not useful features, while TwitterFox contains only things, you’re use. Thus for my specific functional requirements TwitterFox won again!
Developers vs. Designers final round
So, we already understand, that *Chirp is an application, designed to show how skilled thirteen23 designers are. And it achieved this goal. The application is state-of-art, looks and designed very well with taking into account even small details, however it huge, unusable for everyday twittering and extremely slow. This is a general example about Designers’ doctrine.
TwitterFox is very ugly, but concentrated on functionality, tiny and reactive. It includes only features are necessary for twittering and has no other goals. So, this is a general example about Developers’ doctrine.
Is it possible to messmate those doctrines? Probably it is. And it is really simple. Each one of actors should do his own work. Designers should design and Developers – develop. I spoke about it a lot during my lectures, I’ll speak about it also at 11th February in user group meeting. By now, when you know how I see Twitter, you can start following me. Also, I’m interesting to hear your ideas about Designer-Developer intercommunication. It is not just about Microsoft way
Have a nice day and be good people.
January 30th, 2009 · Comments (7)
My favorite gadget arrived…
If you’re smoking, you know how it to flight more, then two hours when you cannot smoke. Also, you know hw it feels when outside is cold or rainy, but you should come outside to smoke. When you’re in pub with friends and a pint of good beer, but you cannot satisfy with your drink, when each 10 minutes you need to go outside to smoke. This why, I ordered electronic cigarette, that so far become my favorite gadget.
It’s absolutely perfect device. It produce odorless warm smoke and filled with real nicotine. It much healthier, then real cigarette, while you have a feeling of real smoke. And the most important thing, that you can smoke it in all places, where smoking prohibited.
The pack contains of two rechargeable batteries, charger, inhaler and nicotine cartridges. All you have to do it so mount cartridge and start smoking
It feels like regular cigarette, tastes like regular cigarette, smells (for smoker, not for all around) like regular cigarette, but it is not regular cigarette, thus you can smoke whenever you want and where ever you want.
Absolutely incredible and very useful gadget. Happy smoking and thanks to Gamucci for such innovation. Now I can smoke during 12 hours flight to MVP summit.

January 20th, 2009 · Comments (3)
Windows 7 – dry run or why Intel does not like Microsoft
Finally, I got a couple of free minutes to install Windows 7 x64 on my work machine. I have to admin, that installation was extremely fast. I just put DVD and keep talking with one of our architects near whiteboard. We enough to close only one issue, while Windows was installed and running.
There are number of visual glitches, but it’s beta after all. Next thing is to install drivers. Everything was great (it even find and install fingerprint reader), except three strange drivers on my Lenovo W500, that Windows 7 refused to find:
- PCI Serial Port
- PCI Simple Communications Controller
- SM Bus Controller
What can be those drivers? The clue was in SM Bus. It something related to board chipset. So, just checked Intel AMT, Intel PM45 and Intel LMS. My approximation was right, Windows 7 (and Microsoft Windows Update service) has no information regarding Intel stuff while all other (more rare drivers were installed fluently). I also need to install three of those drivers in Windows Vista compatibility mode in order to make it works.
Why this happen? Why it’s so hard to two huge conglomerates to work together in order to bring customers better installation experience? It seemed, that Lenovo did huge work with Microsoft to adopt its hardware drivers for Windows 7. Even switchable graphic cards worked perfect without additional drivers. So why Lenovo can, while Intel cannot?
I believe, that the problem is with Intel, who self fighting not to loss high end (and cost) processors, when the market requests low cost Atom-based machines with low power, yet good performing graphic processors.
Regarding biometric devices and switchable graphics. If you want to be able to login to domain with your fingerprint, be sure, that you visited Control Panel\Hardware and Sound\Biometric Devices\Change settings and check this option. By default it’s off.
Also it not seemed, that Windows 7 supports hybrid graphic cards. So unless I’ll find a way to get rid of this issue, I have to use Lenovo switchable graphics utility…
Next thing was to install gentlemen’s assembly:
- Windows Live Essentials
- Microsoft Office 2007 + SPs
- Total Commander
- Skype
- Virtual PC 2008 SP1
- Visual Studio 2008 + SP1
All installations were fine, except small problem with business edition of Skype. Newly introduced Action Center advised me to install 4.0 beta version of Skype to prevent compatibility issues.
Another problem (not really Windows, but Microsoft related) is a time, that takes to install Visual Studio. For some reason installation of Office (which is not smaller, then VS) takes about 5 minutes on my machine, when for Visual Studio it takes more, then 40 minutes to be installed.Devdiv guys, please do something with this installer.
So two restarts and here we go. Windows 7 with all necessary software installed. Now issues started.
The only disappointment was because of Windows Experience Index (140GB 7200RPM hard disk is not big and fast enough for this version of OS). If this not, what is?
But it can be fixed easily by disabling cache on disk Device Manager –> Disk Drives –> Uncheck “Disk write caching policy”.
After doing this your system will run much faster and score will be increased.
I cannot understand the reason it checked by default for non solid state drives, which unsuitable for fast caching.
Switchable graphic cards are also seemed, to be an issue for Windows 7. It does not supported by now to switch graphic cards. All you can do is to pitch BIOS for denying OS from display driver detection and set the card you want. Here how my machine scores looks like with second graphic card enabled.
Taskbar is for fun, not for work
First of all new branded taskbar. How I supposed to distinct what running and what don’t? Shinny borders and backgrounds? Cool, but not really helpful for me. Just for test try to set “Hide when minimized” option for Outlook 2007 and then detect whether it running or not. Ah, yes, I have to go via tinny arrow to configure taskbar icons – too bad.
Another issue with this bar is configuration of shortcuts. Just in case, sometimes I want to run programs minimized or maximized or set start keys (right click on shortcut and Properties). How should I do it for pinned items?
I understand, that for 5 years Microsoft tried somehow to prevent from developers to junk users notification area on taskbar, by hiding, swapping and moving things there. Finally, they managed to solve it by putting all trash into big shiny icons? Just take a look on Microsoft Messenger appearance in tasksbar. You have to run it in Vista compatibility mode in order to prevent it putting icon in this area? Too bad! This not called “feature complete” for sure.
Software compatibility
Yes, not everything perfect. For example drag and drop (DragonDrop) for Virtual PC will not work in regular mode in Windows 7. You have to create shared folder to workaround it. All programs, required elevated permission (those which triggered UAC on Vista all the time) will ask you for run only once, but if you accidently pressed anything else, then Allow, you’ll never be able to run it again (unless resetting UAC credentials in Windows). Also all those great programs, not required installations or any registry changes (for example Notepad++ or WinSCP will always treated as suspicious by Windows Defender, thus will start very slow all the time and some times required to be sent “for inspection”. This is general fail of Defender. Why me (as user) should wait you (as service provider) to check something. Do it on background, if you want to…
My first BSoD
Yes, I did it. I never was able to get Blue Screen of Death on Windows Vista. Here it happened after another restart. The reason was very funny: I did not closed Outlook before restarted Windows 7 (this fade screen with your applications will be forcibly closed). Yes, it was not really major BSoD. Windows made memory dump to prevent future crashes and send information. BTW, if you want to be able to report problems, you should use keys from Connect website, rather, then from MSDN. Beta reporting services is sensitive to product key.
Background services or what is really missing
My overall experience of Windows 7 is 7 of 10. It is major improvement of Windows Vista, but it still far from being perfect. I would advice to add OS foreground task dispatching. There are too many developers (also Microsoft’s, who trying to perform long tasks in UI thread). I think, that operation system should handle such cases and dispatch jobs to background to prevent UI freeze.
Another thing, is to find good compromise between annoying user and smart operations. Other words, do not try to assume what customer want to do, let him to decide (or at least enable such option). Good example for this is very odd Clear Type wizard. What would you answer to such question?
Why I need to see the same stuff three times, when all I want it file manager?
Stop trying to replace software. You already screwed with Microsoft Valet.
ISO file burn directly from Windows is really great feature, but an ability to mount iso images as virtual disks would be much better.
Other words, if you, Microsoft, want to create great operation system – do operation system, do not try to complete OS issues with another nice to have features. But no words – great work. Thank you.
Ah, and do not forget to fire everybody in IE dev team… It awful and has no future.
Next time we’ll speak about developer point of view to Windows 7.
January 13th, 2009 · Comments (10)
Microsoft Tag vs. QR tag
One of Microsoft’s announcements on CES09 was Microsoft Tag. Do you remember last try of Microsoft to create mobile barcodes on Live platform? I remember it. So why Windows Live Barcode was deprecated, while Microsoft creates new one? What the key difference between Quick Response approach, barely adopted by industry and new colorful MS stuff? Let’s try to understand differences and approximate future fail or success on this technology.
Key differences:
- The only information contains inside MS Tag is ID, which should be used to fetch all relevant information from tag server while QR contains all necessary information and can be used offline. Both technologies have it own advantages and disadvantages. From one hand, you can manage and fix results all the time, from the other hand, what happen with fraud and offline usage?
- MS Tag using High Capacity Color Barcode (HCCB) technology, which makes able to encode more information into relatively small area. Also because of small amount of information, errors can be handled easily for MS Tag. For encode 1 byte we need 8 symbols in QR codes, while in MS Tag only 4.
- MS Tag using thee base colors (CMYK) while QR only two (BW), thus in offset print MS Tag is much more sensitive to the quality of color plates. From other hand, if I my approximation is right, MS Tag can be printed in gray palette too, due to the fact, that it uses color differences, rather then color codes for decoding. Also it seemed, that hardware used for four barcodes will be more expensive, than similar hardware for two colors.
- Because of the fact, that QR is mature technology (first ISS was presented in October 1997), there are huge amount of devices, supports it natively, while MS Tag is rather new. From other hand, http://gettag.mobi/ provides WM,J2ME, IPhone, Blackberry and Symbian native clients for reading MS Tags. So it seemed, that very soon (if Microsoft will not abandon it again) this will be distributed de-facto.
- QR Code® is registered trademark of Denso Wave Inc, which makes this technology problematic for future enhancements, also HCCB, used for MS Tag is licensed by Microsoft, however as far as I understand from their IPL site, it can be used as far as remains under MS patent agreement. But maybe an appliance of this technology is protected.
Bottom line – I’m very skeptic with MS Tags, however let’s give it a chance and see whether MS Tag will become another Semacode, ShotCode, PDF417, Dot Code, Aztec Code, etc. or become Barcode technology we see every day everywhere…
Meanwhile, you can create your own MS Tag, download free reader for your mobile device from http://gettag.mobi and decide whether you like it or not. For me, this technology is cool, but the code itself is very ugly
Be good people and have a nice day.
January 9th, 2009 · Comments (6)
Common phrases used by developers
One of my partners (who is PM in global company) sent me his list of common phrases used by his developers. I also added some of phrases, commonly used by my developers. Here the list:
- It works on my machine
- That’s weird!
- But this was running before…
- Some minor stuff has to be fixed
- This must be a hardware problem
- Someone tinkered with incoming data
- But I didn’t touch that module
- I’m almost finished
- That’s will be done quickly
- You can’t test everything.
- It’s impossible that it will affect the other module
- I remember that I fixed this bug already
- Documentation is being written
- This is not my program
- I had lots of unexpected troubles
- But the specification was always changing
- I thought I found the bug
- This change will be done in 5 minutes
- I’m waiting for the others so I can test
- Aside from the fact it is not working, what is your impression?
- That’s not a bug – it’s a feature! (by dotmad)
- It works as coded (by Joseph Cooney)
- Sorry, my code is compiling. I will get back to you in a few hours (by David)
I’m inviting you to contribute your phrases in comments and if the phrase will be really interesting, I’ll update it in the post (with like to your blog/site)
So, let’s start creating ultimate developer’s phrases list.
January 5th, 2009 · Comments (18)
What boots faster – Netbook, powered Windows XP or Nokia E71 mobile phone?
Some days ago, somebody from Microsoft was shocked, when I told him, that I’m planning to run Windows XP (and later Windows 7) as operation system for mission critical automotive device. He even checked with Windows XP embedded team boot times for XP. They told him, that the minimum can be achieved is about 40 seconds cold boot and 30 seconds from hibernate state. I was upset and decided to tweak my system for smallest possible boot time. Here the result video. This is not the limit. I believe, that I’ll be able to decrease Windows XP boot time to less, then 10 seconds with a bit more efforts.
Note: This is absolutely authentic and non-touched video, recorded today by me, comparing boot time of Windows XP on unbranded weak netbook (Atom 1.6, 128MB and 8G SSD) and my Nokia E71 mobile phone. 15 seconds boot time of Windows XP achieved by tweaking only well known registry values and OS configuration values without special profundity of system settings.
Now the question: with todays’ devices, why we are not running XP for mobile and automotive mission critical devices?
December 17th, 2008 · Comments (26)
Asus R50A UMPC review
So, I got new branded Asus R50A UMPC for test. This ultra mobile machine with 5.6″ WSVGA (1024×768) screen, based on Intel US15W chipset, comes with Intel Atom Z520 (1.33 Ghz, 533Mhz) processor, 1Gb of RAM and 20GB SSD. Also it has 3.5G mobile unit, integrated 802.11b/g network card and GPS. First impression was very cool. Slick design, big screen build in fingerprint reader.
What in the box? Power adapter (110/220V), compact keyboard, bunch of cables, extra stilus and handling strap.
What else this machine has? Microcard reader, three mini-usb sockets, one regular USB and camera. Looks like pretty fine machine, but not for €1K+ price tag. But who cares when we buy real good gadget? However, my euphoria disappears during 6 minutes startup (this was not first startup – first took more, then 15 minutes).
It was preinstalled with Windows Vista SP1 Ultimate (for this tiny machine) aside with huge amount of Asus junkware, so it was was even unable even to calculate Vista experience score
Also it has no drivers for strange device, named “Mini Card” (with factory branded Asus OS installation)
Well, it’s probably because I’m still not connected to internet… Let’s connect office WiFi… Err… It has some troubles with wireless network discovery – 2 bars for 12 feet distance from access point (my W500 has all 5) and no other networks (with 4 and less bars on another machine). Let’s connect it. Hm, “unable to connect”… Weird. Leave it by now. This is multimedia device, so, probably, video will play better? Well, it failed also with playback of Windows sample movie. So maybe it has great battery life? Not really. Without doing anything new 2 cells, 2600mAh battery enough for less, then two hours (with vista battery saver it extended to 3, while this device does not support aero interface).
But the final accord was this one (one again – this is branded Asus installation):
Bottom line: 0/5. I paid $360 for my wife’s pink Acer Aspire One and got much better computer (it even has camera).
The only thing remains enigma for me is why, the hell, this piece of crap costs more, then €1,000?
Have a nice day and be good people – do not buy this machine!
November 12th, 2008 · Comments (5)
Consultants for charity
As you, probably, know, I left consulting field. However, it does not mean, that I quit helping developers community with client application development. Also, every day I’m getting between 50 and 300 emails with questions (I’m trying to answer all of those) and sometimes proposals for consulting. Currently I’m refusing all those, because I do not want to engage to it. However, there are too much people, who really need professional developers help and there are very few good development consultants in our area. Thus I decided to keep consulting, but this time only for charity.
How does it work?
- You want me to help you with your development.
- I have free time for it.
- We decide together about the fee.
- You get consulting and you are happy with it.
- I tell you what charity organization to transfer all amount, you should pay (except TBL, if there are).
- You transfer it.
- We made the world a bit better!
To clarify things:
- It’s not charity foundation – you will transfer the money directly to organization, that need it
- I’m not doing it for free – I feel, that finally I’m able to do something really big for those, who need it
So, if you are one of those, who want me to consult, contact me via this form or Twitter.
If you’re good consultant and want to join me, contact me via this form or Twitter and we’ll make the world better together.
I still had no chance to speak with my ex-engagement manager, however I believe, that he will not have a problem with this kind of payment to me. If so (and you have open PO in Microsoft Israel with him), you’ll be able to use it.
Spear the world with this news! Post in your blogs, twitters, facebook, any other community stuff or just join me
November 12th, 2008 · Comments (8)
Discover other tags
My tools
- .NET Framework Detector
- Duplicate images finder
- Exchange Security Policy for Windows Mobile Devices Fix
- Gas Price Windows Vista SideBar gadget
- Israel Traffic Information Windows Vista SideBar gadget
- Localization fix for SAP ES Explorer for Visual Studio
- LocTester
- RTL and LTR in Windows Live Writer
- Silverlight controls library
- Snipping tool integration plugin for WLW
- USB FM receiver library
- Vista Battery Saver
- WebCam control for WPF
- Windows Live SkyDrive attachment for Windows Live Writer
- Wireless Migrator
- WPF Virtual Keyboard










