After a few days of testing I have decided to move over to mblog.com permanently. Please visit http://mblog.com/sanjayvyas.
Mar 13, 2004
Mar 8, 2004
Trying to move to MT based mblog.com
I think I am going thru similar transitions as Anand as far as Blogger vs. MT is concerned. I guess many people use Blogger as "training wheels" to get the Blogging Nirvana before deciding to move to a better blogging site. I have been having problems recently with Blogger, not to mention all those tweaking of comments, trackback, blogrolls that I did with this blog. I have created a new blogsite http://mblog.com/sanjayvyas. One of the reasons is that it is powered by Movable Type and hence integrates Comments, Trackbacks, Categories (which doesn't exist in blogger). On this blog I did manage to implement comments and trackback by third party offerings like http://trackback.org and http://blogextra.com, but categories is something which is just not supported in Blogger. Many times I stopped short of blogging a though because I thought it wasn't related to the kind of posts I have been making.
My decisions to move to mblog.com are:
1. Its FREE :)
2. It provides all the little extras like comments, trackbacks, categories
3. It allows small file uploads
4. It alows me to send SMS/MMS/WAP to send posts (Still have to try this one though)
Having decided to move, I still have one dilemma I face: Should I "import" entries from blogspot to MT? Should I simply place a two-way link on both my sites? Given the fact that MT supports "importing" the entires, I was encourgaed the attempt the former only to run into a wall. It seems you can import entries from blogger by generating a text file by tweaking the templates and settings and then uploading them to /import directory of MT before invoking the "Import" feature. But I guess this only applies to MT if you "own" the site where MT is hosted or if your host provides FTP access for you to create the import directory. I dont own mblog.com and I dont think they provide FTP access to the users. Now I am looking at some tool which will extract posts from blogger and post them to mblog.com, afterall both provide some form of XML-RPC endpoints. (BTW the XML-RPC endpoint for mblog.com is supposed to be [Host: http://mblog.com Page: /cgi-bin/mt/mt-xmlrpc.cgi]. I tried using w.blogger, but its cumbersome as I have to select one post at a time, set the dat/time to the original and post one entry at a time. Not to mention losing all the comments.
If you know any tool for extracting and transferring posts to another blogsite, do tell.
Mar 4, 2004
Stripsearch
Now this is one stripserach I dont object to.... :)
This Calvin and Hobbes Site http://www.reemst.com/calvin_and_hobbes/stripsearch allows user to search C&H cartoon strips by keywords.
Mar 2, 2004
Are you a usability expert?
The other day I was standing with my friend near the lift on one of the middle floors and he reached out and pressed the “UP” button. I asked him why did he press the “UP” and not the “DOWN” button. He replied, “I want to call the lift up”. The lift was on the ground floor and of course it came up, but once we entered the lift, he pressed “G” and we indeed went down. I would have pressed the “DOWN” button because I want to go down to the ground floor and in this scenario the lift algorithm would have reacted the same way. It set me thinking on the usability issue. People do confuse between the “UP” and “DOWN” buttons. Now we know that “icons” make something universal while plain text makes it difficult to someone who doesn’t understand that language. But to disambiguate, shouldn’t the lift have Icon+Text which shows down arrow with accompanying text which says “I want to go down”? I have seen many people press both UP/DOWN buttons because they don’t know which one will work. Fortunately or unfortunately the lift in my office building has only one button (Everyone just goes down?).
Another issue in the office lift is about the “Close Lift” button inside the lift. When the lift door is open, “Close” button closes the door (as expected). But when the lift door is in the process of closing, the “Close” button actually opens the door. Some of my colleagues started laughing but it set me thinking… When would I “close” the lift door when it was already “closing”? Would I do that because I want the lift door to close faster? Or is it when I see someone stepping in just when the lift door is closing and in panic state I press the lift closing instead of lift opening button. In either case I think it’s a good thing.
Are there any usability experts who would want to give expert comments? I would love to hear usability expert’s opinion here.
Mar 1, 2004
Blogspot Users beware
This goes out to all the blogspor users. Recently I have been having troubles with Blogspot. I realized that my blog has suddenly vanished. First I thought it was dropped connection, then I thought it was local cache proble, then I thought it was server side corrupted cache, then probably bug is blogspots rendering engine. It turns out that there is a bug in blogspot software where your template is truncated. This causes it to lose your template permanently. Thankfully I had a copy saved on my laptop or else I would have to reconstruct it from scratch.
For all those blogspot users who carry out customization on their blogs like Comments, Trackback, Blogrolls, Counters etc, please download the template everytime you make changes and save it locally on your PC.
Feb 25, 2004
Irritations
I talked about a friend of mine who used to look at peoples irritations and came up with ideas... I Wish..Innovations Continuing in that series I am posting 3 constant irritations that I face..
Here comes the crib :)
1. HP nx7000 and Speaker control button
What is wrong with HP/Compaq? I was a user of Compaq Armada E500 model laptop earlier which had fantastic speakers, so much so that at Microsoft Events in the speaker's lounge other speakers used to turn around to see it whenever I played any MP3 files. They often commented that the speakers were almost as good as desktop version. Not only the new JBL speaker in HP nx7000 are nowhere near the fidelity and volume of the old Armada, the speaker volume buttons are almost duds. Unlike the Armada, these buttons don't seem to be "hardware" buttons rather "software" buttons. For example, in the night when my wife and kids are sleeping and I boot up my laptop, there is no way I can mute the speakers until Windows has booted and sounded the familiar XP "chime" waking up my 1 year old daughter in the process. Once its booted up, the buttons start working normally, but you can still feel the "lag" when you use these buttons during the normal run of application too. I am saying "software" buttons because the HP nx9000 model has a WiFi button on the front panel which too is "software" based. In sense that there is a Windows Service running which actually manipulates it. If you shut down the Windows Service, the WiFi button also stops working.
2. Nokia 3650 PC Suite synchronization and ActiveSync goof ups.
I am an avid gadget/devices collector and I even have a small bag of gadgets that I have collect on my overseas trip. Some of these gadgets/devices are Pocket PC 3870, Nokia 3650, a separate billionton Bluetooth module, couple of laptop cams/USB memory sticks and so on..The problem began when I started to connect these devices and gadgets thru Bluetooth.
First I installed ActiveSync 3.7 and connected my PocketPC to my laptop using Bluetooth. This went off fine as I configures my ActiveSync to use my Bluetooth created serial port. Then I tried to connect my Nokia 3650 over Bluetooth to my Laptop, that's when the trouble started. When I initiate the Bluetooth serial port connection to my Nokia from my laptop, the phone behaves a little weirdly. It first accepts connection, then drops it and then establishes the connection back to the laptop. The reason seems to be - Bluetooth protocol says that key used during communication can change (for security reason) during the session. I guess Nokia engineers took it for - The key MUST change during the session, hence they accept the connection, drop it, change the key and initiate the connection again from the phone. Now the problem is not how Nokia engineers connect with Bluetooth, the problem is that when Nokia phone does a "callback", it goes and connects with the first Bluetooth serial port on my laptop which unfortunately happens to be the ActiveSync Port. ActiveSync picks up the connection, decides that it is not "activeSync" protocol and hence drops it. So there is no way I can get PocketPC AND Nokia 3650 syncing with the laptop at the same time.
3. USB devices drive me crazy with repeated driver installs.
This one I just don't understand (Maybe I haven't understood the way its implemented in XP, but why should I care?). As I said earlier in this post, I have quite a few gadgets and most of them happen to be USB. USB flash disks, USB Camera, USB Light, USB to Serial Converter, USB Bluetooth, USB Network Card (Yeah, need this for Microsoft Application Center 2000 demos as it needs 2 network cards), USB this and USB that...
Why it drives me crazy is that XP insists on installing the USB driver for the device on every single USB port I us. My laptop has 3 USB, ports, my MS keyboard has 2 more and I have a 4 port USB hub. Each time I insert the USB device, XP pops up the driver installation balloon. Its ok when its drivers is included in XP (which I think is still waste of time and space to bind the driver to every port), but its a pain for those devices which require a separate CD for installation. I have to carry all the driver CD with me around or keep plugging in and plugging out the device for each of the USB port to recall which port was the driver bound to last time. AAAARRRRGHH. Sometimes I feel I should sit down and plug all my USB devices to all my USB ports so that XP is happy.
Now, someone can pick up these irritations and decide to do something about them (HP, Nokia, Microsoft?). Or someone already has found a way out, in which case please drop me a line and educate me. Or if you are irritated by these issue, drop a comment and share my pain...
Feb 23, 2004
Shuddh Hindi
Recently I have started blogging in Hindi and quite a few of my friends told me that they find the level of hindi a little too high for their Bambaiya hindi. So I tell them this little joke on shuddh hindi and reactions of people to it...
School going boy came out of his hindi exam and picked up his cycle from the cycle stand to go home. He discovered that his rear tyre was flat. So he dragged his cycle to the nearest puncture repair shop and said in shuddh hindi:
हे पवनठूसर, मेरी मानवचालित द्विचक्री वाहनी के द्वितीय चक्र में से पवन का पलायन हो चुका है, अतः आप से करबद्ध होकर निवेदन है की आप अपने पवनठूसक यंत्र से तनिक पवन का प्रवेश करायें|
The little boy at the repair shop looked up at him and said "हट्टे कट्टे होके भीख मांगते हो, शर्म नहीं आती है|"
Credit goes to Akshay (a college friend with whom I have lost touch)
un-sync me
I have had it with these sync applications which sync my address book and calendar entires between devices. The culprits are Outlook, PocketPC ActiveSync, PC Suite for Nokia 3650 (but not Timex Data Link watch because its one way sync). I routinely synchronize my data across different devices. The trouble is that the entries themselves has no notion of modification date which leads to each device trying to determine what to do with "modified" entries. At the most the sync software gives options like "Device overwrites PC" or "PC overwrites Device" which are like global settings. Consider this.. If I modify an existing contact and then modify phone number of another contact on my Nokia phone, neither the phone nor outlook know whose modification (on a per entry basis) are newer. Worst still, if I modify the users email id in outlook and then modify the same users cellnumber on phone. You may ask why do I have to change information in pieces on different devices. Well, I get these information in different pieces and when I am at different places. For example, I modified a friends email id after he quit his compnay and sent me his new email id. I was in office and I made these modification in outlook. Then after a few days he called me from his new cell number when I was on the road. So I replaced his current cell numeber with the new number. Now what would happen when I synchronize my outlook data with my Nokia contact list, I shudder to think.
Is there something that I am missing here, maybe everyone else knows how to synchronizae different devices without dropping a single entrylet while I am clueless or everyone is either cursing/working around or plain simple accepting the fate while the companies who write these sync applications are completely unaware of these things.
Enlighten me or leave a comment to share my pain.
Feb 21, 2004
Increasing Indic bloggers
I am very happy to see Indian blogger increasingly blogging in Indic. Though sometimes it means I cannot understand what is written on a different language page, but I guess in this age of globalization it still keeps us in touch with our own languages (btw vernacular means language of the slave. This was used by British to describe our languages, so please dont use the term vernacular), otherwise where will do get a chance to write in hindi, tamil, telgu etc..especially IT people.
VB.NET Increment/Decrement Operators
Is this the reason why VB.NET cannot have increment and decrement operator?
Consider this code in VB.NET which compiles currently...
Dim I As Integer = 5
Dim J As Integer
J = ++I
Console.WriteLine("I={0}, J={1}", I, J)
This does not increment the value of I at all and yet this is a valid expression. Trying to implement increment and decrement operators using C++/C# operatore of ++ and -- will break the existing operators of VB.NET.
Feb 19, 2004
A la OLE2.0 In-situ editing?
Came across this while searching for a Quick blog tool http://www.aspmodules.com/AT/blogInfo.asp. I have disabled 3rd party Browser extension because of troubles with Browser bar or else I would have tried it. Looks good from screenshots but what I would love to have is a system tray application which allows me quick blogposting (I am such a fan of system tray apps). Something which comes up in one click and probably takes text from clipboard/text files/current URL or simple drag drop. And yes, it should also support unicode (as I have a hindi blog and none of the tools I know allow me hindi-editing). Cook Computing has XML-RPC library for .NET, so writing a QDBT (Quick and Dirty Blogging Tool) should not be such a big problem. Want to help me write this tool?
IE6 Bug? Am I alone?
After the last IE6 patch I have noticed that on many pages (including this blog), IE does not scroll correctly. For example, on this blog it ends the page just below the last item on the sidebar. I have to maximize/restore for it to scroll throught the entire document. Is anyone else experiencing this problem?
TechGeeta
If you read Hindi, check out this blog about GeetaSaar about Technology. You will perharps forgive your developers for all thois bugs ;)
http://hrudaygaatha.blogspot.com/2004_02_01_hrudaygaatha_archive.html#107718118366314316
Feb 18, 2004
~DLL Hell == DLL Bliss || Dll Heaven?
Came across this interview of Eric Gunnerson by Bruce Eckel and Bill Venners about C# programming language and.NET Framework. I liked the part where Eric is talking about side-by-side execution of .NET assemblies and how it solves the DLL Hellp problem and Bill askes "So is this DLL Bliss now? What would you call it? DLL Heaven?". Too cute :)
ATOM vs. RSS
I am amused by this ATOM vs. RDF vs. RSS debate. I am sure each side has it own story and justification but it does create headaches for users like me :( Now the truth is most FeedReaders support RSS 0.9/1.0/2.0 formats while one of the biggest(?) free blogsite provider http://www.blogger.com has chosen to support ATOM fromat. This is surprising because the paid service from Blogger used to provide RSS feeds but now they seem to have switched to ATOM.
So the equation is Most FeedReaders support RSS while all of blogspot blogs generate ATOM feeds. Hmmmm.
AS expected, there were some quick fixes by people to convert from ATOM to RSS or RSS to ATOM, for example http://www.kbcafe.com/iBLOGthere4iM/echotorss.aspx (Echo and Pie were the earlier names of ATOM). So for this blog I transform the ATOM to RSS feed but Anand complained that the transformed feed is not generating the permalink so though he can read the post in his aggregator, he cannot browse to my blog using the permalink :(. Now I am in search of a better transformation and/or good RSS+ATOM reader. I tried BottomFeeder but didnt somehow I it doesnt show the post when reading from ATOM feed, instead it only shows the links in the post.
So I guess I will wait till I come across a good ATOM+RSS reader (SharpReader says ATOM Support - not yet!) or a better transformation service. Till then I will let RDF, RSS, ATOM and Blogger fight it out so I know which way to go when the dust settles.
Feb 17, 2004
Hindi Bloggers Webring
Here is an attempt to start a webring for bloggers who write exculsively in hindi.
Bluetooth module
Finally the bluetooth module for my HP nx7000 laptop was deliverd. Though in the US this is preinstalled on nx7000, in India this is an optional part which has to be ordered separately. I do have a billionton USB bluetooth module, but I had to connect everytime I wanted to synchronize my Nokia 3650 or PocketPC. Talk about being lazy :). The bluetooth software is standard one available, branded by HP, so setting it up was a breeze as I have already used it earlier with Billionton Bluetooth USB.
What I am looking forward to is being connected to the internet thru my Nokia 3650 GPRS via bluetooth.
Feb 14, 2004
I Wish....Innovations
An old friend of mine was an-idea-a-minute guy. I was constantly amazed at the kind of ideas he would come up with and also the quality of the ideas that he had. I used to wonder how he could come up with such brilliant ideas, but then I realize that most of his ideas were based on someones pain or irritation. In life we crib or wish about something but then move on or workaround the problem but rarely jot down the problem/irritation or state it somewhere. He would latch on to the irritation/problem and start thinking about ways of solving it. I dont know how many times he actually landed up with a product/service based on the idea, but nevertheless the ideas looked ideal solution to pertinent problems. The new search engine http://www.vivisimo.com seems to be based on the irritation "why can the search engine categorize the results". It may not have the Page Rank of Google but surely it is solving problems of millions of people who quietly think "Why do I have to wade thru these tones of results". If only people would state their cribs/irritations or jot it down somewhere, people like my friend would actively think of solving them by coming up with innovations. http://irritation.blogspot.com ?
This leads me to talk about another pet theory of my - Automatic Procedures. Ever got so irritated by constants chimes/beeps of an open lift door that you have actually stepped out of the house/office to shut the door? Thats what I call an automatic procedure. The process/mechanism involves some irritation to an extent that it compels people to eradicate the irritation. There are automatic procedures all around us and we can build automatic procedures in things around us to make it 'automatic for the people' (R.E.M. ?) to solve the problems or follow processes.
Do you recognize any 'Automatic Procedure' or have invented any... Please leave a comment to share them...
Feb 13, 2004
Spiritual (Blog) Income
I have often talked to my students and friends about spiritual income. Monetary income is when we get paid for services we render or products we sell. But there is another kind of payment which is not made explicitly, that is when someone does something for you (altruisticlly?). For example, at the end of every training when I see participants' eyes saying "Thank you", it instantly makes me spiritual-millionaire (Dont get me wrong, I am not talking about Spiritual as in Religious here. I think blogs also play a similar role. There are so many blogs which have enriched me in so many ways, but unfortunately there is no way to pay this spiritual income to them. I do tend to leave a comment to show my gratitude but only if there was a way of leaving this spiritual currency on the blog site, I would feel much better. I did see on some blog something like blog-currency concept but it was closer to monetary-currency than spiritual income.
Maybe I will come up with a meta service for spiritual-income which people can plug into their blog sites to count how many people felt thankful for enriching their virtual-life :)
Think about it...
Orange GPRS setting problem
A lot of people have been asking/searching for Orange/Hutch GPRS connection with PocketPC or Laptop, so here it goes again...
First, make sure you subscribe for OrangeAccess service (Rs 499/mo) and not just GPRS which is only WAP (Rs. 99/mo).
These settings only apply to Orange/Hutch in India
Nokia 3650 settings:
1. Send an SMS to 12323, text should be MMS
(Wait till you recv the config settings. Orange send an ack SMS followed by the actual config.)
2. Send an SMS to 12323, text should be GPRS
(This is the WAP over GPRS setting and not OrangeAccess)
3. Send an SMS to 12323, text should be WWW
(This is the one which allows connectivity with laptop/ppc)
PocketPC 2002 settings:
1. Start > Setting > Connections > Connections > Internet > Modify
2. Click new
3. Enter a name for the connection: OrangeAccess
4. Select a modem: Bluetooth Dialup Modem
5. Next
6. Phone number: *99***1#
7. Extra dial-string modem commands: +CGDCONT=1,"IP","www"
8. Finish.
If it helped you, please leave a comment...
Vivisimo > Google>
Came across this quite accidently.
http://vivisimo.com > http://google.com
Lets vote ...
Feb 11, 2004
Hindi bloggers on the net
There is a small but growing numbers of Hindi bloggers who create blogs in hindi language and trade comments in hindi too.
http://hrudaygaatha.blogspot.com
May their tribe increase.
/atom.xml or /rss/sanjayvyas.xml ?
I have noticed that Blogspot gives me different feed names and relative path for ATOM. Initially when blogspot announced availability of the feed, they specified that the atom feed will be available on http://sanjayvyas.blogspot.com/atom.xml. Later I noticed that Deepak was pointing to http://deepakg.blogspot.com/rss/deepakg.xml. When I tried both varieties on my blog, i noticed that my /atom.xml was stuck in time (It didnt display the latest feeds). When I went back to blogger setting, I noticed that the feed url it was now generating was http://sanjayvyas.blogspot.com/rss/sanjayvyas.xml. So I changed my template to reflect these changes thinking the blogger has decided on the new url format. But today I noticed that the feed generated by "Republish Entire Site" has gone back to atom.xml.
AARRRRGGHH!! Is the something I am missing? Or is it that Blogger people cannot make up their minds whether its going to be /rss/username.xml or /atom.xml? Or is it that everythime I change the template and Republish Entire Site, there is some checkbox/textbox which goes back to default where the feed url is to be provided and I am overlooking it?
Someone rightly said, "Lets have a standard, even if its not the best one".
Brainstorming
How little do I know and how little time to learn so many things? This is exactly what I thought when I realized that brainstorming is not a shouting match in a meeting where everyone yells their own ideas and shoots down other ideas. I was asked to host a "brainstorming" session for the marketing team which lead me to do some research on the subject.
Some of the areas which I had to consider for the brainstorming session were:
1. Manage egos of people.
2. Encourage people of junior rank to state their ideas in presence of their seniors.
3. Ensure people don't think that the idea they have in mind "rightfully belongs" to someone else and hence skips it.
4. Get everyone to contribute in a structured process.
With these goals in mind and the generally-accepted-rules of brainstorming:
1. Encourage wild ideas.
2. Don't shoot down and idea in the initial stage.
3. Generate as many ideas as possible.
4. Build on others idea.
5. Everyone is equal in terms of coming up with ideas.
There was still one issue to handle, how do I stop junior rank from getting intimidated by seniors and surrendering to their ideas? A lot of what goes on in human interaction is defined by power-equation between people. For example, in a classroom if a participant asks a question and get an answer in retort-style, he/she (most of the time) doesn't question back even if he/she doesn't agree with the answer. That is defined by the power-equation between participant-trainer. Same could apply in this scenario. So taking a leaf from my colleague's (Raj Dorwani) book, I settled on the Post-It notes.
First of all, to ensure that many ideas were generated, I asked everyone to jot down 10 ideas (not including what the marketing team is already doing). Believe me it sounded easy to begin with, but after 6-7 ideas people were struggling for fresh ideas. This eliminated the intimidation part. Next I put up these Post It notes on the white board and asked another person to accumulate them in Word and project it on the screen.
Next, we asked people to choose one BIG idea (which was big enough to generate the entire revenue of the company). But the constrain was - It HAD to be someone else's idea. This did the trick as most people are passionate about their own idea and hence tend to shoot down everyone else's idea. This forced them to not only think of others ideas, but actually adopt it and extend it. After everyone jotted down these extended ideas, I stuck up these post-its on the board under "THE BIG ONE". Then I asked the persons whose ideas these were to defend the idea while others attacked and criticised it. Eventually we rated the ideas on the probability of revenue-generation.
Next, I asked people to pick up 5 medium size ideas from the entire list which combined could give us the entire revenue. These could be anyone's ideas, including their own. When this list was read, we analysed the aggregation and picked up those ideas which were common in everyone's list. We got 3 out of 5 common ideas.
Finally I asked everyone to look at the list again and select 5 ideas (regardless of their revenue generation capabilities) which could give use maximum effort-to-result ratio. We collected all the results eliminating the duplicates and created a third list.
After this long drawn process we got 3 results:
1. ONE BIG IDEA, if implemented would get us the entire target revenue.
2. 5 Medium ideas, if implemented collectively would get us the entire target revenue.
3. A collection of ideas if implemented, would give us more profitability.
The end result was nothing but to get the marketing minds ticking in the right direction. Not all the ideas we came up with would be valid or get implemented, but the fact is some great ideas did come out of this process and now its upto the people to act upon it. But what was achieved was superlative idea generation with minimum of ego-crashes, intimidation, shouting matches. By the end of the session everyone was surprised about how different and yet effective this process had been.
All this coming from a non-marketing person was even more surprising. I am a pure techie and I was quite unsure if it would go thru successfully and would actually be beneficial to the marketing team. I will take their word :)
ELC
Last week I was busy conducting "Effective Lecturer's Course" for a group of young and talented people we hired. I started off by telling them a small story. Once Narad muni goes to Vishnu and arrogantly asks him as to who is the most devout follower of Vishnu. He also boasts that since he keeps chanting "Narayan, Narayan" every waking moment, he himself must be the most devout. Vishnu smiles and points him to a poor farmer and tells Narad that the farmer is the most devout. Curious about him, Narad decides to follow the farmer to find out how devout the farmer is. Narad discovers that apart from morning 5 minute prayer and thanksgiving before bedtime, the farmer doesn't remember god even for few minutes during the day. Upset about gods judgement, he comes back and questions Vishnu as to why the farmer is more devout than him. Vishnu asks Narad to keep a pot of oil on his head and take a trip around the world without spilling a drop of oil. He even asks another guy to follow Narad and chop his head off if Narad spills even a drop of oil. When Narad comes back, Vishnu asks his how many times did he chant "Narayan". Then Vishnu explains that the farmer has a pot of oil on his head for lifetime - education, work, marriage, responsibilities, wife, kids etc.. and still manages to remember god for few minutes a day.
Most people think that there is nothing to teaching. ELC brings out so many aspects of training like Concept Visualization, Colour theory, Whiteboard templates and utilization, Speech, Body Language understanding, Active experimentation, App Dev. Apart from all these thing the trainer must know what a developer knows, i.e. the technology. Developers and people in general think that "Those who cant, teach". That's a very sad thing to hear, at least for people like me who have consciously decided to be a trainer. There are talented and technically great people who have chosen to become trainers not because they cant be developers but because they love teaching and helping others. May their tribe increase.
Jan 28, 2004
Amazing ASCII animation..Mind boggling
I found this site with tons of ASCII art and animation. It appears mind boggling. Here is a sample of The Terminator
I am getting out of sync
Being a UNIX era guy... I pride on being able to use systems without mouse naviagtion. Also, I am normally quite efficient with keyboard shortcuts on Windows (It pains to see people doing Start > All Programs > Accessories > Windows Explorer). So I am ashamed that I didnt know these before:
1. CTRL-MOUSE WHEEL in Internet Explorer Changes Text Size
2. SHIFT-MOUSE WHEEL navigates back and forward (I like this one better as it allows me to rapidly switch between pages and direction with just flick of a finger)
I am beginning to realize that I my knowledge of keyboard+mouse short cuts may need an upgrade ;). If you know any keyboard-mouse combination, please drop me a line.
Digest Authentication and .NET Remoting
The good thing about remoting is that you can host Remote Object with different hosts like Windows Service, IIS, COM+, Custom written hosts. Remoting with IIS hosting provides a number of benefits including host's thread pools and authentication. IIS can be configured for various authentication configuration like Anonymous, Basic, Digest, Windows integrated.
Here is a sample of Remoting client when authentication is enabled on IIS hosting the remote component.
// Read the configuration setting from config file and instantiate the component
RemotingConfiguration.Configure("RemoteClient.exe.config");
RemoteComponent remoteObject = new RemoteComponent();
// We need to hook into the channel properties to attach authentication information
IDictionary channelProperties = ChannelServices.GetChannelSinkProperties(remoteObject);
// Locate the URI of the RemoteObject so was can attach the authentication details
Uri objectUri = new Uri(RemotingServices.GetObjectUri(remoteObject));
// We could have used a simpler method here..
// directly specifying ["username"] and ["password"] index of channel properties
CredentialCache cache = new CredentialCache();
NetworkCredential nwc = new NetworkCredential("username", "password", "domain");
// Specify "Basic", "Digest" ...
cache.Add(objectUri , "Basic", nwc);
// Attach the credentials to the channel
channelProperties["credentials"] = cache;
channelProperties["preauthenticate"] = true;
// Finally Call the method (with authentication)
Console.WriteLine(remoteObject.Hello("Sanjay Vyas"));
Now the above code works for "Basic" authentication but fails if you switch to "Digest" authentication in IIS and modify the authentication type in the cache.Add(objectUri, "Digest", nwc).
The reason is that digest authentication uses hashed values instead of sending plain text password and IIS is supposed to get hashed values compared by the OS. However, Windows user accounts are not kept in reversible encryption format which means the OS cannot retrieve the password to convert it into hashed value for comaprison purpose. To make this work, you will have to change the windows user account properties "Store password using reversible encryption". Dont forget to reset the password after that. Now only for the chosen account, IIS will be able to perform Digest authentication. Note that by storing password in reversible encryption, you are lowering the security of your user account.
Jan 25, 2004
StringDictionary bug?
Well, the previousStringDictionary post seems to be a bug in the FCL according to Nicholas Paldino.
Jan 23, 2004
Small things I miss in C#
C/C++
#include <stdio.h>
int main()
{
int sum = 0;
int number = 0;
while ( printf("Enter a number (0 to END) : "), scanf("%d", &number), number!=0)
sum += number;
printf("Sum is %d\n", sum);
}
C#
using System;
public class Sum
{
public static void Main()
{
int sum=0;
int number = 0;
// Unfortunately this doesnt work
while ( Console.WriteLine("Enter a number (0 to End): "),
number = int.Parse(Console.ReadLine()),
number !=0 )
{
sum + = number;
}
Console.WriteLine("Sum is {0}", sum);
}
}
In C/C++ the comma operator does wonders because it can be part of an expression, get evaluated and yet not contirbute to the final result. This kind of ensures that the statements get executed before you come to the "real" expression. So we have to rewrite the loop with
Console.WriteLine("Enter a number (0 to End): ");
number = int.Parse(Console.ReadLine();
while ( number !=0 )
{
sum + = number;
Console.WriteLine("Enter a number (0 to End): ");
number = int.Parse(Console.ReadLine();
}
and then leave it to the compiler to optimize it for us.
I can understad and respect the fact that C# designers wanted a simpler and cleaner language and yet the heart yearns.
They beat me to it :@
For sometime now I was thinking of implementing Argument Validation as part of the development framework. I had started implemeting a set of Attribute classes for ArgumentCannotBeNull, ArgumentCannotBeBalnk etc (on the lines of ASP.NET Validators). Then I came across XC#. I am delighted to see how it handles Argument Validation. I believe attributes driven extensibility for creating new framework is marvelous. I just hope it doesnt spiral out of control. Maybe we need an effort like DotNet Attribute Repository where people can contribute and not having to reinvent the wheel (which I almost did). Give it a whirl and drop me a line on how you feel about XC#
StringDictionary
Did you notice that StringDictionary class in System.Collections.Specialized actually doesnt implement either IDictionary or ICollection interface? Although it proivdes ICollection methods/props like Count, IsSynchronized, SyncRoot and CopyTo. It also doesnt implement the IDictionary interface while provide Add, Clear, Contains etc. Why this deviation? Drop me a comment if you are aware of why StringDictionary was implemented this way.
Jan 22, 2004
Blogname change from "Random Thoughts" to "Thinking in Visuals"
Initially when I setup this blog I wanted to write about various things that came to my mind, but past few weeks this has been turning out to be more of a tech-blog. The new name perhaps relflect how I think about any problem. I think I am a very "visuals" man, I tend to analyze all problems in a 3 dimensional colourful world and then try to solve the problem which I "see". I did discuss this in my previous post "Concept Visualization".
The new title has 3 reference points:
1. I always think in Visuals
2. Raj recently stated that he "Thinks in Basic"
3. Bruce Eckel has a series of ebooks titled "Thinking in ......". I guess once we start thinking in Visuals, its a matter of mapping the visuals to language/syntax (Apologies to Bruce)
I dont know if I can put down on a static medium like paper or webpage what I am talking about because in mind I see "movies" about the problem which are animated and colourful. I probably need a crash course on Flash to attempt what I am thinking ;)
Jan 21, 2004
Different access specifiers for properties in C#/.NET
I have often faced this issue in C#. Here is what I want to do.
I want to create a property which is readonly for public whereas read/write for protected or internal. For example, I need Balance property to be readonly for public and read/write for protected. The reason I dont want protected double _balance is that I may need to raise some event "OnBalanceChange" and I cannot rely on the developers inherting the class to raise those events.
Of course, this code does not compile in C#
public class Account
{
private int _accountNumber;
private string _holdersName;
private double _balance;
public int AccountNumber
{
get { return _accountNumber; }
}
public string HoldersName
{
get { return _holdersName; }
}
double Balance
{
public get { return _balance; }
protected set { _balance =value; }
}
}
The only other thing is to create another protected property with get/set but that just doesnt seem right because I have to document it for class library developers to know that they have to use a different property to carry out something like ProtecetedBalance += amount;
public class Account
{
private int _accountNumber;
private string _holdersName;
private double _balance;
public int AccountNumber
{
get { return _accountNumber; }
}
public string HoldersName
{
get { return _holdersName; }
}
public double Balance
{
public get { return _balance; }
}
protected double ProtectedBalance
{
get { return _balance; }
set { _balance =value; }
}
}
Also, the class library developers will require both get/set to be able to do ProtectedBalance+=amount;
I wonder what was the reason for not implementing this in .NET. Afterall its syntatic sugar for set_XXXXXX and get_XXXXXX methods which can very well have different access specifiers.
C# enacpsulated field and property source layout
I have seen two types of source layouts for private field and associated property
1. private fields together with properties following
public class Account
{
// Group all fields together
private int _accountNumber;
private string _holdersName;
private double _balance;
// Now the properties
public int AccountNumber
{
get { return _accountNumber; }
}
public string HoldersName
{
get { return _holdersName; }
}
public double Balance
{
get { return _balance; }
}
}
2. Each private field followed by its property
public class Account
{
// field/property pair
private int _accountNumber;
public int AccountNumber
{
get { return _accountNumber; }
}
private string _holdersName;
public string HoldersName
{
get { return _holdersName; }
}
private double _balance;
public double Balance
{
get { return _balance; }
}
}
Which one do you think is more natural and/or standard? Drop me a line
Jan 9, 2004
Now how does this feel?
Here is a new language based entirely on XML. Its called SuperX++
<xpp namespace="http://www.superxlang.org/NS">
<xout>Hello World</xout>
</xpp>
Lots of questions crop up in my mind..
1. Isnt XML supposed to be a machine readable format which can 'occasionally' be read and understood by humans?
2. What benefit would XML text have over ASCII text for writing program code?
3. Arent Java, C# already cross platform?
Leave a comment about how you feel about this XML based language.