Saturday, December 20, 2008
Snow
She was grateful, but i really hope she doesn't get me something for Christmas.
Me? I'm nearly 50. I hope to shovel snow for another 30 or 40 years. If i don't, i hope it's because Global Climate Change has made it moot. It's not that i'm rooting for it to get warmer. That's a disaster i seriously don't wish for. It's that the alternative explanation is that my health won't allow it. And i'd rather live to be a healthy old bastard who shovels his own snow, helping out the younger 70 year old women down the street as needed, thank you very much.
I got to listen to quite a few podcasts while waiting for the driveway and walk to become cleared. For example, a recent study showed that humor is contagious, out to the third degree of separation. IMO, that's much better than passing around the flu. And, i've managed to do better than usual in that regard this season, so far. That tidbit is from Scientific American. This is a show that doesn't insult my intelligence, always has something interesting to say, and does it with a bit of humor. And, it's free for download. What more could you possibly want?
My biggest problem wasn't a sore back or arms. It was 20 degrees F (-6 degrees C). My biggest problem was overheating. My feet were hot in my new boots and wool knee sox. My thighs were a bit chilly, because jeans aren't so hot after all, my head was warm with hat over hood. But i probably shouldn't have also had the sweater on. My solution was to take my gloves off. I didn't just do that for the picture. Nothing wrong with my circulation.
Thursday, October 16, 2008
Less Filling
After he took the needle out, i said with enthusiasm, "I like needles!". Then i added that i just wanted to say something he hadn't heard before. He said he doesn't hear it often.
I probably should have had breakfast first. But i was in such a hurry to get there on time. Can't eat now. Hey - it's a new diet! Weight loss is guaranteed! Or is it wait loss?
I woke this morning with sore neck muscles. I was reminded of the Steve Wright line.
When I woke up this morning, my girl friend asked me, "Did you sleep well?" I said, "No. I made some mistakes."
Sunday, September 21, 2008
Science Fair Projects
http://www.thenakedscientists.com/HTML/content/kitchenscience/
http://www.cool-science-projects.com/
http://school.discovery.com/sciencefaircentral/
http://school.discoveryeducation.com/sciencefaircentral/
http://scienceclub.org/scifair.html
http://www.all-science-fair-projects.com/category0.html
http://www.energyquest.ca.gov/projects/index.html
http://www.freesciencefairproject.com/
http://www.ipl.org/div/projectguide/
http://www.isd77.k12.mn.us/resources/cf/SciProjIntro.html
http://www.picadome.fcps.net/lab/sci_fair/science_fair.htm
http://www.sciencebuddies.org
http://www.sciencebuddies.org/
http://www.sciencefair-projects.org/
http://www.sciencemadesimple.com/
http://www.scienceproject.com/
http://www.super-science-fair-projects.com/
This just in:
How to make a telescope!
Saturday, September 20, 2008
What spider is this?
Thursday, August 14, 2008
Spaced Out
I juz need sum help!! sumone??
okaii so ive been wiv my bf for ova 2 yrs now nd hes been acting wired l8ly so i asked him wat was up i ended up geting out of him that he doesnt feel the same neymore hes realli confused bout it all i dunno nd he says he doesnt wanna brake up yet.. were giving this week end ago 2 c wat happends but im so confused i juz love him so much i dun wanna loose him plz advice sum1 plz!!
This is Astronomy and Space, so expect some weird, even hostile answers.
We'll approach this as an engineering problem. What are the requirements? Clearly, you want to attract and keep your boyfriend. There are three things you'll likely want to do.
First, you want to be good looking. An attractive appearance is a proxy for health. You want him to think that you are healthy. Cut to the chase - ask him to start exercising with you. It could be walking, biking, running, swimming, whatever. And it would get you both off your butts doing nothing. Just making out isn't going to firm up your relationship.
Second, you want to appear smart. To do that, you have to pass some good ideas by him. This is hard, so one way to do that is to ask lots of people for advice. Yahoo! Answers isn't bad for this. You'll have to decide what is good, however. And, as has been mentioned, you might want to invest some time in spelling and grammar. You may have great spelling and grammar and are just doing this for style. How would i know?
Third, you want to appear happy. It can be such a drag to be with someone who is cranky or demanding. Be happy and and avoid being a nag. Learn some jokes. More than half of all jokes fail miserably, so you need a bunch of them. Learn what kinds of jokes he likes. But if you become a nag, your relationship is destined to the death spiral. He'll withdraw, you'll want more, and nag more.
Best of luck, and clear skies.
Tuesday, August 12, 2008
Is it right time now to start to bicycle on the road?
When i lived in Boston, the bicycle was by far the fastest way to get around town. When i lived in Philadelphia, the bicycle was by far the fastest way to get around town. Philadelphia police had several officers patrol by bike. I would say it's quickest in Detroit, but Detroit has nowhere that i want to go.
But if you haven't started biking around town, it's a good time to start. If everyone biked or walked places, there would also be health benefits - reduced diabetes, heart disease, better sex lives, and so on.
(more Yahoo! Answers).
Wednesday, July 16, 2008
Yahoo Answers
I've no idea why i started. It's not like Yahoo! Answers is new. Nor is that i'd never heard of it before.
There's a section under Science and Math called Astronomy and Space. I do astronomy. Some of the questions looked easy. For example, every few minutes, someone asks if the world is going to end in 2012. The Mayan calendar flips over then - sort of like we did going from 1999 to 2000. Did we survive? There are no Mayans left to flip the calendar over. And someone has been saying that there is a planet out there, Planet X, that is going to strike the Earth in 2012. (We'd have seen it by now.) There's some other nonsense too. After typing in my answer for this a half dozen times, i started a file for frequently asked questions. Someone even asked people not to ask this question. That held the flow back for... less than 20 minutes.
When you ask a question, Yahoo! Answers generates links to similar questions. It's hard to imagine that you wouldn't notice that your exact question was already asked - and has answers - well before you get through the asking process. These people just want to ask for whatever reason. They aren't going to be deterred.
So, one day, i ran out of questions i could answer. It's not that somehow the river ran dry. It's just that Yahoo! doesn't let people answer an infinite number of questions. Once you start answering questions and they get picked or voted as the best, then Yahoo! Answers lets you answer more per day.
So what kinds of questions do i ask? Well, there are two kinds. First, i ask questions for which i think there isn't an answer. Second, i ask questions that will evoke some humor. Third, i ask questions for which i already know the answers. Despite these strategies, i've managed to learn something. Highly unexpected, but welcome.
Here's an example question - though i posted it under mathematics.
Why is the line at the bank that i pick always the longest?
There are five lines at the bank. They're more or less the same length. I do my best to pick the shortest one. I note who is at the end of each of the other lines. All four are served before i am. Should i apologize to the people in front of me for picking their line - thus slowing their service?
I'm hoping it's funny because it's common experience. After all, you only have a 20% chance of picking the fastest lane, so most of the time at least one other line is faster. You feel that despite your best efforts, there is no justice in the Universe - someone got ahead of you that shouldn't have. Everyone feels like that. But i've added another twist. The other four end-of-line people get served first. Is that fair? Am i such an intrinsically unlucky person that i should apologize to the rest of my line for slowing them down?
Of course the four other end of line people really were in front of you. They should be served before you. It's the people behind them that are in any way behind you. So, the answer is "no". The Universe works the way it should up to this point.
Yahoo! Answers are nearly a complete waste of time. It's the blind following the blind. Neither the questioners nor the answerers have much in the way of a clue what they're saying. And i'm not just talking about the ones who can't type. Is the best answer from the novices any good?
And what if you really know what you're talking about? What good does it do to say that the Earth won't be destroyed? The only help you can give seems to be when the student has copied the question verbatim from their homework. (I've asked people to tell me where they're going to school - but no responses yet.) And if you know the answer and bother to give it, aren't you bursting with pride?
Perhaps the right thing to do is to write a Yahoo! Answers bot. This bot will have the answers to a bunch of questions, and when one of them gets posted, it will spit out the canned answer. The trick here is to recognize that the question matches an answer. Step two would be to let the bot scan all the questions and answers, figure out what the best answers were, and feed those as canned answers in the future. It might be fun.
Just three more days to answer my question on Yahoo! Answers. Feel free to copy and paste from this blog entry.
Saturday, July 12, 2008
New car
One night, i had a dream. I dreamed that instead of taking the T home, i got on a bus instead. There's a bus station right there at Harvard Station. No purpose in mind, just a whim. And instead of going South, i went North up Massachusetts Ave. The bus made many stops and people got on and off as one might expect. At one of these stops, i got off. Again, no purpose in mind, just a whim.
I walked further North down the sidewalk. There were lots of businesses on both sides of the street, but nothing of interest. This didn't bother me.
Then i came across a Chevy dealership. For no apparent reason, i walked into the showroom. A salesman walked up to me and asked me if he could help. I said, "No, i'm just looking around." He dangled some keys and asked me if i wanted to test drive a corvette. "It's free", he said. I said, "Sure", and drove the bright red car around the block and back to the showroom.
I got out, and he said, "I can let you have this car for no money down." I thought "no way", but signed the papers on a whim.
The drive home included a really fun bit on the Jamaica Way. It has all these small hills and turns. All dreams should be this much fun. The trip ends coming down my street. There's a parking spot that's very close to my house, and just after a driveway, so it's a smooth shot to park.
The car comes to a stop. I pulled out the key and looked forward. Right there is my 1978 Dodge Omni. I think, "That's right. I already have a car!".
That's when i woke up. No alarm. It was daylight. My bedroom was on the first floor, facing the front of the house. I got up and looked out the window. My Omni was exactly where it was in the dream. And behind the Omni was an empty parking space. It was a very vivid dream. I had the distinct notion that my brand new corvette had been stolen.
Friday, July 11, 2008
Birthday Gift
Well, i picked up a Fuji at the Grocery store. They didn't have the model i was looking for, but i figured i could return it if i didn't like it. Well, it's impossible to know if you're going to like it, because the box doesn't say everything you need to know. It turns out you need to install a driver to get it to work. The CD is supposed to have drivers for Windows or the Mac. But i run Linux, so this is a non-starter. Worse, the CD didn't come in the box. WTF? And, there was a note in the box that has the Fuji tech support phone number, and a hand scrawled note that said that the pictures from this camera were fuzzy. That's right, this camera had already been returned by someone as defective, and was being sold as new, though obviously, it wasn't refurbished or anything - they'd have noticed that there was no CD, and that there was this hand scrawled note. There were also a few pictures of some guy's family on the camera. I couldn't check them out on my larger computer screen because of the driver issue.
So, i brought the camera back, but apparently, the receipt was not in the bag. When i buy tech items, i always leave the receipt in the bag, just for this sort of thing. Apparently, i didn't buy it via a credit card - but rather my debit card (which is a Visa, BTW). They couldn't find the record of my purchase on their computer, and would not accept it without a receipt. I went back home. The receipt turned up on my kitchen table. Why was it there? Oh. I always put my grocery store receipts there. That way, when i'm unpacking groceries, i can check to see that i got everything i wanted, and can check that the prices were what i'd expected. So my habits conflicted - buying tech, and buying at the grocery store.
So, i did some research on line to see if i could find a camera that doesn't need a driver. I just want something that plugs into USB and mounts like a hard disk. No big deal. Nothing. Not a single ad, not a single review, nothing mentioned this critical issue. Not one product talked about compatibility with Linux. By the way, having to have the CD to install a driver is a pain for everyone, not just Linux users. Let's say you're at a friend's house and take some pictures. They say, "hey, could you send me a couple of those?" You say, "can't i just plug it into your computer and give them to you now?" If you have to install a driver, the answer is "no, you can't". Not unless you bring the CD with you. So, i'd avoid Fuji and Kodak at the moment, without regard to what computer and OS you use.
Well, my old camera is a Samsung. It still works. I like it. It just doesn't do sound with it's videos. It can store over 300 pictures on it's quarter gig SD card. So, i looked up Samsung cameras, found a cheap one, and ordered it. It's a Samsung 860. I'm happy to report that it does not require a driver, and just mounts like a disk drive. The camera is nice. It's very small - fits in my shirt pocket. It has two misfeatures. It does not have a look-through view finder like my old one. You must use the view screen. The view screen is hard to see in bright daylight. Also, it doesn't have a case. My old camera has both.
There's a third misfeature. Well, you might call it a misfeature. You see, it's so nice, that i want it for myself. My wife has lost two cameras already. I don't really want to give it to her. Yes, i picked it because it is cheap enough that i won't cry if it's gone, but it is really nice. And i also don't want to give her my old one. So, i'm going to have to buy a second one.
A funny story. I ordered a 1 GB SD card with the camera so i'd be all set when it arrived. The SD card arrived several days before the camera. I checked it out - it works fine. Only, by the time the camera arrived, the SD card was lost. I haven't found it yet. So, while at work, and on lunch break, i went to Best Buy, paid just over twice as much for another 1 GB SD card. But when i got home, and wanted to put it in the camera, i couldn't find it! I checked the likely places at the house - i hadn't been home long, and it didn't show up. I couldn't remember bringing it home, so i went back to the office and checked my desk. Nothing. The next day i was out at Walmart, and bought a third 1 GB SD card. I nearly lost it, but did manage to get it into the camera. Well, a week later, the second SD card showed up. It was in the refrigerator. I had gone out to lunch unexpectedly, and still had my bag lunch at the office. So i put the new SD card in my lunch bag so i wouldn't forget to bring it home. When i got home, i put my lunch into the fridge. Next up was a week a vacation. It didn't appear again until i was cleaning the fridge of old science projects. Maybe i like my chips cold. That's it. That's my story and i'm sticking to it.
Friday, July 04, 2008
Tor: Orphans of Chaos
So Tor.com is't just giving these books out from the goodness of their hearts. This book is no exception. The idea seems to be to hook you on the book, the author, or both. In the case of Orphans of Chaos, it ends with End of Part OneTo Be Continued in Part Two, FUGITIVES of Chaos, From John C. Wright, Available now in hardcover!.
Without any real spoilers, here are some notes. If you start reading this, and it seeems boring, note that the book starts pretty slow. It starts to pick up speed at around 20%. I don't have page numbers to give you, due to the electronic nature of the books. At the 50% mark, it's moving pretty fast. And, it ends with the above cliff hanger.
I liked the author's style, once he got going. It should be a good series.
One of the other books in my queue from Tor is Old Man's War. I have seen this book at Borders.
I also finished Interplanetary Hunter by Arthur K. Barnes. This is a light and fun little Scifi book, seemingly wriitten in the 1950's. At least, if it was written back then, it could be considered hard science fiction. But it doesn't take itself too seriously, so any science errors can be easily forgiven. For example, we know a bit more about Venus since then. I found it highly enjoyable. And, it's a great book all on it's own.
Thursday, July 03, 2008
Delusional
"We must have faith", said Spock. He could have said, "We must have delusions." If they're really the same, then delusions can't be bad while faith is a good thing. Does it matter what your faith is in? Does it matter what your delusions are? It shouldn't.
OK, so let's say you are going to start a big project. If you don't think you'll finish the project, it is foolish to start it. What if you don't know? Then what do you do? You have faith that you'll finish it. Lie to yourself, if needed. Create the delusion. Delusions are good.
Perhaps life is a journey, and though i'm not delusaional, i expect to get there eventually. The road to salvation is narrow, as the razor's edge.
Thursday, June 26, 2008
Maintenance club
I know something about that. I've changed an engine, fixed brakes, and so on. But i have a car in my garage that needs work, and i'm not doing anything about it.
But let's say you know nothing about car maintenance. What do you do? You need help. Get together with someone like me who knows what they're doing. You get help. But what do i get?
I've come to the conclusion that working on cars would be more fun, and therefore actually happen, if i had someone to do it with. So the great idea is the maintenance club. Each club member has some junk car. A club 'meeting' consists of descending on a club member's car for a few hours to achieve some goal. Everyone's junk gets some love in a sort of rotation. Maybe one of the junks is a '48 Chevy restoration project, or a 60's Jag.
But the thing that makes it work isn't that you get your car fixed. The thing that makes it work is that it's a social event. Bring out the pizza and beer, if that's what it takes.
Tuesday, June 24, 2008
Mortgage basics
Payment = P*(i/1-((1/1+i)^n))
where P is the Price of the house - or really the money to borrow, i is the interest rate: 0.0575 for 5.75 percent, and n is the number of payments - 360 for a 30 year mortgage. There are rounding issues, so this should be considered approximate. Payment is the payment per period, which is per month for most mortgages.
I learned that i accidentally picked a pretty good mortgage, and then five years later, did a pretty good refinance to lower interest rates. I made some very small mistakes (maybe tens of thousands of dollars), but have recovered from them, mostly in the refinance.
This is Detroit. A friend's folks died last year, and left him and his siblings a house. They all own houses, so they put it on the market. A year later, it's still on the market, but at less than 20% of what they'd started it at. It hasn't sold. Calling it a buyer's market is generous. It's foreclosure city. I assume it's impossible for at least three to five more years to sell my house.
But the banking industry is so greedy that they may have provided me an out after all. It used to be that getting a second mortgage was a last resort sort of thing. But now, banks are trying to sell these loans as "using your equity". And, they're quite aggressive about it. So, perhaps, i could suck all the equity out of the house as cash, and walk away from the house. My equity is probably enough to buy a similar nearby house (perhaps in foreclosure) outright. No loan of any kind.
Mark's articles talk about how there is a conspiracy in the finance industry. Short term profit greed drives it. But there seems to be something similar in the automotive industry. Why sell small affordable, high efficiency, low margin cars, when large high margin vehicles are selling? In fact, offering any small cars at all will just encourage people to buy them. Chrysler sells cars with hemi engines (big powerful engines). GM sells the Hummer. Ford sells the F-150, which was a small pickup when i was a kid. Then, gas went over $4 a gallon and for some reason people don't want to put $100 of gas into their tanks at a time. In the course of a month, gas hogs have gone out of style.
OK, so Ford has the Focus, a 4 door sedan, which if equipped with a 5 speed manual probably can get the kind of gas mileage that my car gets, assuming you drive it the way i drive mine. And sales have skyrocketed. They can't keep up with demand. This is a real problem. It takes awhile to get the pipeline moving. But the demand for the F-150 has dropped to the floor. Even luxury car sales have dropped. What's a Ford to do?
So, the automakers, not just Ford, have claimed that they didn't see this coming. Ford's solutions (available in Europe) won't be available in the states until 2010. That could mean summer of 2009. Chrysler made some investments last year that might pan out around then. GM makes noises, but i'm still waiting for product. This, despite the fact that my car was made in 2000 by GM. As far as i can tell, they don't sell it now.
But from my perspective, the idea that gas will go up isn't news. Maybe i was driving three times as far as anyone else, and so i noticed it sooner. But it was important to me twenty years ago. Well, total cost is also important. In a year, i'm currently spending $3,500 on gas, $800 on insurance, under $1000 on maintenance, and zero on amortization for my fleet. That's $5300 for 35,000 miles, or about 15 cents a mile. That's a quarter of what the government thinks people spend. Actually, it's less than that. My Saturn has increased in value, and maintenance has been much lower. But it freaks me out that i'm paying over a dime a mile. It's 60 cents to go to the grocery store. So i go on my way home from work, saving 60 cents.
Sunday, June 22, 2008
Can we go to a moive?
But he asked me if we can see The Happening, which is listed as Action/Adventure, Thriller and Politics/Religion, and rated R for violent and disturbing images. The trailer makes it look like deeply disturbing horror. I said, "no", and not just because it's rated R. I like to sleep at night too. He said, "Good".
Thursday, June 19, 2008
I talk about how cars don't have investment value. And you might think that this is a windfall. However, the car still works, and replacing it with something that gets as good gas mileage is unlikely. So it's not for sale.
I just did invest something into it. I bought a new windshield. Apparently it's not legal in Michigan to drive a car with a windshield cracked all the way across. It really wasn't much of a bother, as the crack wasn't quite in my direct line of sight. Still, i was never able to clean the inside of the windshield fully, probably a smoker in it's history. For now anyway, it's really clean.
But back to Michigan. No inspections in this state. So if you get pulled over, for anything, they notice your windshield and ding you with an extra fine. I got away with having to replace it, and going to a police station to have them sign off that i'd gotten it done. So, i got the windshield replaced right away. I'm really bad at the administrative stuff, but i did manage to get the signed ticket in the mail before the deadline. Also, the new windshield was cheaper than expected. Only $160 installed, with tax & everything. Still, it'd be nice if they gave you a list of what you need up front, like when you register it. I consider air conditioning to be more of a safety item in the summer than the cracked windshield. But i bet that Michigan doesn't care if you have it, or if it works. And so on. The windshield was number #3 on my priority list of repairs to do.
Tuesday, June 17, 2008
Acceptable Addiction
So, i tell people that i'm a caffeine addict, but on the wagon. They ask, "Why?" It's not why i got addicted, but why on Earth i'd give it up. Well, it has this feature that it flushes calcium from my body, and that affects my joints first, and gives me arthritis. "Oh." And i know they're thinking that it could happen to them, though it clearly doesn't happen to everyone, and they think maybe they'll get lucky, despite osteoporosis running rampant among the older population. Perhaps they think that they won't get older. I could happen, right? There is an alternative to getting older.
I know what you're thinking. Alcohol affects your mind, your judgment. That's what makes it different. Except that caffeine also affects your judgment. It makes you jittery. It make you buy more of that stuff you can barely tolerate. It makes you go to the bathroom more often. It also messes up your sleep patterns, reducing your mental performance. That's right. You took caffeine to improve your mental performance, but eventually you come out behind.
Monday, June 16, 2008
Parnas oopsla keynote podcast notes
I listened to it twice, and took notes. I haven't seen his slides. Sorry, this isn't prose, it's notes. Expect sentence fragments. And, they're somewhat organized together by topics, not notes in the order you'd hear in the show. Some repetition was removed. It hasn't escaped my notice that, as documentation, these notes of mine suck.
Listen to the show. It's one of the better talks about computing i've heard in the last decade or so.
Object Oriented: not a language thing. It's a description thing. Dykstra's THE does this in assembler. But OO languages have made it harder. Parnas has done this in Fortran. But younger people see this as a language issue.
- Abstraction - what is the "more abstract than" relationship? Subsetability: sequence of virtual machines.
- Information hiding, inspired by managers who wanted to break up a task into work packages, without incurring too much communication. (Parnas). Information hiding as a way to do composition.
- Documenting module interfaces.
- "Information hiding is an empirical result". - no. It's mathematical. It allows one to know if module A uses B, and knowing a limited amount about B, you can know if A needs to change or not.
- Hence, Information Hiding Theorem.
- So, you have the theory, but must also check it out in practice. Because "Theorectically" means "not really". "Theoretically, we can all run a 4 minute mile."
- Unhappy with this definition: Modules are collections of procedures - invoked by procedure call.
- Abstract datatypes. Instead of one data structure for each module, more than one.
- Components - really about sellable bits. Modules aren't components.
Young people may have more energy. Older people have the experience to know what might change.
Documentation
How can you document a project so that if a manager gives it to three people, he'd get the same thing. When it fails, there's no one to blame. It was difficult, not in theory, but in practice.
Sometimes, combining modules is the right answer.
Mathematical relations.
Documentation for other engineering projects has multiple dimensions. There are multiple documents for a bridge, etc.
Coffee stain test - if the document is used, it's good. These days, it would be a document web hit count or something.
Design through documentation. Building a bridge: the documentation gets refined until the builders can use it to build the bridge. In engineering, these documents assist in inspection. Assists in maintenance. Enables systematic design review. Attitude is that the documents are binding. But in software - it's the program that counts - and the documents may be updated. In engineering, these documents are binding. Enables verification and inspections.
Documentation must be accurate - if it isn't right, people will stop using it.
Documentation must be precise. A precise document that is wrong is better than a vague document. A vague document is not even wrong. (One complaint i have for the talk is that it's more than a bit vague. It might be the slides i missed. He clearly wasn't reading from the slides, so it's gone.) Yet, the questions at the end were from people who clearly knew what he was talking about.
Documentation must be consistent. Free from contradiction.
Everything must be only in one place. Otherwise one will be changed, and you lose consistency.
Documentation must be complete. It must answer questions you have.
Documentation must be easy to search. You must be able to find the answers to the questions you ask. Search tools can help you find things in electronic documents.
Notation and Organization
Documentation must use simple, closed form mathematics.
No introductory sections. People will look at the introduction, and ignore the body, then misinterpret it. Extreme example: introductions were audio, and could only be played once. The goal was to help you understand the body, but were not referenceable. Of course, clever users figured out workarounds.
Source code isn't documentation for end users.
Documents show a separation of concerns. At least three views for a solid object. There is a set of documents.
Documentation is not a crisis: it's a chronic disease. Documentation needs to be a disciplined effort.
Documents should be good enough that you should not have to look at the code.
Documents are practical tools.
Documents must be authoritative. They must be organized so that you know where things go, or can be found. They are reference, like a dictionary, rather than a tutorial.
The test is that if you ask someone about a program, if they go to the documentation first, then it's good documentation. If they go to the code first, it isn't.
Documentation needs structure that avoids inconsistency.
Documentation needs to be better than "let's just try it".
Documentation needs to be used before you write the code. While you write the code, and after the code is finished.
All these documentation rules are easier said than done.
Each document should have a clearly defined role. Description, partial specification, full specification.
Three types of documents
- Description: facts. Some facts are requirements.
- Specification: only requirements.
- Full specification: all requirements.
The same notation may be used by all three types. This means that there is no specification language.
If you look at a document, you can't tell if it is a description or a specification unless someone tells you.
It's not models. (!)
It's not formal documentation.
Source code clearly describes the program, but not the program's intent. It's not a specification. So it doesn't describe how the program might change. (On the other hand, specifications can change too. And, some programs do document intent via comments. One could argue that any other comments are pointless.)
The word 'theory' often means 'not really'. The program works, in theory.
All words are bendable (or ambiguous).
How to define what information should be in a document?
- Must specify the content.
- Each document is the representation of a mathematical relation.
- Ordered pairs.
- Programing proving. Preconditions and postconditions.
- If you can start in x, it should end in y.
- Lots of examples of format and notation. Must agree on content.
- Need to know all the variables you sense and control.
Counter example: Document form vs. content.
Great anecdote. Manager offers prize for documents conforming to specification: Seven parts on A4 with 1 cm margins, pages numbered, etc., but without talking about content. Winner submitted document in seven sections that said the same thing. Description: the module copies data from here to there. Design: Bytes are copied from here to there. Detailed design: Byte one is copied before byte two... and so on. Manager never noticed.
Two are two relations:
The set of things that are possible without the system - nature. Describe the restrictions of cases that the system allows.
Document should be able to be checked for feasibility.
Software: modules, objects, components.
- Distict but related concepts.
- Module is a work assignment.
- Component is a unit for sale.
- There can be many copies of an object in a system.
- The same kind of document techniques can be used for all of these.
Describing things operation by operation is natural to programmers. It's not very helpful to others.
A7 aircraft documentation project. Output by output - with history of inputs. You get this under these circumstances.
It's harder to write for managers.
Microsoft EU court case. $3 million a day fines. Anti-trust. MS was told to document what other vendors needed to do to interoperate. MS attempted to document their interfaces and failed. In Parna's opinion, MS tried. MS offered code, but other vendors refused. Intellectual property, but also that the code can change, and so, the spec.
Inability to write documentation is key to some of the big expensive problems today.
Specifications are not wish lists, or lists of features.
Documentation is not a list of facts about the code. In engineering, a specification is the requirements for the product.
Requirements should not be repeated. Else, inconsistencies creep in.
Describe the data structure. Describe how the data structure is interpreted: (interface) abstraction relation. Describe what each program on the interface does to the data structure.
Traces - history of what has been done. Commuting diagram. (More math references). If it commutes, then it can be implemented.
A document should be a description of a set of relations.
Documentation is inconsistent, and has errors.
Describe mathematical concepts in a readable way. Predicate pairs. But how to write it so people can read it?
Bad example:
21 pages of inconsistent and erroneous testing documentation. The testers ignored the errors. Following testing instructions is dangerous. Everyone preferred this bad document. The document was readable, but managers didn't know it was wrong because they never tried to use it.
These two things are needed for practical, sound documentation.
- Tabular expressions. Better for math with if, and but.
Discrete math.The tables parse out the dimensions of the problems. - Relational model of documentation. Tells you what information must be
in the document.
Requires significant training. But not a PhD. Fewer mistakes. Requires an engineering background. Precise and checkably complete. Pilots can read it (for A7) likely due to engineering training. Can be used as a slow (non-real time) prototype.
Down on Zed, VDM, Alloy (British doc languages). Alloy is relational, but this is not the problem. Tabular notation is needed. These languages are translations of the code into other codes. May as well use a Turing Machine implementation. These tools are not practical. If it's easier to read the code, then the documentation isn't good enough. These tools are code. Should use engineering documentation as a guide.
Down on documentation extracted from source after the fact. For one thing, it's descriptive, not prescriptive.
Managers often do not have the engineering background needed to read documentation. Writing documentation for managers is harder than for programmers or users.
When you're done, the program should do what the document says it should. If you test the program from the document, they can't get out of sync.
Testing
Test coverage.
Reliability estimation via testing.
Mutation testing.
Test case generation. Interesting points:
- Extreme values
- Cross zero
- Discontinuities
- Equation solving for boundary values
Precondition/postcondition doesn't scale up as well as relational models.
Errors escape reviews. Must use the code to answer questions. What would you have to change in the code to do something?
Separation of concerns (Dykstra). Look at small bits of code at a time. Important for testing.
(more testing:)
A "display"
- what it should do
- what the invoked programs do
- right or wrong on it's own.
Then, for large programs, testing uses lots of these displays. Scalable - lots of people can do little bits.
"The smallness of the human skull." - Dykstra "You should never look at a long program." Use divide and conquer. Precise documentation to hook things together. It's not stepwise refinement. In stepwise refinement, the program gets longer. Instead, keep it separate.
If it's an object and a component, use the trace function method. if it's a program within a component, use the display concept with documentation.
Tools for documentation:
- Functional and imperative programming are combined.
- Functional specs for imperative programs.
- Don't worry about efficiency of functional programs.
- Don't worry about illegibility of imperative programs.
Object orientation for hiding the right things.
To Change
- Vague diagrams that don't answer the right questions.
- Write the documentation first, to help build the programs.
- From group reading to systematic inspection of the doc.
- Test generation from the documentation.
- Anyone who knows two language is a software engineer - a myth.
- Need to train people in documentation.
Summary
- Need to take a serious view of documentation.
- It needs to be seen as normal, expected and effective.
- Needs to be taught.
- Think about why people don't do it. (ie: it's not taught).
- Licenses for software engineering, including testing documentation skill.
Questions from the audience
In theory it will work everywhere.
Interpreting specifications, not executing them. Theorem provers, etc.
Deliberately introduce errors into program to find errors. Deliberately introduce errors into documentation to find errors - Mutation.
Movies: storyboarding. Rapid prototyping is similar. Knowing what you want by creating an approximation. Is the prototype a document?
The prototype should be bound by the specs, just as the real program.
Tables of documentation as an interface for talking to the customers.
Evolution of documents. The document evolves with the program. Use information hiding in the document as well as the code. Allows easier evolution.
User interfaces and complex database interfaces. - works.
Teach professionals the tabular notation? Need to focus on a method that works - not just about methods. Need to teach better fundamentals. The math - 'for all', etc. Lectures and labs. Lectures give theory. Labs teach why there's theory.
Questions i might have asked if i'd been there
- So if the documentation is really good, is the code write-only?
- What does Parnas think of use cases? Aren't they requirements?
- Many ideas (like use documentation to show who's to blame) are wrong because the idea itself is shallow.
Sunday, June 15, 2008
Rod: part six of six - Coffee
"Gail, why a café? You know I don't eat."
"Someone new. I'll introduce you, then take off. She's seriously creepy."
"Another hot date? You know it's doomed", remarked Tie.
"Yes and no. How did you manage to attend both the Nobel and Ig Nobel ceremonies? Time zones?"
"I had a new body built, and copied my bits to it. But afterwards, we couldn't merge experiences. Something's wrong."
"Here she is. Tie, meet Jean. Jean, Tie."
Jean gave a low gasp as she sat down. "You aren't a breather."
"No", Tie said tentatively. Didn't everyone know his story?
Jean went on. "Not like Nosferatu. And unlike those machines, you have soul."
"I'm not clueless."
"Dim ones never have strong souls. Which comes first is hard to prove."
"So my other body, the new one, may not adjust?"
"You might try to split your soul."
Gail got up. "Gotta go. Bye Tie. Bye Ms. Bank".
Jean said, "You were right, Ms. Force. Fascinating. Thanks."
Friday, June 13, 2008
Rod, part five of six - It's a Tie
"And 4% interest and treble damages, said Acting Ensign Rod, Genocide, Retired", Rod replied with a smile.
"They said you are a machine, and not entitled to property."
"I was human enough for them when I signed up."
"They said more than half of your parts were replaced. You're a new entity."
"Ninth handle and 3rd blade, but the same axe. Most of your cells have been replaced too. My lawyer told me to use the 'Acting Ensign' bit. Never my first name."
"Your name's Rod?"
"That's my last name. First name's Tie."
"Ha! Sorry. Name Change?"
"Nope. Floe Rivers married Jack Hammer. Mom and Dad."
"At least it wasn't Barb Wire."
"That would be Grandma."
"Sorry I mentioned it. What do you do next?"
"Sweden, then upgrades."
"Sweden?"
"The Nobel Peace Prize. For killing billions."
"You ended the war. You saved countless billions."
"Buy one, get two free. I get an Ig Nobel too. No one ever got both."
Thursday, June 12, 2008
Rod, part four of six - Historian
Nothing here. Sleep. Nothing. Sleep...
"Where am I?", asked Acting Ensign Rod.
"You are on Space Station 666. I'm mission specialist Ray. Are you male or female?"
"Does it matter?"
"Many of your parts had to be replaced. Tough to get some of the older ones. And we guessed male."
"That's right. Uhm, what's your specialty?"
"I'm a military historian. I'm investigating the Battle of the Berg. No one knows why all the Berg ships blew up."
"They all blew up?"
"Including some on the Berg home world. Ship yards were near cities. More than a billion Berg vaporized. Led to the end of the war."
"So, I've outdone Hitler, Stalin, and everyone combined."
"Sorry?"
"Well, Hitler and Stalin only killed millions. Uhm. How long was I out?"
"We found you a couple years ago. It's been 76 years."
"Great. Acting Ensign Rod, Genocide. Over 200 years old and totally obsolete."
"But think of the back pay."
Wednesday, June 11, 2008
Rod, part three of six - Winders
Have power, but power meters are fried. That was some jolt! All batteries have something, so use them one at a time.
No shooting. The battle is over. Gotta get this hulk moving or stay here forever.
This looks like a computer terminal. What? It's Winders? I hate Winders. Wonder if it has that bug...
W00t! I'm in. And look, the Admiral's unexpired command codes! Can I self destruct every ship in the Berg fleet? Not much time.
Need his retinal scan. What's the Admiral look like? Where's the bridge?
Found him. Scan. Send it. Damn. Comms are down. Antenna damaged. Backup antenna in the hold. Set up a 10 second retry send loop. Get some wire for a tether. Out the breach and hook up the backup.
Here it is. Bolt this down. Plug this baby in.
Boom.
Opps. Forgot to tell this hulk not to blow up. Took lots of damage. Golly. Several nearby explosions, though. Maybe it was worth it.
Once again, Acting Ensign Rod, floating space debris.
Tuesday, June 10, 2008
Rod, part two of six - Adrift
What is it?
Just great. Enemy ship.
Big breach, but mostly there. How long will it take to get there? Too long.
Shut down torso, hearing, taste, touch. Is it long enough? No. Ok, turn touch back on, and shut down vision. Power everything back up on contact. Seven hours. Long enough? Better be. Stop thinking. Laptop chips have low power idle mode. Think of nothing. Nothing.
Clunk. Power up. Grab something. Damn. Bounced two meters away. Toss the remote hard.
Fabulous. Boarded an enemy space ship. Six minutes to find a power outlet. What, no standard outlets?
Sparks! Jam those wires into the charging socket. Woot!
Saturday, June 07, 2008
Rod, part one of six - Battle
"Tactical. I want to shoot enemy ships. Kill! Kill! Kill! Uhm, Captain Sook, Sir!"
"In case you hadn't noticed, we have no engines."
"But we still have one reactor, and a port laser."
"We're blind on our port side. You can't just shoot, you'll never hit anything."
"I'll do an EVA with a remote control, Sir."
"Sorry, all the suits were blown out in the breach."
"But i don't need a suit. No biological parts. Just a battery charge, Sir. I'm good for ten hours."
"All right, get down to engineering and see if you can get a remote working."
Half an hour later, Rod was outside. The rule was 'shoot anything unrecognized'. That's the enemy. Five hits in seven shots, and one was really good. Everything was going to plan, until the third torpedo hit the Chanuk. It exploded.
"Great", he thought. "Acting Ensign Rod. Ninety minutes of battery power left. Drifting in space without a ship."
Friday, June 06, 2008
Rod part zero of six
One thousand characters isn't much. If words are on average 5 characters, and you need a space between words, it's only 167 words. That's really constrained. So you get story snippets that remind of a turning point in a story. Further, you get poetry in prose form. For example, each sentence might be purposely written ambiguously, and all meanings are intended. So, far from food for the impatient, these little stories can require significant study. So, AFAICT, not new, and not for short attention spans. Another trick is to play to stereotypes. That way you don't have to explain so much. Pick a Universe everyone already knows. I personally like the unexpected twist for an ending. Harder to do with a story that can be read at a glance.
Eric has also put alot of effort into the site. I read it with an RSS reader, and don't get that formatting. Honestly, i find it annoying. Yet another unique user interface that is barely discoverable.
The exercise is valuable. Write some. Leave them in the comments.
My first draft of "Rod" was from a preface or chapter one. But there wasn't much action. So it got moved to chapter three or four. To save space, the first draft omitted all character names. Without further ado, the story:
The first incoming torpedo destroyed Cruiser Chanuk’s main engine. Inertial dampers went down seconds later. The second hit slammed everyone who wasn’t strapped down into a wall. 90% casualties, including all bridge officers. The Chanuk would likely sit out the battle. Ensign Sook took command. She didn’t have to like it.
"Private Rod, why haven’t you reported to sick bay?" asked acting Captain Sook.
"I’m fine, uhm, Captain. Sir! And I have no biological parts."
"You’re an android? Your dossier says human."
"Yes, but my body rejects transplants. So as bits fail, they’re replaced by prosthetics."
"Not everything can be replaced, can it?"
"I suffered brain death two months before signing up for Earth Defense Fleet. No big deal. Most of it had been replaced already."
"Cyborg, then. Why doesn’t it say Cyborg?"
"There’s been no enhancement. Certified prothestics."
"Well, when did you first start getting replacements?"
"At about seven, my dentist put in two fillings."
Thursday, June 05, 2008
Bike to Work
But today, i rode my bike to work. One might think it was to save $1.33, but it actually saved over $80. That's because my car needed a new windshield. It takes about 3 hours to do the work, and the mechanics hours are the same as mine. So, it's 3 hours of work, which is unacceptable to my employer, as well as 3 unpaid hours.
There was an option. There's an outfit that will replace your windshield while it sits in the parking lot at work. They serve the town where i work. But, they're about $80 more.
The place that did the work isn't across the street. They're about 2 miles away. And, the optimal route from there to work goes by my house. In fact, i stopped at the house in both directions. In the morning, i stopped to pump up the tires and get my backpack. In the evening, i stopped to drop off the backpack. Instead of about 9 miles (the car route is a little more direct), it was 11 miles each way.
Since there is a shower at work, i could push it a little and work up a sweat. And the same for going home. It took an hour and fifteen minutes in each direction, so my speed was something around 7 MPH. I felt like i was flying, however. Perhaps if i get a battery for my bike computer, and do another ride, i'll know for sure. But last time i did something like this, it really was pretty slow at the start of the summer. Last time, it built to 22 MPH by the end of the summer.
That is, the speed tripled. Bike speed is limited by drag. Drag goes up as the cube of the speed. So if the speed triples, the drag force goes up by a factor of 27. Energy is force times distance, so the energy required goes up by a factor of 27. If one's calorie intake stays the same, it suggests that body efficiency can go up dramatically. And that's an hour or two per day for a hundred days.
It also means that i'm really out of shape at the moment. Well, i knew that.
I had a banana with lunch. I had one with dinner. I've just heard that they can help reduce the muscle soreness. No idea why that might be.
This blog post was written entirely using a Nokia n800 pocket computer while sitting on the downstairs couch. It's quite a bit cooler down here than upstairs where the desktop sits.
Friday, May 23, 2008
But it could get 20% more, or 53 MPG if i put a turbocharger on it the engine it has. It could get 5% more than that, or 55 MPG (rounding) if i add a cruise control. It could get 5% more than that, or 58 MPG, if the bottom was smooth, rather than set up to induce turbulence. Bottom turbulence helps keep the car on the road at high speed, so put in a governor that caps speed to 90 MPH - which is more than fair. Then, replace the gas engine with a diesel, and get 15% more, or 67 MPG. And none of this is high tech, expensive or new. I'm with Carl Sagan, who in his 1981 Cosmos series asked why we don't have cars that get 70 MPG.
Then there's tech we don't use. The differential consumes 7-15% of your power just to let your car go around corners. An electric transmission (generator at the engine, electric motors near the wheels, should have a total loss of 6%. But, there'd be no engine drag (which is alot like braking - a waste), you'd get automatic like non-shifting - except that there'd really be no shifting - no jerks, and you'd get 4 wheel drive with zero economy penalty. You could also have two independent engines. Why is that good? Well, it only takes about 15 HP to cruise down the highway. A 300 HP engine is really poor at delivering 15 HP. So you put in a small engine for highway cruise, and a larger engine for pulling your boat. If an engine dies, the other will still get you home (remember, the little one will let you cruise down the highway). What's all this going to get you? More than 100 MPG. Oh, and since you've got electric, you can add batteries for regenerative braking, and put solar cells on top for another 10% boost when it's sunny - and it charges your batteries when you're parked. Some people might never have to fire up the diesels. We might even have to 'remove gas from our tanks' - in the form of electric energy transfer from the parked car. Your house could probably use it.
In the 70's, most of the problem was solved through improved economy, and much of that was the 55 MPH speed limit, which got us some 10 - 15%. Bush has said "There's no instant fix", but we could have new signs on our highways today.
While we're there, what about home heating? Houses get really poor gas mileage. Insulation already pays for itself in the near term. That's only going to increase. Why don't we have businesses that insulate your house, and get pay back from the improved economy?
Thursday, May 22, 2008
Starship Sofa
It's a good story. I'm not going to give away the surprise ending. If i could figure out what the ending is, i wouldn't tell you. Not every story has to end with "...and they lived happily ever after...".
The intro can be safely ignored. He goes on for a bit about how he couldn't think of anything profound to say. Though he does introduce the author. I like his accent. It's not like mine. But he doesn't read the story. That's a relief. It's a pro reading all the way.
I'll probably add Starship Sofa to my feed. That'll put me years behind, i'm sure. but at least the episodes aren't two hours long like some napolean podcast that i'm still subscribed to. Isn't Napolean going to die soon? I don't know enough about history to know. Sigh. That's why it's in my feed. I really can't cope with 2 hour mp3's.
My commute has gone from an hour each way to twenty minutes. I did cut a few things from my feed. But the strange thing is that i seem to be getting through nearly as much as i used to. I'll have it on while cleaning the house, cooking, mowing the lawn (one of the mowers has no engine, and is therefore silent). All my really short feeds (half hour or less) get consumed right away. But i'm stuck on this 2 hour feed.
Tuesday, May 20, 2008
Good news in politics
Monday, May 19, 2008
IT Management
What if there is a problem, and the optimal solution depends on the details of the technology involved? This happens all the time. What happens? Well, that depends on a number of things. First, it depends on what, exactly, is meant by "optimal solution". The manager might want to optimize cost. It might be short term cost, or long term maintenance cost. It might even be long term maintenance responsiveness.
There are two approaches of interest. First, they might look to see what other people have done in similar situations, and do that. This has the advantage that if some upper management asks them, they can point to some precedent. However, the IT industry has been changing at a breakneck speed, and many of the experiments of others have not had the benefit of enough time to be completed. That means that no one knows if it was a good idea or not.
Another thing that the manager can do is ask their senior development staff. This is, unfortunately, quite rare. So, despite having the experts at their finger tips, IT managers rarely make use of it. Why don't they ask? Well, for one, it seems that managers think that developers are interested in optimizing for something that is different than what managers are interested in optimizing. Perhaps managers think that developers are lazy. They'd expect that developers would be looking for the easiest solution. However, the easiest solution is the one that takes the least time. That means it's also the cheapest. After all, didn't Einstein prove that time equals money? This idea that management and developers have the same goals seems lost.
An unfortunate side effect of this state of affairs is that developers often end up implementing the mistakes of the managers. Repeatedly. This aggravates the developers, who are master craftspersons. It is really annoying when you are implementing the same mistakes again and again. Alienating your staff is never a good thing. More on that in another post.
If management of Information Technology is not what an IT manager does, then what does is an IT Manager good at doing? They keep track of things. They measure things. They document processes. Mind that they have no idea what math is about, much less IT. So, it's a good bet that they'll measure the wrong things, and do it inefficiently. IT managers are also good at telling other people what to do. It's their job. So, naturally, they'll tell their developers to do the measurements. It might be to track when they got to work, when they went home, how much time was spent on each task (for billing purposes, or if there's only one client, there's some fallback explanation). And the developers must write up the reports too. A line like this may be used in explanation. Remember, if you don't measure your performance, you can't tell if you're improving. It's sounds good, even if it's not true. But more on that in another post.
My point here is that the management overhead is often placed on the developer, which can only slow her down. Management is overhead. More overhead is not a good thing. When all you have is a hammer, everything starts to look like a nail.
What about process documentation? Managers do this also. If you'd written a perfect process, you'd never change it, right? But managers still have this skill, and will, from time to time, tinker with the processes. As time goes on these processes have a tendency to become more complicated. They have to be able to handle more of the day to day issues that come up. And, there's the inevitable bandwagon to jump on every so often. Does the senior staff get involved in these changes? No so much. But the thing that really gauls developers is that despite all the hours tracked, when some process is clearly changed for the worse, IT managers will breathlessly claim that the new process is oh so much more efficient. This is part of what makes developers think that IT managers don't actually understand arithmetic. Are you an IT manager? You should be able to do this in your head. What's three quarters of two thirds?
OK, that was a cheap shot, as most people don't get it right. That doesn't mean they shouldn't. The correct answer is one half. In word problems, "of" means multiply. One half of a dozen eggs is six. So three times two is divided by four times three. That's six divided by twelve, which reduces. For the record, this is taught in 5th grade, when you're about ten or eleven.
Friday, May 16, 2008
Shadow IT vs Silo IT
Doing this analysis by hand is going to be time consuming (expensive, remember, Einstein proved that time = money), tedious (which was never stops businesses) and error prone. So you hire a programmer, and tell them what you want. She says, we need a way for the managers to enter the data. We'll write a web application where they'll enter the data, and it will get stored back here in a database. There's no budget of any kind, so she finds a PC that's so old, slow and has so little memory that no one wants it. She loads Linux on it, installs an Apache web server, and a Postgres database server and configures them. Then she writes a form, and a Perl script that takes form data and stuffs it into the database. She announces that it's in production, send this URL by email to the managers, and let them at it. And despite using a four year old PC instead of a quarter million dollar server, the application is responsive and reliable.
Soon, data is coming in. By then, she's written a quick report that adds up sales by group and region for each month, in a table. The analysts say it's great. For one thing, they're no longer swamped in paper. While our intrepid programmer adds logins and real security, someone gets the idea that there should be a report that graphs the groups and regions over time so that one can pick out which ones are doing better and which ones are doing worse. She grabs some graphing routines from CPAN and puts something up.
What's wrong with this picture? Well, corporate says that having a server sit under someone's desk is bad. For one thing, there's no backup. She counters that she does have backup. There's a second PC with Linux, and it gets a copy of the primary's data every night. They also complain that Perl isn't supported, that Java is the corporate standard. Further, they say that they can save money by having the server administrated by the Unix group, the database administrated by the database group, the web server administrated by the Web group, security managed by the network security group.
Two years later, the application is rewritten in Java, it's hosted in the server room, and it follows all the company rules. Everything's great, right? Except that the original developer has been spending the past two years bringing the offshore people up to speed on the app, instead of adding the new features that the customer now knows they want, and the app still doesn't do everything that the original did, and it cost a million dollars, and nothing was saved, because the original developer is still on the payroll.
Why did the rewrite, with 30 developers take so long? For one, they had to use the Silo IT development model. What's Silo IT?
Corporate management has labeled the department model Shadow IT. It's a negative name. It casts the endeavor as murky, hard to follow, uncontrollable, and underhanded. So, it's only fair that the popular alternative also has a negative name. Silo IT refers to this idea that under the idea that pooled resources are efficient resources, the endeavor is split up into areas of responsibility. Typically, this is systems administration, web administration, database administration, network administration, architechture, web framework, mentors and application developers. Each of these groups forms their own sub-department.
If a developer wants to create an application, it needs to follow the rules laid down by architects, and it needs to fit in with the framework. Now, there's a considerable amount of information to go through, and typically there are documents, hundreds or thousands of pages of documents, that one needs to go through to absorb it. No problem - there are mentors that can help, right? Wrong. The mentor's job is to make sure that the rules are followed. The developer gets the application to work, then submits the code to the mentor, who comments one sections that don't follow the rules. It's like an exam. Mentors never consult with the developers to get them going. Their job is to slow the deployment process down by several days while they review the code.
What does the developer do while waiting? Well, perhaps they have another application to work on. If they do, they'll generally find the going slow and error prone, because each shift in focus takes several hours for their brains to catch up. So, as often as not, they do nothing.
So, let's say that the developer needs a new table in the database. They submit a ticket, and it enters the database administrator's queue. In ten days, an administrator takes the ticket out of the queue and creates the table. The developer then tests it to make sure it's what they needed, then submits a ticket to get the change made to the test servers. Another ten days. Then ten more days to get the change into production. Mind you, new tables can have no negative impact on production, so it could have been there at the start. And in Shadow IT, that's what happens. Except that it doesn't take thirty days. It takes maybe half an hour in Shadow IT. It's not hard to see where this is going. The developers are easily thirty times more productive in a Shadow IT organization than in a Silo IT system. So, it's not that the Shadow IT developer is brilliant, she just doesn't have the same ball and chain attached to her ankle while she swims the English Channel.
So what if you can't find a developer who knows how to install and administrate Linux, Apache, Postgres, and knows a web aware language? Well, according to Fred Brooks, the department should build a surgical team. Maybe it takes two or three people. But since they are a single team, they can still be responsive. In particular, the database administrator can spend time learning the current applications, and tune both the database and the queries to the real needs.
Wednesday, May 14, 2008
IT Management Introduction
I sat down and brain stormed for just a few minutes, and came up with over 100 topics that could each rate an essay. This would be entry zero. In the back of my head, i've wanted to start a podcast for software that is easily consumable, for example, in your car on the way to work. No pictures. No code snippets. Ten to fifteen minutes each. This series may turn into that podcast. Who knows?
In prepartation for this first article, i read one on CIO.com. It's 20 things, each can be done in 20 minutes (6 hrs 40 minutes in all) to improve as a CIO. It highlights one of the reasons i think a blog like mine is better than CIO.com. I don't advertise. I have no incentive to hype anything. I have no incentive to conform.
Some of it is common sense. Try short meetings. Encourage staff training. Check your competitor's SEC (Securities Exchange Commission) 10-K reports. Check your own 10-K report. Introspection, including "is this a good job". Get input from users. Get input from senior staff. Get input from junior staff. Talk to people you wouldn't normally talk to. Talk to your vendors. Talk to your customers. Talk with the universe. Go for a walk. The iPhone as a user interface example. Encourage company encryption, especially for laptops. Very little of this is of earth shattering importance.
But some of it is just odd. Have an email free day. What? Email is a tool. It's queue'd communications. You don't have to have a popup tell you that new email has arrived. If it does, you don't have to stop what you're doing to handle it. Don't send me email to invite me to a meeting in twenty minutes. It's very unlikely i'll read it. This is misuse of email. Email has these properties: It's pretty quick to send an informal note. It's potentially imortal, the last copy of this message may never be deleted. Content can be used for reference - it's searchable as long as the content is plain text. And, it's queued. The reader will eventually see it. I don't need an email free day. I'm not addicted to it. I will consider email as an alternative to a meeting. But i'll also consider walking to someone's desk unannounced as an alternative. I don't want some CIO telling me not to use email once a week. It'd be just as silly to ask everyone to hop on one foot one day a week.
What would i add? Well, maybe not in 20 minute increments, but i'll start tomorrow.
Wednesday, May 07, 2008
Tiny digital picture frame
It has a 128x128 pixel display (16 kilopixels - 1/64 megapixels). That's not alot. It's got an internal battery, and it is charged up when you plug it into USB. When you plug it in, it asks you if you want to charge the battery, or upload photos to it. When you charge it, it displays the charge state of the battery in the lower left. It also displays whatever you have it display during charge. It has a clock, and you can optionally have it display in the lower right corner. In slide show mode, it has a bunch of different fades from one image to the next.
It can have up to 60 pictures on it. It displays the picture number in red as 17/29 in the upper right corner. That means number 17 of 29 total images. You can't turn this feature off. The pictures you upload to it are exactly 128x128. You can't have a larger image. There's no pan and zoom. You must use the supplied software to upload pictures to it. It supports Windows and Mac OS. The device does not mount as a generic USB drive, so Linux users are SOL. Of course, a Linux box can be used as a charger. I don't run Wine, so i haven't tested to see if the supplied software can be made to work or not. For me, this is a deal breaker. I only run Linux at home. But for others, it's also less than optimal. It means you have to install software if you want to upload. That means you're less likely to want to upload any images while visiting a friend, for example. The upload software comes on one of those mini CDs. I'd never used one before. But there was no problem loading it.
You must plug the unit into USB before you launch the photo upload software. If it doesn't find it, it complains and exits. You can browse images that are on your hard disk. If your image is square, it scales it to 128x128 for upload. If it isn't, it scales the short dimension to 128 and grabs a center square. But you can slide a square selection tool over the image. However, i ran into a bug where you couldn't select one end of the rectangle, and though you got a square image, you didn't quite get the bit of it that you wanted. It shows that you can get one side, but it doesn't actually give it to you. This is under Windows. You also can't select a smaller square from the middle of the image - like just someone's face. You could do that in some other application, save a square image, and get what you want. The 128x128 image area is quite limited, and it's highly likely that you'll want to do something like that for many images.
The physical shape has another limitation. Let's say you want to set up a slide show. Change the picture every 60 seconds (it's settable in 5 second increments from 5 to 60). Put the thing on your desk, so it loops through all 60 of your images in an hour. Pretty cool, right? Except that you can't stand it on your desk. The rounded edges prevent this. Perhaps you could mount it on some Silly Putty or something. Or, you can make a stand by folding some stiff cardboard in half and cutting out a diagonal rest. Be creative.
There are two tiny screws on the back, but it seems likely that the rechargable battery inside is not replacable. Think of the whole thing as disposable. Mine was $20, delivered.
Little tiny pictures. What would you use it for? You might put a few family photo album like things on it. Show off your baby pictures or something. Don't have a baby? You were likely a baby at one time... show those off. Probably the last time you were cute when naked. The device is really, really portable. Small enough to get lost in a shirt pocket.
One might ask, since i only run Linux, why would i buy such a thing? It's a gift. I'm pretty sure the recipient doesn't read my blogs. I still get the odd comment, so i guess at least some people still read it.
Thursday, May 01, 2008
Gas Mower
In any case, i'd really been dragging all day. I didn't get nearly enough sleep.
But I really did mow my lawn. Now, my lawnmower is a bit underpowered. It's a push-reel mower. There's no engine. I'd bought it
But the interesting thing today is that after
Monday, April 28, 2008
Forth Extension Language For Emacs
And it got me to post a rant in the comments. Big enough to drive away some more readers from this blog had i posted it here. But it got me to thinking about TECO. Raise you're hand if you remeber TECO. That many? Wow.
Well, there are a couple versions of TECO around now. I've installed one on my desktop, and also on my shirt pocket computer. I found that though i remembered enough to do simple editing - insert, delete, copy, paste, change all of this to that, i'd forgotten lots of the stuff that made it such a powerful editor. Well, a quarter of a century of disuse will do that.
You see, TECO isn't just a Text Editor and COrector, it's a Turing complete language. It would be natural to represent the Turing tape with characters in the edit buffer. On today's gigabyte machines, the tape really is essentially infinitely long. And, for the most part, TECO was really fast. And, mind you, the machines it ran on were really, really slow by today's standards. Imagine if it took Windows 100,000 times longer to boot. TECO was fast on such machines.
But today's Emacs uses Lisp as an extension language. And it seems pretty fast, except that my benchmarks show it to be 500 times slower than C on various machines. It's only really fast compared to how it used to run on smaller, slower boxes. Why is that?
Well, for some reason, Lisp is compiled to a byte code langauge. There's a 3x to 5x performance penalty for byte code interpretation. And, unlike Java, the byte code is not usually written to disk. So, it's write once, compile everywhere. It could be compiled to native code. But 5x is not 500x. Where does that come in? My guess is memory management. But it's just a guess.
TECO isn't compiled to byte code. The commands are one or two bytes long. The commands themselves are interpreted. There aren't very many of them, and interpretation is very fast. And, for some reason, there is no garbage collection. At least none that you'd notice.
TECO is a stack language. So it should be comparible to Forth. Where TECO has a small fixed number of variables, beyond which you can't go, Forth allows the creation of an arbitrarily large number of new objects. Neither language has garbage collection, as near as i can tell. Yet stack languages are reverse polish notation, and Lisp (and friends) are polish notation. The one can be converted to the other mechanically. So, it's a mystery why Lisp has garbage collection and Forth does not.
Now, i doubt that anyone wants to go back to TECO as the extension language for Emacs. I've found Forth a much lower barrier to entry language than Lisp. So, perhaps Forth is a reasonable choice.
Sunday, April 27, 2008
Which House?
What Hogwarts House Would the Sorting Hat Choose for You?Congratulations! You're a Gryffindor! You can make your way to the Gryffindor table in the Great Hall and sit with Harry, Hermione, Ron, and the rest of the Weasleys, among others. The Sorting Hat has found within you the potential for great bravery in the face of opposition. Your courage may remain hidden, like that of Neville Longbottom, but it will strengthen you in need. But don't rely on your membership in Gryffindor as a guarantee of steadfastness - remember, Peter Pettigrew was Gryffindor, too."You might belong in Gryffindor, where dwell the brave at heart, their daring, nerve and chivalry set Gryffindors apart." Take the quiz: What Hogwarts House Would the Sorting Hat Choose for You? |
Friday, April 25, 2008
Fun Fiction
I thought, "hey, i could do that. How long could it take to write 1000 characters?". I wrote a little diddy, and it's up! Woot! Can't wait to see where this micro story series i've started goes...
Friday, April 18, 2008
Expelled
I've not seen the movie. But i've heard the arguments before. It does not surprise me that the movie is chock full of misleading statements. That's what happened in the Kitzmiller trial in Dover. It does not surprise me that people interviewed for the movie were mislead about what they were interviewing for. There's nothing new here. But Intelligent Design is increasingly irritating.
It's probably because i'm christian. The whole creationism, and therefore Intelligent Design thing isn't just bad science or anti science. It's also really poor theology. It seems to be based on the idea that most Christians haven't read the bible. They don't remember half of the 468 passages that come up in the standard liturgical cycle that get read to them in church on Sunday. They've no idea what the central and important messages in the bible are. So when smacked over the head with cherry picked verses in ancient translations, they seem to buy it. Well, at least some do.
Let's start with Genesis. There's the Creation story. It says 'days', but the original words could just as easily be translated as 'eras', or 'eons', or 'vaguely defined time periods'. It makes no sense to take the King James English version literally word for word. Moses had no knowledge of this translation, and better sources are available. With the gist of the original translations, the creation story matches modern cosmology extraordinarily well. And, it isn't at odds with Evolution. The animals and plants really did come before humans. But, the creation story itself is not one of the main points. Ignoring it will not imperil your immortal soul.
Make no mistake. The Intelligent Design people are not just against Evolution. Cosmology, and indeed, all of modern science is under attack. Why does it matter? Well, for example, Evolution is the basis for modern medicine. Without antibiotics, i'd be dead. Literally. Recently, my gaul bladder became gangrenous. It had died and was infected. Doctors removed it, but the infection remained. Now infectious bacteria mutate and adapt. Unlike humans where 20 years goes by between generations, bacteria spawn new generations in 20 minutes. If you don't kill them all, the remaining ones are highly likely to be drug resistant by the end of a week. So not only do you need to know Evolution to create antibiotics, you need to know it to administrate them.
Back to theology. The idea that modern apes and humans evolved from a common animal seems to make some people squirm. Yet, the late Pope John Paul II has said that evolution is compatible with Roman Catholicism as an explanation for mankind's physical origins. That's not because it's an idea that has been tested. It's because it's an idea that is compatible with the bible. That Pope John Paul II was a devout christian is, one hopes, beyond question. That he and other theologians really thought about the question is also a pretty good bet. They had time to work it out. Time you and i probably don't have. And, they're really smart people.
One enticement of a literal interpretation of the Bible is that it can seem to lead to a very simple absolute morality. In my opinion, it's wishful thinking. For example, Psalm 105 reads like a moral justification of the murder infants and small children. Where is the Love of God there? Without a reasoned interpretation, nearly anything can be justified from biblical sources. It's highly dangerous. For example, the Intelligent Design leaders can then say pretty much anything they want. And since the justification is biblical, they can convince people to commit the most outrageous acts. Christianity is not alone here. Fundamentalism in essentially all religions leads down this path.
And, it matters. The Bible says "Many are called, but few are chosen.", and "The road to salvation is narrow, like the razor's edge." Your immortal soul is at stake. The time is now to study, and really think. Spiritual growth has to be a lifestyle, not just a buzzword. Did you want to be expelled from the kingdom of God?
Pope John Paul II has also said that truth is truth. There isn't theological truth and scientific truth. There is only truth.
So, if you feel that Evolution is evil, feel free to refuse antibiotics the next time you're in the Doctor's office or the hospital. If you happen to be well adapted to warding off your infection, you live. If not, well, natural selection will remove you from the gene pool. My plan is to swim as long as possible.
Another stance is to support basic science education and research, to keep America strong and Americans healthy.
From my perspective, those spouting Intelligent Design are heretics, and should be burned at the stake.