I second the opinion on Komodo Edit. It does Python, and also Perl, PHP, Javascript, HTML, and too many more to count.
It also has syntax highlighting, code browsing, class structure trees, advanced search and replace, advanced editing features, etc. It's hands down the best free code editor available.
Processing data from home is probably not a job that would be actively advertised by any company.
As I mentioned, you may have to do a bit of selling with the potential employer. Show your skills and demonstrate why you'd be a great guy to hire, and then in return ask that after the training wraps up, you would like to spend most of your time working from your home office. Show how it would make sense for the employer (e.g. you will not need office space, you are used to distance working, etc.). It can definitely be done (as evidenced by three of my friends who do it) but it will take some creativity; it's not the type of job that you can just show up and apply for.
The fact that you are looking for extra income on the side seems to indicate that you have some initiative and creativity. You probably already know, from your own forays into the subject, that finding lucrative income on the side is not easy. Because if it was easy, everybody would be doing it. To go above and beyond always takes something a little bit extraordinary.
Geophysical data processing may be what you are looking for. It fits what you are looking for, because you can do it from anywhere you have internet access, and the money is good. I have a few friends doing this kind of work from home during nights and weekends, while working full-time at their day jobs.
Typical work situation: there will be a field crew somewhere in the world, acquiring geophysical measurements from an aircraft-based sensor platform, usually for the purpose of mineral exploration. Every night, they'll FTP the day's data to you. You do the bulk of the quality control, data reduction and processing work, and then upload the processed data back to the FTP. You'd also notify the field guys about any potential problems in the data. After that, the in-house specialists will do any final processing (leveling magnetic grids, fine drift corrections, etc.) and when the fieldwork is completed, they'll also prepare the client deliverables (maps, reports, interpretations, etc.).
Hourly rates for this kind of work range anywhere from $25/hr to $80/hr ($200/day to $500/day). If there are no serious glitches in the data that need troubleshooting, a data processor with some computer skills can usually rip through a day's worth of data in 3 or 4 hours. So if you get your data at 7pm, you can be done before midnight and still get a good night's sleep and be ready for your "real" job the next day. (On the other hand, if you have a girlfriend or wife, you may get into some time sharing conflicts, because the production schedules usually don't tolerate much latency.)
Educational requirements are typically a 4-year university/college Geophysics degree, or something somewhat related, such as Physics, Engineering, Math, etc. In any case, if you have a degree, your chances are good.
Training will probably take a few weeks, for you to get some experience and develop a feel for what good and bad data look like. Essentially you are the first line of quality control, so it's up to you to quickly flag any problems that could be due to operator error, sensor malfunction, or other factors.
You may or may not have to do some selling to potential employers to get them to let you work entirely from home. However, the way the mineral exploration market is these days (base metals such as copper and nickel are expensive), this shouldn't be difficult as there is too much data to process and not enough people.
A few geophysics companies are always hiring data processors:
Anybody know what software they used to produce that chart?
The combination of spreadsheet data right alongside the bar graph looks really handy. I wouldn't mind having that ability for some upcoming reports and presentations.
Flexibility. In C++ it is essentially impossible to make, say, a dictionary where each key can refer to an object of a completely different type. This is what you refer to as "sloppy", but I actually find this flexibility to be essential in designing good software. The fact that C++ does not allow it forces me to either twist my program's design in unnatural ways to fit the language, or do a lot of extra work to twist C++ to fit my program's design.
If you're not offended by the idea of using the Boost libraries, the boost::any class will let you be sloppy like that.
Manual memory management. In any complex program, balancing your news with deletes is not as simple as you make it out to be. Object ownership is a tough problem. Lots of C++ code solves this problem by making a lot of defensive copies, which in turn hurts performance greatly.
The boost::shared_ptr class has changed the way I write C++ code. It's a header-only class, so it's possible to only include it, and nothing else from Boost, in your project.
Readability and writability. With all the type information being declared all over the place, big template declarations, and the like, I find that C++ takes considerably more effort to both read and write.
I have found that wise use of typedefs can hugely improve readability and writability. On the other side of the coin, some people go overboard with typedefs, essentially making worse the problem they originally intended to solve. Like code formatting or any other convention, it has to be used where it makes the most sense. (Avoid developers with hammers who think everything is a nail, or needs to be turned into a nail, so they can hit it.)
For example, I find this to be quite readable and writable:
Saying all that without some judicious use of typedefs would of course be nearly unreadable, especially if later you have to make use of iterators and nested types in the vector or map.
The really big issues for me are the flexibility and the lack of libraries. The rest is less important. But with C++ it's like building a house out of 2x4s that you're not allowed to cut to length, whereas with moer modern languages it's more like building a house out of prefabricated rooms, with a ready supply of 2x4s and tools to shape them as you need if the prefabbed rooms don't fit your needs.
On the contrary, I find that C++ gives you all the 2x4's, wood panelling, nails, screws, and all the tools you need. You just have to become a half-decent carpenter before you can start building your house. It's just a little bit harder to quickly make working prototypes (build a home from prefab parts), but as you indirectly pointed out, there are plenty of other languages that are better suited to that building style. The right tools for the right job.
Please note that this is just my opinion, and you asked for it. Feel free to disagree, but please don't flame.
Yes, it was a "This cup contains hot coffee" warning. These days by even mentioning a potentially unsafe activity, you can be found guilty of encouraging and supporting said activity.
Point taken:) but that's why I said it's stupid and unsafe without the proper training and safety equipment. Mental preparation, awareness, respect and forethought, as you said, are usually components of proper training.
In the Industrial Revolution, lots of people got injured or died while messing around with chemicals and radioactive isotopes they didn't understand. The survivors got to name new elements and compounds. That's how they did it back in the day.
The gas released is hydrogen. If you make a weak mix in a lab quality glass flask, you can harvest the hydrogen by putting a balloon over the mouth of the flask while the reaction is occurring.
Potential uses for flammable, lighter-than-air balloons are practically unlimited.
WARNING: Doing any of this is extremely STUPID and UNSAFE, without proper training and safety equipment. DO NOT TRY IT EVER.
I get what you're saying, too. It makes sense, it's sort of like parent shop talk.
I recognize that those phrases might be handy in certain situations, but there are different (better) ways to refer to your kids, even if it's just adding a noun. Probably I'm being whiny, but as I said, I'd take physical abuse before I say them.
Then again, this is nothing if you've ever heard doctor or paramedic shop talk.
Well, crap, I got carried away. That was supposed to be:
If one day the condom breaks and I become a parent, and I ever refer to our child that way, I hope my reproductive partner will have the decency to turn her diamond engagement ring inwards and slap me across the face with her palm, hard.
Ok, does anybody else have a problem with people calling their kids a "10-month-old", "2-year-old", "1-year-old", etc.?
I don't know why, but it grates on my nerves and makes me twitch. It removes the family member & personhood status from the son or daughter, and reduces them to a numeric value representing their age. So the kid's age may be pertinent in the discussion, but what's wrong with adding a noun, to make it "our 10-month-old son" or "my 10-month-old girl"? It's only 3 or 4 extra letters; no way you're that pressed for time.
Hearing some parents in conversation say, "Oh, our 2-year-old likes to bla bla bla!" makes me need to leave the room, grit my teeth and twitch in private. If one day the condom breaks and I become a parent, I hope my reproductive partner will have the decency to turn her diamond engagement ring inwards and slap me across the face with her palm, hard.
Thanks for the link, I enjoyed the read. Before the story about Card slamming Rowling appeared on Slashdot, I wasn't familiar with Card's views on homosexuality and other issues. I have to give it to Card that he makes a lot of sense. He knows exactly where he stands on the issue, and why, which is more than 99% of us can say.
This is why I have no respect for ajs' comment, where ajs takes a single quote out of context, apparently in order to push an agenda of intolerance against a point of view he doesn't agree with.
If ajs would take a minute to think about it, then he would realize that in our society, practically all laws are used "when necessary to send a clear message." How many times have I been illegally parked, and not received a ticket? How many of us commit technically illegal acts regularly (knowingly or unknowingly) that go unpunished?
Laws weren't invented to punish people; they were put in place to maintain a society and to uphold its values.
From ajs' comment, he appears to be an insecure person, in the sense that if another person (in this case, Card) says one thing he doesn't like, then ajs "can't really take anything he says seriously". It appears that ajs is able to write off an entire person just because he disagrees with some opinion the other person holds (in this case, a well-reasoned, thought out opinion). I'm not sure if that's good or bad, normal or not, but it smells of a certain kind of closed-mindedness and intolerance that I have little time for.
However, thanks for the link; as I said, I enjoyed the reading.
I have been using their DSL service for 3 months now and am very satisfied.
For $29.95 per month, you get:
5 Mb/s down, 800 Kb/s up (max)
200GB transfer per month ($3/GB after that)
Hassle free service with great tech support
Their tech support is provided by extremely competent volunteers. In the very beginning, I feared some hiccups with the service, because I was having a voice phone line installed after I had already activated the DSL service. They made sure everything got sorted out smoothly. I didn't lose a day of connectivity during the switch. My fears were for nothing.
I'm not sure what's going to happen to NCF DSL if Bell manages to get it's way, though...
"I thought about doing that, its a bit obvious" isn't prior art, even if it were spelled correctly.
Very good point.
The patent system separates doers from talkers. Talkers will always say, "Oh yeah, that's obvious, I thought about doing that", to someone who is actually doing it. How long had regular roller skates been around, just waiting for an "obvious" innovation like inlining the wheels? We not have Rollerblades, which in 20/20 hindsight appear stupidly obvious.
It's not good enough to think of something and then forget about it. Having thought of a solution 10 years ago is worthless. Blogging about some idea is equally worthless. Doing it is what counts. If you don't have the balls to think of an idea, and put it into practice, then you don't deserve the credit for it. So this proposed "system" of blogging about "obvious" ideas for solutions to problems is a waste of time because it will not even accomplish its stated objective, nor does it address any actual problem with the current patent system.
The machine's proponents have taken this opportunity to turn the fundamental problem into a side-issue.
That's a good point. I never looked at it that way.
But regardless of whether or not we find electronic voting distasteful, there are many legitimate reasons why is is desirable over paper and pencil. The most obvious is for counting votes -- computers save time and money. In theory, the vote counts can be available the instant the polls close, and we need to hire fewer people to administer an election. Furthermore, it saves time for the voter. You walk in, tap a touchscreen a few times, and you're done. There are many more reasons, but in essence it's time and money.
Then again, I always say, "Yeah, but... elections only come once every 2 to 4 years! How much money will we, the public, really save? Is there a real business case for electronic voting?"
Probably I'm ignorant, but has anyone ever looked at the accounting behind voting computers? All things considered, how much does it cost to design, purchase and operate voting computers during an election, versus doing it the old fashioned people, paper and pencil way?
There is also no technical reason why voting computers are not possible. We already derive benefits from ATMs though old fashioned banking is still available. Millions or billions of bank transactions are reliably processed by ATMs every day. With all the options available, you might even argue that ATMs are more complex than voting computers: withdrawals from various accounts, deposits, money transfers, bill payments... on top of all that, they have to be very secure (though we might argue exactly how secure).
But in response to this, I always ask, "If banks can do it with ATMs, what is wrong with the numbskulls at the e-voting companies? Why don't the banks make the voting computers?"
How much merit is there to the views that the e-voting companies exist for one purpose: to strategically positioning themselves to make immense profits through government contracts? From the public's point of view, how far off the mark is it to say that we don't really need e-voting, for purely business reasons?
This is something I really never understand. Why if you are the best programmer and problem solver in the world, your expected career path should bring you to management? What if you prefer to nail down problems and write code, instead of crushing your feelings organizing peoples, scheduling meetings and accounting hours?
I just presented it as an idea, because the person asked about remaining employable. One way that people progress in their programming careers is to become technical experts, then mentors to the less experienced, and eventually to senior members of the company. I think it is a natural progression. You master one thing, and then move on.
Other people, as you pointed out, are just as happy accruing technical expertise for the length of their career. Nobody says you must go into management one day. But don't be surprised if, after 10 years with a company, you know the products, people and history of the company so well that you are offered to take up a more senior position. At that point, you might find it easier to accept. You won't be that young anymore, you'll love the corner office with the view, and the pay raise and invitations to dinners and golf games after lunch might become all that more appealing.:-)
I think that, in general, people enter their careers at a technical level, and as their understanding of the big picture expands, they naturally progress to positions where they have more influence, formally or informally.
I can't speak from experience about your situation, but I think you might have a number of very good options.
Make it known that you are interested in being a senior developer. If you want to climb the ladder in your company, you need to make your interests known to the people who can give you promotions. This might mean spending more time with the bosses and some (or lots of) ass kissing. Ask for mentoring. Depending on the culture at your company, you might be surprised to find someone more than happy to take you under their wing. Especially if you are a familiar face, because of the long time you have been employed, people might be glad to see you step up and get promoted. Get out of your cube and explore your options in this area. Make it a point to take a stroll around the building a few times each month, and just say "hi" to people. Don't pass up opportunities to make idle chit chat once in a while with people you barely know.
Rebrand yourself. There are plenty of colleges where you can take courses in project management training. Your long experience may confer on you credibility and respect that a younger person does not have yet. The leap to project management will be a significant career change and will take some hard work, but dedication it is not impossible.
Take training courses. Regardless of how useful some training courses are, they look good on your resume. If you make it a goal this year to take, for example four or five training courses in something relevant to your specific field, your chances of getting employed will be much higher. People who have been in a field for a long time and actively stay abreast of new developments command respect.
There are probably unlimited more things we could think about. You shouldn't underestimate your 12 years of experience, especially if you are a hard worker, and have a reputation of getting things done.
One last thing, I get the feeling from reading your question that you might have the problem where you keep your head down and work hard, and as a result people forget who you are, and then forget you are even there. The squeaky wheel gets the grease, pardon the cliche. As I pointed out above, it is in your best interest to maintain some level of connection to people around you and above you in your company. The more they see you and talk to you, the more they feel they know you, and the more likely you are to be presented with opportunities for advancement.
I second the opinion on Komodo Edit. It does Python, and also Perl, PHP, Javascript, HTML, and too many more to count.
It also has syntax highlighting, code browsing, class structure trees, advanced search and replace, advanced editing features, etc. It's hands down the best free code editor available.
Processing data from home is probably not a job that would be actively advertised by any company.
As I mentioned, you may have to do a bit of selling with the potential employer. Show your skills and demonstrate why you'd be a great guy to hire, and then in return ask that after the training wraps up, you would like to spend most of your time working from your home office. Show how it would make sense for the employer (e.g. you will not need office space, you are used to distance working, etc.). It can definitely be done (as evidenced by three of my friends who do it) but it will take some creativity; it's not the type of job that you can just show up and apply for.
The fact that you are looking for extra income on the side seems to indicate that you have some initiative and creativity. You probably already know, from your own forays into the subject, that finding lucrative income on the side is not easy. Because if it was easy, everybody would be doing it. To go above and beyond always takes something a little bit extraordinary.
Geophysical data processing may be what you are looking for. It fits what you are looking for, because you can do it from anywhere you have internet access, and the money is good. I have a few friends doing this kind of work from home during nights and weekends, while working full-time at their day jobs.
Typical work situation: there will be a field crew somewhere in the world, acquiring geophysical measurements from an aircraft-based sensor platform, usually for the purpose of mineral exploration. Every night, they'll FTP the day's data to you. You do the bulk of the quality control, data reduction and processing work, and then upload the processed data back to the FTP. You'd also notify the field guys about any potential problems in the data. After that, the in-house specialists will do any final processing (leveling magnetic grids, fine drift corrections, etc.) and when the fieldwork is completed, they'll also prepare the client deliverables (maps, reports, interpretations, etc.).
Hourly rates for this kind of work range anywhere from $25/hr to $80/hr ($200/day to $500/day). If there are no serious glitches in the data that need troubleshooting, a data processor with some computer skills can usually rip through a day's worth of data in 3 or 4 hours. So if you get your data at 7pm, you can be done before midnight and still get a good night's sleep and be ready for your "real" job the next day. (On the other hand, if you have a girlfriend or wife, you may get into some time sharing conflicts, because the production schedules usually don't tolerate much latency.)
Educational requirements are typically a 4-year university/college Geophysics degree, or something somewhat related, such as Physics, Engineering, Math, etc. In any case, if you have a degree, your chances are good.
Training will probably take a few weeks, for you to get some experience and develop a feel for what good and bad data look like. Essentially you are the first line of quality control, so it's up to you to quickly flag any problems that could be due to operator error, sensor malfunction, or other factors.
You may or may not have to do some selling to potential employers to get them to let you work entirely from home. However, the way the mineral exploration market is these days (base metals such as copper and nickel are expensive), this shouldn't be difficult as there is too much data to process and not enough people.
A few geophysics companies are always hiring data processors:
Please, don't be a coward by avoiding a simple question.
Would they or would they not be hypocrites if there happened to be a distribution called "Child Porn Edition", and they banned it?
Would they still be hypocrites if they banned a distribution called "Child Porn Edition"?
And what about you, do you let people in your house with muddy boots on? Didn't think so, hypocrite.
Anybody know what software they used to produce that chart?
The combination of spreadsheet data right alongside the bar graph looks really handy. I wouldn't mind having that ability for some upcoming reports and presentations.
Flexibility. In C++ it is essentially impossible to make, say, a dictionary where each key can refer to an object of a completely different type. This is what you refer to as "sloppy", but I actually find this flexibility to be essential in designing good software. The fact that C++ does not allow it forces me to either twist my program's design in unnatural ways to fit the language, or do a lot of extra work to twist C++ to fit my program's design.
If you're not offended by the idea of using the Boost libraries, the boost::any class will let you be sloppy like that.
Manual memory management. In any complex program, balancing your news with deletes is not as simple as you make it out to be. Object ownership is a tough problem. Lots of C++ code solves this problem by making a lot of defensive copies, which in turn hurts performance greatly.
The boost::shared_ptr class has changed the way I write C++ code. It's a header-only class, so it's possible to only include it, and nothing else from Boost, in your project.
Readability and writability. With all the type information being declared all over the place, big template declarations, and the like, I find that C++ takes considerably more effort to both read and write.
I have found that wise use of typedefs can hugely improve readability and writability. On the other side of the coin, some people go overboard with typedefs, essentially making worse the problem they originally intended to solve. Like code formatting or any other convention, it has to be used where it makes the most sense. (Avoid developers with hammers who think everything is a nail, or needs to be turned into a nail, so they can hit it.)
For example, I find this to be quite readable and writable:
typedef std::vector<SomeHairyClass> SomeHairyList;
typedef std::map<CuddlyKeyClass, SomeHairyList> HairyListMap;
HairyListMap foo;
Saying all that without some judicious use of typedefs would of course be nearly unreadable, especially if later you have to make use of iterators and nested types in the vector or map.
The really big issues for me are the flexibility and the lack of libraries. The rest is less important. But with C++ it's like building a house out of 2x4s that you're not allowed to cut to length, whereas with moer modern languages it's more like building a house out of prefabricated rooms, with a ready supply of 2x4s and tools to shape them as you need if the prefabbed rooms don't fit your needs.
On the contrary, I find that C++ gives you all the 2x4's, wood panelling, nails, screws, and all the tools you need. You just have to become a half-decent carpenter before you can start building your house. It's just a little bit harder to quickly make working prototypes (build a home from prefab parts), but as you indirectly pointed out, there are plenty of other languages that are better suited to that building style. The right tools for the right job.
Please note that this is just my opinion, and you asked for it. Feel free to disagree, but please don't flame.
Duly noted, just adding mine to the discussion. :)
I bet your wife also makes you do dishes for a whole week before she may decide to give you a [brief] blowjob.
Yes, it was a "This cup contains hot coffee" warning. These days by even mentioning a potentially unsafe activity, you can be found guilty of encouraging and supporting said activity.
Point taken :) but that's why I said it's stupid and unsafe without the proper training and safety equipment. Mental preparation, awareness, respect and forethought, as you said, are usually components of proper training.
In the Industrial Revolution, lots of people got injured or died while messing around with chemicals and radioactive isotopes they didn't understand. The survivors got to name new elements and compounds. That's how they did it back in the day.
You can also do that with Drano.
The gas released is hydrogen. If you make a weak mix in a lab quality glass flask, you can harvest the hydrogen by putting a balloon over the mouth of the flask while the reaction is occurring.
Potential uses for flammable, lighter-than-air balloons are practically unlimited.
WARNING: Doing any of this is extremely STUPID and UNSAFE, without proper training and safety equipment. DO NOT TRY IT EVER.
You mean an anti-terrorist fence, such as the ones being built around quiet port communities on some lakes in Ontario, Canada?
No way, your math error rate is 110%? Now that's impessive.
One word? That makes your spelling error rate 100%.
I get what you're saying, too. It makes sense, it's sort of like parent shop talk.
I recognize that those phrases might be handy in certain situations, but there are different (better) ways to refer to your kids, even if it's just adding a noun. Probably I'm being whiny, but as I said, I'd take physical abuse before I say them.
Then again, this is nothing if you've ever heard doctor or paramedic shop talk.
P.S. Why did the OP get modded as flamebait??
Well, crap, I got carried away. That was supposed to be:
If one day the condom breaks and I become a parent, and I ever refer to our child that way, I hope my reproductive partner will have the decency to turn her diamond engagement ring inwards and slap me across the face with her palm, hard.
<rant>
Ok, does anybody else have a problem with people calling their kids a "10-month-old", "2-year-old", "1-year-old", etc.?
I don't know why, but it grates on my nerves and makes me twitch. It removes the family member & personhood status from the son or daughter, and reduces them to a numeric value representing their age. So the kid's age may be pertinent in the discussion, but what's wrong with adding a noun, to make it "our 10-month-old son" or "my 10-month-old girl"? It's only 3 or 4 extra letters; no way you're that pressed for time.
Hearing some parents in conversation say, "Oh, our 2-year-old likes to bla bla bla!" makes me need to leave the room, grit my teeth and twitch in private. If one day the condom breaks and I become a parent, I hope my reproductive partner will have the decency to turn her diamond engagement ring inwards and slap me across the face with her palm, hard.
Pardon me while I twitch some more.
</rant>
Thanks for the link, I enjoyed the read. Before the story about Card slamming Rowling appeared on Slashdot, I wasn't familiar with Card's views on homosexuality and other issues. I have to give it to Card that he makes a lot of sense. He knows exactly where he stands on the issue, and why, which is more than 99% of us can say.
This is why I have no respect for ajs' comment, where ajs takes a single quote out of context, apparently in order to push an agenda of intolerance against a point of view he doesn't agree with.
If ajs would take a minute to think about it, then he would realize that in our society, practically all laws are used "when necessary to send a clear message." How many times have I been illegally parked, and not received a ticket? How many of us commit technically illegal acts regularly (knowingly or unknowingly) that go unpunished?
Laws weren't invented to punish people; they were put in place to maintain a society and to uphold its values.
From ajs' comment, he appears to be an insecure person, in the sense that if another person (in this case, Card) says one thing he doesn't like, then ajs "can't really take anything he says seriously". It appears that ajs is able to write off an entire person just because he disagrees with some opinion the other person holds (in this case, a well-reasoned, thought out opinion). I'm not sure if that's good or bad, normal or not, but it smells of a certain kind of closed-mindedness and intolerance that I have little time for.
However, thanks for the link; as I said, I enjoyed the reading.
Check out the National Capital Freenet.
I have been using their DSL service for 3 months now and am very satisfied.
For $29.95 per month, you get:
Their tech support is provided by extremely competent volunteers. In the very beginning, I feared some hiccups with the service, because I was having a voice phone line installed after I had already activated the DSL service. They made sure everything got sorted out smoothly. I didn't lose a day of connectivity during the switch. My fears were for nothing.
I'm not sure what's going to happen to NCF DSL if Bell manages to get it's way, though...
Very good point.
The patent system separates doers from talkers. Talkers will always say, "Oh yeah, that's obvious, I thought about doing that", to someone who is actually doing it. How long had regular roller skates been around, just waiting for an "obvious" innovation like inlining the wheels? We not have Rollerblades, which in 20/20 hindsight appear stupidly obvious.
It's not good enough to think of something and then forget about it. Having thought of a solution 10 years ago is worthless. Blogging about some idea is equally worthless. Doing it is what counts. If you don't have the balls to think of an idea, and put it into practice, then you don't deserve the credit for it. So this proposed "system" of blogging about "obvious" ideas for solutions to problems is a waste of time because it will not even accomplish its stated objective, nor does it address any actual problem with the current patent system.
Thanks for pointing out this "feature". I just condensed my bookmark toolbar to less than half its normal width. Awesome!
That's a good point. I never looked at it that way.
But regardless of whether or not we find electronic voting distasteful, there are many legitimate reasons why is is desirable over paper and pencil. The most obvious is for counting votes -- computers save time and money. In theory, the vote counts can be available the instant the polls close, and we need to hire fewer people to administer an election. Furthermore, it saves time for the voter. You walk in, tap a touchscreen a few times, and you're done. There are many more reasons, but in essence it's time and money.
Then again, I always say, "Yeah, but... elections only come once every 2 to 4 years! How much money will we, the public, really save? Is there a real business case for electronic voting?"
Probably I'm ignorant, but has anyone ever looked at the accounting behind voting computers? All things considered, how much does it cost to design, purchase and operate voting computers during an election, versus doing it the old fashioned people, paper and pencil way?
There is also no technical reason why voting computers are not possible. We already derive benefits from ATMs though old fashioned banking is still available. Millions or billions of bank transactions are reliably processed by ATMs every day. With all the options available, you might even argue that ATMs are more complex than voting computers: withdrawals from various accounts, deposits, money transfers, bill payments... on top of all that, they have to be very secure (though we might argue exactly how secure).
But in response to this, I always ask, "If banks can do it with ATMs, what is wrong with the numbskulls at the e-voting companies? Why don't the banks make the voting computers?"
How much merit is there to the views that the e-voting companies exist for one purpose: to strategically positioning themselves to make immense profits through government contracts? From the public's point of view, how far off the mark is it to say that we don't really need e-voting, for purely business reasons?
I just presented it as an idea, because the person asked about remaining employable. One way that people progress in their programming careers is to become technical experts, then mentors to the less experienced, and eventually to senior members of the company. I think it is a natural progression. You master one thing, and then move on.
Other people, as you pointed out, are just as happy accruing technical expertise for the length of their career. Nobody says you must go into management one day. But don't be surprised if, after 10 years with a company, you know the products, people and history of the company so well that you are offered to take up a more senior position. At that point, you might find it easier to accept. You won't be that young anymore, you'll love the corner office with the view, and the pay raise and invitations to dinners and golf games after lunch might become all that more appealing. :-)
I think that, in general, people enter their careers at a technical level, and as their understanding of the big picture expands, they naturally progress to positions where they have more influence, formally or informally.
I can't speak from experience about your situation, but I think you might have a number of very good options.
There are probably unlimited more things we could think about. You shouldn't underestimate your 12 years of experience, especially if you are a hard worker, and have a reputation of getting things done.
One last thing, I get the feeling from reading your question that you might have the problem where you keep your head down and work hard, and as a result people forget who you are, and then forget you are even there. The squeaky wheel gets the grease, pardon the cliche. As I pointed out above, it is in your best interest to maintain some level of connection to people around you and above you in your company. The more they see you and talk to you, the more they feel they know you, and the more likely you are to be presented with opportunities for advancement.
Good sir,
Your ruse is believable until we realize that you, too, have a Slashdot account! You are a clever imposter.
What can I say... once the girls witness the girth of my tube, they can't stop downloading my content.