That's right. I was hired by a team on a tight deadline. I could read C then, but had no experience in coding it. However, I was the only person in the team who already knew the assembly language for the target machine. They had a prototype of their code half written in C, but it turned out there was no C compiler for the platform they had to run on.
So, they handed me the code and I typed in the equivalent assembly language. I quickly discovered that I could write the assembly about as fast as the two other programmers could write the C. One month later we had a working demo. It may not have been a truely awful job, but it sure was mindless!
A friend at McGill university is writing code that has been used to demonstrate 2-way video conferencing with uncompressed video and 12 channels of uncompressed high-quality audio. With this software, they've managed to have musicians in Ottawa and Montreal collaborate in live jam sessions. The demo's have been quite impresive, and you can get the code here. (Not yet open source, although they're working towards that.)
Disclaimer: I haven't read the latest version of this report, but based on the last one, I wouldn't recommend wasting the bandwidth.
When the last BT report came out I was working as a Technology Analyst, in charge of keeping up with current trends in IT, so I downloaded and "Analysed" their latest report. I put that in quotes, because most of the time I was either busting a gut laughing, or staring in disbelief at the stupidity of the items on the timeline.
Problems with the report included, but were not limited to:
Inappropriate use of Computer Science terms, making it impossible to know what they were predicting.
Predictions using vague and/or undefined terms.
"Predictions" for things that are already commercially available
Far term predictions for things that are already in prototype
Near term predictions for technologies that have several intermediate steps that we haven't achieved. In other words, wildly implausible preditions.
Near term predictions for technologies that rely on the development of technologies for which they've given far term predictions.
The same technology showing up under different names at radically different points in the timeline.
No indication that they have any idea of which technologies rely upon or enable other technologies.
My final impression was that the results were the unsorted compilation of a brainstorming session amongst some rather bright high schoolers. As a random list of technology ideas, the document has has some merit. As a technological timeline, its crap.
One of the panels at TorCon3 was "Has Science Fiction Failed as a Fiction of Science?" The various panellists decided that SF hasn't so failed, and then proceeded to give explanation after explanation of why, in fact, it has. Lets face it, to any sophisticated reader, most SF written today is not written about a possible future, but about what we once thought might be a possible future. Scientific and technological progress has passed by most of today's authors and left them in the dust. Reading even well-written 'SF' like that of Czerneda or Bujold IS reading fantasy and has much the same feel as reading 1930's SF where everything is done with massive vacuum tubes. The story may be well told and the characterization is great, but the setting makes no sense. Where are the AIs? Where are the hugely extended lifetimes? Where is the nanotechnology? Where are the body modifications? Whaere are the ubiquitous microscopic computers? Where is the brain uploading? Where are any number of technologies we are working towards today that don't show up in most contemporary SF? Spider laments that readers prefer Fantasy to SF. Maybe they just prefer that their fantasy be overt.
Now, all is not lost, some authors such as Walter Jon Williams, Charlie Stross, Linda Nagata, Ian M Banks, Greg Egan and others have embraced the new future that is appearing in front of us, but they are the exceptions. Until most SF authors are actually writing about possible futures again, SF will be in an inevitable decline.
I used to believe my PHBs when they told me something was for one use and that it would be discarded afterwards.
I once worked for a games company that asked me to take an existing text-only game, hack a graphic user interface onto the output routines, and produce a more up-to-date version of the same game. I told my bosses that it would work, once. The resulting code would be ready quickly but would be an unmaintainable mess, and unusable in other products. "Fine" they said, "Its just a market test".
Nine months later I'm in hot water because I'm insisting that the Version 1 code for the game is unsuitable for use in Version 2, and needs to be rewritten.
I have, since that time, had so many jobs in which I was required to maintain 'quick-and-dirty' code which ended up being legacy code, that I no longer believe anyone who says something is throwaway. I always try to make the code be portable and maintainable, because all too often, I'm the one who ends up having to port and/or maintain it.
I did telework for a games company for 6 months and I found just the opposite. I would wake up in the morning, get a coffee, read my mail and would find the latest task list and/or bug report sitting there.
My reaction would be to pull up the code and start to fix it. Four hours later I would realize that I was still in my bathrobe, I hadn't had breakfast or my morning shower and my coffee was long cold. In short I found that I had to explicitly time the number of hours of work I did in a week, so that I wouldn't end up doing 80-hour weeks, just because I could. It took a month or so before I got to the point that I would say, "Okay, thats 50 hours this week, so even if its now only thursday afternoon, I can stop work until monday."
And I suppose it never got lonely or depressing since I seldom make friends at work anyway. (Not that I get on badly with my workmates, but they aren't the people I would CHOOSE to spend my time with.) Besides my SO has a home office so she's always around, even if she's often busy.
This problem doesn't just occur for consultants. A friend of mine has had a long standing rule about never accepting stocks or stock-options when he works for a company.
His reasoning is simple: when he's a consultant, he always tells the boss when he's making a mistake, and precisely how its a mistake. Since he's a consultant, he's already set up the fee schedule in such a way that he doesn't care if he's summarily dropped from a project.
When he's an employee and DOESN'T own part of the company, his reaction to bad management decisions is "I'm going on the record as saying this is a bad idea, but its YOUR money, if you want to throw it away."
When he's a stockholder, he feels an obligation, as a stockholder to tell the boss "Not only is this a bad decision, but it will ultimately affect shareholder value. As a shareholder I feel it is not only my duty to oppose this decision to the full extent of my authority, but to let other shareholders know of it, and what adverse affects it will have on the company." Needless to say, this never goes over well.
And, no he's not usually bound by NDA, since he knows about this scenario when he joins a company, and doesn't sign an NDA that prevents him, if a shareholder, from communicating with other shareholders.
I have both "After Man" and "Man after Man" by Dougal Dixon. The first is, IMHO, a much better read than the second.
My main problem with the second is that it assumes that man will have a brief fling with genetic engineering, creating a few new subspecies, and then die out due to genetic flaws. After that, other than a bit of 'Animal Husbandry' by one subspecies on another, no directed evolution takes place. Frankly, I found this so unlikely a scenario that I was completely unable to suspend belief and enjoy the book for the speculation that it was.
The First book was MUCH better. It simply assumes that man wipes himself out by some (unspecified) means, as well as taking every endagered species with him. The book then tries to imagine how evolution might fill all of the resultant vacant ecological niches. Many of the animals are interesting and even when implausible, are fascinating to wonder about.
I was lucky that it worked the other way around for me. I would have been willing to get my wife a diamond, but she's the activist in the house, and would have hated to wear anything that was as exploitively gained as a real diamond.
She did admit that she wouldn't mind wearing a synthetic diamond, provided it came with some sort of certificate of non-authenticity.
In the end we simply skipped the engagement ring and just told everyone we were getting married. Worked just fine.
I've only found myself in this situation a few times, but when I have, its been pretty bad. I once caused a 6-month delay in a project because of a mental block when trying to design a parser, and there was no-one else to do the job.
Eventually, we got another programmer on board (we were a start-up with few resources), and they did the job. What they did wasn't portable, wasn't extensible, wasn't elegant, but it worked. Later, when it needed to be extended, I was given the job. I had a good look at his solution, saw everything he had done wrong, and simply rewrote the whole thing. It took me less than a week.
The next time I got a block, it was in designing a GUI framework for an interactive game. I knocked my head against it for a month before deciding I needed help. I gave the job to a junior programmer in my department, and did his assignment for him. Again, the results were something that I thought was a really poor job, but it undeniably worked, and fulfilled the spec. After seeing what they had done, and how it worked, it was OBVIOUS to me how to fix it, and again I did a rewrite.
In both cases, we ended up with better overall code, since I find that the second version of anything I write is usually far superior to the first.
Of course, if you are going to use this method, it only makes sense to let the fellow helping you out know that you may well end up rewriting his code when new features are needed, but that in the meantime he's saving your bacon. The last thing you need is for them to end up resenting the fact that you threw their code away and rewrote it from scratch.
That paper happens to be the Montreal Gazette, (at http://www.montrealgazette.com although the web-site is pretty bad.) and I'll give a few reasons why I still bother with such a dead-tree publication:
1) The Gazette is one of the few papers that still has good comics. Montreal has an active and vocal comic-loving community and has been known to petition the paper for the comics we like. As a result, the comic page has every comic the same size as that mandated by Doonesbury, and there is nothing on the comics page but comics. There are two pages of full-color sunday comics on saturday (along with the normal B&W), and another single page of color on Sunday. Since I *still* can't get decent broadband out in the suburbs where I live, it takes me close to an hour to merely download that many comics on the Internet. Here the Gazette is actually saving me time. Now I don't want people to think that comics are the best/only thing in my life, but until recently, the comics really were the only thing that kept me a subscriber.
2) The technology reporting has recently seen a major improvement. Since part of what I do for a living in monitor changes in technology, I'm on a large slew of tech mailing lists and get most of my info from the web. This time last year, I would often find out about new technology two or three weeks before it would show up in the paper. Lately, I've been as likely to first hear about a new breakthrough in the Gazette as here on slashdot! I can only assume that there has been a major push to be more timely. Now if they would only add URLs to more of the tech stories so I could do additional research, I could start deducting the paper as a reasonable business expense.
3) The final, and IMHO the most important service that the Gazette provides is local news. Now, I don't know about most of North America, but in Montreal the English-speaking technical community is quite small. The events that occur in it can have major impacts on my life. Today, for example, I discovered in the Gazette that Zero Knowledge (a local company I'm sure many have heard of) just managed to recruit Stefan Brands. I have yet to see this news elsewhere on the net, although I assume it'll come down various channels eventually. Other news, like which Internet companies in my neighborhood are recruiting, and which are going IPO, is something that I would have a hard time finding out on my own.
So, I guess my suggestion to any newspaper that wants to keep readers like me is to try and reflect on how the local situation will change as a result of global and/or local events. Don't just report the news, reflect on what it means to the readership area. Global news I can get better on the Web. Local information of note is harder to come by.
That's right. I was hired by a team on a tight deadline. I could read C then, but had no experience in coding it. However, I was the only person in the team who already knew the assembly language for the target machine. They had a prototype of their code half written in C, but it turned out there was no C compiler for the platform they had to run on.
So, they handed me the code and I typed in the equivalent assembly language. I quickly discovered that I could write the assembly about as fast as the two other programmers could write the C. One month later we had a working demo. It may not have been a truely awful job, but it sure was mindless!
A friend at McGill university is writing code that has been used to demonstrate 2-way video conferencing with uncompressed video and 12 channels of uncompressed high-quality audio. With this software, they've managed to have musicians in Ottawa and Montreal collaborate in live jam sessions. The demo's have been quite impresive, and you can get the code here. (Not yet open source, although they're working towards that.)
When the last BT report came out I was working as a Technology Analyst, in charge of keeping up with current trends in IT, so I downloaded and "Analysed" their latest report. I put that in quotes, because most of the time I was either busting a gut laughing, or staring in disbelief at the stupidity of the items on the timeline.
Problems with the report included, but were not limited to:
- Inappropriate use of Computer Science terms, making it impossible to know what they were predicting.
- Predictions using vague and/or undefined terms.
- "Predictions" for things that are already commercially available
- Far term predictions for things that are already in prototype
- Near term predictions for technologies that have several intermediate steps that we haven't achieved. In other words, wildly implausible preditions.
- Near term predictions for technologies that rely on the development of technologies for which they've given far term predictions.
- The same technology showing up under different names at radically different points in the timeline.
- No indication that they have any idea of which technologies rely upon or enable other technologies.
My final impression was that the results were the unsorted compilation of a brainstorming session amongst some rather bright high schoolers. As a random list of technology ideas, the document has has some merit. As a technological timeline, its crap.One of the panels at TorCon3 was "Has Science Fiction Failed as a Fiction of Science?" The various panellists decided that SF hasn't so failed, and then proceeded to give explanation after explanation of why, in fact, it has. Lets face it, to any sophisticated reader, most SF written today is not written about a possible future, but about what we once thought might be a possible future. Scientific and technological progress has passed by most of today's authors and left them in the dust. Reading even well-written 'SF' like that of Czerneda or Bujold IS reading fantasy and has much the same feel as reading 1930's SF where everything is done with massive vacuum tubes. The story may be well told and the characterization is great, but the setting makes no sense. Where are the AIs? Where are the hugely extended lifetimes? Where is the nanotechnology? Where are the body modifications? Whaere are the ubiquitous microscopic computers? Where is the brain uploading? Where are any number of technologies we are working towards today that don't show up in most contemporary SF? Spider laments that readers prefer Fantasy to SF. Maybe they just prefer that their fantasy be overt.
Now, all is not lost, some authors such as Walter Jon Williams, Charlie Stross, Linda Nagata, Ian M Banks, Greg Egan and others have embraced the new future that is appearing in front of us, but they are the exceptions. Until most SF authors are actually writing about possible futures again, SF will be in an inevitable decline.
I used to believe my PHBs when they told me something was for one use and that it would be discarded afterwards.
I once worked for a games company that asked me to take an existing text-only game, hack a graphic user interface onto the output routines, and produce a more up-to-date version of the same game. I told my bosses that it would work, once. The resulting code would be ready quickly but would be an unmaintainable mess, and unusable in other products. "Fine" they said, "Its just a market test".
Nine months later I'm in hot water because I'm insisting that the Version 1 code for the game is unsuitable for use in Version 2, and needs to be rewritten.
I have, since that time, had so many jobs in which I was required to maintain 'quick-and-dirty' code which ended up being legacy code, that I no longer believe anyone who says something is throwaway. I always try to make the code be portable and maintainable, because all too often, I'm the one who ends up having to port and/or maintain it.
I did telework for a games company for 6 months and I found just the opposite. I would wake up in the morning, get a coffee, read my mail and would find the latest task list and/or bug report sitting there.
My reaction would be to pull up the code and start to fix it. Four hours later I would realize that I was still in my bathrobe, I hadn't had breakfast or my morning shower and my coffee was long cold. In short I found that I had to explicitly time the number of hours of work I did in a week, so that I wouldn't end up doing 80-hour weeks, just because I could. It took a month or so before I got to the point that I would say, "Okay, thats 50 hours this week, so even if its now only thursday afternoon, I can stop work until monday."
And I suppose it never got lonely or depressing since I seldom make friends at work anyway. (Not that I get on badly with my workmates, but they aren't the people I would CHOOSE to spend my time with.) Besides my SO has a home office so she's always around, even if she's often busy.
His reasoning is simple: when he's a consultant, he always tells the boss when he's making a mistake, and precisely how its a mistake. Since he's a consultant, he's already set up the fee schedule in such a way that he doesn't care if he's summarily dropped from a project.
When he's an employee and DOESN'T own part of the company, his reaction to bad management decisions is "I'm going on the record as saying this is a bad idea, but its YOUR money, if you want to throw it away."
When he's a stockholder, he feels an obligation, as a stockholder to tell the boss "Not only is this a bad decision, but it will ultimately affect shareholder value. As a shareholder I feel it is not only my duty to oppose this decision to the full extent of my authority, but to let other shareholders know of it, and what adverse affects it will have on the company." Needless to say, this never goes over well.
And, no he's not usually bound by NDA, since he knows about this scenario when he joins a company, and doesn't sign an NDA that prevents him, if a shareholder, from communicating with other shareholders.
I have both "After Man" and "Man after Man" by Dougal Dixon. The first is, IMHO, a much better read than the second.
My main problem with the second is that it assumes that man will have a brief fling with genetic engineering, creating a few new subspecies, and then die out due to genetic flaws. After that, other than a bit of 'Animal Husbandry' by one subspecies on another, no directed evolution takes place. Frankly, I found this so unlikely a scenario that I was completely unable to suspend belief and enjoy the book for the speculation that it was.
The First book was MUCH better. It simply assumes that man wipes himself out by some (unspecified) means, as well as taking every endagered species with him. The book then tries to imagine how evolution might fill all of the resultant vacant ecological niches. Many of the animals are interesting and even when implausible, are fascinating to wonder about.
I was lucky that it worked the other way around for me. I would have been willing to get my wife a diamond, but she's the activist in the house, and would have hated to wear anything that was as exploitively gained as a real diamond.
She did admit that she wouldn't mind wearing a synthetic diamond, provided it came with some sort of certificate of non-authenticity.
In the end we simply skipped the engagement ring and just told everyone we were getting married. Worked just fine.
I've only found myself in this situation a few times, but when I have, its been pretty bad. I once caused a 6-month delay in a project because of a mental block when trying to design a parser, and there was no-one else to do the job.
Eventually, we got another programmer on board (we were a start-up with few resources), and they did the job. What they did wasn't portable, wasn't extensible, wasn't elegant, but it worked. Later, when it needed to be extended, I was given the job. I had a good look at his solution, saw everything he had done wrong, and simply rewrote the whole thing. It took me less than a week.
The next time I got a block, it was in designing a GUI framework for an interactive game. I knocked my head against it for a month before deciding I needed help. I gave the job to a junior programmer in my department, and did his assignment for him. Again, the results were something that I thought was a really poor job, but it undeniably worked, and fulfilled the spec. After seeing what they had done, and how it worked, it was OBVIOUS to me how to fix it, and again I did a rewrite.
In both cases, we ended up with better overall code, since I find that the second version of anything I write is usually far superior to the first.
Of course, if you are going to use this method, it only makes sense to let the fellow helping you out know that you may well end up rewriting his code when new features are needed, but that in the meantime he's saving your bacon. The last thing you need is for them to end up resenting the fact that you threw their code away and rewrote it from scratch.
That paper happens to be the Montreal Gazette, (at http://www.montrealgazette.com although the web-site is pretty bad.) and I'll give a few reasons why I still bother with such a dead-tree publication:
1) The Gazette is one of the few papers that still has good comics. Montreal has an active and vocal comic-loving community and has been known to petition the paper for the comics we like. As a result, the comic page has every comic the same size as that mandated by Doonesbury, and there is nothing on the comics page but comics. There are two pages of full-color sunday comics on saturday (along with the normal B&W), and another single page of color on Sunday. Since I *still* can't get decent broadband out in the suburbs where I live, it takes me close to an hour to merely download that many comics on the Internet. Here the Gazette is actually saving me time. Now I don't want people to think that comics are the best/only thing in my life, but until recently, the comics really were the only thing that kept me a subscriber.
2) The technology reporting has recently seen a major improvement. Since part of what I do for a living in monitor changes in technology, I'm on a large slew of tech mailing lists and get most of my info from the web. This time last year, I would often find out about new technology two or three weeks before it would show up in the paper. Lately, I've been as likely to first hear about a new breakthrough in the Gazette as here on slashdot! I can only assume that there has been a major push to be more timely. Now if they would only add URLs to more of the tech stories so I could do additional research, I could start deducting the paper as a reasonable business expense.
3) The final, and IMHO the most important service that the Gazette provides is local news. Now, I don't know about most of North America, but in Montreal the English-speaking technical community is quite small. The events that occur in it can have major impacts on my life. Today, for example, I discovered in the Gazette that Zero Knowledge (a local company I'm sure many have heard of) just managed to recruit Stefan Brands. I have yet to see this news elsewhere on the net, although I assume it'll come down various channels eventually. Other news, like which Internet companies in my neighborhood are recruiting, and which are going IPO, is something that I would have a hard time finding out on my own.
So, I guess my suggestion to any newspaper that wants to keep readers like me is to try and reflect on how the local situation will change as a result of global and/or local events. Don't just report the news, reflect on what it means to the readership area. Global news I can get better on the Web. Local information of note is harder to come by.