I have always had a number of computers at home, but till recently all media(videos/music) etc was always centralized on my main desktop. Then around six months ago, I upgraded an old disposed computer and installed Windows Home Server (currently running Power Pack 3) on it. I love the automatic backup and centralization that Home Server provides and slowly started moving some of my media over to the home server. Everything was fine as the main desktop was still the place where I watch the media from and I just integrated the home server path into my Windows 7 Videos library and everything was fine.
Then I got a PS3 (mostly for the BR functionality) as a part of a bundled offer and there I had a media extender connected to my TV. So obviously I wanted to now watch my videos on my TV rather than my monitor (which was smaller).
It was a no brainer with the Win 7 desktop. You turn on Media Sharing and then if required you can select which devices to allow etc. I just set it to allow all devices on my home network and everything was fine. My PS3 was able to find all the videos in my Library (This is a really cool feature of Windows 7. So all my different folders of Videos are now available in a single place and easy to find). No problems there. (From what I read online, looks like it was a little more complicated with Vista and Windows 7 and the latest firmware upgrade of PS3 actually make this integration easy).
PS3 was also able to find my Home Server easily as a media source, but was not able to load all the videos from my videos share. I was able to find only a couple of folders (actually only 2 from around 7 folders in my video share got listed). I searched online, did all kinds of setting changes, but even after 2-3 weeks I was unable to get my all home server videos streaming to the PS3.
So in the end I gave up trying to get the home server to stream the videos and decided to install a new media server software on my home server to do it right. I ended choosing PS3 Media Server, just because of the name.. This is a open source DNLA compliant UPnP server, targeted to work for PS3. One of the main features of this media server is that it would actually transcode videos that are in a format that cannot be handled by the PS3. Obviously if you need to transcode videos, then you better have the CPU power to do that. My home server built from a old PC, cannot actually support this, but almost all of my videos are in PS3 compliant format (esp since PS3 now supports DivX). Another cool feature of PS3 Media Server is that it has an option to run it as a service. This is the option I use as it is not always that I am logged into my home server.
With this setup, I am now able to stream all of my videos out of my home server into my TV via the PS3…
One of the most problematic part of any new development is to make sure that you test your application with data that is near real life. 90% of the cases developers just test with a couple of rows of data that they enter and the data is rarely diverse enough or similar to real life data.
There are a number of data generator tools out there in the market, but they are costly and development teams rarely get the budget to buy these tools. There are a number of random data generation free-wares, but most of these are developed over a weekend hacks and though they generate random data, I don’t think they are representative of most real life data (Who actually has a name like “$ssoghetn2u#a”).
Few people know that Visual Studio Database Edition has a set of tools to generate test data. Called Data Generators, you can add a data generation plan to your database project and use that to generate test data. It ships with multiple data generators and you can also write custom data generators very easily. Since the Database Edition is now available with the developer and some of the other editions, it is easy to use by most developers.
I actually started writing a data generation application that can generate real life representative data a couple of years back. As is the fate of a number of those weekend projects, this went into hibernation once I ran into time issues and then was forgotten.
Then a couple of months back I started playing around with the Visual Studio Team System (VSTS) Database Edition and then remembered I had some code that I had written for the original data generator and so started looking into writing custom data generators for VSTS DB. There is not too much data on writing custom generators and most of the blogs are out of date. So if you want to write custom generators, I would point you to MSDN.(That information is quite good and you should be able to get up and running quickly)
I was surprised at how the VSTS DB custom generator interface was so similar to what I had come up with and so started writing a couple of data generators based on the code I already had. After a couple of weekends, I had my first couple of custom data generators.
Note: These are written for VS 2008 SP1 and Database Edition GDR R2. I am not sure if this will work for GDR 1. (I suspect it will as the interface for custom data generators have not changed).
This EnhancedDataGenerator currently contains two DataGenerators:
1. FirstNameGenerator – Generates real-life First Names
2. LastNameGenerator – Generates real-life Last Names
These are also locale aware and currently support two locales en-US and de-DE. So based on the locale this generates different kinds of First and Last Names. (Locale is a property in each generator, so you can generate English first names and German last names, if that is what you want). If you have data for common First and Last names in other cultures, please send them to me and I will update the database to handle those cultures too. (The maximum time I actually spent was to search for and get the base data into a format that I can import into the database)
The FirstName Generator is also Gender aware.
A couple of screenshots of these at work:
EnhancedDataGenerator Setup – Setup File that will deploy the files to the default VS install location (Don't use if you had used a custom path to install Visual Studio)
Other Things to Notes
1. Error Handling is not great. I have not yet found a way to report errors to the IDE user. So as of now if there are any errors, nothing happens. E.g. if you set the locale to anything other than en-US or de-DE, you just get empty data back. So if no data appears, that means you have an error .
2. The setup kit has not be fully tested. So if this does not work for you, use the DLL kit and do a manual deploy
3. Retain the directory structure inside the zip file when doing manual deploy
3. If your Visual Studio is installed to a custom path (not <prog Files x86>\Microsoft Visual Studio 9.0, then you will have do a couple of more things.
a. Use the manual depoy method and get the Extensions deployed in the VSTSDB\Extensions
b. Change the config file setting DBPath to point to the Database directory inside your custom extensions directory.
4. The .Extensions.xml file is already created with the correct data, so you will not have to create those again when doing a manual deploy.
Recently my office shifted cell providers and so I got a chance to pick a new blackberry. I choose to go with the new blackberry Storm 2. Most people used to a BB have a problem shifting from the old keyboard based interface to a touch interface. I too had some teething problems, but having used a WinMo (Anyone remember the HTC Wizard or 8125 as it was known in the US) for a number of years before I got my first BB did help.
I find the device quite responsive and the clickable screen does help to get the feedback when typing feel. But I do think if you are someone who spends a lot of your time writing emails on the phone, you will be more comfortable with the keyboard based device than this one.
Anyway, coming to the crux of this post, the first thing I usually do when I get a new device is to play around with the themes and new apps.
So I installed the Blackberry App store and started browsing around. I found a number of interesting apps. (Do note, that since the Storm 2 is so new, a number of apps are not yet compatible with it yet)
Here is a list of apps I currently use:
1. DriveSafe.ly – I would say this is one of the must have apps. They have a free version and an paid version, so you can start using this without spending a dime. When you enable it, it would read out incoming emails and SMS so that you don't have to check your phone every time to see if you got a new email, when driving. If you are a long standing BB user, you know about the urge to check for mails :). Do note, this will always use the phone’s speaker (even if you have a headset) to read out the mail and so if you are travelling with others, be careful before you enable it. (Actually this is available for multiple mobile OSes/phones)
2.BeBuzz – This app allows you to change the color of the LED based on different events. They too have a free and pro version. So you can set the color to be green if there is a new email and a red when you are getting a call etc. The pro version allows you to set up more events.
3. WeatherBug – The free weather app that allows you to see the current temprature and weather information. The other nice thing about this app is that it allows you to have an icon in the home screen and so you can read off the current temperature without having to launch the app.
One of the other apps I want to have is called QuickPull. But it is currently not available for the Storm2 (or rather for OS 5, which is what the Storm runs) without a number of hacks. Looks like a newer version is in the works.
Expect to see more apps surface as I dig around more. Do leave comments on your favorite BlackBerry apps (preferably free ones :))
The Recession has had a major impact on the Indian IT industry. Since most of their revenues are from external sources, when the world sneezes, the Indian IT industry catches a cold.
This sudden change in economic activity has given a bad blow to an industry that was trying to recover from a strong rupee, created by a booming economy in 2007.
Over the last couple of days I have been seeing reports of companies like Infy and TCS laying off workers. This is something I would have expected in any recession and with the kind of job losses US is witnessing, the numbers seem miniscule (Infy sent out 2200 workers, around 3.5% of the company).
Obviously India being what it is, any retrenchment is seem as a major rich man-poor man issue. See what happened when Jet Airways wanted to trim their staff. It even became a political issue. So most IT companies say that they sent out under performing people. Yes, most IT companies do send out underperformer regularly and this is almost never reported. But this being a bad year, everything is news.
Seeing the responses/comments on articles relating to artilces on the Infy layoffs, I can see people bad mouthing Infy and its management. This show a lack of understanding of how businesses work. It is ok to be critical of any company. After all in a democracy, you have the right to your opinion. But most of these people did join Infy when offered a job that too at maybe 100 times the salary a normal Indian makes. What really makes me mad, is that these same people now talk about Infy being a bad company??
I see discussions around creating an IT union to fight this issue etc. I can see this become a political platform and easily cripple the growth of the IT industry as a whole.
Think about a situation where a company cannot every reduce its employees. It just increases pressure on the company to hire less so as to be safe.
What can help the IT industry (or any other industry for that matter) grow?? Both the company/government as well as each employee has to work on things to make it easier to do business.
A few of my ideas:
1. Government or Industry - Allow companies to hire and fire easily and truthfully. Not cover things as firing underperformers etc.
2. Government or Industry - Create an unemployment pay system (something that will cover your salary for a fixed no of months, say 6 months). I guess the best way is to create an insurance product in this space. So when you work, you pay the premium every month out of your salary and after a minimum no. of years (say 5 year), if you loose your job the insurance covers your salary for some time. Instead of this being run by the government, as in the US, this can be better managed if run by the Insurance companies (LIC, HDFC, ICICI etc).
3. If you work in any private company, plan on being fired and save a fixed amount every month for an emergency fund. It is usually recommended that you save at least 5-8 months of your expenses in this emergency fund.
4. Always improve your skills. This helps you get a new job when you loose one.
5. Network with your peers. Either use events or user groups etc to meet and get to know other people in other companies or use the web, linkedin or other networking sites.
6. Don't ever talk foul of your ex-employer. It does affect your ability to get a new job.
A few months back I wrote and application called the PDC downloader and Viewer and released it at CodePlex.
Over the last couple of weekends, I kind of updated the application, so that it can also be used to get the Mix 2009 videos. So now it is a more of a generic Event video downloader and viewer. If MS continues to use similar naming conventions, this application can be updated quite easily to download and view videos from other future events too.
The new version 22.214.171.124 of the updated Event Video downloader and viewer is now available for download from Codeplex.
It has been quite sometime since I actually coded TSQL. So I had to kind of brush up the hidden knowledge over the weekend when I wrote a small stored proc for a personal project I am working on.
(expect to see something in Codeplex, if I can get it finished before the new year)
I declared a variable and wrote out some code as follow:
declare @tempstring as nvarchar(max)
<More code here>
select @[email protected] + ' ' + @word
I was kind of left scratching my head as @tempstring always seem to end up being empty, even when @word did have some data.
Then I remembered something from my start up SQL classes... anything+null is always null. So I initialized @tempstring to an empty string and viola, there the data was, correct and ready to use.
Having been working so much in VB that it actually took me quite a while to figure out those small klinks that are specific to TSQL.
This is the kind of situation that may really affect someone moving from C# to VB or vice versa too. :)
Ok, now with Thanksgiving here, most people I talk to are thinking of the best BF deal they can get this week..:)
Each person I talked to were doing different things to find the best deals. So I thought I would put down what I do to search for deals.
First I try seeing what kind of deal appear in the major chains using www.bfads.net.
Then I also kind of find some ads as reported by major articles like this ZDnet article
I also found a number of great deals from Amazon. Amazon also has a special 10K USD raffle at 10K USD Shopping Giveaway.
Amazon also has special BF deals daily this week, where I did find some good ones. Do note these change daily. Amazon's Black Friday Deals
Also note, sometime you can get good deals just looking at normal deal sites, that is not part of BF deals. Actually I found a great Fry's deal for a 1TB external drive ($119 with Free Shipping), which is much better than any I found during Black Friday. So even if you see a good BF deal, do check around to see if there are better ones in other places..:)
Over the weekend I fixed up a couple of bugs in the PDC 2008 Video Viewer and Downloader( My WPF based Viewer and Downloader for PDC 2008 Videos). This version is not available for download in CodePlex. All releases in Codeplex also contain the Source code. Do not download the source from the Source tab. The Source tab is a older version of the source and not the latest.