I just saw where Ayn Rand’s work Atlas Shrugged is being made into a movie starring Brad Pitt(gag) and Angelina Jolie(double-gag!). I have been a big fan of Rand’s works since I was in high school. The first book I really read and enjoyed while in school was Anthem. It was a terrific book and kept with her political tone of rampant individualism. I highly recommend it to any avid reader. I read Atlas Shrugged a long time ago and I really don’t remember that much about it. I remember thinking it was kind of boring. Like I said, I am a big fan of her books but not her politics. I really think objectivism has some fatal flaws as a worldview. Maybe I’ll blog on that later.
I was just reading this article about how HBO is upset with the Slingbox. Now, the Slingbox is a great gadget. Just plug your TV output into it and you can watch your TV feed from anywhere on the internet through your DSL connection. I am struggling to see what the problem is with that concept. They say they are worried about their programs being copied during the process of “rebroadcast” over the internet. Let’s go with that idea then(even though Slingbox doesn’t even do that). Ok, I will stop using the Slingbox and start using a TV capture card in my PC with Windows Media Encoder. Or maybe I’ll use MythTV, or Tivo2Go. Or my freakin’ VCR. All four of those options are perfectly 100% legal and they are made for recording. Was HBO just formed yesterday or something. Don’t they know that recording television shows is about as illegal as popping popcorn.
I made an Xbox to USB adapter over the weekend. To make one, just splice the quick-disconnect side of an Xbox controller dongle onto the Type-A side of a USB cable. Solder white-to-white, black-to-black, green-to-green, and then twist and solder the sheathing from the cables together. You can just leave the yellow wire dangling. It’s not used. You can now connect your Xbox controller to your PC as a gamepad. You will need to grab the latest xid drivers for that though. You can also plug in your xbox memory card and use it to backup your gamesaves onto your PC or download new gamesaves and transfer them to your Xbox like an Action Replay. To do that just grab the Action Replay software free from the internet here. Very useful for getting those annual NCAA football roster updates off the web onto your Xbox.
Here is a pic:
I just saw where the NCAA hit Kansas with “Lack of Institutional Control” and only gave them 2 years probation. So I guess that explains why Alabama got 21 scholarships and a 2 year post-season play ban when they did not get charged with “Lack of Institutional Control”. Give me a break! The NCAA infractions committee is about as fair and balanced as moveon.org.
I was reading this blog entry and was just astonished at the lack of spine people have to call evil by it’s name. You’ll have to excuse me if I don’t feel sorry for a child killer/rapist /cannibal. I mean come on, if this guy doesn’t qualify as evil then we should just throw that word completely out of the English gloss. The word exists because evil exists. Millions of people suffer from all forms of depression, anxiety, mental illness, etc., yet they don’t end up doing what this demon in human form did. It’s a 1 in a million person who will do something like that and I don’t mind calling him by his name and removing him from this Earth in as painful a way as possible. Sociopaths by definition can’t be rehabilitated, and that is why he should be executed. It’s only a shadow of real justice, but at least it preserves the meaning of evil by showing that some things just can’t be forgiven by men.
I’m working on cleaning up the PodWrangler source code right now so I will post it with the executable soon. I need to be sure it’s clean and that I don’t leave any glaring buffer overflows in it. I am also working on the .pcast file support. I will post it all when it’s done. I hope to GPL it when I finish so I will have to put the source out. I hope to reduce the size of the executable a little too by doing some more intelligent GDI to paint the windows. That will help reduce the size of the resource section.
My son had his tonsils and adenoids out this morning and by tonight he is running and playing like he’s just fine. It seems like the younger they are the quicker they recover sometimes. He will be tender for a few days I’m sure but we had to keep on him tonight to make sure he didn’t run too much and get too hot. Kids just amaze me sometimes. I’d probably still be on the couch whining right now.
We are at Children’s Hospital right now getting my son’s tonsils out. Children’s is such a great place. Blogging from a Blackberry is the pits by the way.
Added a few new features and remedied a buffer overflow crash in the install function. Here is the list of changes:
- Added the ability to put a “filter” on each feed. Some podcast feeds have .txt articles and .mp3 files in them so this will let you filter out any stuff you don’t want. For right now it’s just a simple text string search. For example, if you put just “.mp3″ in the filter
it will only download mp3’s. No wildcards or anything are allowed. Later I’ll put regex support in.
- Modified the user interface and took away all the prompting for stuff when you add a feed. It now just goes straight in the feed list and you can modify download dir. and filter’s later.
- Finally fixed the icon problem for 16-bit that has plagued me for 5 versions.
The next version will support .pcast files like iTunes uses.
Windows has a pretty simple multi-thread interface. It has all the basics you would expect to keep your threads playing nice. It might not be totally POSIX but hey it’s Windows, what do you expect. That being said, when it comes to multi-threaded programming in Windows the problem is not with the API but with the programmer. It’s one of the hardest things to debug in the world of programming. And that goes for any OS. Not just Windows. Keep the following in mind and you will be a lot saner in the end:
- If you just want threads so you can separate your GUI from your workers, fire off a master worker and have it use WaitForSingleObject
to run any child worker threads you might need. This cuts down on complexity by keeping the flow somewhat linear but still giving that
- If you absolutely must have concurrent copies of the same thread running, be very judicious in your use of Critical Sections and Mutexes. This is where you will run into deadlocks and race conditions. These are essential for successful multi-threading but they will also bite you in the rear in a heartbeat.
- Don’t forget about your main thread. Remember, you always have at least one thread running and you can’t exclude it from the mix when it comes to global variables and atomic sections.
- The hardest glitches to debug will always happen in production and not in testing. You want to bring the complexity of your program
up very slowly so you can fix small problems instead of big ones.
PodWrangler is multi-threaded but the worker threads don’t run concurrently. There really is no need since it would saturate most people’s DSL connections to have more that 1 or 2 downloads going at the same time. Take stock of your program and see if concurrent threads are really absolutely necessary. Most of the time they aren’t.