(Mostly) Free Software Tools
My list of really good free software (at least most of them) tools for common operations For Windows (and sometimes Mac):
- Data
- Archival: 7-Zip (http://www.7-zip.org/)
- Encryption: TrueCrypt (http://www.truecrypt.org/)
- Data Integrity: QuickPAR (http://www.quickpar.org.uk/)
- Password Management (Win & Mac): Keepass (http://keepass.info/)
- Media
- Photo Manipulation: Paint.NET (http://www.getpaint.net/)
- Audio Conversion: DBPowerAmp (mostly free; some codecs are a little weird); iTunes is good for AAC/m4a (http://www.dbpoweramp.com/)
- Audio Playback: WinAmp (http://www.winamp.com/)
- Audio Ripping: Audiograbber (http://www.audiograbber.com-us.net/)
- Video Playback (Win & Mac): VLC
- Image View/Previews (Mac): Xee (http://wakaba.c3.cx/s/apps/xee.html)
- Internet
- FTP: FileZilla (http://filezilla-project.org/)
- Torrents: uTorrent (http://www.utorrent.com/)
- VPN: OpenVPN (http://openvpn.net/)
- Browser: Chrome, FireFox, & IE8
- Voice Communication: Ventrilo
- Voice, IM, and texting: Skype
- IM (Mac): Adium
- CD/DVD Tools
- DVD Ripping: RipIt4Me, DVD Decrypter, & DVD Shrink
- DVD/CD Burning: ImgBurn (http://www.imgburn.com/)
- Disc Mounting: Daemon Tools (http://www.daemon-tools.cc/)
- System Tools
- System Info: CPU-Z (http://www.cpuid.com/cpuz.php)
- Command Line: Windows Power Shell (http://www.microsoft.com/powershell/)
- System Clean-up: CCleaner (http://www.ccleaner.com/)
- Drive Space (http://windirstat.info/)
- Execution:
- Quicksilver (Mac) (http://www.blacktree.com/)
- SlickRun (Windows) (http://bayden.com/SlickRun/)
- Development Tools
- Regular Expressions: The Regulator ()
- Reflection: Reflector for .NET (http://www.lutzroeder.com/dotnet/)
- Globalization: Resourcer for .NET (http://www.lutzroeder.com/dotnet/)
- Presentation Zoom Tool: ZoomIt (http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx)
- Hex editor: TinyHexer
Object Design
Too often developers and engineers miss the point of objects within object oriented programming (OOP). Many create ever-larger containers, objects sets with lots of implicit knowledge about each other, and seem to have disdain for passing variables. Object oriented programs are still procedural even if they also have a nice way of packaging related data and operations.
Objects should behave like objects. They are not massive amalgams of things that are sort-of related because that’s how they’re needed right now. If objects aren’t treated as automatic components, the whole point of object orient programming is being missed.
When creating an object some simple considerations can increase the readability of the code as well as reducing the amount of knowledge needed to update it (which should avoid a whole lot of maintenance). In almost every situation all of these things are easy to do. In fact, if they’re not easy to do, that probably means there are extraneous complexities in the overall design.
Things to remember:
- Objects represent a single instance of some logical grouping of data.
- Objects can contain only 2 types of things: operations (methods) and properties (variables).
- Properties represent something about the Object.
- Operations do something based on the Object’s properties (internally provided) and/or passed Parameters (externally provided).
- Operations are always initiated externally; method calls, event callbacks, etc.
This implies that:
- Properties specific to the Object should be stored in the object.
- Parameters specific to an Operation should not be stored in the Object.
- Parameters specific to an Operation should be passed to subsequent Operations.
- Parameters created in/during an Operation should be treated as though they are Parameters; i.e. they are not Properties and should not be stored in the Object.
You may have noticed that all of these statements say “should”. While this is nice and soft language in almost every case you should replace “should” with “must”. If you’re not, your code is probably lower quality than it could and probably should be.
A good rule of thumb is that if you can’t explain it easily, it’s probably overly complicated. You should be able to explain how and why something works to anyone. Not any engineer, but anyone (using laymen’s terms of course). These are some other good rules-of-thumb:
- Prefer generic types.
Using generic types lowers the amount of dependencies and knowledge of a system need by the implementing engineer. - Avoid using generic types if it overcomplicates the code.
While generic types are great, they aren’t always appropriate. It’s a balancing act. - Prefer enumerations over generic types (int, bool, etc).
When passing a political party “3″ doesn’t mean anything. And there are always more options than on and off, running and idle, even male and female. - Prefer parameter only input into methods.
Using parameters helps to keep methods constrained as automatic units that can easily be called by anyone, at any time and in any order. - Avoid using globals or class-globals as input into methods.
Using class-globals reduces the reusability and concurrent usability of a method.
From the Glenn Beck Program
Videos of the letter:
Part 1:
http://www.youtube.com/watch?v=ScuSTUAc31I
Part 2:
http://www.youtube.com/watch?v=uNJxa5QEo1I
The transcript:
GLENN: I got a letter from a woman in Arizona. She writes an open letter to our nation’s leadership:
I’m a home grown American citizen, 53, registered Democrat all my life. Before the last presidential election I registered as a Republican because I no longer felt the Democratic Party represents my views or works to pursue issues important to me. Now I no longer feel the Republican Party represents my views or works to pursue issues important to me. The fact is I no longer feel any political party or representative in Washington represents my views or works to pursue the issues important to me. There must be someone. Please tell me who you are. Please stand up and tell me that you are there and that you’re willing to fight for our Constitution as it was written. Please stand up now. You might ask yourself what my views and issues are that I would horribly feel so disenfranchised by both major political parties. What kind of nut job am I? Will you please tell me?
Well, these are briefly my views and issues for which I seek representation:
One, illegal immigration. I want you to stop coddling illegal immigrants and secure our borders. Close the underground tunnels. Stop the violence and the trafficking in drugs and people. No amnesty, not again. Been there, done that, no resolution. P.S., I’m not a racist. This isn’t to be confused with legal immigration.
Two, the TARP bill, I want it repealed and I want no further funding supplied to it. We told you no, but you did it anyway. I want the remaining unfunded 95% repealed. Freeze, repeal.
Three: Czars, I want the circumvention of our checks and balances stopped immediately. Fire the czars. No more czars. Government officials answer to the process, not to the president. Stop trampling on our Constitution and honor it.
Four, cap and trade. The debate on global warming is not over. There is more to say.
Five, universal healthcare. I will not be rushed into another expensive decision. Don’t you dare try to pass this in the middle of the night and then go on break. Slow down!
Six, growing government control. I want states rights and sovereignty fully restored. I want less government in my life, not more. Shrink it down. Mind your own business. You have enough to take care of with your real obligations. Why don’t you start there.
Seven, ACORN. I do not want ACORN and its affiliates in charge of our 2010 census. I want them investigated. I also do not want mandatory escrow fees contributed to them every time on every real estate deal that closes. Stop the funding to ACORN and its affiliates pending impartial audits and investigations. I do not trust them with taking the census over with our taxpayer money. I don’t trust them with our taxpayer money. Face up to the allegations against them and get it resolved before taxpayers get any more involved with them. If it walks like a duck and talks like a duck, hello. Stop protecting your political buddies. You work for us, the people. Investigate.
Eight, redistribution of wealth. No, no, no. I work for my money. It is mine. I have always worked for people with more money than I have because they gave me jobs. That is the only redistribution of wealth that I will support. I never got a job from a poor person. Why do you want me to hate my employers? Why ‑‑ what do you have against shareholders making a profit?
Nine, charitable contributions. Although I never got a job from a poor person, I have helped many in need. Charity belongs in our local communities, where we know our needs best and can use our local talent and our local resources. Butt out, please. We want to do it ourselves.
Ten, corporate bailouts. Knock it off. Sink or swim like the rest of us. If there are hard times ahead, we’ll be better off just getting into it and letting the strong survive. Quick and painful. Have you ever ripped off a Band‑Aid? We will pull together. Great things happen in America under great hardship. Give us the chance to innovate. We cannot disappoint you more than you have disappointed us.
Eleven, transparency and accountability. How about it? No, really, how about it? Let’s have it. Let’s say we give the buzzwords a rest and have some straight honest talk. Please try ‑‑ please stop manipulating and trying to appease me with clever wording. I am not the idiot you obviously take me for. Stop sneaking around and meeting in back rooms making deals with your friends. It will only be a prelude to your criminal investigation. Stop hiding things from me.
Twelve, unprecedented quick spending. Stop it now.
Take a breath. Listen to the people. Let’s just slow down and get some input from some nonpoliticians on the subject. Stop making everything an emergency. Stop speed reading our bills into law. I am not an activist. I am not a community organizer. Nor am I a terrorist, a militant or a violent person. I am a parent and a grandparent. I work. I’m busy. I’m busy. I am busy, and I am tired. I thought we elected competent people to take care of the business of government so that we could work, raise our families, pay our bills, have a little recreation, complain about taxes, endure our hardships, pursue our personal goals, cut our lawn, wash our cars on the weekends and be responsible contributing members of society and teach our children to be the same all while living in the home of the free and land of the brave.
I entrusted you with upholding the Constitution. I believed in the checks and balances to keep from getting far off course. What happened? You are very far off course. Do you really think I find humor in the hiring of a speed reader to unintelligently ramble all through a bill that you signed into law without knowing what it contained? I do not. It is a mockery of the responsibility I have entrusted to you. It is a slap in the face. I am not laughing at your arrogance. Why is it that I feel as if you would not trust me to make a single decision about my own life and how I would live it but you should expect that I should trust you with the debt that you have laid on all of us and our children. We did not want the TARP bill. We said no. We would repeal it if we could. I am sure that we still cannot. There is such urgency and recklessness in all of the recent spending.
From my perspective, it seems that all of you have gone insane. I also know that I am far from alone in these feelings. Do you honestly feel that your current pursuits have merit to patriotic Americans? We want it to stop. We want to put the brakes on everything that is being rushed by us and forced upon us. We want our voice back. You have forced us to put our lives on hold to straighten out the mess that you are making. We will have to give up our vacations, our time spent with our children, any relaxation time we may have had and money we cannot afford to spend on you to bring our concerns to Washington. Our president often knows all the right buzzword is unsustainable. Well, no kidding. How many tens of thousands of dollars did the focus group cost to come up with that word? We don’t want your overpriced words. Stop treating us like we’re morons.
We want all of you to stop focusing on your reelection and do the job we want done, not the job you want done or the job your party wants done. You work for us and at this rate I guarantee you not for long because we are coming. We will be heard and we will be represented. You think we’re so busy with our lives that we will never come for you? We are the formerly silent majority, all of us who quietly work , pay taxes, obey the law, vote, save money, keep our noses to the grindstone and we are now looking up at you. You have awakened us, the patriotic spirit so strong and so powerful that it had been sleeping too long. You have pushed us too far. Our numbers are great. They may surprise you. For every one of us who will be there, there will be hundreds more that could not come. Unlike you, we have their trust. We will represent them honestly, rest assured. They will be at the polls on voting day to usher you out of office. We have cancelled vacations. We will use our last few dollars saved. We will find the representation among us and a grassroots campaign will flourish. We didn’t ask for this fight. But the gloves are coming off. We do not come in violence, but we are angry. You will represent us or you will be replaced with someone who will. There are candidates among us when hewill rise like a Phoenix from the ashes that you have made of our constitution.
Democrat, Republican, independent, libertarian. Understand this. We don’t care. Political parties are meaningless to us. Patriotic Americans are willing to do right by us and our Constitution and that is all that matters to us now. We are going to fire all of you who abuse power and seek more. It is not your power. It is ours and we want it back. We entrusted you with it and you abused it. You are dishonorable. You are dishonest. As Americans we are ashamed of you. You have brought shame to us. If you are not representing the wants and needs of your constituency loudly and consistently, in spite of the objections of your party, you will be fired. Did you hear? We no longer care about your political parties. You need to be loyal to us, not to them. Because we will get you fired and they will not save you. If you do or can represent me, my issues, my views, please stand up. Make your identity known. You need to make some noise about it. Speak up. I need to know who you are. If you do not speak up, you will be herded out with the rest of the sheep and we will replace the whole damn congress if need be one by one. We are coming. Are we coming for you? Who do you represent? What do you represent? Listen. Because we are coming. We the people are coming.
Finding Code Issues with Regular Expressions
Finding dead code removed with pre-compiler directives:
^:Wh*\#~(else|endif|if DEBUG|region|endregion):i*
Finding any unused exception blocks:
catch:Wh*\(:Wh*:a*Exception:a*:Wh*:a*:Wh*\):Wh*\{:Wh*\}
Finding unused exception blocks with exception members:
catch:Wh*\(:Wh*:a*Exception:a*:Wh*:a+:Wh*\):Wh*\{:Wh*\}
Finding unused exception blocks with comments:
catch:Wh*\(:Wh*:a*Exception:a*:Wh*:a+:Wh*\):Wh*\{(:Wh*//.*)+\}
catch(:Wh*\(:Wh*:a*Exception:a*:Wh*:a*:Wh*\)):Wh*\{(:Wh*//.*)+\}
Finding console outpout:
Console.*Write.*(.*);
Finding trace outpout:
Trace.*Write.*(.*);
Create a Dedicated SCCB User
Creating a dedicated SCCB (Software Change Control Board) user and using it only during SCCB meetings can make history tracking easier to handle. This is because it…
- Clarifies the context of the change; i.e. during an SCCB meeting.
- Keeps the user consistent regardless of whether the SCCB chairperson changes.
- Avoids confusion for the current chairperson when trying to determine who made a change, when and why; i.e. whether the given SCCB chairperson made changes during the SCCB meeting or as part of his or her “offline” work.
Of course it doesn’t tell who the chairperson was at the time. Often that doesn’t really matter since the point of the meeting is group consent for changes; so the individual matters less. If it does matter a field can be added to each record as to who the SCCB chair was or it can be captured in meeting minutes. And of course only a limited number of people would have access to the account.
Primary, secondary…
…tertiary, quaternary, quinary, senary, septenary, octonary, nonary, denary (10), duodenary (12), and vigenary (20).
I’ve done a fair amount of looking and at the time of this post the web does not seem to know what the holes are between 10 to 12 and 12 to 20; or beyond. In fact, there are some sites that all but state that the words to fill those holes do not exist.
Zeitgeist
These are both very interesting videos and, although they’re long, I encourage everyone to watch both. You may not agree with everything in them and that’s fine. Either way, hopefully they will make you feel the need to question both the institutions discussed as well as the ideas presented.
They’re listed in reverse order that they were released. I did this because the beginning of the “addendum” video (section 1 actually starts about 7 minutes into the video) is very timely considering current events in the United States (and really the World). I hope and imagine that watching that first section will inspire you to watch the remainder and then, perhaps, keep going…
Zeitgeist: Addendum
http://video.google.com/videoplay?docid=7065205277695921912
Zeitgeist: The Movie
http://video.google.com/videoplay?docid=-594683847743189197
A note for after you’ve seen these…
I was surprised at many of the ideas presented in these videos. Some seem like they couldn’t possibly be true. And, while I can’t say I’ve checked every point in them (but am continuing to do so) those that I have, have turned out to be true. One example I find particularly interesting is the REAL ID. I figured this would be something everyone would know about and be talking about, but very few seem to be. None-the-less, there are websites that do talk about it and that includes government sites (www.dhs.gov and www.spp.gov are a couple). The implications I found aren’t as overt or readily apparent as the video makes it sound. However, the groundwork for what is said, or implied, is clearly there. It is then, if nothing else, very interesting food for thought and certainly something that is good to be aware of.
More information is available here:
http://www.zeitgeistmovie.com/
http://www.thezeitgeistmovement.com/
http://www.TheVenusProject.com/
Dow Drops Below 9000
Looking at a graph of DJI (or any other market tracking index—the Q’s and SPX are excellent examples) about 2 weeks ago it was about half way between its lows in 2002 and the highs in 2008. Notable, but not enough to worry about, at least not in my opinion; even if only a few people agreed with me.
At the time it seemed very unlikely that the market would drop to the low point found in 2002. Now it seems much more likely. The question is, if it gets there will it stop? If it doesn’t, how low do we go?
When the DJI plowed through 9000 today it really did plow through it. It didn’t hesitate, at all. Really, look at an intra-day chart, no hesitation whatsoever. I was surprised to see that and would be even more surprised if that happened should we hit the 2002 low. However, if it did happen I might reconsider the whole not-worried thing.
From a technical analysis perspective that makes the highs in 2000 and 2008 look a lot like a double top (especially on the S&P 500). If we take that view on the DJI and measure the estimated end point it’s around 200. That’s two hundred, not a typo.
A little less bleak (and much more debatable), there is an inverted cup and handle in there too. It’s about 6 months in length. I haven’t measured where the end point would be, but it’s a large enough pattern that it certainly doesn’t give me a warm fuzzy feeling.
All that said, I don’t think that’s going to happen. I think if we come close to the low in 2002 we’ll find some support and begin heading back up; albeit likely a tumultuous and slow climb.
Pandora vs. Genius
I’ve heard and seen some herald Apple’s new Genius playlist creator as the end of Pandora. Pandora does have some challenges ahead regardless of Genius. But as far as Genius is concerned and in its current form, I don’t see a direct conflict.
Pandora’s current tag line is “Stations that only play music you like”. I’m pretty sure at some point it was “Find music you’ll love”, or something along those lines. I could be wrong. At any rate, my fake Pandora tag line and Genius’s nicely sum up the difference between the two. Genius’s tag line is “(Re-)Discover your music”.
In other words, Pandora is for exploring music that may not be in your collection but you might like. Genius is for digging into your own collection to find things that you might be neglecting. Both are valuable, but exploration and rediscovery are fundamentally different.
Yes, Genius can find new music too. The problem is it’s an active process of listening to snippets and if you like them you’re forced to purchase. I don’t like that at all. Pandora just lets me actively or passively listen to stuff and if I really like it then I can look into getting it. That and with Pandora I’m not suck with purchases on iTunes, which still struggles with DRM.
Overall, this is positive for both. They each have their own part of a niche and together they have the ability to create a richer listening experience. Which is all I really care about.
Things vs. OmniFocus
OmniFocus and Things are both great GTD/PIM/Productivity applications. I’m using them both just too see which one I end up using more and then I’ll stick with the winner. I would simply choose one, but they both have their limitations. Omnifocus is a little too structured while Things is a little too loose and, even worse, manual. Nothing is ever perfect, but a couple small changes to either and my life would be so much easier.
OmniFocus being too structured appears to be the result of strict adherence to the GTD scheme. As a seeming result it doesn’t offer things like deep projects (projects with sub projects that have their own sub projects…ad nauseam…). It does have folders (aka groups), but that’s a completely different concept and requires manual organization. That’s a big deal, manual operations take half of the value out of a task management applications. It does, however, allow for hierarchal contexts. This is a good thing overall, but even there it would be nice to have a little more depth. A cross between relational organization and hierarchal organization would be super powerful. Then again, nothing that I’m aware of offers that right now, so maybe I shouldn’t be surprised.
Things has projects, areas, hierarchal tags, and people. All good things and allowing finer control over tasks than OmniFocus. But it doesn’t allow for anything but tags to be entered (associated) during task entry. Odd. What this means is that project and area associations must be manually created after the task is created via a wizard like menu system. This is the definition of kludgy and is Things biggest limitation. Why? Because entering new tasks needs to be very fast and shouldn’t required that I do anything else to organize them beyond that initial entry. Unless of course I want to change something because I didn’t do something.
Finally, they’re both only available for the Mac. I think Macs are great (more specifically OS X). But I do have Windows machines both at work and home. Why, oh why, must I use a Mac to have good task management software? At a minimum a nice Ajax enabled web client is in order.
…at least they both have iPhone apps.
Despite my criticisms I do like both of these programs and think they’re better than anything available for Windows (Outlook doesn’t even come close).