By 2020, the amount of data generated each year will reach 35 zettabytes, or about 35 million petabytes, according to market researcher IDC. That's enough data to fill a stack of DVDs reaching from the Earth to the moon and back, according to John Gantz, chief research officer at IDC.
Demand will be high for IT workers with the ability to not only analyze dizzying amounts of data, but also work with business units to define what data is needed and where to get it.
Tuesday, August 31, 2010
Monday, August 30, 2010
"debugging hell" - running code over and over, making random changes and seeing if they worked - HAHA!
My post on the nature of programming seems to have struck a nerve. Many commenters pondered what makes a developer great. “Ka” thought that:
“You [are] not born [a] good or great programmer, you become one with time and study and hard work. At the beginning, everybody is a bad programmer.”
I disagree. Developers are not born “great,” but greatness does not automatically come with experience. Conversely, lack of experience does not make a developer “bad.” The difference between a great developer and a bad developer is not in their domain knowledge, but their methodology. The distinguishing mark of a great developer is that he codes consciously. Put another way, a good developer always knows why he is doing something. From the perspective of personal ethics, this requires intellectual courage and integrity.
Let me give an illustration of what I mean from personal experience:
When I got into Objective-C development, I was a “bad” developer. Most of my experience is with .Net code. Jumping into the iPhone dev world was intimidating. As as a result, I lacked the courage to learn the architecture. I tried to manipulate blocks of code found on the web without understanding what they were doing. I would copy and paste blocks of code and just change variable names. When things didn’t work, I would look for another block of code to substitute for the failing one, or enter “debugging hell” – running code over and over, making random changes and seeing if they worked. This is the hallmark of a bad developer – imitating without understanding. I kept this up for over a year. It’s not that I didn’t try to learn the language. I got several books and watched iTunes U classes. But the way I used the learning materials was to memorize blocks of code and look for places to stuff them into my code. I wasn’t actually learning the platform, just collecting samples. Some developers spend their entire careers this way. They carry collections of old code everywhere they go, and just grab chunks to insert into new programs. They may never select File => New File or File => New Project in their whole career.
Thursday, August 26, 2010
These customs reveal certain underlying values in a society.
In an older post I discussed the cultural ethos of Formality vs. Casualness. Casualness -- in attire, in manner of speaking, in the way names are presented on paper -- maximizes commonality among people. Formality maximizes difference. A related dichotomy is Past vs. Future. Past emphasizes past accomplishments and titles, your family and cultural history, and gives great deference to elders. Future emphasizes what you are doing today and who you aspire to be tomorrow. Future-oriented cultures, for better or worse, favor the energy of youth over the wisdom of elders. America is a decidedly casual, future-oriented culture, and this is partly what makes it unique.
In any case, it's interesting that cultural values of this sort can appear so visibly in how events are staged and speakers introduced.
A 29-year-old female from New York City comes in at 3 a.m. to an ED (emergency department) in California, complaining of severe acute abdominal pain that woke her up. She reports that she is in California attending a wedding and that she has suffered from similar abdominal pain in the recent past, most recently resulting in an appendectomy. The emergency physician performs an abdominal CAT scan and sees what he believes to be an artifact from the appendectomy in her abdominal cavity. He has no information about the patient's past history other than what she is able to tell him; he has no access to any images taken before or after the appendectomy, nor does he have any other vital information about the surgical operative note or follow-up. The physician is left with nothing more than what he can see in front of him. The woman is held overnight for observation and released the following morning symptomatically improved, but essentially undiagnosed.
A vital opportunity has been lost, and it will take several months and several more physicians and diagnostic studies (and quite a bit more abdominal pain) before an exploratory laparotomy will reveal that the woman suffered from a rare (but highly curable) condition, a Meckel's diverticulum. This might well have been discovered that night in California had the physician had access to complete historical information.
This case is recent, but the information problem at its root seems a holdover from an earlier age: Why is it that in terms of automating medical information, we are still attempting to implement concepts that are decades old? With all of the computerization of so many aspects of our daily lives, medical informatics has had limited impact on day-to-day patient care. We have witnessed slow progress in using technology to gather, process, and disseminate patient information, to guide medical practitioners in their provision of care and to couple them to appropriate medical information for their patients' care.
Many people have asked me about some of the references for my Real Life Social Network talk. So here they are. I’m truly standing on the shoulders of others. For the most part, I’ve taken other people’s research and synthesized it, looking for patterns and trying to figure out how it all relates together. I hope the links here inspire you as much as they have inspired me.
Mapping people’s real life social networks.
I published a research paper in 2007 that detailed an early version of this process. I’ve since iterated on it a few times. The paper also contains some findings towards the end.
The magic number 150.
See this New York Post article where Robin Dunbar describes how different groups are made up of 150 people. Nicholas Christakis and James Fowler have also studied this in modern groups. For a great overview (with data) of Dunbar’s number and online games, see this blog post by Christopher Allen.
Friday, August 20, 2010
Wednesday, August 18, 2010
For young smart programmers who study a bit about the basic principles of making money, it’s pretty easy to get a steady income from the internet. It’s almost trivially easy, particularly at this point in time where there are many consumers of internet-based products and few producers.
But many people who try to make money on the internet are failing – and one of the main reason they fail is because of angels. Dark angels, flying about and preying on fresh minds.
You see, the angel investors, however benign the name may sound, are not investing money to help businesses get off the ground. They are not investing money so that others will get as rich as they themselves are. They are not doing a nice and social service – they are investing money because they want even more money back. That’s all they are – they are hawks looking to see where they can prey.
And one of their main bait methods is in their writing. Angel investors and others in their eco-system are writing on the internet about how to make money on the internet. These articles are what young programmers read, and the methods that these people write about is what the programmers end up using. Not knowing that they have fallen into a deadly trap that will maximize the potential profits of the angels, while rendering them nothing but statistical nothings, to be discarded at any time.
Let's get the self-aggrandizing plea for attention out of the way:
Please vote for my SxSW panel entitled "A Bootstrapped Geek Sifts Through the Bullshit."
It answers questions like "How do I get the courage to just start when I know so little about what it's really like at a startup?" and "How do I balance the utility of learning from others with wanting to go my own, unique way?"
Plus it's ironic; I'm giving advice about how to take advice. You know, like finding a black fly in your Chardonnay. (White flies are harder to see and therefore not ironic, you see.)
OK, now on to the good stuff...
Champion of the dipshits
Michael Arrington wrote an interesting piece today at TechCrunch about how VCs are pissed that great entrepreneurs are taking under $500k of angel money instead of $2m their money.
The real reason they're pissed is that VCs are increasingly unnecessary to get companies started, both because of inexpensive technology and marketing channels and because there are enough angel investors that founders don't have to sell the entire farm for ridiculous amounts of cash they don't really need.
And then, for the few companies that really do need VC-sized investments to take them from product/market fit to explosive growth, by the time they start touring Sand Hill Road their valuations are sky-high; they've already got all the trappings of a successful company, the major risks having been removed during the angel round.
All this is explained in clear detail in Paul Graham's his piece on the future of tech investing — a must-read for anyone interested in financing. He's is biased, of course, because he leads the 200+ company Y-Combinator incubator, but his predictions have already come true for many founders I know personally.
Of course the VCs aren't happy about this. This excerpt from the TechCrunch article made me livid:
The VCs, for their part, fight back more quietly. They point out that very few angel funded startups end up very big or interesting. “An entire generation of entrepreneurs are building dipshit companies and hoping that they sell to Google for $25 million,” lamented a venture capitalist to me recently. He believes that angel investors are pushing entrepreneurs to think small, and avoid the home run swings. And you don’t get a home run unless you swing hard, he says. When you play it safe you nearly always lose.
Rather than provide a cogent argument for why founders ought to take VC money anyway, the response is to call the company a "dipshit" and reveal the astounding arrogance that a few founders selling their company for $25m is somehow a failure.
To understand what's really being said here, you have to replace the word "you" with the actual antecedents. So: "When you play it safe you nearly always lose" should read: "When founders play it safe VCs nearly always lose."
But founders often win.
That's what gets me about this entire attitude — it's about returns for their fund, not success for the founders. Which is how it should be, understand, because they have a fiduciary duty to their investors, not to the founders of the companies they invest in. It's OK for them — it's their job — but it's not OK for you. "You" being "you, entrepreneur, reading this, the one who matters."
At last year's Capital Factory Demo Day, Mike Maples Jr. gave the keynote address. He gave the statistic that only 9% of the companies they invest in succeeded. And his venture firm is considered one of the more successful ones. (By the way, Maples is now doing super-angel deals. Interesting.)
The math is simple: Only one in ten companies need to hit, but it needs to hit big, like 100x the original investment. Of course no one wants the rest to fail, but every one will be pushed into explosive growth, which means strapping a rocket to the back of each one, even if that means the vast majority will just blow apart.
Great for them, bad for the founders.
The last thing they want is for founders to wake up and realize that this isn't necessarily a good way to build a company. They don't want you to realize that if you shoot for reasonable, profitable growth, it's far more likely to work, far more likely to produce a company that not only pays the bills but is a valuable asset, one that you might sell someday for millions of dollars, like I did.
For them, a little, solid company for $25m to Google is dipshit material. For you and me, it's a life-altering home run.
Until I hear a rational argument for why super-angels, angels, or friends-and-family rounds are worse for founders than a standard A-round from a VC, I'm just going to ignore these emotional, self-serving statements.
And I suggest you do too.
Focus on building a company you're proud of, not how big and disruptive you can be. Focus on getting to profitability as the greatest measure of success. Focus on selling customers, not selling investors.
Monday, August 16, 2010
Someday, @tweetitow will be ready to help those in need by providing a way to coordinate and collaborate easily and cost-effectively.
I am still a few miles away from one of the worst floods in the history of Pakistan. Still, I could not figure out the meaning of life and hope after losing your loved family, losing everything you built in your life in front of 30 feet high flood wave, where everything is completely devastated for millions of people.
I do not know how to save hopes of people in current situation. But as a technology and social entrepreneur, I have read hundreds of case studies and talks that a SMS is a ray of hope and decided to setup SMS based incident reporting.
I want to bring first line of incident reporting live for millions of people in Pakistan. This requires technology, spreading the right word to millions, building team, Logistics, resources and coordinating all the incident reporting.
Sunday, August 15, 2010
Now how to do this multi-paragraph SMS on my BB. Looks like the designers of BB focused more on the short aspect of SMS. That when I hit the return key, it sends the message instead of creating a new line.
Ahh never mind. Found it, just like on other appsn Shift-Enter. Alrighty, hope this goes through so I can now sleep.
Friday, August 13, 2010
- There are a few students who will be visiting our office today, and here's an overview of the kind of talk i'm going to give later. What do you think, anything else i should add or take away? Of course, it also includes the mandatory Steve Jobs commencement talk viewing.
a CodrSchool inception plan
*Figure out what you want to do in life.*
- Figure out your vision, what's burning inside
- Keep a vision as a guide, and execute for the short term.
- Don't worry about 5 years, or 10 years. Just do it. Get it done. Do something.
- is not a job, not a profession
- it's a lifestyle. it's who you are.
- it's not an 8-to-5 job, it's something you live with.
- day-in-day-out, you are a programmer, you constantly think about programming, about computers, about solving problems.
- it's a natural type of job. it's what you really do.
- it is a creative work, you're required to create/innovate, and not encode, or type source codes.
- you can only master progamming through years and years of practice
- earn your 10,000 hours to greatness
- using a software tool or technology, will *NOT* make you a great programmer.
- The world is flat. A com. sci. student in US is in the same playing field as we are. The Internet is a great leveler. We can compete. If they can code, so do we. If they can build Google or Microsoft or Apple, so do we.
- Internet access is cheap, at least cheaper than 10 years ago.
- More people has access to computers, an entry-level netbook is more than enough to start learning.
- Open source has made it easier for all of us to learn, and improve our skills.
- Experiment a lot
- Read lots of code -- lots of it, until your eyes pops-out
- Don't worry about your parents or friends tell you that you spend too much time on computers. It's normal to be obsessed with computers. There-is-no-other-way.
- Explore what programmers are doing
- Download open-source codes
- Ditch Windows or Mac, and exchange with Ubuntu, or Linux, or any of the hackers OSes (BSD?).
- Use software tools that you have access to its code
- Try to change parts of it, and compile, change more, and compile
- Explore more, figure out how things work, why things work
- Stop using F1, or don't read documentation. Read the code! Yes, turn-off auto-complete, that's for n00bs (alright, i know i'm going to be flamed for this, auto-complete n00bs!).
- Learn at least 4 programming languages. Master a few core ones, like C. Yes, C. Yes, that C. Yes the one they all called to be dead already. C.
- Change your main desktop to Ubuntu, or any Linux variant
- Learn how to install server kind of tools; Web server, Database server, Proxy server, DNS server, SMTP server
- Do it the hard way: Why? Because we're all programmers, we want to learn. Learn how things work, and don't stop on being just a user.
- Build your own simple project, a simple application. Have other people use it, test it, critic it. Get feedback, go back and improve it, then release it again.
- Take risk, try it. Failure is always an option. Fail once, fail more. Fail everyday.
- You don't need to work for a company to learn. Or, don't need to work for the sake of working.
- Find what you want to do in life, and figure out a way to earn money from it.
- You can start at home, start with your computer
- Join mailing lists, contribute to open source
- Try freelancing, learn on your own
- Or, work in a company. No harm in that. Though, you won't learn a lot from a company, apart from what the company wants to extract from you.
- There is more learning outside of what you do in a company. Yes, i operate a company, but i still say this, because it's true.
*Read lots of codes. L-O-T-S*
*EXPERIMENT A LOT**SIDE BITS*
- Discuss the difference between how learning is viewed now, versus what is really learning.
- It's not about achievement, grades or honors. It's an external symbol, but only a symbol. It doesn't mean you have learned or not. It means, you have achieved something based on the criteria of the award.
- Learn, because you want to learn. Not learn, so you will have something to use when you plan to work later on. It won't work like that. Of course, you can go on with it, but it is something not sustainable.
- Imagine, cavemen going to college so they can apply at tech company later on. Impossible. Whoever invented education and work anyway? Of course, there's no point going back to stone age. There's a lot of benefit towards a good education and a good set of skills. That's it, beyond that, what you do, you don't have to work.
Thursday, August 12, 2010
In technology, once you have bad programmers, you're doomed. I can't think of an instance where a company has sunk into technical mediocrity and recovered. Good programmers want to work with other good programmers. So once the quality of programmers at your company starts to drop, you enter a death spiral from which there is no recovery.
Wednesday, August 11, 2010
Net Neutrality: Google offered a proposal in a spirit of compromise. No more white knight in shiny armor.
That’s fancy language for: Verizon and the nation’s telecoms have yet again won, Google officially became a net neutrality surrender monkey, and you — as an American — have lost.
Update: Google defends its reversal, saying through a spokeswoman: “We have taken a backseat to no one in our support for an open internet. We offered this proposal in the spirit of compromise. Others might have done it differently, but we think locking in key enforceable protections for consumers is progress and preferable to no protection.”
Tuesday, August 10, 2010
Monday, August 9, 2010
A bio of a Board of Director from a social startup. Please tell me what did he do? (real names withheld, of course)
X, Executive Director
One of the founders of the Y and the organization’s Executive Director, X is an entrepreneur, technologist and activist whose work centers on developing Internet-based technologies to facilitate the rapid transfer of knowledge between people, groups, and organizations. He is the recipient of the A award, runner-up in the B competition, and a finalist in the 2010 C awards. Prior to establishing Y, X was a Chief Technology Officer at an Internet firm serving Fortune 50 companies where he developed technologies that simultaneously optimized users’ networking and personalization within and between online communities and organizations. X has also been involved in the creation of social media applications. He holds a B.S. from Z College.
a BS - X
This is actually from a valid bio template, you can substitute X with your name, Y with the name of your startup company, Z where you graduated with BS, A is some award you won, B is another competition you almost beat, and C is the award you almost got, but haven't -- almost. Let's be honest nobody's perfect.
Then you can buy a domain at GoDaddy, sign-up for a Wordpress.com account (or Squarespace, if you like the dark, gothic look), put in your bio based on the template above, preferably put a big 'Donate' PayPal button beside your smiling, outdoorsy photo (mostly effective with a Sky diving photo or the one where you were almost (almost again, nobody's perfect) swallowed by a shark or being chased by a bear while crapping in the woods), and slap a slogan, 'Green is the next big thing', 'Social means business', or 'The most inconvenient truth revealed' or 'We are social, You are social, You are We, We are you. It's all about You, and We'.
Good luck! :D NOW is the time to do it.
Wait, there's more, sign-up for a Twitter and a Facebook account, then create a Facebook Fan page for your Y startup. Then buy a database of quotes, and whip-up a look-ma-no-hands Ruby on Rails (what else, you should use what the best hackers -- hackers of the year -- use) code to send Twitter status updates every 4 hours (thanks to Guy K for this advice) from that database, interleaved that with your "branding" message -- or, best add a suffix (i know, it is cool engineering) like [via Y]. Can't go wrong with that.
And e-mail... what e-mail?!, e-mail marketing is soooo old school, i highly suggest against doing that, e-mail is not social. Remember when Google tried to insert Buzz to Gmail? Yeah right, it's dead. E-mail is not social. Period. Only grandmas check those. and... chimpanzees.
But perhaps I should give Austin Heap (Haystack's mastermind) the final word:
“I hope we are ready to take on the next country,” he replied. “We will systematically take on each repressive country that censors its people. We have a list. Don’t piss off hackers who will have their way with you. A mischievous kid will show you how the Internet works.”
I think I just threw up in my mouth a little.
Most pundits who attempt this question focus on the personal characteristics of the developer as an individual. Accordingly, some say it’s about technical skills, some about abstract reasoning, some about the ability to work in a team, some about an improvement attitude, some about hard-working dedication, some about systems thinking… yadda yadda.
I have a different take.
Dr. Deming has taught us that 95% of the performance of an organization is attributable to the system (processes, technology, work design, regulations, etc.) and just 5% are attributable to the individual. If we accept this (and I certainly do), then all the discussion about attributes of the individual becomes essentially moot.
Take an outstanding developer from one system (e.g. team, business) and place them into another system, and their performance will depend almost entirely on the system they’re now working within. And NOT on their own personal attributes, skills, talent, or whatever.
Investors have no idea that when they maltreat one startup, they're preventing 10 others from happening, but they are. Indirectly, but they are. So when investors stop trying to squeeze a little more out of their existing deals, they'll find they're net ahead, because so many more new deals appear.
One of our axioms at Y Combinator is not to think of deal flow as a zero-sum game. Our main focus is to encourage more startups to happen, not to win a larger share of the existing stream. We've found this principle very useful, and we think as it spreads outward it will help later stage investors as well.
Friday, August 6, 2010
Nexus One: a phone designed to be hacked. Awesome. I know it's not a user-centric device, but i've never been a user anyway.
The Nexus One combines an up-to-the-minute platform (Android 2.2), modern hardware, and the pure Android software suite. It's a good choice both for people who want to build Android applications using either the SDK or the NDK, and those who want to experiment with modified versions of the Android platform. Note that the Nexus One still ships with Android 2.1 but will download 2.2 soon after you turn it on; make sure you’re near a fast network.
As well as being an outstanding developer platform, it's a really nice everyday phone; we're really happy to have connected the right dots to make this happen.
Thursday, August 5, 2010
Google stops Wave. Plans to integrate tech into other projects. I wonder what will happen to the Wave on Google Apps?
But despite these wins, and numerous loyal fans, Wave has not seen the user adoption we would have liked. We don’t plan to continue developing Wave as a standalone product, but we will maintain the site at least through the end of the year and extend the technology for use in other Google projects. The central parts of the code, as well as the protocols that have driven many of Wave’s innovations, like drag-and-drop and character-by-character live typing, are already available as open source, so customers and partners can continue the innovation we began. In addition, we will work on tools so that users can easily “liberate” their content from Wave.
Wednesday, August 4, 2010
Hiring Bad Programmers kills startups, according to PG. Yes, psychopathic, retarded, crazy programmers.
But when I think about what killed most of the startups in the e-commerce business back in the 90s, it was bad programmers. A lot of those companies were started by business guys who thought the way startups worked was that you had some clever idea and then hired programmers to implement it. That's actually much harder than it sounds—almost impossibly hard in fact—because business guys can't tell which are the good programmers. They don't even get a shot at the best ones, because no one really good wants a job implementing the vision of a business guy.
Tuesday, August 3, 2010
Instead of videos showing the iPhone 4 and other phones losing reception bars after being held in certain ways, visitors to apple.com/antenna see a slide show of Apple’s impressive antenna test lab and an explanation that all cellphone antennas have weak spots.
“We constantly refresh the content on Apple.com,” Apple spokeswoman Natalie Harris told Wired.com, echoing an earlier statement sent out by the company over the weekend. “If you’d like to access the videos, you can find them archived on YouTube.com/Apple.”
Monday, August 2, 2010
But use it exactly how I tell you to use it, because fuck you, it's my code. I'll decide who's the goddamn grown-up around here.
Guy Faulkner, a 51-year-old Python developer in Seattle, was amused by the Wikileaks announcement. "When Python developers release Open Source code, they are saying: Here, I worked hard on this. I hope you like it. Use it however you think best. Some stuff is documented as being subject to change in the future, but we're all adults here so use your best judgment."
Faulkner shook his head sadly. "Whereas Java developers who release Open Source are code are saying: Here, I worked hard on this. I hope you like it. But use it exactly how I tell you to use it, because fuck you, it's my code. I'll decide who's the goddamn grown-up around here."
"But why didn't they write that Perl script in Python?" Faulkner asked.
You know, the technological crippling that means a DVD bought in the USA won’t work in Europe and vice versa.
Back in the days of video tapes, there was good (if not great) reason why videos from one region wouldn’t work in the other: they were encoded with different numbers of lines per frame, to match the TVs available in the region (NTSC in America, PAL in Europe). This was not a good situation, but one could see how it came about.
But DVDs intrinsically work anywhere — at least, playing NTSC DVDs on PAL players isn’t a problem. So: here’s how DVD region encoding works. Each DVD contains a data field saying “Region 1″, or 2, or whatever. And each DVD player also has such a field telling where it was bought. When you put a DVD in the player, the player runs code that checks whether the DVD’s region matches its own, and if not, refuses to play.
Just think about that for a moment. The hardware Just Works. And the software contains extra code, added to prevent it from working. That, my friends, is a pretty good definition of stupidity: “doing additional work in order to achieve less”.
Another perspective I gained was that decorating your mansion with works of art you know nothing about is amazingly rewarding, as long as you can mix it up by leaping across rooftops and assassinating bad guys and hanging with your buddy Leonardo. I swear, if they ever make a movie about my life, the handsome and dashing actor who plays me, when asked on his deathbed which of life's pleasures had given him the greatest happiness, will say something cheesy that makes the audience ooh and aww with appreciation, but it'll be total Hollywood bullshit, because what I really will have said was "gaming".
By Dave Winer on Sunday, August 01, 2010 at 11:57 AM.
I love that David Weinberger is narrating his fumbling programming work on his blog. It's great for a lot of reasons.
You never stop going through it, even if you've been programming for 37 years, as I have. You'd think after all this time I would remember the basic lessons I learned the hard way when I was in my early 20s. But nope, I often forget them.
One of the things I talk about with everyone I meet at NYU if they're willing to listen is that we're not teaching programming and we should be. I think every person who graduates with a bachelor's degree should have one semester of programming, just as they should have one semester of journalism.
If I ever get my book together, there will be a chapter on programming in it, where we'll cover the basics. Logic, looping, variables. I seriously think we can get political science students to experience a teeny bit of the magic of programming. It'll be a challenge for sure.
But it's a serious situation because there aren't enough students taking up computer science. New York wants to become a tech center, but it'll never happen as long as there are so few programmers graduating from our universities. Another way of saying this is that every student graduating with a compsci degree is much sought-after. They have their choice of jobs. This, in a major recession.
Of course you're going to think it's the system that's screwing up. We all do. But that is so rarely the cause of the problem that it pays to put the theory aside and get the computer to reveal its logic to you. It's coming up with what you think is the wrong answer, but when you finally figure it out, you'll see why it's the right answer. You can't move on until you see this.
So step through it in the debugger, and watch what it does with your data. Eventually you will see it do something that isn't what you expected. Now figure out why and change the code, and test again.
I once stared at some code that was supposed to return the value 26 but it was returning 251. Must be a bug in the math processing code, because how could 25 plus 1 yield 251. But it did, ever damned time the code ran. Until I realized that the 1 was a string and the 25 was a number and the language coerced the number to a string so it could concatenate them. What was imperfect was not the machine, but my understanding of the machine.
BTW, I can only remember one time that a problem turned out to be a bug in the system. I spent a week chasing a bug in IBM's Pascal compiler in the early IBM PC. Of course there was no way to file a bug report, so once I understood what it was (I had to look into the code it was generating) I just worked around it.
Another time, there was some bad memory in my system. This was in the very early days of PCs, when there was no memory management. So I put a comment around the bad memory in my source, and was very careful not to add any code above it -- in all my source files.
Very early in my career as a programmer, I had an office in the Empire State Building, on the 39th Floor, with windows that open. I was there late one night, trying in vain to figure out which of the computers that was running my code had the bug. My problem was I had no idea how to approach the problem. That's 98 percent of the battle, clearing your mind, rolling up your sleeves, accepting the responsibility that it's your bug not some programmer in New Jersey, or the guy who wrote the operating system. I remember thinking, staring out into the NYC night that they shouldn't put young programmers in skyscrapers with windows that open.