|
|
 |
April 26, 2003
Gemini stuns me

Okay, sorry I haven't been blogging this week. But it's because I was on the road and just got back -- and, while I was away (in Huntsville, Alabama), I visited the Rocket Museum of the Marshall Space Flight Center. At the center, NASA has collected various rockets and space modules so you can see them up close. So I wandered around, and fixed my attention on the Gemini capsule. As you may recall, the Gemini capsules were intended to circle the earth a bunch of times with two astronauts on board -- as a prequel to a moon shot. The idea was to see how humans responded to the rigors of space.
But here's what blew my mind: The tiny scale and super-retro style of the Geminis. I mean it's hard to tell from the picture above, but christ almighty -- those things make a Karmann Ghia look spacious. Those guys were just totally crammed in there. And we think of NASA as being all computerized and automated, but lemme tell you, peek inside a Gemini capsule, and it's literally nothing but manual controls, about 800 tiny manual toggle switches, and slider switches and rotary dials that look as if they'd been plucked of the front of a vintage Fender amplifier. These people weren't just brave for riding this thing into space -- they were insane. I mean, insane in a good way, because I'm a huge supporter of manned space travel (though I agree with critics who complain that the Shuttle is a lousy design and massive waste of money). But seriously, these guys must have been smoking huge, fat rocks of crack to get inside one of these things and head out into the void. After years of being a space buff, and reading tons about early space flight, nothing -- absolutely nothing -- could prepare me for the shock of realizing how totally and utterly barbaric those early space capsules were. Some of the panels on the Gemini look as if they were made from Meccano pieces; I'm not exaggerating.
If nothing else, NASA's early space-shot puts you in complete and total awe of the existential force of hacker ingenuity. Because every component of those early spacecraft, NASA hand-tooled from scratch. It's the most amazing hack I've ever seen in my life. And keep in mind, the Wright Brothers had only flown for the first time, what, 60 years earlier? Yet these NASA freaks were heading into space? Just because the president told 'em they had to? In what amounted to A HERMETICALLY SEALED VOLKSWAGEN??? God almighty.
And one or two space trips wasn't enough. They'd barely managed to keep two chimps alive in a capsule when they fired a few men up to circle the planet; then they shot the moon barely years later. Then did it again and again and again. And when the Apollo 13 flamed out in a total screaming mess, they just went straight ahead and launched another moon mission three months later. Three. Months. Later. I realize that the Cold War and bonkers McCarthyite ideology was driving a lot of this stuff, but come on -- you have to be impressed by this total freakshow of innovation, risk, and single-minded purpose.
I sort of hope this sort of spirit can return to NASA today.
Posted by Clive Thompson at April 26, 2003 09:05 PM
Trackback Pings
TrackBack URL for this entry: http://www.collisiondetection.net/mt3/mt-tb.cgi/301
Posted by: Mike Power at January 13, 2004 1:44 PM
Posted by: Mike Power at January 13, 2004 1:44 PM
Posted by: Online Casino at January 16, 2004 2:56 AM
The rest of our conversion follows a similar vein. Instead of going through line by line, let's just compare end results: when the transition is complete, the code that used to read:
Posted by: Alveredus at January 19, 2004 6:07 PM
To address this issue, we turn to the second place to put variables, which is called the Heap. If you think of the Stack as a high-rise apartment building somewhere, variables as tenets and each level building atop the one before it, then the Heap is the suburban sprawl, every citizen finding a space for herself, each lot a different size and locations that can't be readily predictable. For all the simplicity offered by the Stack, the Heap seems positively chaotic, but the reality is that each just obeys its own rules.
Posted by: Gillam at January 19, 2004 6:07 PM
This back and forth is an important concept to understand in C programming, especially on the Mac's RISC architecture. Almost every variable you work with can be represented in 32 bits of memory: thirty-two 1s and 0s define the data that a simple variable can hold. There are exceptions, like on the new 64-bit G5s and in the 128-bit world of AltiVec
Posted by: Randolph at January 19, 2004 6:07 PM
But some variables are immortal. These variables are declared outside of blocks, outside of functions. Since they don't have a block to exist in they are called global variables (as opposed to local variables), because they exist in all blocks, everywhere, and they never go out of scope. Although powerful, these kinds of variables are generally frowned upon because they encourage bad program design.
Posted by: Venetia at January 19, 2004 6:08 PM
For this program, it was a bit of overkill. It's a lot of overkill, actually. There's usually no need to store integers in the Heap, unless you're making a whole lot of them. But even in this simpler form, it gives us a little bit more flexibility than we had before, in that we can create and destroy variables as we need, without having to worry about the Stack. It also demonstrates a new variable type, the pointer, which you will use extensively throughout your programming. And it is a pattern that is ubiquitous in Cocoa, so it is a pattern you will need to understand, even though Cocoa makes it much more transparent than it is here.
Posted by: Helegor at January 19, 2004 6:08 PM
Since the Heap has no definite rules as to where it will create space for you, there must be some way of figuring out where your new space is. And the answer is, simply enough, addressing. When you create new space in the heap to hold your data, you get back an address that tells you where your new space is, so your bits can move in. This address is called a Pointer, and it's really just a hexadecimal number that points to a location in the heap. Since it's really just a number, it can be stored quite nicely into a variable.
Posted by: Emmett at January 19, 2004 6:08 PM
But some variables are immortal. These variables are declared outside of blocks, outside of functions. Since they don't have a block to exist in they are called global variables (as opposed to local variables), because they exist in all blocks, everywhere, and they never go out of scope. Although powerful, these kinds of variables are generally frowned upon because they encourage bad program design.
Posted by: Tabitha at January 19, 2004 6:08 PM
Earlier I mentioned that variables can live in two different places. We're going to examine these two places one at a time, and we're going to start on the more familiar ground, which is called the Stack. Understanding the stack helps us understand the way programs run, and also helps us understand scope a little better.
Posted by: Augustine at January 19, 2004 6:09 PM
This variable is then used in various lines of code, holding values given it by variable assignments along the way. In the course of its life, a variable can hold any number of variables and be used in any number of different ways. This flexibility is built on the precept we just learned: a variable is really just a block of bits, and those bits can hold whatever data the program needs to remember. They can hold enough data to remember an integer from as low as -2,147,483,647 up to 2,147,483,647 (one less than plus or minus 2^31). They can remember one character of writing. They can keep a decimal number with a huge amount of precision and a giant range. They can hold a time accurate to the second in a range of centuries. A few bits is not to be scoffed at.
Posted by: Laura at January 19, 2004 6:09 PM
Our next line looks familiar, except it starts with an asterisk. Again, we're using the star operator, and noting that this variable we're working with is a pointer. If we didn't, the computer would try to put the results of the right hand side of this statement (which evaluates to 6) into the pointer, overriding the value we need in the pointer, which is an address. This way, the computer knows to put the data not in the pointer, but into the place the pointer points to, which is in the Heap. So after this line, our int is living happily in the Heap, storing a value of 6, and our pointer tells us where that data is living.
Posted by: Vincent at January 19, 2004 6:09 PM
Posted by: julia at January 24, 2004 8:08 PM
Post a comment
| | |
adolescenta_adulti_blonde_camere_celebritati_chiloti cur_dezbracate_dragoste_ejaculare_erotice_fantezii_femei fete_fierbinti_filme_foto_fotografii_fotomodele_frumoase_fut futai futut_gagici_galerii_goale_gratis_gratuit_gratuite_grup_imagini Porno gratis_jucarii_lenjerie_lesbiene_mare mari_masturbare_modele_muie_nud_pagini_pamela anderson_parole_pictura_pizda_playboy_poezii porno_povestiri_poze_pula_romania_sani_sex_sexy_sexi_singur_site_staruri_vedete_xxx
Posted by: Mike Power at January 13, 2004 1:44 PM
adolescenta_adulti_blonde_camere_celebritati_chiloti cur_dezbracate_dragoste_ejaculare_erotice_fantezii_femei fete_fierbinti_filme_foto_fotografii_fotomodele_frumoase_fut futai futut_gagici_galerii_goale_gratis_gratuit_gratuite_grup_imagini Porno gratis_jucarii_lenjerie_lesbiene_mare mari_masturbare_modele_muie_nud_pagini_pamela anderson_parole_pictura_pizda_playboy_poezii porno_povestiri_poze_pula_romania_sani_sex_sexy_sexi_singur_site_staruri_vedete_xxx
Posted by: Mike Power at January 13, 2004 1:44 PM
Nice site. thx.
Posted by: Online Casino at January 16, 2004 2:56 AM
The rest of our conversion follows a similar vein. Instead of going through line by line, let's just compare end results: when the transition is complete, the code that used to read:
Posted by: Alveredus at January 19, 2004 6:07 PM
To address this issue, we turn to the second place to put variables, which is called the Heap. If you think of the Stack as a high-rise apartment building somewhere, variables as tenets and each level building atop the one before it, then the Heap is the suburban sprawl, every citizen finding a space for herself, each lot a different size and locations that can't be readily predictable. For all the simplicity offered by the Stack, the Heap seems positively chaotic, but the reality is that each just obeys its own rules.
Posted by: Gillam at January 19, 2004 6:07 PM
This back and forth is an important concept to understand in C programming, especially on the Mac's RISC architecture. Almost every variable you work with can be represented in 32 bits of memory: thirty-two 1s and 0s define the data that a simple variable can hold. There are exceptions, like on the new 64-bit G5s and in the 128-bit world of AltiVec
Posted by: Randolph at January 19, 2004 6:07 PM
But some variables are immortal. These variables are declared outside of blocks, outside of functions. Since they don't have a block to exist in they are called global variables (as opposed to local variables), because they exist in all blocks, everywhere, and they never go out of scope. Although powerful, these kinds of variables are generally frowned upon because they encourage bad program design.
Posted by: Venetia at January 19, 2004 6:08 PM
For this program, it was a bit of overkill. It's a lot of overkill, actually. There's usually no need to store integers in the Heap, unless you're making a whole lot of them. But even in this simpler form, it gives us a little bit more flexibility than we had before, in that we can create and destroy variables as we need, without having to worry about the Stack. It also demonstrates a new variable type, the pointer, which you will use extensively throughout your programming. And it is a pattern that is ubiquitous in Cocoa, so it is a pattern you will need to understand, even though Cocoa makes it much more transparent than it is here.
Posted by: Helegor at January 19, 2004 6:08 PM
Since the Heap has no definite rules as to where it will create space for you, there must be some way of figuring out where your new space is. And the answer is, simply enough, addressing. When you create new space in the heap to hold your data, you get back an address that tells you where your new space is, so your bits can move in. This address is called a Pointer, and it's really just a hexadecimal number that points to a location in the heap. Since it's really just a number, it can be stored quite nicely into a variable.
Posted by: Emmett at January 19, 2004 6:08 PM
But some variables are immortal. These variables are declared outside of blocks, outside of functions. Since they don't have a block to exist in they are called global variables (as opposed to local variables), because they exist in all blocks, everywhere, and they never go out of scope. Although powerful, these kinds of variables are generally frowned upon because they encourage bad program design.
Posted by: Tabitha at January 19, 2004 6:08 PM
Earlier I mentioned that variables can live in two different places. We're going to examine these two places one at a time, and we're going to start on the more familiar ground, which is called the Stack. Understanding the stack helps us understand the way programs run, and also helps us understand scope a little better.
Posted by: Augustine at January 19, 2004 6:09 PM
This variable is then used in various lines of code, holding values given it by variable assignments along the way. In the course of its life, a variable can hold any number of variables and be used in any number of different ways. This flexibility is built on the precept we just learned: a variable is really just a block of bits, and those bits can hold whatever data the program needs to remember. They can hold enough data to remember an integer from as low as -2,147,483,647 up to 2,147,483,647 (one less than plus or minus 2^31). They can remember one character of writing. They can keep a decimal number with a huge amount of precision and a giant range. They can hold a time accurate to the second in a range of centuries. A few bits is not to be scoffed at.
Posted by: Laura at January 19, 2004 6:09 PM
Our next line looks familiar, except it starts with an asterisk. Again, we're using the star operator, and noting that this variable we're working with is a pointer. If we didn't, the computer would try to put the results of the right hand side of this statement (which evaluates to 6) into the pointer, overriding the value we need in the pointer, which is an address. This way, the computer knows to put the data not in the pointer, but into the place the pointer points to, which is in the Heap. So after this line, our int is living happily in the Heap, storing a value of 6, and our pointer tells us where that data is living.
Posted by: Vincent at January 19, 2004 6:09 PM
Posted by: julia at January 24, 2004 8:08 PM