Selling yourself on the internet has become easier thanks to fiverr.
There are many slang terms for cash. Bread, loot, Benjamins, cheddar, and of course fiver, to name a few.
Fiverr doesn't just add an extra "r"
to this colloquialism, it adds a new take on buying and selling
services from virtually anyone online by enabling people to turn their
hobbies and expertise into income easily.
Showcasing
tasks, or gigs, offered by members of the community (many starting at a
flat fee of $5, hence the fiver), the "Gig Economy" enables its sellers
to freely pick and choose among thousands of different goods and services, ranging
from creating a video or business logo to programming help to selling
custom-made gifts.
Sellers are ranked according to how well they do, their response time, and for additional $5 amounts, buyers can augment their base purchase with additional options.
Payments can be made through popular payment services like PayPal, credit cards, even bitcoin.
Of course, in addition to purchasing gigs from other members, you can sell yourself as well by creating gigs of your own, based on whatever you do well and enjoy doing, whether serious, frivolous, or anywhere in between.
In an age where todo lists grow longer and free time grows shorter, Fiverr enables you to delegate small tasks or create things to free up more time for you, for a very modest price.
Join today and become part of the Gig Economy, dig?
Thursday, July 31, 2014
Wednesday, July 30, 2014
Arachnophobia Explained
Picture this.
You are a hominid. Australopithecus africanus, perhaps. Foraging for nuts and berries, perhaps claiming the occasional ancestor of modern squirrels or rats or mice.
Then, it happens. An octagonal shape descends through the cloud tops, descending gently, purposefully. Your tribe, surprised, crouches to the ground and looks up with fearful eyes.
The shape descends, a plume of dust rising from the earth around its landing site. Silence, for a few minutes, and then, a light beams out as a portion of the thing descends, making contact with the ground. Minutes pass. Hours. Finally, the shadow of some eight-legged... thing... is cast upon the dirty earth.
A gigantic spider.
Our bipedal ancestors know not how to react, other than with abject horror. With tremendous strides, the spiders leapt upon their humanoid prey, envenoming them quickly, then moving effortlessly to the next. The resident humanoid population is brought quickly under the arachnids' control.
But then... what's this?
A rogue among the spiders, a rebel, looks upon the scrawlings of animals scribbled upon cave walls with charcoal by humanoids not with indifference, not with pity, but with admiration.
Wait, what's that? In the shadows? Another of his ilk... female.
In the nearly lightless cave, they both gaze in awe at the crude glyphs. Days pass. Weeks. They, too, prey upon the indigent humanoids for sustenance. A few elude their predators with cleverness, savvy. The traits the biped survivors carry in their genetic heritage will be passed along to future generations.
Eventually, their comrades decide Earth is an unsuitable world. With their advanced technology, they can glimpse into the future of this planet, see that eventually these simple humanoids will evolve into creatures most dangerous to a strangely diminutive progeny of their kind.
The octagonal craft lifts off, punches through the cloud tops, and quickly vanishes into the depths of space, a faster-than-light drive hurling the aliens to parts unknown.
Meanwhile, the male and female mate. They begin their own brood of young, and as they emerge from their silken egg sac, they greedily feast upon their father's now headless carcass.
The female looks upon her children for a moment. This planet, she knows, will be less kind to them than her home world. The gravity, greater; the atmosphere, less oxygenated. Eventually, future offspring may reduce in size, though increase in numbers.
Survival, in whatever form, is not without cost.
Years pass. Centuries. Millenia. Millions of "years".
The mother's corpse and her children have long since been cast to the winds of this world as dust. Now, the varied descendants of this alien race lurk in the shadows. The cold equations revealed in their glimpse into the future have, apparently, come true. These humanoids are of tougher mettle than their brutish cousins left behind in the distant past.
Yet, what is that twinge of fear, of horror, that lurks in the minds of so many a human being? When those small, eight-legged creatures dash out from beneath a refrigerator, drop down onto them from a ceiling, or worse, capture them in their vulnerable nakedness upon emerging from their daily cleansing ritual?
In the end, this matters little, for they have mastered... fire.
You are a hominid. Australopithecus africanus, perhaps. Foraging for nuts and berries, perhaps claiming the occasional ancestor of modern squirrels or rats or mice.
Then, it happens. An octagonal shape descends through the cloud tops, descending gently, purposefully. Your tribe, surprised, crouches to the ground and looks up with fearful eyes.
The shape descends, a plume of dust rising from the earth around its landing site. Silence, for a few minutes, and then, a light beams out as a portion of the thing descends, making contact with the ground. Minutes pass. Hours. Finally, the shadow of some eight-legged... thing... is cast upon the dirty earth.
A gigantic spider.
Our bipedal ancestors know not how to react, other than with abject horror. With tremendous strides, the spiders leapt upon their humanoid prey, envenoming them quickly, then moving effortlessly to the next. The resident humanoid population is brought quickly under the arachnids' control.
But then... what's this?
A rogue among the spiders, a rebel, looks upon the scrawlings of animals scribbled upon cave walls with charcoal by humanoids not with indifference, not with pity, but with admiration.
Wait, what's that? In the shadows? Another of his ilk... female.
In the nearly lightless cave, they both gaze in awe at the crude glyphs. Days pass. Weeks. They, too, prey upon the indigent humanoids for sustenance. A few elude their predators with cleverness, savvy. The traits the biped survivors carry in their genetic heritage will be passed along to future generations.
Eventually, their comrades decide Earth is an unsuitable world. With their advanced technology, they can glimpse into the future of this planet, see that eventually these simple humanoids will evolve into creatures most dangerous to a strangely diminutive progeny of their kind.
The octagonal craft lifts off, punches through the cloud tops, and quickly vanishes into the depths of space, a faster-than-light drive hurling the aliens to parts unknown.
Meanwhile, the male and female mate. They begin their own brood of young, and as they emerge from their silken egg sac, they greedily feast upon their father's now headless carcass.
The female looks upon her children for a moment. This planet, she knows, will be less kind to them than her home world. The gravity, greater; the atmosphere, less oxygenated. Eventually, future offspring may reduce in size, though increase in numbers.
Survival, in whatever form, is not without cost.
. . .
Years pass. Centuries. Millenia. Millions of "years".
The mother's corpse and her children have long since been cast to the winds of this world as dust. Now, the varied descendants of this alien race lurk in the shadows. The cold equations revealed in their glimpse into the future have, apparently, come true. These humanoids are of tougher mettle than their brutish cousins left behind in the distant past.
Yet, what is that twinge of fear, of horror, that lurks in the minds of so many a human being? When those small, eight-legged creatures dash out from beneath a refrigerator, drop down onto them from a ceiling, or worse, capture them in their vulnerable nakedness upon emerging from their daily cleansing ritual?
In the end, this matters little, for they have mastered... fire.
Friday, May 23, 2014
Thursday, April 17, 2014
Intermittent PageRequestManagerParserErrorException With Full Postback
I have a project with a bunch of ajaxified Telerik controls within several nested UpdatePanel controls. As part of an Excel export process, I have a button which upon clicking performs a full postback, generates a spreadsheet from a RadGrid, and finally prompts the user to download the file.
Once in a while, though, the export process would throw the dreaded and unhelpful Sys.WebForms.PageRequestManagerParserErrorException exception.
Eilon Lipton's helpful post gave a handy checklist of things not to do, but in spite of ensuring all the common causes were accounted for, it would still occur occasionally.
I tried implementing a workaround shared by a colleague and thus far it appears to have helped. This involves setting the OnClientClicked event handler of the export button so that it triggers a brief pause prior to initiating the full postback using a client-side Javascript.
The error itself points you in the right direction, but some more context sure would be nice. Anyway, apparently this script mitigates situations where the Telerik controls are still in the process of being rendered when the full postback is initiated, corrupting the Response header in the process.
Once in a while, though, the export process would throw the dreaded and unhelpful Sys.WebForms.PageRequestManagerParserErrorException exception.
Eilon Lipton's helpful post gave a handy checklist of things not to do, but in spite of ensuring all the common causes were accounted for, it would still occur occasionally.
I tried implementing a workaround shared by a colleague and thus far it appears to have helped. This involves setting the OnClientClicked event handler of the export button so that it triggers a brief pause prior to initiating the full postback using a client-side Javascript.
function onExportClick(sender, args)
{
setTimeout(
function ()
{
__doPostBack(sender.id, "_MyButtonID")
},
500
);
}
The error itself points you in the right direction, but some more context sure would be nice. Anyway, apparently this script mitigates situations where the Telerik controls are still in the process of being rendered when the full postback is initiated, corrupting the Response header in the process.
Labels:
ASP.NET,
JavaScript,
RadGrid,
Telerik,
troubleshooting,
workaround
Sunday, April 6, 2014
Tuesday, April 1, 2014
Thursday, March 6, 2014
Total Thyroidectomy
Around 18 years of age, my thyroid gland decided to start getting busy.
Meaning, bigger.
Called a "goiter", the result of Hashimoto's thyroiditis, my immune system assaulted the gland over the years and prompted it to create scar tissue and increase its size. As far as it was concerned, this thing was a foreign body needing termination.
Fast-forward to age 40.
A friend of mine who works with kids contracts pertussis, aka "whooping cough", a childhood disease largely controlled with childhood vaccines, but which has found new life thanks at least in part to anti-vaccination activism. I happen to contract almost identical symptoms a short while later. I wake up nights with unprecedented difficulty breathing. My throat feels clogged with mucus, and the hacking cough lasts a good month or two.
I decide it's time to get this thing out of me. Total thyroidectomy.
I consult a local ear-nose-throat doctor. We commit to surgery. She gives me a warm hug on my way out of the initial appointment.
I go to a pre-op appointment. Alex, a Korean physician's assistant, opens the floor to me to ask questions. I ask my wife's questions first, how soon prior to the surgery can she see me? How long is recovery?
Questions answered, I'm out. The following Friday, I wake up at 5-dark-thirty to arrive at the hospital around 7am. The reception nurse, sleepy but awake, leads me into the prep area. I'm asked to disrobe into one of those humiliating ass-open hospital robes, and need help tying off the lower part. She reassures me, she's seen plenty o' butts, and helps tie the knot.
I'm led to a bed, where an intake nurse sees me next. We review my meds, whether I've taken aspirin, fish oil, any other OTC drugs that might cause excessive bleeding. Being a compliant patient, I've refrained from taking these for a full 5 days prior. I've even showered and scrubbed the area with a chlorhexidine-containing soap to minimize the number of microbes loitering around my neck.
The nurse inserts the IV into my forearm. The vein is sketchy, so apologetically she tries again, this time atop my hand. Success!
Bruce, the anesthesiology nurse, warmly greets me. A friend snaps a shot of me smiling wanly in the hospital bed, and then I'm wheeled off toward the operating room.
Upon arrival, Bruce whips a syringe out from his chest pocket, then injects its contents into my IV. Versed, he says. Cool! I'm hopefully I'll start feeling woozy, euphoric. No such luck, however.
I'm there, in the OR, a few minutes. Someone places a mask halfway across my nose and mouth. I breathe normally and then... like some ridiculously swift transition in a movie, I find myself in recovery. I have utterly no recollection of the events that transpired.
I gingerly probe my neck, and it seems genuinely less massive. The thyroid is gone, it would seem. A tube leading to a squeeze bulb meant to suck out fluids hangs at my chest, and the remainder of the wound is sealed with some sort of novel purple "glue" meant to bind incisions.
A friend along with my wife rescue me from the hospital and we drive. We decide to have dinner at a local sushi restaurant we enjoy. Despite the lingering haze of the anesthetic (which imposes a noticeable delay as I try to piss in the restroom), I find I can fairly easily chew and swallow our food. Famished, I devour it eagerly.
The first few days following surgery, I numb the pain with hydrocodone provided by the surgeon. Recovery is, thankfully, largely uneventful. Now at a week afterwards, the glue has all but fallen away, and the surfacemost areas of the scar have healed over. I now apply Mederma several times daily to deter the formation of an annoyingly visible scar.
I can swallow much more easily, and although now I add another medication to my daily regimen (levothyroxine, the brand name of the well-regarded thyroid replacement hormone), along with Humalog and Lantus to manage my type 1 diabetes.
It doesn't bother me as much. Just being able to breathe and swallow more easily is a wondrous thing.
Meaning, bigger.
Called a "goiter", the result of Hashimoto's thyroiditis, my immune system assaulted the gland over the years and prompted it to create scar tissue and increase its size. As far as it was concerned, this thing was a foreign body needing termination.
Fast-forward to age 40.
A friend of mine who works with kids contracts pertussis, aka "whooping cough", a childhood disease largely controlled with childhood vaccines, but which has found new life thanks at least in part to anti-vaccination activism. I happen to contract almost identical symptoms a short while later. I wake up nights with unprecedented difficulty breathing. My throat feels clogged with mucus, and the hacking cough lasts a good month or two.
I decide it's time to get this thing out of me. Total thyroidectomy.
I consult a local ear-nose-throat doctor. We commit to surgery. She gives me a warm hug on my way out of the initial appointment.
I go to a pre-op appointment. Alex, a Korean physician's assistant, opens the floor to me to ask questions. I ask my wife's questions first, how soon prior to the surgery can she see me? How long is recovery?
Questions answered, I'm out. The following Friday, I wake up at 5-dark-thirty to arrive at the hospital around 7am. The reception nurse, sleepy but awake, leads me into the prep area. I'm asked to disrobe into one of those humiliating ass-open hospital robes, and need help tying off the lower part. She reassures me, she's seen plenty o' butts, and helps tie the knot.
I'm led to a bed, where an intake nurse sees me next. We review my meds, whether I've taken aspirin, fish oil, any other OTC drugs that might cause excessive bleeding. Being a compliant patient, I've refrained from taking these for a full 5 days prior. I've even showered and scrubbed the area with a chlorhexidine-containing soap to minimize the number of microbes loitering around my neck.
The nurse inserts the IV into my forearm. The vein is sketchy, so apologetically she tries again, this time atop my hand. Success!
Bruce, the anesthesiology nurse, warmly greets me. A friend snaps a shot of me smiling wanly in the hospital bed, and then I'm wheeled off toward the operating room.
Upon arrival, Bruce whips a syringe out from his chest pocket, then injects its contents into my IV. Versed, he says. Cool! I'm hopefully I'll start feeling woozy, euphoric. No such luck, however.
I'm there, in the OR, a few minutes. Someone places a mask halfway across my nose and mouth. I breathe normally and then... like some ridiculously swift transition in a movie, I find myself in recovery. I have utterly no recollection of the events that transpired.
I gingerly probe my neck, and it seems genuinely less massive. The thyroid is gone, it would seem. A tube leading to a squeeze bulb meant to suck out fluids hangs at my chest, and the remainder of the wound is sealed with some sort of novel purple "glue" meant to bind incisions.
A friend along with my wife rescue me from the hospital and we drive. We decide to have dinner at a local sushi restaurant we enjoy. Despite the lingering haze of the anesthetic (which imposes a noticeable delay as I try to piss in the restroom), I find I can fairly easily chew and swallow our food. Famished, I devour it eagerly.
The first few days following surgery, I numb the pain with hydrocodone provided by the surgeon. Recovery is, thankfully, largely uneventful. Now at a week afterwards, the glue has all but fallen away, and the surfacemost areas of the scar have healed over. I now apply Mederma several times daily to deter the formation of an annoyingly visible scar.
I can swallow much more easily, and although now I add another medication to my daily regimen (levothyroxine, the brand name of the well-regarded thyroid replacement hormone), along with Humalog and Lantus to manage my type 1 diabetes.
It doesn't bother me as much. Just being able to breathe and swallow more easily is a wondrous thing.
Labels:
Hashimoto's,
thyroid,
thyroidectomy,
type 1 diabetes
Thursday, February 20, 2014
FocusMonitor Identifies Processes Stealing Focus
Recently I've been having issues with some process stealing focus from the application I'm working in.
Like I'll be in Visual Studio or Word or Waterfox (a 64-bit performance focused build of Firefox) and suddenly focus is swapped for a split second and whatever word I'm typing gets cut off or a button I'm clicking isn't.
I found a very helpful post by Matt Gertz from some years back where he provides some VB.NET code for an application that can monitor processes that steal focus from it. I'm more of a C# guy myself, so I've run with Matt's core logic and created a 32-bit C# application in Visual Studio 2010 which provides similar functionality. It will also let you copy the log info to the clipboard to paste wherever for further examination.
I call it FocusMonitor, and you can download the source code.
Like I'll be in Visual Studio or Word or Waterfox (a 64-bit performance focused build of Firefox) and suddenly focus is swapped for a split second and whatever word I'm typing gets cut off or a button I'm clicking isn't.
I found a very helpful post by Matt Gertz from some years back where he provides some VB.NET code for an application that can monitor processes that steal focus from it. I'm more of a C# guy myself, so I've run with Matt's core logic and created a 32-bit C# application in Visual Studio 2010 which provides similar functionality. It will also let you copy the log info to the clipboard to paste wherever for further examination.
I call it FocusMonitor, and you can download the source code.
Sunday, February 2, 2014
Cannot Install Windows Updates
My Windows 7 install inexplicably began to have issues with installing updates.
Service pack 1 installed fine using an installer, but other incremental updates consistently failed, they would download but they'd be skipped by Windows Update and reported as having not been installed.
One fix involved deleting a folder and letting the update process recreate it, specifically this one:
This folder contains part of an internal Windows database which it uses to track updates, and a log file, dberr.txt, which was rife with error messages like these:
CatalogDB: 6:27:32 PM 2/1/2014: catdbsvc.cpp at line #3454 encountered error 0x8007000e
CatalogDB: 6:27:32 PM 2/1/2014: catadnew.cpp at line #1915 encountered error 0x8007000e
CatalogDB: 2:16:29 PM 2/2/2014: catdbsvc.cpp at line #969 encountered error 0x8007000e
Interestingly, the error 0x8007000e was frequently returned as a response in the failed attempts to update.
Based on this seemingly corrupted database folder, I decided to try deleting it and then have Windows recreate it by taking the following steps, and now updates are again able to be installed.
After doing this I was able to download and install the latest updates successfully.
Service pack 1 installed fine using an installer, but other incremental updates consistently failed, they would download but they'd be skipped by Windows Update and reported as having not been installed.
One fix involved deleting a folder and letting the update process recreate it, specifically this one:
C:\WINDOWS\SYSTEM32\catroot2
This folder contains part of an internal Windows database which it uses to track updates, and a log file, dberr.txt, which was rife with error messages like these:
CatalogDB: 6:27:32 PM 2/1/2014: catdbsvc.cpp at line #3454 encountered error 0x8007000e
CatalogDB: 6:27:32 PM 2/1/2014: catadnew.cpp at line #1915 encountered error 0x8007000e
CatalogDB: 2:16:29 PM 2/2/2014: catdbsvc.cpp at line #969 encountered error 0x8007000e
Interestingly, the error 0x8007000e was frequently returned as a response in the failed attempts to update.
Based on this seemingly corrupted database folder, I decided to try deleting it and then have Windows recreate it by taking the following steps, and now updates are again able to be installed.
- Open a command prompt with administrator access.
- Stop the Cryptographic Services, which normally has a lock on the above mentioned folder, by typing this: NET STOP cryptosvc
- Rename (or, if you're brave, delete) the C:\WINDOWS\SYSTEM32\catroot2 folder.
- Start the Cryptographic Services by typing: NET START cryptosvc
- Run Windows Update, and then have it download and install one or more updates to verify that it does so successfully.
After doing this I was able to download and install the latest updates successfully.
Labels:
automatic updates,
troubleshooting,
windows,
windows 7,
workaround
Monday, January 20, 2014
Saturday, January 11, 2014
Manually Invoking TRIM To Restore SSD Performance
I've had my SSD for almost two years now and although Intel's SSD utility shows it as having plenty of life remaining, I'd been reading up on TRIM and the details of how SSDs manage their space.
TRIM is a kind of garbage collection for SSDs, for although SSDs don't experience data fragmentation of the sort that hard drives do, there is clutter which can accumulate over time and negatively affect performance.
I found a forum post on "refreshing" SSD performance which mentioned a tiny utility called ForceTrim, which tells your SSD to perform TRIM processing and smooth out the "wrinkles" in its data storage.
Using CrystalDiskMark to benchmark my SSD performance before running ForceTrim, I saw performance close to what it was when I first started using this SSD as my operating system drive:
I then opened ForceTrim, selected my C: drive, and clicked TRIM. As the tool advised, I waited around five minutes for the drive to "recover", then reran the benchmark:
It does appear that manually invoking TRIM can provide a modest boost in read and write performance for an SSD. Perhaps in the SSD age, forcing TRIM once in a while is the "new" defrag?
TRIM is a kind of garbage collection for SSDs, for although SSDs don't experience data fragmentation of the sort that hard drives do, there is clutter which can accumulate over time and negatively affect performance.
I found a forum post on "refreshing" SSD performance which mentioned a tiny utility called ForceTrim, which tells your SSD to perform TRIM processing and smooth out the "wrinkles" in its data storage.
Using CrystalDiskMark to benchmark my SSD performance before running ForceTrim, I saw performance close to what it was when I first started using this SSD as my operating system drive:
![]() |
BEFORE - Seems pretty close to new SSD performance. |
I then opened ForceTrim, selected my C: drive, and clicked TRIM. As the tool advised, I waited around five minutes for the drive to "recover", then reran the benchmark:
![]() |
AFTER - Modest gains pretty much across the board. |
It does appear that manually invoking TRIM can provide a modest boost in read and write performance for an SSD. Perhaps in the SSD age, forcing TRIM once in a while is the "new" defrag?
Labels:
performance,
ssd,
TRIM,
windows
Monday, January 6, 2014
Friday, December 27, 2013
LinkButton OnClick Not Firing After OnClientClick
I worked around an oddball problem where the OnClick event of an ASP LinkButton would not fire following execution of some JavaScript tied to its OnClientClick.
The intent is to enable a row in a Telerik RadGrid to be removed by clicking the corresponding button in the row, and more specifically have a modal confirmation dialog appear to prompt the user to confirm their choice.
Here's markup for the GridTemplateColumn containing the button:
The confirmAspButton function is a little JavaScript which is bound to the OnClientClick method of the LinkButton. If the user clicks OK, the confirmation passes and a postback will occur to execute the code beneath the OnClick method, whereas if they click Cancel the dialog will simply disappear.
Seems simple enough, yet for some odd reason, in Internet Explorer 10, the LinkButton brought up the dialog just fine, and although the Cancel button click performed as expected, clicking OK had the same effect as cancel and merely cleared the dialog without executing the underlying code.
I managed to find a workaround via StackOverflow which suggests using a Button rather than a LinkButton. Sure enough, this did the trick, for whatever oddball reason whose particulars I could care less to dive into...
The intent is to enable a row in a Telerik RadGrid to be removed by clicking the corresponding button in the row, and more specifically have a modal confirmation dialog appear to prompt the user to confirm their choice.
Here's markup for the GridTemplateColumn containing the button:
<telerik:GridTemplateColumn HeaderText="Remove" UniqueName="Remove" FilterControlWidth="20"> <ItemTemplate> <div style="cursor: hand;"> <asp:LinkButton runat="server" ID="_RemoveItem" Name="_RemoveItem" Text=" X " Font-Underline="False" ForeColor="DarkBlue" OnClientClick="confirmAspButton(this, 'Are you sure?'); return false;" OnClick="RemoveItemButtonClick" style="font-weight:bold;color:red;"> </asp:LinkButton> </div> </ItemTemplate> <HeaderStyle Width="55"></HeaderStyle> </telerik:GridTemplateColumn>
The confirmAspButton function is a little JavaScript which is bound to the OnClientClick method of the LinkButton. If the user clicks OK, the confirmation passes and a postback will occur to execute the code beneath the OnClick method, whereas if they click Cancel the dialog will simply disappear.
function confirmAspButton(button, message) { function aspButtonCallbackFn(arg) { if (arg) { window.__doPostBack(button.name, ""); } } window.radconfirm(message, aspButtonCallbackFn, 330, 120, null, "Confirm"); }
Seems simple enough, yet for some odd reason, in Internet Explorer 10, the LinkButton brought up the dialog just fine, and although the Cancel button click performed as expected, clicking OK had the same effect as cancel and merely cleared the dialog without executing the underlying code.
I managed to find a workaround via StackOverflow which suggests using a Button rather than a LinkButton. Sure enough, this did the trick, for whatever oddball reason whose particulars I could care less to dive into...
Labels:
ASP.NET,
C#,
internet explorer,
JavaScript,
RadGrid,
Telerik,
workaround
Thursday, December 26, 2013
Friday, November 8, 2013
Tuesday, October 1, 2013
Repost!
Occasionally I post links to various content on Reddit. Often, a diligent member of the internet's police force informs me that somehow a given image or link has *gasp* already been posted somewhere else on the internet.
"Repost!"
O NOES! Holy Jar Jar Binks' prolapsed rectum, internet police!
What many who post this don't seem to realize is that a) their message is pointless, and b) Reddit's popularity is all about the pageviews.
Reddit lives for pageviews. Billions of them, and of those millions are by unique visitors. Some of those visitors are smart, some aren't, and a few are dumb as a sack of hammers. That said, if Reddit were something like a think tank (which it isn't) or a Wikipedia-like foundation (nope) instead of a for-profit company, a self-proclaimed “part-sibling-once-removed” of Condé Nast, Inc., it might do things smarter than it does now.
Putting aside respect for the massive popularity of Reddit and the hard work its staff and board and communities provide, Reddit the site isn't that bright when it comes to sniffing out content that's already been posted.
There is the somewhat anemic search functionality, which conscientious users occasionally invoke to perform keyword searches in search of existing content, and there are third-party sites like KarmaDecay which provide reverse image search capability for specific subreddits or site-wide. However, note that there is no smart search capability exposed to the users which is savvy to detect whether a given link ultimate leads to something that's been posted before.
Granted, they are in the red. Running a site as popular as Reddit is a huge undertaking, and the infrastructure required to support it increases with its popularity. Even if such smart search were a high priority, investing in its development would bleed resources from their daily operations.
If anything, users of Reddit who cry "repost" should realize that they're doing more to hurt the site than they are to help it. Comments on Reddit can be upvoted and downvoted, which requires processing power and bandwidth. The loading and rendering those comments also takes power. Worse than the fact that telling someone they've reposted something adds nothing of substance to a discussion about the content in question, it's wasting Reddit's resources.
If content is worthy of being reposted, it often generates some constructive discussion, particularly to those for whom it's a novel find that have never, ever, seen it before. Engaging good content rather than whining about that already seen seems far more worthy of Reddit's dedication to community than its users chiding submitters of content one word at a time.
tl;dr: Repost police, get over yourselves and do something useful for a change.
Labels:
advertising,
Jar Jar Binks,
rant,
reddit,
repost
Wednesday, July 10, 2013
Ender's Game
Orson Scott Card sure is a classy guy.
Long known for his staunch advocacy against homosexuality and outright disrespect of homosexual people, and just in time for the upcoming film adaptation of his popular novel, Ender's Game, he makes a curiously timely plea to the movie-going public to put aside his views, stating in a statement to magazine Entertainment Weekly, "The gay marriage issue is moot."
How quaint, and convenient! Personally I dislike lining the coffers of such people with my dollars, however groundbreaking their works are.
Someday, all knowledge and the fruits of people's creativity may be free. No longer will talented writers, actors, musicians, or others have to take on multiple minimum-wage jobs to make ends meet while they struggle on the side to achieve their dreams and pursue their passions.
Instead, everyone will have their basic needs provided for so that, as Maslow indicates in his hierarchy of needs, people will be able to self-actualize and actually live rather than spend much of their daily life worrying about paying the bills, or their very survival. Not now, not in decades, perhaps not in millenia, but someday... hopefully!
I think a good first step toward such an audacious way of life is to share information.
Here, for example is a freely available set of ebooks in PDF format of the Ender's saga, which can be read online or downloaded. I encourage anyone interested in this fine piece of literature to obtain it at their leisure, without having to pay for it, and with the satisfaction that no royalties whatsoever will make it into Orson Scott Card's quite intolerant little hands.
Long known for his staunch advocacy against homosexuality and outright disrespect of homosexual people, and just in time for the upcoming film adaptation of his popular novel, Ender's Game, he makes a curiously timely plea to the movie-going public to put aside his views, stating in a statement to magazine Entertainment Weekly, "The gay marriage issue is moot."
How quaint, and convenient! Personally I dislike lining the coffers of such people with my dollars, however groundbreaking their works are.
Someday, all knowledge and the fruits of people's creativity may be free. No longer will talented writers, actors, musicians, or others have to take on multiple minimum-wage jobs to make ends meet while they struggle on the side to achieve their dreams and pursue their passions.
Instead, everyone will have their basic needs provided for so that, as Maslow indicates in his hierarchy of needs, people will be able to self-actualize and actually live rather than spend much of their daily life worrying about paying the bills, or their very survival. Not now, not in decades, perhaps not in millenia, but someday... hopefully!
I think a good first step toward such an audacious way of life is to share information.
Here, for example is a freely available set of ebooks in PDF format of the Ender's saga, which can be read online or downloaded. I encourage anyone interested in this fine piece of literature to obtain it at their leisure, without having to pay for it, and with the satisfaction that no royalties whatsoever will make it into Orson Scott Card's quite intolerant little hands.
Labels:
discrimination,
free,
god,
religion
Saturday, June 29, 2013
Dell Vostro 200 Fan Noise
The Dell Vostro 200 in its mini tower/desktop case is a decent computer with just one exception.
NOISE.
When powered on, the fans shoot up to their maximum RPM for a second or so, then slow down. Depending on what you're doing the fan noise is anything from the level of relatively benign white noise to a constant or fluctuating jet engine like drone. Scanning for malware, playing a graphics-intensive game, defragmenting the hard drive, anything with lots of CPU activity prompts the Vostro 200's fans to go full speed.
I found a simple solution to this dilemma. Inside the case there are two 80mm fans for cooling the CPU. One is mounted directly atop the CPU heatsink, and the other is mounted vertically in a bracket along the right-hand side of the computer to push air out ventilation holes in the case.
I had a nice, quiet, 120mm NZXT "performance" fan lying around and decided to use it instead of the two 80mm turbofans that came with the system.
The CPU fan atop the heatsink is clipped on with several plastic clips, I simply removed each of these with pliers and discarded them since they'd just be in the way of the wider 120mm fan. The exhaust fan alongside is screwed to the case, so I removed it likewise and discarded it.
I then removed the vast amounts of dust and dog hair that had accumulated beneath the fan. As the case is lying horizontal to the desk, I decided to loop some narrow zip ties through the fan's screw holes and through holes in the rear grille of the case. I secured the ties with enough tension to keep the fan hovering just above the plastic and metal of the heatsink assembly.
It's a mystery why Dell chose seemingly the loudest fans possible for this computer. Or, perhaps it isn't so mysterious, perhaps loudness happens to be an unfortunate side effect of cheap hardware. Or, perhaps they wanted to make it seem especially sleek and high tech by having it mimic a 747 taking off.
Regardless, now the new 120mm fan runs at a quiet, constant speed, and keeps CPU temperatures well within normal limits, with no fear of liftoff.
NOISE.
When powered on, the fans shoot up to their maximum RPM for a second or so, then slow down. Depending on what you're doing the fan noise is anything from the level of relatively benign white noise to a constant or fluctuating jet engine like drone. Scanning for malware, playing a graphics-intensive game, defragmenting the hard drive, anything with lots of CPU activity prompts the Vostro 200's fans to go full speed.
I found a simple solution to this dilemma. Inside the case there are two 80mm fans for cooling the CPU. One is mounted directly atop the CPU heatsink, and the other is mounted vertically in a bracket along the right-hand side of the computer to push air out ventilation holes in the case.
I had a nice, quiet, 120mm NZXT "performance" fan lying around and decided to use it instead of the two 80mm turbofans that came with the system.
The CPU fan atop the heatsink is clipped on with several plastic clips, I simply removed each of these with pliers and discarded them since they'd just be in the way of the wider 120mm fan. The exhaust fan alongside is screwed to the case, so I removed it likewise and discarded it.
I then removed the vast amounts of dust and dog hair that had accumulated beneath the fan. As the case is lying horizontal to the desk, I decided to loop some narrow zip ties through the fan's screw holes and through holes in the rear grille of the case. I secured the ties with enough tension to keep the fan hovering just above the plastic and metal of the heatsink assembly.
It's a mystery why Dell chose seemingly the loudest fans possible for this computer. Or, perhaps it isn't so mysterious, perhaps loudness happens to be an unfortunate side effect of cheap hardware. Or, perhaps they wanted to make it seem especially sleek and high tech by having it mimic a 747 taking off.
Regardless, now the new 120mm fan runs at a quiet, constant speed, and keeps CPU temperatures well within normal limits, with no fear of liftoff.
Labels:
Dell Vostro 200,
noise,
troubleshooting
Tuesday, June 11, 2013
Saturday, May 25, 2013
Sound Card Stereo Channel Mysteriously Dies
The left channel of my Sound Blaster X-Fi Xtreme Audio sound card decided to die.
I carefully smoothed my headset cabling in case a break had developed in the typically very fine stranded wiring of the headphones, and also tried removing the plug with an MP3 playing and noticed that only one channel was being played back, the right with the plug fully inserted, left if I just slightly unplugged it. Just in case I plugged the headphones into my laptop; perfect stereo sound, so something's definitely up with the card.
I popped open the computer and examined the headphone jacks on the card. They appeared to be made of plain copper, and they seemed to have oxidation, much like an old penny.
I took a flat-bladed screwdriver from an eyeglass repair kit and carefully scraped away at the copper surface, revealing shiny metal underneath, then blasted away any residue with some canned air.
Now my music is once again in glorious stereo!
I carefully smoothed my headset cabling in case a break had developed in the typically very fine stranded wiring of the headphones, and also tried removing the plug with an MP3 playing and noticed that only one channel was being played back, the right with the plug fully inserted, left if I just slightly unplugged it. Just in case I plugged the headphones into my laptop; perfect stereo sound, so something's definitely up with the card.
I popped open the computer and examined the headphone jacks on the card. They appeared to be made of plain copper, and they seemed to have oxidation, much like an old penny.
I took a flat-bladed screwdriver from an eyeglass repair kit and carefully scraped away at the copper surface, revealing shiny metal underneath, then blasted away any residue with some canned air.
Now my music is once again in glorious stereo!
Labels:
audio,
Sound Blaster,
troubleshooting,
workaround
Friday, May 10, 2013
Sony SMP-N200 Streaming Media Player Review
This marks the 1-year anniversary since ditching DirecTV for the Sony SMP-N200 streaming media player.
The device features HDMI, optical, and RCA jacks, as well as an ethernet port.
So far, the experience has been great! Rather than paying around $900 a year for satellite, I'm paying just what I'd been paying before for internet, around $40 monthly, a decent compromise.
The interface of the player is very similar to that of Sony's Bravia series of TVs.
The remote enables navigation to the various options and settings. A great thing about this little black box is that you can browse the web, grabbing either streaming video from YouTube and elsewhere, or just general browsing. However, one trick is to use a smartphone app, Sony Media Remote, so that you gain the benefit of a keyboard; trying to "type" using the Sony's remote is an exercise in aggravation, to say the least.
For over-the-air TV, a Winegard antenna hung up near the ceiling of the living room plus a signal amplifier has managed to pull in 8 stations, six broadcast in my immediate area, and two more from towers about 40 miles away.
With the Sony SMP-N200 I can also stream downloaded video over my home's wireless network. To do this, I first needed to enable Homegroup on my Windows 7 desktop PC, and then I installed Nero MediaHome to act as a server for the Sony. Most any popular encoding format (AVI, MPG, MKV, WMV, and more) can stream from my computer to my TV with very little effort.
All in all, aside from the clunky remote, I'd give it a solid 4 out of 5 stars for the money I've saved thus far over cable or satellite.
The device features HDMI, optical, and RCA jacks, as well as an ethernet port.
So far, the experience has been great! Rather than paying around $900 a year for satellite, I'm paying just what I'd been paying before for internet, around $40 monthly, a decent compromise.
The interface of the player is very similar to that of Sony's Bravia series of TVs.
The remote enables navigation to the various options and settings. A great thing about this little black box is that you can browse the web, grabbing either streaming video from YouTube and elsewhere, or just general browsing. However, one trick is to use a smartphone app, Sony Media Remote, so that you gain the benefit of a keyboard; trying to "type" using the Sony's remote is an exercise in aggravation, to say the least.
For over-the-air TV, a Winegard antenna hung up near the ceiling of the living room plus a signal amplifier has managed to pull in 8 stations, six broadcast in my immediate area, and two more from towers about 40 miles away.
With the Sony SMP-N200 I can also stream downloaded video over my home's wireless network. To do this, I first needed to enable Homegroup on my Windows 7 desktop PC, and then I installed Nero MediaHome to act as a server for the Sony. Most any popular encoding format (AVI, MPG, MKV, WMV, and more) can stream from my computer to my TV with very little effort.
All in all, aside from the clunky remote, I'd give it a solid 4 out of 5 stars for the money I've saved thus far over cable or satellite.
Tuesday, May 7, 2013
The "GenerateResource" Task Failed Unexpectedly
Shortly after setting up a RAM disk using the freeware version of Dataram RAMDisk to see whether Visual Studio 2010 might compile a huge solution faster, I began getting the following errors after relocating the system's temp files to the root of the RAM drive:
I dug around and found numerous references to existing bug reports and a few workarounds. I tried unsetting the readonly file system attribute in my solution folder, setting the GenerateResourceNeverLockTypeAssemblies property in my project file to true or false to downgrade some security parameters, but ultimately it was the top answer here that did the trick.
I had set the environment variables for the RAM drive initially to just R:\, referencing the root of the drive. Apparently VS 2010 doesn't like this, so I simply created a new folder on my ram disk named TEMP, and then updated the environment variables accordingly:
Just to rule it out, and also because I hadn't rebooted Windows in a while, I also opened Control Panel => Programs and Features, and performed a Repair on Microsoft .NET Framework 4 Client Profile just in case the framework files might've gotten corrupted somehow, and then restarted.
Problem solved! Now on to see whether Joseph Fluckiger's experimentation which returned lukewarm results on performance of building to a RAM disk holds water for a solution with, say, dozens of projects.
The "GenerateResource" task failed unexpectedly.
System.TypeInitializationException: The type initializer for 'Microsoft.Build.Utilities.FileTracker' threw an exception. ---> System.NullReferenceException: Object reference not set to an instance of an object.
I dug around and found numerous references to existing bug reports and a few workarounds. I tried unsetting the readonly file system attribute in my solution folder, setting the GenerateResourceNeverLockTypeAssemblies property in my project file to true or false to downgrade some security parameters, but ultimately it was the top answer here that did the trick.
I had set the environment variables for the RAM drive initially to just R:\, referencing the root of the drive. Apparently VS 2010 doesn't like this, so I simply created a new folder on my ram disk named TEMP, and then updated the environment variables accordingly:
Just to rule it out, and also because I hadn't rebooted Windows in a while, I also opened Control Panel => Programs and Features, and performed a Repair on Microsoft .NET Framework 4 Client Profile just in case the framework files might've gotten corrupted somehow, and then restarted.
Problem solved! Now on to see whether Joseph Fluckiger's experimentation which returned lukewarm results on performance of building to a RAM disk holds water for a solution with, say, dozens of projects.
Labels:
C#,
RAMdisk,
troubleshooting,
Visual Studio 2010,
windows 7
Wednesday, February 20, 2013
Left and Right Double Quotation Marks
Often I find myself wanting to use left and right double quotation marks rather than the generic ones.
Especially if you happen to be quoting someone, it adds a touch of class to use these rather than their boring unicode counterparts. This site outlines the differences between the two, and for convenience I'm posting each here so that either one can be easily copied and pasted:
Below is as an animated GIF showing each of the left and right double quotation marks as well as the plain old unicode ones in CharMap, and keystrokes you can use to type the former if you're so inclined:
Especially if you happen to be quoting someone, it adds a touch of class to use these rather than their boring unicode counterparts. This site outlines the differences between the two, and for convenience I'm posting each here so that either one can be easily copied and pasted:
“
Left quotation mark. Hold down ALT and hit 0147 on your numeric keypad.
”
Right quotation mark. Hold down ALT and hit 0148 on your numeric keypad.
Below is as an animated GIF showing each of the left and right double quotation marks as well as the plain old unicode ones in CharMap, and keystrokes you can use to type the former if you're so inclined:
![]() |
A handy animated GIF outlining them all. |
Labels:
ASCII,
CharMap,
double quotation marks,
quotes,
Unicode
Subscribe to:
Posts (Atom)