Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
×
The Almighty Buck

Journal Journal: Tax dodge for the new year ... 2

1. Computer programs are considered literary works subject both to copyright and can be granted a certificate of copyright registration by the copyright office.

2. Here, the provincial government exempts the first $60,000 per year of income earned by the original copyright owner fro, performances of copyright works.

3. For $50, it's worth registering copyright, then claiming the deduction for income earned off of websites and Software-as-a-Service web apps. Register it in 3 peoples' names, and each one can earn $60k subject only to federal taxes.

Definitely on my to-do list in the new year.

Canada

Journal Journal: When tax increases result in less money ... 8

Summary for the TL;DR crowd: Quebec, not California, Nevada, or Florida, will be the first to default on its' bonds.

The context

Unlike the RoC (Rest of Canada, aka Kanuckistan), Poutineville (Quebec, aka a lot of other names, none good) has the highest deficit in the country, and the 6th-highest in the world.

It also has the 6th-lowest average income when compared to the RoC and the US., and the highest tax rates.

All this, combined with more than 4 decades of anti-English legislation (started in 1968 with Bill 63, then on to Bill 22 in 1974, and Bill 101 in 1977), resulted in Montreal losing its' status, not just as the head-office capital of Canada, but also as a financial and trade center.

Throw in almost 10% of the population leaving over the next decade for greener pastures, and you have the basis for inevitable decline.

The latest

I'll look at taxes on 3 income brackets - $20kpa (thousand per annum), $40kpa, and $60kpa.

Federal income tax is $1,420.95, $4,642.40, and $8,712.72 respectively.

Quebec income tax plus other taxes are ~ $3,500, $$4,900, and $9,250 respectively (it varies a LOT depending on a lot of small factors).

So, assuming that each person spends $13,000 on "basic living expenses" - rent, food, and $1,000 for heat and light), of which only rent and food do not have sales taxes added, that leaves the following:

$2,079.05, $30,457.60, and $42,037.29 respectively.

The current sales taxes

Obviously, someone earning $20kpa isn't going to be socking away money - whatever comes in gets spent. Also, eventually ALL money gets spent on something ... so it ends up getting taxed again at some point. In calculating the sales actual tax bite, we have to add back the $1,000 for heat and light, because that's taxed. The current rate is 5% federal sales tax (GST) and 8.5% provincial (QST), but because the province taxes the federal tax, the actual provincial rate is 8.925%.

So, total additional sales taxes paid are:
$428.75, $4,241,22, and $5,992.94 respectively.

The total tax burden at each level is:
On $20,000 a year income, $5,349.70 (26.75%) tax,
$40,000 a year income, $13,783.42 (34.46%) tax,
$60,000 a year income, $23,995.66 (40.0%) tax.

This does not include things like high drivers licenses ($100 a year and up), car registration fees ($300 for a car, $1,400 for a motorcycle more than 400cc), gasoline taxes (at $6 a gallon, half tax).

Raising the sales tax - again - vs job losses
On January 1st, 2011, Quebec had raised the sales tax by 1%. The problem with raising sales taxes is that it decreases consumption, simply by making everything more expensive. For someone who only has discretionary disposable income of a few hundred a month, the impact is going to make itself felt. "Oh, it's only 1%" ... so they're doing it again in a few days ... to 9.5% (actually 9.975% because of the tax-on-tax), for a combined federal/provincial sales tax rate of 14.975%.

Here's how it affects the bottom line for each income bracket.

Updated additional sales taxes paid (old figures in parens) $461.08 (428.75)
$4,710.76 (4,241.22)
$6,444.83 ($5,992.94)

The impact on total income and total tax paid:

So, the total tax burden at each level is:
On $20,000 a year income, $5382.03 ($5,349.70)
$40,000 a year income, $14,252.96 (13,783.42)
$60,000 a year income, $24,447.55 (23,995.66)

The impact on jobs and tax revenue in a declining economy
For every 1000 taxpayers at the median ($40,000 a year), the tax take is just over $14 million a year.

The increase from a 1% sales tax is a lot less - only $469,500 per thousand. Keep that figure in mind - because it's going to disappear in a few moments.

Raising sales taxes doesn't necessarily have an immediate effect on jobs - after all, if a job takes 2 people to do, it's going to continue to take 2 people to do ... until the business closes because of reduced sales. When there are plenty of jobs that are already "on the cusp", pulling additional money out of the economy (via sales tax increases) directly reduces the number of jobs by the same amount, and then some, since you now pass a tipping point. In other words, taking $469,500 from those 1000 taxpayers means 11 of them lose their jobs (and in this economy, it's permanently).

So now, the government loses the "tax take" from those 11 jobs - $156,782.56.

They also lose the employer's payroll taxes, for an additional hit of $150,000.00.

Program spending goes up as well, first with employment insurance claims, but we'll ignore those, first because they're limitied to 1 year max, and because that's "federal money", so it supports local spending, and then, since there is every indication that those jobs are permanently gone (thanks to the highest taxes in North America), ultimately they will end up on welfare, which is a provincial responsibility. We're already seeing this from the sales tax increase in January 2011, where unemployment rates were still trending downwards slightly before going back up this year, but welfare rates barely budged - the natural population increase was already overwhelming the feeble number of new jobs created.

So, those 11 new welfare recipients will have a direct cost, on average, of about $9,000 per year, plus dental, medical, etc., and administrative overhead. Say, $15k. That's an additional $165,000.00 in costs.

In other words, this year's 1% sales tax increase might have pulled in a bit more revenue, net, but actually caused a loss of $2,000 - not counting any knock-on effects from the reduced consumer spending, and raising the overall "misery index."

The Canadian housing bubble bursts, and over-indebted consumers

Finally, people are realizing what I've been saying for 4 years - that Canada is not immune to a housing bubble, and not to buy. Worse, the average Canadian household is actually deeper in debt than their US counterpart, so not only is Canada no longer all that "different" (despite not having a banking system that is p0wned by Wall Street), but consumers just don't have any resilience left.

This is especially true, again, in Quebec, where it's Greece-like public debt levels (despite receiving $1,000 per capita in direct federal financial aid, and ~ another $1000 in indirect aid), leave no room for government intervention. The job losses will continue, and the rate will accelerate. This is going to be a replay of the 1977-1987 "Made In Quebec" lost decade, but uglier.

How will it play out? The same way that the '77 bust played out - a massive exodus of people, a financial and social "brain drain", and deflating pay packets for those who stay behind.

This time it IS different

1. The rest of the country will NOT bail Quebec out this time by re-working the equalization formula and giving Quebec even more federal cash. Those days are gone.

2. Quebec can not hit up the bond markets to take on additional debt to finance the debt death spiral.

3. There aren't enough english-quebecers left to leave to "make room for" french-quebecers to take their jobs.

Lessons from Sim City

Anyone who's ever played Sim City knows how this works out in the end - decreasing revenue per capita, increasing expenses, neither raising taxes nor lowering them works. Raising taxes just makes more jobs and people leave. Lowering them means you just get into more debt. Either way, eventually your city dies.

User Journal

Journal Journal: Poll inspired by another users journal 15

The inspiration: Slashdot has a tyrant.

What level do you browse slashdot at

+5 I'm too young to die!
+4 Don't hurt baby jeebus!
+3 Hey not too rough!.
+2 In Soviet Russia, Slashdot browses YOU!
+1 Hurt me plenty!
0 I'm CowboyNealClone - I need my daily dose of goat guy and tubgirl!
-1 Nightmare

Christmas Cheer

Journal Journal: Merry XMas 6

Here's hoping you didn't get a lump of coal (unless that's what you needed to test out some high-pressure diamond maker), and that next year brings you all the best!
Programming

Journal Journal: Poll: The future of work isn't work ... 37

The question is:In 2012, what will be the median age where someone is considered "too old" for I.T.?

Times have changed ...

When it required 1/3 of the labour force to produce enough food to feed everyone, there was enough work going around, most of the time, to provide a job to most of the population.

Ever since the nature of work changed, in large part due to the increasingly-small portion of the population required to work to feed everyone (from 33% to < 2%), those jobs (and the economy as a whole) shifted to the production of consumer goods and services.

Of course, with even those jobs now requiring fewer workers to produce more, we're into our 3rd "jobless recovery." Each one has been longer and more painful than the previous one. This one will probably be permanent, because "this time it's different" is true. Computing power, which started the trend of replacing workers with automation decades ago, is now SO cheap that a lot of jobs are simply going to disappear - and the net means that many of those that are left will be going to the lowest bidder.

So, what does this mean?

1. The older you are, the more vulnerable you are to a layoff turning into forced early retirement.

2. As in all recessions, the longer you're out of work, the longer you're likely to continue to stay out of work, creating a pernicious negative feedback loop. Using the "down time" to acquire new skills no longer works because the hiring process has also become too automated to be able to distinguish between (just one example) 10 years experience, and 1 years experience repeated 10x.

Combine this with #1, and the age at which someone is no longer going to get looked at continues to drop.

3. Being able to produce quality is no longer important for many jobs, because the customer isn't looking for quality - how can they, when they don't even know what they want, and instead of telling them "look, this is what you really need", "designers" and their ilk continue to pollute the industry, supplying crap from "corporate data-mining dashboards" to "web sites that suck".

Of course, the older you get, the less likely you'll be able to stomach putting out drek w/o pointing out that it IS drek - so once a worker is "of a certain age" (funny, that phrase used to only apply to describing women "of a certain age"), they are also less employable.

So, at what age will 1/2 of all IT workers be no longer employable? The answer will vary by sector, with games probably being a much lower age than someone doing Oracle, but what do you think the average age will be next year?

Also, please note that I am in no way implying that IT is a "young persons game" - just that socio-economic factors mean more than skill or raw talent (I know, "So what else is new?").

It's funny.  Laugh.

Journal Journal: Ahd here's why I don't disable advertising on slashdot ... 30

The latest scam in the self-help line - "How to stop your divorce."

This takes the whole marriage counselor scam to a new level ...

The simple fact is that pair-bonding in humans is governed by the same hormones as in other mammals - oxytocin and vasopressin - and that it varies from person to person. Only half of all humans have the right level to form a permanent pair bond.

This latest scam is preying on vulnerable people, with zero scientific basis (in fact, marriage counseling as a whole is based on the wrong notion that people should, if possible, stay together, when they may simply not be biologically equipped to stay in a pair relationship).

Sample: "How to get your spouse to change". If there's one thing we know, the surest way to alienate someone is to try to change them. Hey, if you were a dirty rotten b*st*rd yesterday, you're still going to be a dirty rotten b*st*rd tomorrow, and that's your right. Nobody has a right to try to change you, and anyone who would try to needs to get over it and kick your sorry a** to the curb - for both your sakes. Maybe there's someone out there who WANTS a dirty rotten b*st*rd? Maybe they're not really a dirty rotten b*st*ard and the problem is you? Maybe there's really nothing wrong, maybe it's just time for both of you to move on?

Or maybe the real explanation is that one or both of you are not the pair-bonding type. About half are, so that means that we can only expect (without the exertion of external pressure such as social expectations) that 1 in 4 pairs formed at random will stick it out for life, 2 in 4 will have one partner who wants to stick it out while the other wants out, and 1 in 4 pairs will go "What were we thinking? Let's just stay friends with benefits" or "GTFO NOW!" It's just the way people are by nature.

Of course,it's so much more profitable to tease people with a "formula" and ad-babble like "How to increase your marriage IQ", while implying that if they don't "make their marriage work", they're failures.

But what can you expect from someone who made their money doing direct mail advertising (dead tree spam)?

I have a 100% guaranteed method of ending the "divorce epidemic." Ban marriages. Problem solved. The best part of this solution is that maybe people will treat each other better when they can't just "take the relationship for granted", AND as a bonus, when it does fall apart, there's no extra stress from legally ending it. Let the lawyers chase somewhere else for money, or DIAF.

Medicine

Journal Journal: End-of-year thoughts #1 ... This year was EXPENSIVE! 5

And a disaster!

1. January - eye bleeding internally, so ... emergency room visit, 3 doctors exams, same-day emergency referral to specialist at hospital clinic, exam there, emergency referral to hospital.

2. First hospital visit ... work-up, including florescent dye injections for detailed photos to detect bleeding, done for both retinas, other eye scans, exams, poking and prodding, and the first laser photo-coagulation zapping to reduce the bleeding.

3. Something like 10 more visits for zapping both retinas (one eye per visit), along with exams for vision loss, glaucoma, etc. at each visit.

4. 5 visits for consults, arranging and getting blood tests.

5. Several visits to my endocrinologist (insulin, HRT, blood pressure regimens).

+ $300/month for drugs, test strips, needles, etc.

It's a good thing all the hospital and doctors fees and most of the drug costs are covered in Canada (though not every province has a mandatory universal drug plan in place, so YMMV). It was bad enough worrying about permanent vision loss without the additional stress of worrying about the costs. And while the total costs must have been high, I'd think that they're less than the cost of having someone go blind (Anyone priced a seeing-eye dog lately? And it's not like they don't "wear out ..." or are maintenance-free, or that the handler doesn't have to be trained to use one).

On the good side, I've got most of my vision back, and it should continue to improve. On the bad side, long-term, it will at some point get worse again. This is just a holding action. Also, the local jobs situation is, if anything, also getting worse. 2012 is going to have its own challenges, and I already have 3 more hospital visits scheduled (2 with my endo in January, 1 for my eyes in February).

While I've survived (much) worse, it doesn't mean I welcome a repeat performance any time soon.

Portables

Journal Journal: Disposable laptop, and for those who laughed - bite me! 14

It's a good thing I had a spare power supply for my old creaky desktop ... because JUST as I had finished putting the finishing touches on a section of code, and saying to myself - "Well, that's now complete ... guess it's time to make a backup" ... my laptop (HP with *grumble grumble NVIDIA@@@ gpu) died. It didn't take much brains to figure out it was the video chip that was the culprit, like so many others before me.

I'm not too happy about that - this laptop was used for a week when I first bought it, then sat for most of a year until I could install linux on it (on a second drive) and upgrade it to 4 gigs. Then it sat for most of another year ... and then I used it at one job for about a year, and when the desktop PS blew a couple of weeks ago, it became my main machine again. So its' death is premature, to say the least. It's the least use I've ever gotten out of a computer, by years ...

So, I guess laptops are disposable now ... it's not like it's worth fixing - like a 3-to-4-year-old car, it's probably worth more as parts, and in the almost 4 years since I bought it, technology has changed ...

Of course, a pair of 2-1/2" 320gig hard drives cost a lot less than when I bought them, but still, a < $20 external drive bay, and they'll be back in business. And there's always someone who wants 4 gig of kingston ram. So, if I can't reflow the gpu solder by heating it up with a hotgun ... salvage time!

And for everyone who laughed at my stupid system for version control - since it *IS* entirely portable, and backing up only takes a few seconds, I *had* made a backup this morning before starting, so all I had to do was re-create the last 3 changesets from memory.

Backups - can't live without them!

User Journal

Journal Journal: Simplist version control ... 5

But first ... considering it's in java, and java can be slooowwwww ... jedit actually runs faster than some editors done in badly-written c/c++ (I won't name the one I have in mind, except to say that like a lot of stuff written in Qt, it sucks. Note - this is NOT a reflection on Qt, but on stupid developers. You can misuse any toolkit).

With a few (very few) plug-ins added, open the files across 2 screens, 4 split windows in each, and it really does the job.

The things I *hate* about version control, esp. for small projects

1. You still need a check-in/check-out process. That sucks.
2. Backing up and moving to another machine requires that the other machine has access to the version control system, or that you install it locally.
3. If you want to run 5 different versions of your program at once, you need to have 5 different "sandboxes" to play in.

A better way, and it really works

I came up with a simpler system a couple of years ago. Totally portable, only needs the tools at hand (your editor), and lets you see at a glance which files are "stable" (don't change much over time) and which aren't. And it works with any language, both scripts and compiled.

I'll use my current project as an example. There's a php index file, some css files, and some javascript files.

The php file is named index.###.php, where ### is the current version. Every time I add, remove, or edit one or more files, that version number gets bumped (right now, it's index.147.php).

It includes code that lets me load specific versions of css, php and javascript files. For example:
includejs(127, 'digits, grid, title'); // js/digits.127.js, js/grid.127.js, js/title.127.js
includejs(132, "this"); // js/this.132.js
includejs(133, "rows, cols, stage"); // js/rows133.js, js/cols133.js, js/stage.133.js
includejs(142, "imgcache"); // js/imgcache.i42.js

If in version 148 I modify stage.js, I would create a new file called index.148.php, and make the following changes:

includejs(133, "rows, cols"); // stage.133.js is no longer included
includejs(148, "stage"); // uses the updated stage.js

Benefit 1 - every version is available for testing

I can immediately test any version w/o having to create a sandbox for it, just by clicking on the index file. No worrying that it will clobber my latest work. This means that I can quickly track down which version introduced a bug.

Benefit 2 - just by browsing the files, I can tell which versions need testing

Usually, when you introduce a bug, you have a hunch which files it might be in - is it the mouse-handling code, or the layout code, or the footer code ... if it's the footer (as an example), you might see that there are only 3 different footer.js files in the last week (110, 123, 125), so you only test those 3 versions, simply by clicking on index.110.php, index.123.php, and index.125.php. And, since all the versions are immediately available, there's no reason you can't visually "diff" any of them right in your editor.

Benefit 3 - portability

Just tarball the whole directory structure and you have everything needed to replicate it on any machine. No servers needed. No special tools needed. No special software to install. Also, makes backing up your project super-simple, so you're more likely to do it. Just tarball or zip the directories and email them to yourself, or ftp them to another machine, or drop them on a usb key :-)

Benefit 4 - de-cruftification

Too often, we leave files in a project because it's too much trouble to see if they're still being used. Looking at index.###.php tells you exactly which files are needed - no more, no less. Applying the same principle to, say, c or c++ just needs some careful planning on your part (in other words, don't be messy with your #includes).

Benefit 5 - no special training required

No need to remember the special commands for each version control system. Or with different versions of a particular version control system.

Benefit 6 - works easily with multiple developers

If Joe Blow and Mary Doe are both working on version 150, there's no reason they both can't work on their version of stage.150.js - they just need to "tag" the files - say, with their initials.

Joe Blow: stage.jb.150.js
Mary Doe: stage.md.150.js

They would both also create their own "tagged" index file - index.jb.150.php and index.md.150.php respectively.

Joe Blow would have something like includejs(150, 'stage.jb'), while Mary Dow would use includejs(150, 'stage.md');

One of them can then do a manual merge by creating stage.150.js and index.150.js, with includejs(150, 'stage');

Benefit 7: No having to worry about cache pollution

We've all been there - we edit a css or javascript file, and we don't see the changes in our browser because we didn't change the file name, so instead of reloading the file, it reads the outdated version from its' cache. With every changed file having a version number, you won't worry that you're being served a stale file. This can be a real time-saver.

This technique isn't limited to code - you can also use it for images (again, avoiding the cache problem).

Benefit 8: Re-basing is dirt simple

You find that you went down the wrong road starting at version 35, and now you're at version 57? No problem - just open index.34.php, and save it as index.58.php, and you're done. You have all the code available for the "bad" versions, so if there's some good stuff in a file that you don't want to lose (for example, icons.52.js, just change the includes to include that version. No throwing the baby out with the bath water ...

Benefit 9 - tracking between projects is improved.

If you find that you want to re-use a file (say mouse.130.js) in another project, just use it with it's original version number - mouse.130.js. Your main file might be at version 5 - don't change mouse.130.js to mouse.5.js. The idea is that, if at some future date, you update mouse.130.js in your new project, THEN you can change the version number. Also, if at some future date, you update mouse.130.js in the original project, you can do a simple fgrep of your projects directory to find every project that uses mouse.130.js, and decide if you want to update them on a case-by-case basis.

Benefit 10 - self-documenting life cycle history

You can see at a glance which files are "mature" - they have comparatively old version numbers - and which files are "unstable" - lots of recent versions. This isn't just a help in debugging (the less stable files are more likely to have bugs in them), but also for when you want to extract a file for use as a library routine - stable files are better candidates. If you haven't changed imgcache.js in 100 versions, it's probably a better candidate than, say, toolbar, if toolbar has 20 different versions in the last 50.

The only real problem is getting into the habit of, when everything is working good for a version, immediately saving the main file (index.###.php) as the next version, and then, whenever you go to edit a file, BEFORE your edit it, bump it up to the current version. Once you get into that habit, the whole process is SUCH a time-saver.

One thing I also do is have a file called changelog.###.txt (where ### changes with each version). I just add my latest changes to the top - this way, I can open, say, changelog.140.txt and changelog.150.txt, and the latest changes for both are right at the top - no scrolling. It's handy to just be able to type head -n10 changelog.???.txt if you're lazy - and any really good programmer should find ways to accommodate their inner lazy child.

We should be using version control - but we often don't because it is a bit of a PITA. This is dirt simple - a file browser and a text editor are all you need (and when you get down to it, the file browser is optional).

Microsoft

Journal Journal: Will Google be next? 2

Now that IBM is now worth $25 billion more than Microsoft, instead of bouncing around between being worth more and worth less, will Google be the next one to surpass Microsoft? Currently, Microsoft is still stuck at ~$215 billion, and now Google has broken the $200 billion barrier.

So, will we end 2011 with not just Apple, but also IBM and Google worth more than Microsoft?

Windows

Journal Journal: XP will be around until 2020. 5

It might sound crazy, given that Microsoft is ending all support for XP on April 8th, 2014, but let's look a bit closer.

First. Microsoft can't legally "kill-switch" the software, any more than it can the millions of old copies of Win9x, Win3x, and DOS that are still running. So, XP won't stop working on April 9th, 2014.

As for re-installing and re-activating a legitimate copy that gets clobbered by a drive failure or malware, since Microsoft will no longer be supplying keys, there's no legal impediment to using a keygen. After all, the software is legitimately acquired, but no longer supported by the manufacturer (Microsoft). Microsoft will have no more standing to argue against re-activating a legal copy of XP than a car manufacturer has to demand you stop using your car or restricting the use of non-OEM parts after the warranty support period.

They can cry all they want, it won't change the fact that software is considered a "good" for the purposes of law, not a "service." So, don't throw out those old licenses - they still have a decade of useful life.

SuSE

Journal Journal: The "Great Migration" continues 2

Migrating mail from KMail is a bit of a problem, since it no longer is able to either use the mbox format, nor can it export to it. A cross-platform choice such as Opera or Thunderbird, however, won't import maildir folders.

So, what you need is a little perl script from here - just download the updated version from the link on the page, edit the lines that describe the source directory: eg /home/barbara/.kde4/share/apps/kmail/mail for the source directory, and /home/barbara/maildir2mbox for the destination directory.

One side benefit of switching to mbox format is that you won't waste so much drive space. On a drive with 4k file sector sizes, the average "slop" lost per file is 2k, moving 20,000 messages to 20 files should save, on average, almost 50 megs (plus it's a lot quicker to open 20 files than it is to open 20,000 files).

Republicans

Journal Journal: Cain not Able 4

I guess the accusations of a 13-year-long affair on Monday, which Cain didn't deny, were the final straw that broke the camel's back.

Cain has dropped out of the race.

Cain said he would soon endorse a candidate.

And every candidate still running is probably thinking "Oh My Gawd No, please, NOT ME!"

This is quite a change from earlier in the week, when Cain bought the Adword search results for Ginger White with a sponsored result encouraging people to "Get past the allegations and lies" by visiting caintruth.com.

Of course, now with Cain's own cellphone records pointing the finger at him over his 13-year-long affair, it makes this quote from his wife (on caintruth.com) about another womans accusations particularly apropos:

"I looked at especially this last lady and the things that she said, and Iâ(TM)m thinking, 'He would have to have a split personality to do the things that she said,'" Gloria Cain said of Bialek.

Split personality? Or just someone who thought they were glib enough to fool enough of the people, enough of the time?

One thing is for sure - Cain does not, contrary to his wife's protestations, "Totally respect women" - least of all her. Hopefully she'll find enough strength and self-respect to kick the bum to the curb.

It's one thing to forgive a one-time betrayal. Being cheated on cuts to the quick; being able to rise above the hurt and anger (and fear) to try to rebuild, all the while knowing that you're probably going to fail in the long run, because it's how you would want to be treated if YOU were the one who messed it all up, reflects a certain inner strength and moral compass.

This situation is far, far beyond that, and we've already been treated to too many politically opportunistic "stand by your (dirty lying cheating scumbag) man" scenes, from both parties.

Slashdot Top Deals

It is easier to write an incorrect program than understand a correct one.

Working...