Search The Web

Today's Headlines

Monday, May 31, 2010

Microsoft Access Tips & Tricks: Using The Windows File-Picker

This is a tip that may or may not work on Macs and other systems to which Microsoft Office has been ported. But if you have a windows computer, this is a useful tip. It shows you how to bring up the standard windows file picker (of the sort that comes up when you hit File->Open from most windows applications) so that you can pick a file on your system to do something with. I don't have anything other than a windows computer to test the code on, so if a reader can try it out on the Mac Version of Office and let everybody else know whether it works or not using the comments, it would be helpful to everyone. Thank you very much in advance.

If you are interested, you can find my earlier posts on finding the median, the mode, the geometric and harmonic means, ranking every row in a query, selecting random rows out of a table, calculating running sums and averages, calculating running differences, creating histograms, calculating probability masses out of given data, calculating cumulative distributions out of given data, finding percentile scores, percentile values, calculating distinct counts, full outer joins, parameter queries, crosstab queries, working with system objects, listing table fields, finding unmatched rows, calculating statistics with grouping, job-candidate matching, job-candidate matching with skill levels, great circle distances, great circle initial headings, and using Excel functions in Access.

One of the uses for the file-picker is a database of things like songs on your computer. I have an Access database of eBooks on my computer. You store the file name of each song or eBook along with details about that file (in the case of eBooks, I store the title, the author, the publisher, the publication date, the number of pages, etc.) in the database. All the fields are searchable, so I can quickly find any eBook I am looking for in my collection of over 2000 eBooks. Towards the end of the post, I will also show you how you can get Access to open up a given eBook based on the file name stored in the database once you have searched for and located it (so that you don't have to then go to the directory where it is stored and double-click on the file or anything so laborious).

Your situation can and will probably be totally different. But here is how I use the file-picker in my eBook database. To store the file name (along with its path) in the database, I created a text field for it of sufficient length. I then created a form with a control bound to this text field, and added a button next to it that I would click to invoke the file-picker. The file I picked in the file-picker would then be populated in the control (and because it is a bound control, in the table). The structure of my form is presented in the figure to the left.

The actual code behind the button is as below:
Private Sub CmdBookLocationPicker_Click()
Dim fd As FileDialog
Dim strFolderPath As String
Dim DefaultPath As String
If IsNull(Me.TxtBookLocation) Then
DefaultPath = CurrentProject.Path
DefaultPath = ExtractPathname(Replace(Me.TxtBookLocation, ".\", CurrentProject.Path & "\"))
End If
'Display the file dialog box and allow the user to select the location to save the file.
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.InitialView = msoFileDialogViewDetails
.AllowMultiSelect = False
.InitialFileName = DefaultPath
.Title = "Pick An Ebook"

If .Show Then
Me.TxtBookLocation = Replace(fd.selecteditems(1), CurrentProject.Path, ".")
End If
End With
If IsNull(Me.TxtBookLocation) Then
Me.CmdRead.Enabled = False
Me.CmdRead.Enabled = True
Call TxtBookLocation_AfterUpdate
End If
End Sub
The important lines to note in this snippet of code are explained below:

Declaring a variable of type fileDialog. In the above code it is a variable named fd. Note that you can select fileDialog as a valid type only if you have set a reference to the Microsoft Office 11.0 Object Library in your references (if you don't have access to the Microsoft Office 11.0 Object Library, check for higher versions of the Microsoft Office Object Library). If you are not sure how to set references, please refer to the post on using Excel functions in Access for details.

Setting the default path for the file-picker to start at. If the control already has a file name in it (which it would have if I was editing a current record), the default path would point to it. Otherwise, the default path would be the current location of the database (which is obtained by the use of "CurrentProject.Path").

Note that I store the final path to the eBook file as a relative path with respect to the location of the database itself, with the folder where the database is present being represented by ".\". This is very useful for portability since I can put this database along with the eBooks it contains in any directory structure on any computer and it would still work. If I stored absolute paths, then the system would not work even if I moved my entire database from C: on my computer to D: on another computer, for instance. So, if I already have a file name in the control, I replace the ".\" with the folder in which the database is located using the replace function.

Open the file-picker. This is obviously the most important step, and is accomplished by the line "Set fd = Application.FileDialog(msoFileDialogFilePicker)". This actually opens the windows file-picker. I then set various options for it in the next few lines. The important options are the view (details, tiles, large icons, small icons, thumbnails, etc.), whether or not multi-select is allowed (in this case, since I am storing a single file name in my database, I do not allow multi-select), the initial path where it should open up (you don't want the file-picker to constantly open up at My Documents or C:\, forcing you to navigate to where you want to go. Instead set the default path in advance so that the file-picker opens up near where you want to navigate to), and a title for the window (in this case, since I am picking the name of an eBook, the title I have chosen is "Pick an Ebook", but you should choose something appropriate depending on your application).

Note that the file-picker that pops up has the same properties you would expect out of any windows file-picker dialog. You can pick a file and hit OK, or double-click on a file name to pick it, and so on. You can navigate the directory structure on your computer freely from the default location and pick any file that is visible to the file-picker. You will also notice that the file-picker has several default locations in the left tab such as "My Computer", "Desktop", etc. So, this is a full-featured file-picker that will make your program look as professional as any other high-priced program like Microsoft Office!

Once I pick a file in the file-picker, I put that file (along with its path, converted to a relative path by replacing the current directory with ".\") in the control that holds the file name. This is accomplished by the line right after "if .show". I use fd.selecteditems(1) to pick out the first (and in my case, only, since I don't allow multi-select) selection and put it in the control on the form. If you do allow multi-select, you have to loop over the selecteditems list of fd and figure out how to deal with all the items it contains.

The if condition (if .show) is very important to include in the code. The file dialog's .show property is set to true when the user has picked a file and is set to false when the user hits cancel on the file-picker. So, you can access the selecteditems list only when .show is true, hence the if condition there.

Now, before I conclude this post, I will give you a snippet of code that will allow you to open a file from within Access. The code uses a function called FollowHyperlink(). It has several options, as the help file indicates, but it can be used simply as below to open the file passed as an argument to it:
application.followhyperlink(string containing file name)
If your computer already knows how to handle files with the given extension, then the appropriate application will be launched and the file will be opened in that application. That is all there is to it! You don't have to know which application to open the file in. As long as the file type is registered on your computer, and your computer knows which application to open the file in, followhyperlink() will work flawlessly.

The code above has been checked in Access 2003. It will probably work in any version of Access from Access 97 on up, but please do let me know through the comments if you have problems using the code.

Hope this post has been helpful in solving any problems you might have had with using a file-picker in Access. If you have any problems or concerns with the VBA code in this lesson, please feel free to let me know by posting a comment. If you have other questions on Access that you would like me to address in future lessons, please feel free to let me know through your comments too. Good luck!

Sunday, May 30, 2010

I Like My New Schedule - Unfortunately, It Will Not Last

I am getting well-settled now into a good, sensible schedule that allows me to do my regular job and my census work without losing sleep and/or having to run from one to the other with no time to spare. The census work on the office review side has been divvied up among the workers hired for it so that each person gets about 20 hours of work each week.

I get 5 4-hour shifts a week with a couple of days off. Most others work 4-hour shifts too. A couple of clerks work 8-hour night-shifts 2 days a week, giving them 16 hours a week. I feel sorry for them because they not only have the worst shift timings (at least in my mind), but also fewer hours each week. I am just glad it is not me trying to work 2 night shifts a week while holding down a regular day job!

And my shift timings allow me to work my normal schedule at my regular job, then drive over to the census office with time to spare. Since the shifts are shorter than 5 hours in length, I don't have a break in the shift. Instead, I have my dinner before the shift starts and then work 4 hours straight until it is time to go home for the night.

I get home well before my normal bed-time, so I have some time to catch up on my email, and do other stuff before going to bed. I can then get up at the usual time the next morning, take the kids to school, go to work, in short, do everything I used to do before. Except in the evening, I have to drive over to the census office instead of driving home. It is not a bad gig, and I get to convert 4 hours of my otherwise wasted time into about $60 of pocket money! Beats watching bad movies any evening!!

Unfortunately, I don't think this schedule is going to last for too much longer. My supervisor last night told me that we have so far received back and processed over two-thirds of the NRFU EQ's we sent out to the enumerators. The rate at which the EQ's are coming in is going down slowly, and pretty soon either they will have to start cutting workers or cutting shift times for everyone.

If two-thirds of the EQ's have come back in the month since we sent them out, I would expect the other one-third to come back in the next 2 to 3 weeks. There are some steps in the census process after the NRFU phase, but I don't know how much office manpower these steps take. So, assuming that reviewing and shipping of these EQ's is the last thing we were hired to do, I expect my census employment to end by the middle to end of June. I will probably make a few hundred more bucks, but after that, the goose that lays the golden egg will be dead! It will rise back from the dead like the phoenix in about 10 years, but I am not exactly holding my breath for that!!

The return of my schedule to a more workable one has still not resulted in my blogging returning to its original schedule though. I am getting there, but it did not happen this week. Monday, at my regular job, I faced some frustrations with my email interactions causing surprising amounts of angst in spite of being so bland. I wrote up a post about these adventures on Tuesday. Then on Thursday, I wrote up another post about my recent experiences dealing with the flagcounter widget on my blog.

And speaking of flagcounter, my blog did have a visitor from one new country this week. That country was Sudan. After the ups and downs of the last few days because of the reclassification of flags and what-not, I now have visits from 131 countries (this does not include 3 of the unknown categories, but does still include visits from unknown European Union). The last column of my flagcounter widget still looks imbalanced, but the addition of the 131st flag has made the imbalance less severe. Things did not get any worse, but they did not get any better either. I am still doing research on replacements for flagcounter. Stay tuned!

Today, I completed a two-day project at home aimed at yard beautification, that involved mowing the lawn, applying weedkiller on the whole yard and getting rid of the weeds growing on a small patch of ground that is not supposed to have any vegetation on it. My yardwork adventures of the last couple of days is chronicled in a post I put together today morning.

This being a long weekend, it gives me another excuse not to get back into my usual blogging schedule since that would involve publishing stuff on a holiday that I usually publish on workdays. But I might do it just because I have enough time on my hands, and doing some blogging will hopefully get me out of my inertia and enable me to start publishing more regularly in the future. I don't have my work schedule to blame for not writing any more, so I better do one of two things: find a good, viable excuse for not getting back to work, or actually get back to work! I wonder which is easier though . . . !!

The Arrival Of Summer Means - More Yardwork!

Winter is a relatively quiet time as far as outdoor work for me is concerned. Two or three times in a typical winter, we get heavy enough snow that I have to shovel it off my driveway. Other times, we just drive over it and don't bother clearing it off the driveway. I don't own a snowblower, so I shovel by hand. It is good exercise, but takes a lot longer than dealing with the snow with a blower, so I just clear my driveway rather than sidewalks and other places.

But, during the winter, I don't have to deal with mowing the lawn, or making sure there are no weeds in the yard, and so on. Once summer weather breaks through, yardwork becomes quite a regular chore. I have mowed my lawn 3 or 4 times already this year. The temperatures never consistently stayed up until a couple of weeks back (we had occasional frost until 2 weeks back), so applying weedkiller was not an option until now.

But, this weekend was quite dry and hot, making it ideal for taking care of what has become an annual ritual now. Yesterday, I mowed the lawn in preparation for exterminating the weeds in it. Quite surprisingly, my front yard did not contain any weeds at all, but other parts of the yard had some weeds that needed to be taken care of. The grass had grown quite long because the last couple of weeks had seen periods of alternating rain and sun with consistently high temperatures. I was afraid small pets and kids might get lost in the grass if I let it grow any taller!

I then did the weedkiller application today using the hose-end sprayer like last year. Based on my experiences from last year, I was able to figure out the best way around my yard with the long hose without getting it entangled in trees and other obstacles, so the entire applications took a little less time than it did last year. But it was hotter this year, so it seemed like a bigger chore than it was last year! Once again, I used about 24,000 square feet worth of weedkiller on just 8,000 square feet of lawn. The hose-end sprayer always seems to end up overconsuming weedkiller however quickly I try to move over the yard while spraying.

Now, I have to wait and see if this work actually bears fruit and results in a visible reduction of the weed activity on my yard. I also hope I did not accidentally spray any vegetables and flowers my wife has planted in various parts of the yard and kill them!

The other irritant on my yard is a patch of ground next to my front door which contains a medium-sized maple tree. That patch of ground is not supposed to contain any grass or other plants (it is hemmed in on 3 sides by walls, so the patch can not be mowed). But every year, a bunch of nasty weeds sprout up on this patch of ground much to the annoyance of my wife.

I usually kill them by putting some weedkiller on them, but I am thinking of paving over this piece of ground this year with paving stones. The ground there is already covered with some kind of fabric that is supposed to prevent plant growth, but it seems to have been punctured in so many places that it is not very effective. So, I am looking at large paving stones at various home improvement stores. The ground is only about 100 square feet, so a few dozen large and heavy paving stones should do the trick and make the place completely free of vegetation. And hopefully, paving stones will last a lot longer than this fabric that is doing quite a poor job right now.

As part of my weedkilling expedition, I also sprayed concentrated weedkiller on these weeds and they are already showing signs of dying. But they always seem to grow back every summer. So, I will have to pave the area over this year before they return for the next year.

A few years back, we hired a landscaper to trim back the bushes and shrubs on the yard. They also cut off the low-hanging branches of trees on the yard so that I would not have trouble walking around them and mowing the grass that grows under them. But now, the bushes and shrubs are growing larger again and the trees have once again put out lots of low branches that make pushing a mower in and among them quite a pain. I might have to call the landscaper again to take care of these annoyances.

I actually own a hedge-trimmer which is supposed to be powerful enough to take care of hedge-branches that are up to a quarter of an inch thick. But I have developed an aversion to using it ever since I handled it a little carelessly the year I bought it. Hedge-trimmers are awkward to use but I was getting reasonably good at using it. But my arms got tired, and by instinct, I tried to grab the outer end of the hedge-trimmer with my left hand when it started sagging.

The good news is that my fingers are not as simple as hedge branches to cut through, but the bad news is that I did get some deep surface cuts at my finger tips from the blades. I had to make a trip to the emergency room to get some stitches, and also lost a finger nail (that took 2 or 3 months to grow back). All this happened a couple of days before I was going to Hawaii on vacation, so it was quite inconvenient to say the least. Now, when I look at the hedge-trimmer, all I can think of is that experience. Time to push it back, perhaps, replace it with the good time I had on that Hawaii vacation, and start using it. Maybe while wearing heavy work gloves as extra protection.

At the end of the day, I am convinced that the best way to go is to have a few strong trees on the yard, and cover the rest over with astroturf. No weeds, no mowing, no watering, no fertilizing, no nothing. I can spend the summer admiring the greenness of my yard without having to waste gas or depositing tons of noxious chemicals in the storm drains around my yard. I wonder if any landscaper offers such a service, and how expensive it will be . . .

Saturday, May 29, 2010

A Good Web Hosting Solution Is Very Important To The Success Of Your Online Business

A friend of mine recently confided to me that he was thinking of starting a website. He was coy about the details, but I think he is thinking of going well beyond blogging (like I am doing). I think he has decided that there is a fortune to be made selling something online. But he did not come to me to ask for advice about what to sell or how to sell it. What he wanted was my advice on web hosting for his new service.

I decided to do a little bit of research before giving him advice that would turn out wrong later on. He needed a hosting solution that would be reliable, allow commercial traffic without limits, and be reasonably priced so that he could afford it.

After analyzing several offerings in this space, I told him that his best bet was probably to sign up with a company called Superb Servers. Superb's dedicated server hosting is based on servers in multiple datacenters for redundancy and data backup. Superb provides clients a 100% up-time guarantee on dedicated hosting.

I told my friend that if he did not want or require dedicated hosting, he could opt for managed hosting solutions offered by Superb. Essentially, this allows Superb to manage the servers while you are free to concentrate on running your business. You do not need to know any of the technical details associated with running a server, customizing a server, monitoring a server, backing it up, patching it up and so on and so forth. Superb's engineers manage the server and take care of all the nitty-gritty behind making sure your website is available to your clients 24 hours a day, 7 days a week, while you take care of the nitty-gritty of making sure your website attracts traffic and enables you to do enough business to pay the bills!

In case my friend's business grows big enough that he starts investing in his own infrastructure in terms of servers and other hardware, Superb also offers colocation services that will enable him to send his servers to Superb and have them house the servers in secure, temperature-controlled, enterprise-class facilities. That way, he does not have to rent office space and his own engineers to take care of these servers. He can have the advantages of running his business off his own servers while taking advantage of Superb's expertise in housing and managing them.

My friend is more of a business-oriented person than a technology-oriented one. So, he always comes to me for advice on technology matters like what electronics to buy, what computers and software to buy and use, and so on. I am glad he came to me this time also because it is possible he could have signed up with some fly-by-night web-hosting service out there if he did not realize how important that choice was to the overall success of his venture. He had no idea until he spoke to me how the internet works and what kind of infrastructure goes into running a website.

Many hosting solution providers exist out there, and it is easy for technologically non-savvy people to be fooled into signing up for services with a company that does not offer a full range of services that enable one to grow a business seamlessly as time goes on. As your business becomes ready for the next level of hosting solution, you want your hosting service provider to be ready for that and have the sophistication and expertise to take you to that next level. Superb is one of the more sophisticated hosting solution providers out there with solutions that cater to businesses in different stages of their life-cycle. After all, spending a lot of time dealing with problems and headaches caused by your hosting provider can take the fun out of starting an internet business really fast!

Vacation-Planning Is Always So Much Fun!

Last winter, my brother-in-law and I planned a joint vacation for our families on the west coast. This summer, he wants to do the same thing, but on the east coast. He has not spent much time off the west coast, and to be perfectly honest, I have not visited many beaches on the east coast either, even though I live quite a bit closer to them than my brother-in-law does.

So, I started doing some research on beach resorts on the east coast. Most people I spoke to had good things to say about Myrtle Beach in South Carolina. So, I started collecting some more information focusing on Myrtle Beach and surrounding places.

Once I started digging around on the internet, looking for places to stay once we were in Myrtle Beach, I came across the Grande Shores Ocean Resort (through their website at It seems ideal for a family group like ours because rather than just hotel rooms, this resort also features condominiums of various sizes to accommodate different-sized groups. The resort is located right on the beach, on the Grand Strand, with gorgeous views of the ocean from most accommodations.

The resort's home page also allowed me to sign up for emails about Myrtle Beach vacation deals offered by the resort by filling out a simple form. This will hopefully allow me to time my vacation so as to reduce our costs even further. Grande Shores offers a huge variety of golf courses to play on in addition to the water sports and other beach-related amenities, so I am keeping a close look on my email to make sure I don't miss any specials that will allow me to take in a few rounds of golf at a significant discount.

I also did some research on independent web sites offering reviews of travel-related services. I found that most Myrtle Beach hotel reviews about Grande Shores were quite positive. I spent some time going through the comments in detail. Since I am in charge of research for this trip, I want to be able to talk authoritatively to my brother-in-law about the plans I am making, including the quality of the property, its amenities, etc.

Grande Shores can not help me with the last part of my vacation-planning though: and that is the coordination of vacation times so that I can actually pick a set of dates and make the final travel and resort stay bookings. Maybe the vacation deals they send me can help me get over that final painful part of the coordination process and make everything click! I will keep you posted as to what happens . . .

Thursday, May 27, 2010

Comprehensive Local Information Is Only A Click Away With

The internet is a good global community, enabling you to get in touch with and connect with people and businesses throughout the world. But sometimes, your needs are more local in nature. You don't want to connect with businesses half-way around the world when you are in that situation. Getting relevant information that is based on your location sometimes becomes important. has become my new favorite when it comes to local search. It is a redesigned site that has a new look and feel to it. It is actually a combination of 4 separate websites that used to be pretty good at what they did individually:,,, and It gives you access to the information that these sites had, and a lot more in an intuitive, tabbed interface.

In combination, they have have become much better than they were separately. In addition to being able to search for local businesses on one tab (like an online version of your local yellowpages), allows you to search for (and post, for free) classifieds in your local area in another tab. There is yet another tab that allows you to search for local events like concerts, shows, etc. And then there is the city information tab that simply has no equivalents in practically any local search application I have tried so far. This tab allows you to access statistical information about cities around the US, with information on population, median incomes and home prices, cost of living, education levels, etc., etc. can not only help you locate local businesses (such as local restaurants for a quick casual or business lunch), but can also provide you with driving directions between where you are and where the business is located. You can find tons of information about the business such as opening and closing hours, contact information, etc. You can also read customer reviews of these businesses and/or write one yourself to help guide other customers. If you are a business owner, you can list your business on, and provide information that will drive customers to your business too.

I have always had problems with other local search websites because of outdated listings, outdated information, lack of integration with mapping options, etc. seems to have overcome most of those problems by making sure that the business listings are updated frequently, and integrating the search with other useful options like customer reviews, driving directions (that include local traffic conditions), business information, etc. The inclusion of the other tabs that allow you to search for classifieds, events, city information, etc., is just topping on the cake. If you haven't tried out, you should. You may not go back to your old way of looking up local information again!

Yesterday, My Website Had Visitors From -3 New Countries!

Yes, you read that right. The "-" in front of the 3 is not a mistake. My flagcounter widget now has 3 less flags than what I reported the last time. And it is as if I had visitors from -3 new countries.

The basic problem is that there has been a debate for some time on the flagcounter forums about what to do with visitors whose countries could not be determined. Flagcounter puts such visitors into 4 broad categories. They are classified as "Unknown - European Union", "Unknown - Asia/Pacific Region", "Unknown - Satellite Provider", and "Unknown - Anonymous Proxy". Visits from the first of these unknown domains get an EU flag, but the others do not have any actual flags associated with them. There are just grey and white checkered rectangles to represent the flags for these types of visitors.

The last time the question was raised in the flagcounter forums, most people actually felt that the flags should stay in the image. But many also suggested that real flags should be made up for the 3 categories for which flags currently do not exist. Some kind of generic pictures to represent flags for these domains just like the EU flag being used to represent the visitors from the first "unknown" domain. But the administrator of flagcounter, in his introductory post on the thread asking for user opinions, felt that they should be removed from the flagcounter image and country counts.

Then, suddenly, yesterday evening, the administrator of flagcounter got his way by virtue of being the administrator of flagcounter. He just put up a post saying that the three categories with no flags would be removed from all flagcounters, and then made the coding changes necessary to get rid of them. The justification was that these categories of visitors were not really from 3 real countries, and therefore the country count should not reflect the inclusion of these categories. Of course, the "Unknown - European Union" does not represent any distinct country either, so logically it should be gone too. But perhaps because it had an actual flag associated with it, it was not removed, and still counts as a separate country.

On my flagcounter, I had had visits from all 4 of these unknown categories in my total count of 133 countries. With the implementation of the changes yesterday, I just lost 3 of my "countries", and I am down to 130 flags in my flagcounter widget. So, in a sense, I had visitors from -3 new countries yesterday!

Of course, there would be much less reason to put this post up if the change had gone off smoothly and I had been left with a good image sporting 130 flag images. But for some reason, the image is not actually correct. Usually, flagcounter balances the flags in each column of the display so that the last column is the only one missing some flags. And the number of flags missing in the last column is always less than the number of columns in the display. So, when I had 133 flags, I had 3 columns with 34 flags and one column with 31 flags. When it was 132 flags, I had all 4 columns perfectly balanced at 33 flags each.

With the loss of the 3 flags from my counter though, my image was reduced to 130 flags. It should have been 3 columns of 33 flags and one column of 31 flags. But for some reason, it showed up as 3 columns of 34 flags and one column of 28 flags. I pointed this out to the flagcounter administrator in a new post on the forum. For a short while, the problem was acknowledged and corrected, but the correction was implemented in such a way, apparently, that the computational load on the servers was too much. So, the correction to balance out the flags in the counter is not implemented anymore, making the my flagcounter look pretty awkward and weird.

Now, I was not one of the supporters of the move to remove these unknown categories from flagcounter. I thought they should stay and said so in the forum discussion (as did a number of others). But, many of us, including me, were over-ridden and three of the four unknown categories were removed (with the justification making no sense as far as why the fourth category was not removed). Because of that, I lost 3 of my hard-earned flags from my widget. And then, on top of all this, the removal is done in such a shoddy manner that the resulting image is not even balanced out like before.

A long time back, I requested that flagcounter provide an option such that I could sport the widget on my website without having to reveal my visitor statistics to the public. I suggested that the numbers next to each flag be the percentage of visits from that country rather than an actual number of visits. I was told that that was never going to happen, though I have no idea why. I then came up with my own workaround to make the visitor counts invisible by using the existing options that flagcounter provided. But the solution was not perfect because the flag images were quite small and people could not go to some website and see the details of the countries I had visitors from unless I revealed my visitor counts to them. And now, the latest irritant is that I have lost 3 of my flags and my flagcounter widget looks as if someone took a big ugly bite out of the last column of flags!

Flagcounter has also had reliability problems with their servers going down frequently. The server my counter is hosted on has been reasonably stable and I have not been hit by these outages until now, but it remains a distinct possibility. The coding of the counter itself has also had its share of problems resulting in weird issues such as the number of visitors for a day being negative and so on.

As you can tell, I am not very pleased right now. I am seriously considering whether the widget adds as much value to my blog as I thought it did when I originally put it there, given that it does not look all that good anymore. Obviously, I realize that I shouldn't be complaining too much about something I did not pay any money for, but nothing is free in this world. Flagcounter subsists on advertising sold to visitors from sites like mine that have the widget embedded in them. And they have a right to get those visitors from me only if they provide a service I am satisfied with. I am going to be watching the situation closely going forward, and if my dissatisfaction with flagcounter grows, I might have to give them the boot off my blog. Time to do research on alternatives so that I can be prepared for any eventuality . . .

Wednesday, May 26, 2010

Computer-Shopping Is On The Cards For Me This Summer

Computers have evolved from a curiosity, to an expensive luxury, to an affordable necessity. Computers have become essential to the work-life of most office workers. Most companies depend on computers to get their day to day work done. Students depend on computers for research and learning. As such, they have become essential parts of many back-to-school shopping lists.

A few months back, my kids took tests in their schools for placement in the school district's gifted program. They had already been part of the gifted program at their previous school, but they had to take the test again when they moved to a higher grade in a different school. My wife and I told them we would get them their own personal laptops if they did well in these tests.

My house has only one television set, but already has 3 laptops. Everybody in the house depends on a computer for various things. I have my own laptop at home where I surf the web, catch up on email, do my hobby programming, etc. My wife has her own laptop for watching movies on and reading her email. We also have a common laptop in the living room that we sometimes crowd around to watch YouTube videos, etc. This is also the laptop that my kids use. They take practice tests on it, do research for school homework and projects, upload their singing lessons to it and practice with it, and so on.

In short, computers have become quite an indispensable part of our daily lives. The problem with having only 3 computers in the home while having 4 people who wanted to use it was the frequent conflicts that this arrangement produced. One of my kids would want the computer for homework while the other would want it for some other research and so on.

The results of the tests for the gifted program came back recently, and my kids did get into the gifted programs for their grade levels. And they did so quite comfortably too. So, now I am out shopping for good deals on computers for them. They deserve their own personal computers so that they can do whatever they need to do on the machines independent of each other.

In the past, buying two computers at once would have been a big burden on a family's budget. But computer prices have come down significantly over time. Computers with the power and capabilities that a school student needs to perform their research and homework are very affordable nowadays. And they are also getting to the point where they frequently need to print out either the research they have done on the computer or the results of the research (homework assignment, research report, etc.). So, while I am in the process of shopping around for computers, I might pick up a couple of printers too.

Getting them their own computers will also enable me to start teaching them from a young age how to protect and maintain computers both from a physical viewpoint as well as an informational viewpoint. I can teach them about customization, trouble-shooting common problems, protection from viruses and other threats, protection from online scams, etc. I consider myself reasonably knowledgeable about these topics (as opposed to ancient Chinese history or the latest advances in DNA synthesis), so it should be a fun summer! At least until my kids tune me out and start treating their computers like toys . . .

Tuesday, May 25, 2010

Yesterday Just Wasn't My Day!

You know how these things go: some days you are the windshield, and some days you are the bug. Yesterday, I was certainly the bug. And I hit the windshield square in the middle, it looks like!

It all began about 3 weeks back when the business users wanted an enhancement to a program we developed and support. The program is getting long in the teeth and has been patched up so many times it would be almost unrecognizable to the original authors. The problem is that the business process on the user side has changed so much in the years since it was written that the business process would be unrecognizable to the original authors of the program too. The patching followed along as the business process changed.

To accommodate the enhancement the users wanted, we needed new information from a mainframe program that produces the inputs for this program. We touched base with the mainframe support folks in IT and requested the new inputs. Now, there are two places this input could come from. The primary information is about objects that are then combined into super-objects, which inherit this piece of information. Our program only reads a file that contains the super-objects, so we asked the IT folks to put the information there.

The IT folks argued with us that the information does not logically belong there. It belongs with the objects themselves, and we should calculate it on our side for the super-objects from the individual objects. Makes perfect logical sense, but the problem is that our program does not read the individual objects (and does not really care about any other information that is part of the individual objects). To add a read routine for the objects, and then combine the information for use in the super-objects would take us 4 to 6 weeks.

The IT folks have access to files that contain information about both the objects and the super-objects. The analyst who had originally been assigned to the job gave us a time estimate of 2 weeks for him to read the objects file, calculate the information at the super-object level and embed it in the super-object file. So, we asked him to get started down that route.

But the project manager in charge of the mainframe program that produces our inputs suddenly had a change of mind, and started pushing us to make the changes inside our program to calculate the information from the individual objects. We acknowledged that the information resides logically in the objects, but we explained to him why it was difficult to go with that architecture because of the extra coding and testing that would require.

We went back and forth on it for 2 weeks (by this time, the entire project could have been completed if the analyst had been allowed to just get his work done, instead of being involved in a stupid, pointless, ideological argument). The program is run on a monthly schedule, and the users wanted this enhancement for the June run (that occurs around the middle of the month). All this delay was jeopardizing our ability to have this enhancement ready for the users by that date.

I finally gave up on the argument with the project manager on the IT side yesterday and wrote him an email. I explained it to him in as simple terms as I could muster. Here is the email I wrote him:


We have already acknowledged that it is a cleaner solution to implement it on our side. However, it makes the spaghetti code that our program already is, even more complicated and hard to follow. Moreover, the users are expecting this enhancement in place for the June run. Implementing this on our side will cause delays to that timeline because it will take us 4 weeks to do it. Your analyst indicates that it is doable on your side in 2 weeks, which will allow us to stick to the timeline expected by the users.

At this point, I would defer to the users. If they feel that they can manage without this enhancement for another month, then we will take it up on our side and implement it ourselves for the July run. But, if the users are looking forward to this enhancement for the July awards, I think it should be done on your side regardless of it being somewhat less clean than implementing it on our side.

I thought it was a pretty straight-forward argument. Either you do it so that we can stick to the timeline the users want, or we do it and the users can go pound sand for another month. There was really no need for all this theoretical, pedagogical arguing back and forth on what the "best" solution was. It was not as if we were coming up with the optimal, most theoretically correct solution to some academic problem. We were trying solve a user's problem in the most pragmatic, practical, time-effective manner. And I copied the users in on the email so that they could chime in with their needs.

The reaction from this project manager would make you think that I had suggested we go hunting for mountain gorillas in the Congo or something like that! Here is his email in response to mine:

Please note that I have removed the users from the address list. This is not a user issue. It is a technical/administrative issue. Those of us who have worked in maintenance for any length of time know it’s not always easy and it’s not always ‘pretty’. Still, we find ways to keep our systems running. It seems to me that you are saying your program is virtually unmaintainable and that you are unable or unwilling to make any significant changes. (That is a sad statement for a product that is only ten years old.) If that is your position, I will support making the changes on our side.

It was rude and totally unprofessional. And his assertion that it was not a user issue was patently false. I had already agreed to do the changes on my side if the user did not mind waiting. So, to me, it was nothing but a user issue. And I certainly did not want to hear about how great a project manager he was for keeping his systems running, and how incompetent I was for trying to support a patched-up program that I was not willing to make major changes to. I have no idea how people with such abrasive communication styles make it to the higher echelons of an organization, but sadly, it does happen and the rest of us have to put up with these supercilious, ignorant boors.

Not wanting to incense him any further, I forwarded the email to my manager, asking him for advice, and also hoping for some soothing words. Instead, this is what my manager sends back to me:

Put yourself in his shoes to try and understand where he is coming from. He probably also did not appreciate your including the business team into the last email --- puts him in a difficult spot. It's probably best if you could meet with him to discuss in person (take one analyst with you, but not more as it will look like you're "ganging up" on him).

Way to go! I have been involved in a useless, absurd argument with this person for 2 weeks running, and now I am at fault for pointing out the obvious fact that we all exist only to satisfy the users, not our own egos or our ideas of theoretical perfection. It is like the wife being blamed for the abuse she suffered because she complained that the husband drinks too much and abuses her!

And my including of the users in the email puts him in a difficult spot, probably because he has to climb down, off his ivory tower, and walk amongst us dirty, filthy, unwashed masses! And I have to behave like a medieval knight and challenge him to an one-on-one duel to settle the issue, not "gang up on him" by taking more than one of my analysts with me to explain the situation to him more fully and concretely!!

My manager is out of town, attending a conference, so I just let his email slide. There was no point in trying to argue with him over email, and anything I say would only make me sound whiny and defensive. My manager has never been good at supporting his people when it comes to these kinds of situations involving disagreements with folks from other departments. In particular, he insists on us bending over backwards and letting the IT department walk all over us repeatedly. So, his email is really par for the course for him. As far as I am concerned, it is OK to turn the other cheek if your opponent notices it, and is willing to be shamed into changing his behavior. It is not a good option when your opponent is enjoying slapping you around just for the fun of it, and thinks that you are enjoying being slapped around too!

And to top it all off, I got another email from another counterpart in IT about a meeting we have scheduled as a weekly repeating meeting to coordinate with them about a very important project we are working on together. For the past 6 or 8 weeks (I have honestly lost track of it), the IT team has always found some excuse or another for not attending this meeting. They are either too busy, or they are booked in a different meeting, or they are having production problems, or whatever. The actual excuse really did not matter. They would just call me to cancel the meeting a few minutes before the meeting.

Repeated emails to them asking for them to attend the meeting had no effect on this behavior. I offered to let them set up the meeting so that they could choose a time when they were better able to attend the meeting. I offered to shorten the meeting so that they could be in and out quickly. All to no avail.

But the email I got yesterday was quite terse: it said we would have to attend that meeting the next day because they had something important to discuss. No please, no thank you, no nothing. Just an order that we show up for a meeting they have not deigned to attend for over 2 months now! And no, I did not forward this to my manager for his comments!! I can only put up with so much sympathy in one day, and the irony of this email would probably escape my manager altogether anyways!!!

Yesterday was yesterday, and today is a new day. Things have been pretty quiet on the email front so far. Hopefully, they will stay that way for the next few days. But then, you never know. After all, I might just be a bug enjoying the nice balmy spring weather without realizing that a windshield is headed my way at 60 mph! Everything is quiet, and then ... SPLAT!!!

Is SubmitEdge Really An Ethical SEO Firm? You Be The Judge!

Every website owner has probably heard about search engines and search engine optimization (SEO), not once, but multiple times. Getting your website into the search engines and then having the search engines deliver you high-quality, targeted traffic is the holy grail for any website in the increasingly competitive and crowded world of websites.

Search engine optimization has usually meant manipulating the automatic algorithms used by search engines to rank web pages, and getting your site more visibility than your competitors' sites. Most firms that started offering SEO services specifically targeted the weak spots in the ranking algorithms used by the different search engines, manipulating them into favoring your website. Usually, they achieved this by using techniques that put more emphasis on fooling the search engines than on utilizing the strengths of your website to get it the visibility it deserves.

The disadvantage with such manipulation techniques is that once the search engines became more sophisticated and discovered these manipulative techniques, they changed their algorithms, changing the way they rank websites. Websites that had built up their strength naturally and legally retained their visibility, while sites that had used shady techniques lost ground. This lead to SEO firms getting a bad reputation overall, and SEO in general was considered unethical and manipulative.

But SubmitEdge is part of a new wave of resurgence in SEO firms that offer "ethical" SEO services. What does ethical in the context of SEO actually mean? SubmitEdge goes about SEO the right way. Rather than trying to fool search engines into ranking your site higher than your competitions', SubmitEdge researches your site and finds out your site's strengths and weaknesses. Not only do they provide feedback for helping you correct your site's weaknesses, but they also customize an SEO service that leverages the strengths of your site to get it noticed by search engines more prominently.

Part of that commitment to ethical SEO is the use of manual labor in almost every step of the process rather than robots. SubmitEdge uses humans to submit your website to various directories of sites around the internet. They use humans to review your site and submit it to article sites. They use humans to write blog posts that review and provide links to your sites. They use humans to do research into manually compiled directories like DMOZ so that the submission of your site is within the directory's submission guidelines.

Unlike other shadier SEO firms, they do not guarantee your site a particular page rank or search position on search engines. Such guarantees are typically met by manipulating the search engine in the short term, but in the long term they tend to hurt your site once the search engines get wise to the manipulation. SubmitEdge also does not use link farms or link exchange techniques that require your site to host links to other sites on the web. Such techniques can also have an adverse effect on your site's rankings with the different search engines.

SubmitEdge's services are reasonably priced, and they have good descriptions of each service they provide, sometimes with detailed FAQ's. For instance, not many outside the SEO industry may have heard of article submission. SubmitEdge does offer an article submission service, and has a detailed description of what article submission is and how it helps your site's search engine ranking.

Their site also has testimonials from real website owners talking about the good job SubmitEdge did for them. These are not anonymous testimonials, but testimonials that include the website and full name of the owner who used SubmitEdge's services. But, don't take my word for any of it. You owe it to yourself to visit their website and take a look around yourself.

SEO firms have had a shady reputation in the past because of their unsavory tactics. Ethical SEO aims to correct those excesses so that the emphasis moves away from tricking and cheating to lobbying and influencing. SubmitEdge is certainly worthy of consideration if you have shyed away from SEO in the past based on the general reputation of SEO firms. SubmitEdge can optimize your website's position in search engine rankings and get your the visibility you and your site deserve. And in the ultra-competitive world we live and do business in, it certainly helps to have a good SEO firm on your side!

Monday, May 24, 2010

Sanity Returns To My Schedule - With A Price

I have written previously about the 16-hour workdays I had to go through for a few weeks because of my work at the local census office. I also wrote about how their poor planning lead to a huge binge of over-hiring that eventually lead to shifts being cut or eliminated and schedules being disrupted.

Fortunately, something good did come out of all this eventually. They decided to be fair to everyone who was hired on by cutting everyone's hours roughly equally. Instead of 8-hour shifts, most shifts were cut into two parts, each being 4 hours long. After a bunch of fine-tuning and adjustment, they released the new schedules, and I must say I am very happy with the results. I am still not completely satisfied because the cuts in hours affect only the office review staff, not the Operations Control System (OCS) staff. I think it was not a good idea to split the office into two water-tight compartments and then make hiring and work schedule decisions in each part independent of the other part. But, that is probably something that comes from these census offices not having any kind of institutional memory, since they are staffed for 2 hours around census years and then disbanded (with all employees starting all the way from the office manager being let go).

I will be working only 4 hours a day at the census office going forward. The hours are after regular work hours, so I don't have to make adjustments to my regular work hours to stick to my schedule at the census office. Obviously, I won't be making as much money as I had thought I would when I started the job 4 weeks back. But, to be completely honest, when the census bureau advertised flexible schedules and hours, this is what I had in mind. And this is what I wanted when I went ahead and applied for the jobs. I had no idea their schedules would be so inflexible and clash so much with the full-time jobs that some applicants already have. If they want people to be able to work regular hours like at a full-time job, they should change their recruiting spiel by telling applicants the truth about the job not being compatible with a regular full-time job.

Obviously, working 8 hours a day at the census office is twice as remunerative as working just 4 hours a day. I got paid for about 30 to 36 hours of work each week in my first few weeks at the census office. Going forward, my work hours will probably be closer to 20 to 25 hours. This week, I am scheduled for 20 hours, and I could probably accommodate 24 hours, but not much more without a major readjustment of my life around the census office schedule. So, yes, the census office did something really stupid by hiring a horde of new employees when there was no work for them to do. But, it has resulted in my scheduled becoming a lot more sustainable and workable.

I obviously pay for this with less pocket money from the census bureau, but I have come to the conclusion that the price is worth paying. In fact, the census bureau could be a much better employer by specifically asking potential employees like me (who already have other jobs) whether we would prefer to make more money or work saner hours. I do believe I would have chosen the latter option. Perhaps not right away. I may have toiled for a couple of weeks trying to maximize my earnings, but eventually, I think I would have come to my senses and switched to the better schedule.

Now, my only hope is that they don't do something bone-headed again, and change my schedules all over again. I am getting a little tired of dealing with constantly changing work schedules, and the resultant adjustments I have to negotiate at my regular day job. I have let people at the local census office know that I am very happy with these latest schedules and I don't mind the reduced pay as long as I can get my sanity back. I hope they listened well and heed my request.

As far as the work at the census office is concerned, I seem to have exhausted all the humor in the forms I could find. I haven't run across anything in the past week or so that is worth repeating. There are still people who use the Race fill-in boxes to put down whatever they feel like (such as Mexicano, Latin, etc.), but I haven't come across anything (either there or in the notes or other parts of the questionnaire) that has made me laugh out loud.

As far as my blogging is concerned, the extra time I got because of working reduced hours at the census office enabled me to put together a couple of quick posts. I wrote up a post about the stupid hiring decisions at the census office the day after they disrupted my schedules by cutting my shift in the middle without warning. I don't feel quite so strongly about their stupidity any more because it has had the unintended consequence of making my overall work schedule much easier to put up with.

After that I wrote up a post continuing my analysis of recurring decimals. I could have written up a couple more posts to get back to my regular schedule of blogging, but I was just too lazy and let it slide. Hopefully, I will snap out of it and get around to publishing more frequently and regularly by this time next week.

This was another of those weeks when I did not get visitors from any new countries to my blog. I had expected my blog to hit such a stage a lot earlier, so the fact that it has had a continuous stream of visitors from new countries is actually more surprising to me than the fact that that stream appears to have dried up now. My flagcounter still shows 133 flags as of this writing.

Now, it is time for me to start planning my posts for this or the next week, and start putting them together so that my blog sees some regular, new activity. I had an excuse before, but not anymore. Time to get to work, I guess . . .

Online Tutoring Is A Convenient, Always-On Alternative To Hiring Tutors

My kids have always been good students and have never had problems keeping up in school. But my wife has started getting a little worried about her own ability to help them succeed since the level of math and other subjects at school has gone beyond the basics into more advanced subjects like trigonometry and calculus. She wanted me to do some research into possibly hiring a tutor to make sure the kids did not fall behind in their academic performance.

Doing some research online, I found that hiring a tutor is not really the most efficient way to get things done. The main problems are three-fold: first tutors are quite expensive. Secondly, tutors specialize in only one of two subjects. If my kids needed help with math, science, english, history and writing college essays, they would need more than one tutor to get help with all of that. Third, and most important, tutors have their own schedules into which you have to fit yours. And they are not available whenever you want them. As you well know, kids are likely to suddenly need help when they are doing their homework late at night, and they can't usually get the tutor to come immediately to help them out right away.

What I found is an alternative to traditional tutors that seems to get rid of the three disadvantages above quite well. It is an online tutor service called TutorNext. TutorNext offers very affordable subscription-based tutoring services that are available for you to use 24 hours a day, 7 days a week. They also offer free online tutoring on a trial basis so that you can decide whether the technology is for you or not.

TutorNext's tutors work one-on-one with their students over the internet. Because of the one-on-one personalized nature of the lessons, students get the full attention of the tutor and can learn at their own convenience and pace. TutorNext also utilizes advanced technology that enables students and tutors to interact with each other over the internet using a virtual whiteboard and chat capabilities. An online math tutor is an interesting concept, but well worth considering given the technological advances of the past few years, making such tutoring effective and useful.

TutorNext offers tutoring in a large variety of subjects such as physics, chemistry, biology, math, english, college essay-writing, etc. Math help is subdivided into subjects like pre-algebra, algebra, precalculus, etc. They also have a math problem solver section that connects students with math tutors online to help specifically with homework issues.

So, if you are looking for a math tutor, or a tutor for any other subject for your school or college kids, TutorNext is a solution worth considering. Their low cost and 24-hour availability make them ideal for today's connected world where timings are fluid and change constantly. And in today's competitive world, tutoring can give your kids a leg up over their classmates in both school and college.

A Cover Can Make Your Pickup Truck Look Sporty (And Save On Gas Too)!

I have always been a fan of the increased flexibility that a pickup truck provides over a regular car when it comes to cargo space. Several years back, when I was shopping around for my first vehicle, they did not have too many extra-cab pickup trucks, so the flexibility in terms of cargo space came at the cost of not having enough passenger room.

But recently, more and more pickup trucks have been designed with extra cabs so that they seat 5 or 6 passengers comfortably. The bed size has decreased a little because of the addition of the extra passenger seating, but they still offer much better cargo carrying capacity than cars and vans. So, I have been thinking seriously about pickup trucks as a possible future buy when I am in the market for a new vehicle.
Access Tonno Sport
A friend of mine recently went further than that, and actually did buy a new pickup truck. He told me his wife and kids were a little put off by it initially, but now they have also come around, and I am using their example to try to convince my wife that traveling around in a pickup truck is not as bad as it sounds!

But my friend did have a problem with his pickup truck: he was not getting good gas mileage out of his truck, and its bed was getting dirty with all kinds of debris falling in it, and not being cleaned out regularly. And he could not leave anything in the bed because it was unprotected both from curious passersby as well as the elements.

I suggested that the best way to address all of these problems would be to get a good cover for the truck bed like the access tonneau cover. These are high quality covers that protect the pickup truck's bed from falling debris and dirt. They also give one a place to store things in the bed, secure and out of sight of prying eyes. And it gives the truck a really sporty look too. But, more important than all that to me, they improve the gas mileage of the pickup truck significantly because they smooth out the airflow around the bed of the pickup truck (some people achieve close to the same effect by lowering the tail gate of the truck when driving around, but this does not look good, and there is a good chance the tail gate will get damaged bouncing up and down while driving around).

So, now my friend is busy shopping around for a cover that meets his needs and fits his budget. I am curious as to what he will get, and how much he agrees with me after that about the benefits of a cover. He is really into his pickup truck ever since he bought it, and I think he is going to end up spending more on accessories for his new toy than he spent on buying the truck in the first place!

Wednesday, May 19, 2010

Vedic Mathematics Lesson 50: Recurring Decimals 2

In the previous lesson, we saw how it is possible to calculate the reciprocals of numbers that don't have 2 or 5 as factors, using a simple method that utilizes the Anurupyena sutra and the Sesanyankena Caramena sutra. In this lesson, we will extend that methodology beyond finding reciprocals. We will use a slight modification of that method to find the values of fractions like 2/3, 4/7, etc.

You can find all my previous posts about Vedic Mathematics below:

Introduction to Vedic Mathematics
A Spectacular Illustration of Vedic Mathematics
10's Complements
Multiplication Part 1
Multiplication Part 2
Multiplication Part 3
Multiplication Part 4
Multiplication Part 5
Multiplication Special Case 1
Multiplication Special Case 2
Multiplication Special Case 3
Vertically And Crosswise I
Vertically And Crosswise II
Squaring, Cubing, Etc.
Division By The Nikhilam Method I
Division By The Nikhilam Method II
Division By The Nikhilam Method III
Division By The Paravartya Method
Digital Roots
Straight Division I
Straight Division II
Divisibility Rules
Simple Osculation
Multiplex Osculation
Solving Equations 1
Solving Equations 2
Solving Equations 3
Solving Equations 4
Mergers 1
Mergers 2
Mergers 3
Multiple Mergers
Complex Mergers
Simultaneous Equations 1
Simultaneous Equations 2
Quadratic Equations 1
Quadratic Equations 2
Quadratic Equations 3
Quadratic Equations 4
Cubic Equations
Quartic Equations
Polynomial Division 1
Polynomial Division 2
Polynomial Division 3
Square Roots 1
Square Roots 2
Square Roots 3
Recurring Decimals 1

Note that fractions like 2/3 and 4/7 still can not be expressed in terminating decimal form. Since the denominators of these fractions have factors other than 2 and 5, their decimal representation will still be a recurring decimal. In the case of a fraction such as 2/3, the decimal representation is well known (as 0.66666 . . ., usually rounded off to 0.6666667), while in other cases, such as 4/7, the answer is not well-known. Hopefully, this lesson will enable us to find the answer to a problem like 4/7 without having to do long division with its attendant difficulties.

The method we are going to use in this lesson is a direct derivation of the method we used in the previous lesson. In fact, the steps are almost identical. To save time and effort, I have therefore reproduced the steps from the previous lesson below. For the steps that require modification, I have mentioned the necessary modification in italics. That way, if you are familiar and thorough with the previous methodology through practice, the new method will require very little adjustment to get used to.
  1. Pretend that you are going to use long division to find the fractional form of the given number whose denominator ends in 1, 3, 7, or 9. As such, you would put a decimal point on the quotient line, then add a zero to the dividend and then attempt to perform a division. This will result in a quotient and a remainder
  2. We are not interested in the quotient though. We are interested in the remainder. More precisely, we are interested in the ratio of the remainder to the numerator. Call this ratio our multiplier. In general, the multiplier need not be a whole number (in the previous lesson the multiplier was always a whole number since we were taking ratios with respect to 1)
  3. Write down the first remainder
  4. Now, multiply the first remainder by the multiplier, and cast out the divisor (keep subtracting the divisor from it until the number left is less than the divisor). This becomes the next remainder. Write it next to the first remainder, separated from it by a comma. If our multiplier is not a whole number, and the first remainder can not be multiplied by the multiplier to arrive at a whole number answer (for instance 7 multiplied by 1.5 will result in 10.5, which is not a whole number), add the divisor to the remainder and then try the multiplication. In most cases, adding the divisor once to the remainder will give us a number that can be multiplied by the multiplier to give us a whole number, but sometimes, we may have to add the divisor more than once to the remainder
  5. Now multiply the next remainder by the multiplier, and again cast out the divisor. Once again write this remainder next to the previous ones as before. In each of these steps, whenever multiplication of the remainder by the multiplier will result in a non-whole number, remember to add the divisor to the remainder and try the multiplication once again
  6. Repeat step 5 until at some point, the remainder becomes the numerator. Add that last remainder to the list of remainders and stop repeating step 5
  7. Now, multiply the last digit of each remainder by the last digit of the recurring decimal appropriate for the denominator, the sesanyanka (remember that the sesanyanka of a divisor that ends in 1 is 9, that for a divisor that ends in 3 is 3, that for a divisor that ends in 7 is 7 and that for a divisor that ends in 9 is 1), and put the last digits of the products down in order. This step is what is meant by the vedic sutra, Sesanyankena Caramena, the remainders by the last digit
  8. At the end of the process, you have a set of digits that represents the recurring decimal representation of the given fraction!
As you can see, the overall method is very similar to the method we used in the previous lesson. The only difference is that the Anurupyena sutra can be a little harder to apply in this case because our multiplier need not be a whole number. Because the multiplier is not a whole number, the product of the multiplier with the remainder need not be a whole number either. The main adjustment we have to make to the method in the previous lesson is how to take this fact into account. We get over it by allowing the remainder to be adjusted by the denominator until the product with the multiplier comes out to be a whole number.

We will apply this methodology to a simple example to illustrate this. Let us try it on 4/7 and see how the method and the adjustments within it perform.
  1. We pretend to perform long division. We add a zero to the end of 4 to get 40. This gives us a quotient of 5 and a remainder of 5
  2. We don't care about the quotient. But our remainder being 5 tells us that our multiplier is 5/4 or 1.25
  3. We write down the remainder, 5
  4. Multiplying 5 by our multiplier, 1.25, gives us 6.25. This is not a whole number. So, we perform the adjustment explained in the method above: we add our denominator, 7, to the remainder, 5 to get 12. The product of 12 and 1.25 is 15, which is a whole number. Now, we cast out our divisor, 7, from 15, giving us 1. This becomes our next remainder. Write it next to the 5, giving us 5,1
  5. Once again, multiplying 1 by our multiplier 1.25, results in a non-whole number. Therefore, we add 7 to 1, and then multiply by the multiplier, giving us a whole number, 10. Casting out 7 from 10 leaves us with 3. This gives us 5,1,3
  6. Multiplying 3 by 1.25 does not give us a whole number. In fact, even after we add 7 to 3, the product with 1.25 is not a whole number. We see that we need to add the divisor, 7, 3 times to the remainder to get 24, whose product with 1.25 is a whole number (30). Casting out 7's from 30 gives us the next digit to add to our series, 2 (the series now reads 5,1,3,2). Our next remainder, 6, comes from multiplying 16 (we have to add 7 twice to our previous reminder, 2, to get a whole number when multiplied by our multiplier) by 1.25 and casting out 7's (the series now becomes 5,1,3,2,6). When we multiply 20 by 1.25 (once again, we have to add 7 twice to the last remainder, 6, to get a number whose product with 1.25 is a whole number), and cast out 7's, our remainder becomes 4. Since 4 is our numerator, this is our signal to stop. Our list of remainders now reads 5, 1, 3, 2, 6, 4
  7. The last digit of the product of 5 and 7 (remember that the sesanyanka of 7 is 7 itself) is 5. The last digit of the product of 1 and 7 is 7, and so on.
  8. We ultimately get 571428, and we say that 0.571428. . . is the recurring decimal form of 4/7. We can verify that 7x0.571428571428 . . . is very nearly 4 (as we increase the number of times we include 571428 in the product, the number of 9's in the product increases, and when the number of 571428's is infinite, you get 4 as the product).
As you can see, once you are familiar with the method as explained in the previous lesson, the modifications required to apply that method to numerators other than 1 are quite straight-forward and simple. Obviously, as the multiplier becomes more and more complicated, the adjustment can become more cumbersome, but overall, it should still be possible to apply the method reasonably quickly and accurately.

Let us now apply it to 2/13 as another illustration. In this case, when we perform step 1 by adding a zero to 2 and dividing by 13, we get a remainder of 7. We write down 7, and we know that our multiplier is 7/2. Since the product of 7 and 7/2 is not a whole number, we add 13 to the 7, making it 20 before we multiply by 7/2, giving us a product of 70. This then leads to the next remainder in the series, 5. Following the same procedure over and over again, we can fill out the rest of the series until we hit 2 as the remainder (at which point, we stop). This gives us the following series of remainders: 7, 5, 11, 6, 8, 2.

The sesanyanka of 13 is 3 (since the last digit of 13 is 3), so, we multiply the last digits of these remainders by 3 and put down the last digits as the series of digits in the decimal form of 2/13. This gives us 2/13 = 0.153846 . . .. It can be verified that this is indeed the correct answer we are looking for.

Even though our first two examples have shown that our multiplier is a fractional value, this need not always be the case even though the numerator is not 1. Take 2/31 for instance. In this case, our first remainder is 20 (since 20 is less than 31). The multiplier then becomes 20/2, which is 10. This is a whole number, allowing us to calculate 2/31 with no adjustments to the method we put forth in the previous lesson.

Note that you can still use the method in this lesson, which is a more general version of the method of the previous lesson, even for the above problem. You would never need to add the divisor to the previous remainder to make the product with the multiplier a whole number, so the adjustment is never used, and the answer will be identical to what you would have gotten if you had used the method in the previous lesson. It is probably a good idea to learn the method in this lesson thoroughly in place of the simplified method of the previous lesson since the more general method has a wider applicability than the simplified method.

In any case, the series of remainders then becomes 20, 14, 16, 5, 19, 4, 9, 28, 1, 10, 7, 8, 18, 25, 2. Since the sesanyanka of 31 is 9, we take the last digits after multiplication of these remainders by 9 and get the value of 2/31 as follows: 0.064516129032258 . . ..

Let us solve one more problem to make sure the method is fully understood. We will tackle 6/29 using this method. Our first remainder is 2 (adding a zero after 6 and dividing by 29). Our multiplier is therefore 2/6, which is 1/3. Note that, in this case, not only is our multiplier not a whole number, but the multiplier is less than 1. So, you can see that the multiplier in this method can be any positive number and need not follow any rules such as being a whole number or being greater than 1.

Since the product of 2 and 1/3 is not a whole number, we see that we have to add 2 29's to 2 to get a number whose product with 1/3 is a whole number. That gives us 20 as the next remainder. Once again, we add 2 29's to this remainder so that the product with 1/3 is a whole number. This gives us a remainder of 26. We then continue this process until we get a full series of remainders as follows: 2, 20, 26, 28, 19, 16, 15, 5, 21, 7, 12, 4, 11, 23, 27, 9, 3, 1, 10, 13, 14, 24, 8, 22, 17, 25, 18, 6 (we stop at 6 because that is the numerator of our problem).

Notice that in the derivation of this series, most of the remainders were derived simply by applying the multiplier (1/3) to the previous remainder (after adjustment with the divisor as needed). There was hardly any need to actually cast away 29's since the successive remainders were mostly less than 29 (except in the one step that lead to the derivation of 17 as the remainder). Thus, this method can sometimes be easier than the steps would lead you to believe (which itself is quite easy to begin with!). Since the sesanyanka of 29 is 1, conversion of the series of remainders above to the recurring decimal form is trivially easy, leading to the final result: 6/29 = 0.2068965517241379310344827586 . . ..

I hope this lesson has been interesting for everyone, and useful for those who were struggling with long division to find the answers to division problems that involve large denominators that don't have 2 or 5 as factors. The method in this lesson is a very general method that can be used for solving such problems quite quickly. But, in the next lesson, I will introduce another method that can be used to find the answers to problems like 4/13, 6/29, etc., using just the reciprocals of the denominators (which can be easily derived using the method in either this lesson or the previous lesson). Until then, I hope you will practice the method in this lesson with more examples. Good luck, and happy computing!

Search Engine Makes Shopping For A Cash Advance Easier

As some ad jingle from a long time back used to say, "everybody needs some money, some time!" In these recessionary, hard economic times, more and more people are finding themselves in the situation of having to get additional cash to tide over cash flow problems.

In the past, this would have required you to locate the nearest payday loan center, and take whatever they are willing to provide at whatever rates and terms and conditions they choose to impose. The borrower had little leverage or room to negotiate anything with these operators. And many of these operators took full advantage of such borrowers, making loan sharks appear better by comparison!

Now, you don't have to rely on a local, neighborhood payday loan company to get quick cash to tide over an emergency. MoneyNowUSA enables you to compare the terms and conditions and interest rates of different options for cash advances, so that you can pick the one that best suits you. Because lenders have to compete against each other when you use a broker like MoneyNowUSA, you get leverage and the ability to get better interest rates, higher advance amounts, and better terms and conditions than before.

Once you enter your information and needs on the MoneyNowUSA website, you have access to over 150 different lenders in the back-end who compete for your business. As long as you have a steady job and a checking or savings account, you should not have any problem getting approved for a loan. Once you pick the lender and agree to their terms and conditions (which can all be done online), your money is transferred to your bank account automatically, usually within the next few hours or a day at most.

Obviously, this does not mean that you have access to some kind of personal piggybank that you can raid indiscriminately. The cash advances you get do need to be repaid, usually within a very short time. Most of them require that they be repaid when you get your next pay check. So, make sure you use this facility only in an emergency, and only when you know that the money you borrow is within your capability to repay when you get your next pay check. But if you really do need money under those circumstances, it is good to know that there is a better place to turn to online!

Tuesday, May 18, 2010

Poor Planning By The Local Census Office Disrupts My Schedule

It turns out I spoke too soon when I said that my census work is keeping me busy. Yesterday, we ran out of work to do, and my shift was cut short. All my co-workers who were doing the same work I was doing, had their shifts cut short too, and all of us were sent home.

First a little background on what happens in this stage of the non-response follow-up (NRFU) process. The whole staff of office clerks is divided into two groups. One group does what is known as office review. The other group does OCS work. I am not very familiar with OCS work since I have never been trained for it, and only work on office review. When I say co-workers, I mean other clerks like me who were trained for office review, and do just that.

So, let me explain what office review clerks do. Field office supervisors (FOS's) and crew leaders of the different crew leader districts (CLD's) collect completed enumerator questionnaires (EQ's) from enumerators and bring them into the local census office (LCO). They also bring back tons of paperwork (such as time-sheets, performance reviews, administrative forms of all sorts, etc.). All of this is received at the office by office review clerks and sorted into different piles. The EQ's go to different piles by CLD, the paperwork is routed to the appropriate office managers, etc.

We then count the EQ's and enter this into a file for record-keeping. Once all this is done, the EQ's are then picked up by the office review clerks for review. We go over them with a checklist, as I explained earlier, and pass the ones that meet all the criteria in the checklist. The ones that fail get sorted by CLD, bagged into envelopes and placed in outboxes for pickup by the crew leaders and field office supervisors. They are distributed back to the enumerators so that they can correct the errors and send them back in.

Most of the office review clerks who were trained with me have now got the review process down to the point where they can easily review an EQ every minute. If it fails, we have to write up an explanation of why it failed so that the enumerator knows how to correct it. This takes a little time, but as long as the majority of EQ's pass, an office review clerk can easily deal with 50 to 60 EQ's per hour. I am one of the faster clerks, and usually manage 75 to 100 EQ reviews per hour.

Once the EQ's have been reviewed, the ones that pass are bundled into sets of 25 and passed on to the OCS clerks. These clerks then enter information about the EQ's into the operations control system (OCS). Why the same clerk can not review the EQ, then enter it into the computer, and move on to the next EQ is a question only the census bureau can answer. For some reason, the clerks have been divided into two groups, and we can not do each others' jobs because we have not been trained for it.

But one of the reasons could be that the OCS is more often down than up. So, while the office review clerks keep adding 50 to 100 EQ's per hour to the check-in queue, the OCS clerks can only enter these EQ's into the computer when the OCS is up and running. Each of them can do 100 to 150 an hour when the system is up, but since the system has been down quite a bit recently, EQ's have been piling up in their area, having passed review, but not checked into the system yet. And sometimes they are restricted to using only some of the computers in the office rather than all of them because they are given limits as to how many can log on to OCS simultaneously. This seems to depend on the mood of OCS when it is brought up. If the limits are exceeded, it might refuse to play and will take its toys home, leaving everyone with a dead system!

In any case, the supervisors in charge of office review in our local census office anticipated a huge influx of EQ's starting the middle of May, and hired more than 20 new clerks to work through the expected backlog of work. Well, the expected influx has not materialized yet. We have had a steady trickle of EQ's into the office, but not a flood of them. In the meantime, all the new clerks were trained over the weekend, and ready to go.

Yesterday, 10 of these clerks worked during the morning shift from 6AM to 2:30PM. There were about 3,500 EQ's to review at the beginning of that shift, and they went through those before the end of their shift. The evening shift (which I am part of) is supposed to be from 2:15PM to 10:45PM. When we got there, there were practically no EQ's to work on. We hung around for some time, and the time was used to provide us feedback on our reviews and write-ups. At 4:30, they were expecting a courier to come in with a lot more EQ's, so that we could then get to work reviewing EQ's.

The courier brought in only about 400 EQ's at 4:30. Given that there were 10 clerks on the shift, we were out of EQ's by about 5:30 once again. Most people were then asked to take their breaks, and we hung around after that for some more time. There was supposed to be another courier delivery at 7:30PM. That delivery yielded us about 600 new EQ's, which once again was far less than what was expected. The problem was that the next delivery was not until the next morning, and there was a night shift of clerks and part of a day shift to worry about before that next delivery.

So, our supervisors decided to cut our shifts short and sent everyone in my shift home by 8:15PM. Today's day shift was once again scheduled with 10 office review clerks. And, it looks like they did not get enough EQ's to keep things going, so they have canceled my evening shift for today also. I don't know whether the day shift is going to be cut short also. I have been told to come in on Thursday for my next shift as planned, but I would not be surprised if they decided to cancel it at the last minute also.

To me, the situation smacks of unfairness. First, there is the bad planning on the part of the supervisors who hired the 25 extra clerks without really knowing what the volume of work will actually be. Given that it takes only about 4 hours to hire a new clerk (completion of all the paperwork, etc.), and another hour at most to train them to do office review, they could have waited to see if the existing staff was overwhelmed with work before going out and hiring new staff. There seems to be a perpetual queue of people waiting for calls from the census office, so there is no shortage of candidates to put through the hiring and training process either.

Even if they felt the need to hire a few people as emergency backup in case the influx of EQ's was too sudden and too heavy, there was no need to go overboard and hire 25 new clerks. Start with perhaps 5 clerks and ramp up as needed. But that approach would probably be considered too commonsensical for use by the government!

The second point is that when the supervisor prepares a schedule for the next week and hands me my hours, I make a commitment to the census bureau that I will be available to work those hours. I clear my daily schedule to make room for this work. I have to negotiate with my regular boss the hours I will be at my full-time job, so that I can get my regular job done while doing census work at the same time. I don't tell the census bureau, "thank you very much for this schedule. I will come in whenever I have the time and feel like it". I commit to showing up on time when my shift starts and staying there until my shift ends. And I disrupt my life doing so, by putting off other things in favor of sticking to this schedule.

I think it should be a two-way street, with the census bureau keeping up their end of the bargain by paying me for the hours they schedule me for, regardless of whether they have any work for me to do or not. Just as I can not say that I will come in whenever I feel like it, they should not have the ability to say they will give me work whenever they feel like it. When the schedule is prepared, it should be a commitment on both sides to stick to those hours, not just on my side.

What makes it even more unfair is the fact that the OCS clerks have never had their shifts cut short or removed at all. First of all, the supervisor on that side did not panic and hire a few dozen new clerks just because work was piling up from all the EQ's that passed office review but could not be entered into the system when the system was acting up. He knew that his existing staff would eventually catch up and finish the job in good time.

Moreover, even when the computers were down, the staff sat around in the office, twiddling their thumbs. They basically had nothing to do, so they sat around, and some of them read novels, while others were chatting and joking to while away the time. When they are restricted to using only two computers (as sometimes they were), but there are 6 clerks in the OCS area, they took turns working on the computer while the others sat around. Sometimes they teamed up just for the sake of having something to do even though the job actually requires only half a person to do! So one person would pick up the EQ from one side of the computer and pass it to the person in front of the computer, who would scan it in and then pass it on to a third person to put down on the other side of the computer!! But when the office review side runs out of work to do, we are unceremoniously booted out of the office and our hours cut short.

And it probably wouldn't feel so unfair if all of us had been trained on both OCS and office review so that we could rotate around. That way, if hours need to be curtailed, everyone would have their hours curtailed equally, instead of one group bearing the brunt of the cuts.

The whole thing is leaving a bad taste in my mouth. I have not mentioned any of this to my supervisors, because they can use this as an excuse to brand me a trouble-maker and cut my hours further. As a source of pocket-money, this is not too bad a gig, so I want to milk it for all it is worth. But I will certainly give them a piece of my mind when it comes time to leaving for good. In the meantime, I guess it is an employer's market out there when it comes to work, so the census bureau can count on the tolerance of people to being jerked around to be quite high. But the people who do get jerked around are going to be feeling a lot less charitable 10 years from now if the economy is strong, and the census bureau could have trouble finding anybody to take these jobs.

Oh, but I forgot, the census is going to be all electronic and computerized 10 years from now, so these jobs won't even exist then. Yeah, right, and I will be the queen of England 10 years from now, too!

Visitors Country Map

Free counters!

Content From

In the News

Article of the Day

This Day in History

Today's Birthday

Quote of the Day

Word of the Day

Match Up
Match each word in the left column with its synonym on the right. When finished, click Answer to see the results. Good luck!



Spelling Bee
difficulty level:
score: -
please wait...
spell the word:

Search The Web