Tagged as: Geek, Learn, Life, Programming, Software
Aug
21
So as you very well know, there is software. Now for many, this is a nebulous term that doesn’t really mean much to them until it results in a program that allows them to accomplish something. And that’s just fine. But what is interesting is that there is a methodology to software development that is actually pretty useful in everyday living.
You don’t have to be a software developer to appreciate ideas that will make your life easier or better now, do you? So don’t be scared if you’ve never heard the terms, just think about the ideas.
Anyways, these are just a few of the ideas that I’ve thought were useful:
- Leave lots of notes (well-commented code) - Just as in coding, you (should) know what you’re doing at the exact moment that you’re doing it. However, how many times do we do something and then either leave it undone or pick it up again at another time. A prime example of this are those leftovers in the fridge. You threw them into the refrigerator last night after dinner just to get things cleaned up. Then you go get some groceries, put them in, and happen to push those leftovers to the back of the shelf. You find a tupperware in a few days and you are not really sure what it is or how old it is. A good comment from yourself when you had put it into the fridge would help you quite a bit right now wouldn’t it?
- Let objects perform functions that they were intended for (object-oriented programming) - How big are the toasters with lcd screens? How much do you want a pot that has a handle with the temperature as well as a clock, an alarm, and a remote control? Sure you could scoff at such ideas, but in reality it’s much more efficient to use objects for their intended purpose. When objects have specific functions, you will immediately know what object to use when it comes time to perform a particular task. Don’t try to open a bottle with a screw driver, you can get diseases from the rusty nail that you were screwing in the garage the other day. Don’t use the same sponge to clean the counter as the dishes that you eat off of for the same reason. Using objects for purposes other than their intended one can not only make you look cheap, it can introduce errors that you would not have thought of. Also they’re better than huge, all-encompassing programs/objects because when some part of it breaks it is easier to fix and there is less loss of function. The television with speakers, a subwoofer, a built-in dvd player, a vcr, audio receiver-like capabilities and numerous other parts is more likely to be completely useless if one of those parts breaks than individual components, is it not?
- Fix when needed, upgrade when necessary (don’t get left behind the ages with nasty-to-maintain code) - When something breaks, you have choices. You can get it repaired to the state that it was before or you can upgrade and buy something. So I guess you have a few choices in what to buy as well. You can buy used or new. In software development, there are many tools that you can use. There are code editors, programming languages, and many other tools. There is an unfortunate tendency for some, just as in life probably, to hold on to the old tools and languages simply because that’s how it’s always been. Sometimes we need to take a step back and re-evaluate the state that we are in and whether it is worth it to move on to something bigger and better. It’s not worth it to keep that old junker of a car if the repair costs cost more than a brand new automobile.
- Understand how something works rather than specific tasks (similar to concept programming) - Do not limit your knowledge to specifics. Understand the driving force behind the specifics and then the specifics will become clear. This is a rather basic idea that translates to all types of fields. However, in my opinion, it seems to hold a lot of weight in the programming world because there are very many different ways to express the same idea. Notably, programming language choice can very easily decide how a particular goal will be achieved. In the real world, if you want to program a VCR, it is much more useful to understand what you’re doing (setting a timer and settings on the VCR in order to turn on and start recording) rather than simply memorizing the sequence of buttons to press in order to set the timer. It’s going to be pretty tough if you suddenly purchase a DVR and you don’t really understand what you’re trying to do with it.
Tagged as: Geek, Money, Programming
May
21
Well I suppose that there aren’t too many original ideas out there. Nevertheless, when I happened upon a piece of software called Budget
while I was reading through my feed reader this morning, I had to take a second look. Why? Well because I wrote (and am in current development of) The Budgeteeer!
There were notable differences, obviously. Comparing the two programs, here is what I noticed:
- Budget deposits absolute amounts into each sub-account (represented as envelopes) whereas the Budgeteeer deposits percentages into each sub-account. I recently thought about this difference actually. It would be nice to have options to do both/either. My original approach of percentages allows for things such as taking 10% off the top for tithe, but it has pitfalls such as having to specify a percentage for each sub-account. Granted of course you can play around with them over time such that they will approach what you actually need/want/use.
- Budget is much prettier. Both their Windows and Mac executables look better than my Python GUI. Granted, I haven’t been trying to make it beautiful or anything. And it is essentially the same functionality (clicking on different buttons, etc). Nevertheless, that is a plus that Budget has.
- Obviously Budget is production software that is being sold whereas the Budgeteeer is something that I wrote up in a week and have since played with only a little bit. Budget also costs 30 bucks, and (when the time comes) the Budgeteeer will not.
- The Budgeteeer has a cooler name.
All in all, I would like to think that Budget and the Budgeteeer are similar. However, I must concede that they are not even close to similar. Budget is much more polished, and I am now more determined to develop the Budgeteeer!
Tagged as: Bug-fix, Geek, Learn, Linux, Mac, Programming, Useful, Windows, Work
May
16
Files on computers are made up of different characters that are interpreted by whatever it is that you are using. That means that no matter what file it is, it is essentially a string of bytes that are interpreted by the program opening it. This means that your music program tries to interpret whatever file you open with it to be conformed to some audio standards (mp3, wma, etc.). Try to open the same file in a text editor, and you’ll find yourself looking at (apparently) junk characters. But then you’ll realize that the file is still just a bunch of characters.
I bring this up because
- It seems as if people don’t realize this.
- I encountered this while writing a Perl script today.
Something else that you should read even if you don’t know what Perl is: Windows and Unix-variants (including Mac OS X and up) do not handle files the same. I’m not talking about Fanaticism (because I’ve already posted about that). Windows uses characters that are referred to as the Carriage Return and Line Feed in order to represent a newline. These names originate because of their original use in the typewriter which actually had a physical mechanism to move. In any case, Unix-variants utilize the line feed character to distinguish its newlines. This can obviously lead to some problems if you use the same files on both systems.
If you don’t know what Perl is then you can fairly safely stop reading this article now because the rest won’t help you much. I know that it was hard for me to find and I’d like to make it available if anyone else so happens to run into the same problem.
While writing a script in Perl today, I had a seemingly strange problem where I would do some processing on my Windows machine and then transfer the file via FTP to a Unix-based server. However I noticed that I had a string that when printed to the screen on my Windows computer would display correctly but would display incorrectly in the file put onto the server. I could not figure this out for quite sometime because it seemed as if some of the lines were printing correctly and some were not. Alright enough explanation. Essentially I thought that the last character was getting chopped off in some way that I did not understand in Perl. However it had to do with Perl assuming that the lines has both a carriage return and a line feed on the lines and then chopping them off when the file was being sent via FTP. The fix that I ended up using was simply a one line regular expression like so (a suggestion from a co-worker):
$output=`some action`;
$output=~ s/\n/\r\n/g;
print $output;
print FOUT $output;
Hope that this helps someone searching for an answer. I know that I would have liked to have happened upon the answer while searching for it.
Tagged as: Geek, Learn, Life, Programming, Rant, Read-It, Ridiculous, Tip-For-Life
May
01
Maybe as a result of being out of school, I feel like I am somewhat out of the loop on the latest happenings. When I was in school, Xanga was something that I knew about even before it got big. Likewise with Facebook and so on. However, I feel as if I’ve been a little bit late learning about Twitter.
For those in the know, you can probably skip this paragraph. Basically Twitter is a new service that is meant for people to basically say what they are doing at a precise moment: now. Whatever you are doing, Twitter is a way by which you can let others know what it is that you are doing. You can do this via cellular phone (by way of text message), instant messenger, or on their website.
That’s all there is to it. Pretty simple right? Well I think that it’s dumb.
There is lots to be said for what a marvelous job they have done using Ruby on Rails as the platform on which they developed their service. I mean just imagine having to deal with possibly thousands and thousands of tiny connections every second. The effort put into the software engineering is impressive to say the least.
However, I think that the service is fairly horrendous in terms of what it means for people. There are some people out there who really do enjoy knowing about what all of their friends (and strangers for that matter) are doing every second of every day. But I think that this is just a Litmus Test for society as a whole. In a society of cellular phones, Blackberrys, and the like, we are forever on the go and busy.
I think that people need to take a step back and realize that it is so ridiculous to have all of these contraptions. Sure I have a great admiration for the engineering and development that all of these products represent. I even have a respect for the situations when they are actually necessary. But in terms of actual worth for the great herd we call “the public”, I think they are fairly detrimental to the well-being of people. Do you think that the people in the United States of America are any happier with their gadgets than tribesmen in some far off corner of the earth? Well they might think so, but who’s to say?
Even more than happiness, I say that all of these things are making us constantly bored. How can that be? In so being always prone to want to fill the time with checking e-mail or answering the phone, we have become people that always need to do something. And when we don’t have something to do, we are bored.
There are more important things, and I think that we all know this deep within. Have you ever thought that spending time with those around you is more important than answering your cellular phone right away? As I once heard
That’s why voicemail was invented.
E-mail is convenient and easy, but a letter is still desirable because of the fact that it takes time and energy to write one. Think about these things the next time it comes up in your life. I try to do so in mine. I won’t interrupt a conversation just to answer the phone, and I know that there is a time and a place for when e-mail is appropriate.
Twitter is a cool product/service, but I for one think that it’s continuing in the grand tradition of leading humans down the wrong road. It’s making us bored as we’re waiting for another instant Twitter update. It makes us want to sit in front of the computer or stare at our cellular phone even more. It is making people more connected to their devices and less connected to other people in a real, tangible manner. Basically, Twitter is dumb.
Tagged as: Blog, Geek, Learn, Programming, Software, Useful, Wordpress
Apr
26
Here is a list of Wordpress plugins that I both use and recommend to anyone who is interested. It’s not exactly a typical setup (but then again what fun what a “normal” setup be?). Even if you don’t have a Wordpress blog, feel free to read the list and find out about some of the software that is powering this blog. Maybe you’ll discover some features that you didn’t know about!
And onward (not in order of preference or importance but rather just so that you can make sure that I have 13). Read the rest of this entry »