Slashback: Rocketry, Pythonation, Scoffing
Besides which, it's the hidden cameras that matter. An anonymous reader adds this followup to the story posted last month about Wired reporter Noah Shachtman's account of sneaking into classified areas at Los Alamos national Laboratory.
"In an email message to all Los Alamos National Laboratory employees, Pete Nanos, the current Director of LANL, responded with information suggesting that the Wired reporter who thought he had broken in to a 'top secret area' had in fact just crossed a cattle fence:
'The Wired reporter clearly did not enter a Laboratory security area. The Laboratory encompasses more than 40 square miles. The security force protects important assets within those boundaries but cannot -- and does not -- protect every square foot of property. Based on the article, it appears the reporter crossed a barbed-wire cattle fence, not a fence that protects a Los Alamos security area.
There is a small security area with several buildings (roughly 400 feet by 400 feet) near the driveway entrance to TA-33. That area is surrounded by a seven-foot-high chain-link fence topped with three strands of barbed wire. A security guard is stationed inside that area seven days a week and 24 hours a day. Clearly, the reporter did not climb that fence.
There are several other buildings outside the security area that are locked for property protection interests. They have no security interests. There are several gates and fenced areas on the TA-33 site, which are there for safety access control, not security.
It's unlikely the reporter would be prosecuted for trespassing; the Laboratory does not have law enforcement authority to prosecute, and none of the proper authorities witnessed the trespass.'"
Perhaps we can have a celebrity deathmatch. hfastedge writes "Ok, now that 2 perl conferences have been mentioned, I've been brought over the edge. Python is a language that is just as old, and arguably better from: most importantly a uniform standard of readability (enforced by using whitespace to delimit blocks (instead of {}), by avoiding overuse of cryptic symbols, and by a culture that strives to keep innovations as "pythonic"), and a rich development community. Anyway, normally, there are Python events in Europe, and a trail at O'Reilly's OSCON. But now, there is a far cheaper event taking place on March 24-28 in Washington DC: http://python.org/pycon/.
Examples of Python in action: 0, 1, 2, 3, 4, 5, 6, 7"
Fly up go phhhhhwwwtttpffffff .... MyNameIsFred writes "Slashdot recently discussed whether anti-terrorism laws would destroy model rocketry. The government has ruled, and the message is clear, "When it comes to the hobby of model rocketry, size does matter. And in this case, the magic number is 62.5 grams. That's the largest amount of propellant a single model rocket engine can have in it and still be exempt from a new set of federal rules that will go into effect May 24." What does this mean for the the big guys in model rocketry, who use engines larger than this?"
the linked article also mentions lisp/scheme - why haven't us schemers gotten together yet to celebrate its sweetness???
What does this mean for the the big guys in model rocketry, who use engines larger than this?
Umm.. IANAL, but I would interpret this to mean that they won't use engines larger than that without complying to the new set of laws.
Besides, it's not like you can't use more than one engine per rocket.
Work sucked, until it became unemployment, when it became slightly more tolerable. -Tet
Placing restrictions upon any technology hobby in the name of "combating terrorism" is folly of the highest order and constitutes blindingly stupid public policy.
We face a future where people who hate us because of our freedoms can and will attack us at will with amazingly ordinary implements used in novel ways. Without marching out into the world and killing all of these people "pre-emptively", our only realistic option is to improve our remote sensing (intelligence) technologies to find them before they become real, active threats. But developing these technologies is real hard work, involving cutting edge sciences and technologies... and having the largest possible national crop of young people exited about science is absolutely essential to our future national security.
I am a software engineer today BECAUSE of my early experiences with model rocketry and model airplanes and because they taught me how things worked and fired my imagination about what could be possible in the future.
We've heard NASA lament lately about how hard it is becoming to find qualified graduates to staff even entry level engineering and science positions. Public policies that throttle modeling technology hobbies will only exacerbate this problem into the future and good people will die needlessly as a result.
"A microprocessor... is a terrible thing to waste." --
GeneralEmergency
Maybe they'll work on making rockets that go higher and straighter on 62.5 g of propellant.
62.5 grams of hydrogen can probably send your rocket a LONG way
They put a limit on propellant. Does the oxydizer get counted in with this weight, or do I get to put all of the liquid O2 that I want?
What about multi-staging rocket engines together? Is that considered one engine?
I wonder if there's a way to re-classify stuff as something other than "propellant". "Well, you see... the payload is a water-vapor dispersal device which creates the vapor by combining hydrogen and oxygen...."
The common feature that most of these folks share is that as far as the rest of us are concerned they need to get a life.
Ok, true enough. But I really do notice it particularly in Python users and particularly in terms of venom against Perl. It's one thing to go on and on about how great one's chosen language is, but it's another to have to lash out at something else whenever that other thing is mentioned -- and to bring it up if it hasn't been. This isn't just the case in newsgroups or on slashdot -- I've seen it in a "serious" Python books at the bookstore. Maybe even a majority of them.
Are they still "good"? Probably. Are they still safe? If they have been kept from any temperature and humidity extreems - probably. Are they legal to use in a sanctioned (NAR sponsored) launch? No, engines (and reload kits) have a specific expiration date. However they can still be used in a non-sanctioned just-for-fun type launch. Sunday I used an engine dating back to the mid-70's and it worked flawlessly. The engine (a Centauri B14-0) has not even been made for many years.
Chaos maximizes locally around me.
2) Don't worry, no one but Larry Wall and a few other Illuminati really understand Perl. The rest of us just muddle through using the 35% or so of the language that gets 95% of our work done. Yeah, I look at CPAN code and say "Gee, I wish I could do that, whatever that does", but then again, most CPAN code I've seen is almost gratuitously arcane and complex. A few comments on the tricky bits wouldn't hurt anything, guys.
If you wanna learn Perl, I'd suggest getting the Perl Cookbook and browsing through it. I learn a lot of neat, useful tricks that way. The Camel book (Programming Perl) I think is a bit overrated, at least as a teaching book (which I suppose it isn't, really, but it sort of is, too). It's hard to find some things, and a lot of the examples assume you understand the lauguage as well as the authors do.
Still, *I'm* not giving up my copy anytime soon. So don't flame me for heresy.
What if life is just a side effect of some other process and God has no idea we exist?
I know people who routinely launch H, I, J, K, L, and M engines every weekend... Check out the Tripoli website for more about high-powered model rocketry. www.tripoli.org
Please explain how using whitespace instead of some paired token adds readability, assuming your bracing style is reasonable. To me, having the braces there explicitly shows me that I have a block that starts *here* and ends *here*. Since I use the apparently unique style of having open and close braces in the same column (as opposed to K&R style), I can immedately see the block structure.
That said, I think Python is one of those cool languages I really need to learn some day, as soon as I have a project that I can use it for. And it *is* nice to know that everyone involved at least *has* an indentation policy. I don't suppose you can enforce a tabsize, can you? All the major stylistic wars solved, leaving all you energy available for editor advocacy.
What if life is just a side effect of some other process and God has no idea we exist?
So tell me about C++ templates. In Python, we get generic functions by using dynamic typing, rather than putting a whole 'nother alien Turing-complete language in the compiler.
For the lurkers: "Generic programming" is the idea that when you make a class to represent a generic data structure -- like, say, a stack -- it should be instantiable as a stack of integers, a stack of strings, or any other particular data type.
In C++, you do generic programming by writing template functions, into which the compiler fills in the types you need. This is basically a fancy sort of preprocessing. However, template syntax is thoroughly alien to the C roots of C++, and as it turns out can be used to do surprisingly maniacal things. See the links above for the curiously shaped results.
In Python, as in Lisp and other dynamically typed languages, generic programming just kinda falls out of the way the language works. If you make a data structure, by default it can hold more or less any type of object. There's actually a limitation in Python here, though. In earlier versions, a lot of data structures, like dictionaries (hash tables), could only hold immutable values as their keys. (Immutables aren't exactly constants -- they're values that can't be edited in place. You can't edit the string value "foo" in Python, any more than you can change what the number 2 means.) Nowadays, any object that implements the protocol for hashability can be used as a key.
It's also easy to do it the other way around, to make a Python module out of some code written in another language (usually C/C++). Writing something from scratch in C is a great way to boost performance of your Python application -- take some important inner loops and write them in C, then use them from Python. And the ease of wrapping external libraries means that Python has a lot of very up-to-date access to external libraries.
if x < 0: x = 0
Or even two throwaway statements:
if x < 0: x = 0; underflow = 1
But you need to use indending if your true condition follows multiple lines:
if x < 0:
_ x = 0
_ underflow = 1
_ window.messagebox ( "Underflow." )
(_ is used to force an indent)
If you've got a block, and you're NOT indenting, then I certainly wouldn't want you on my programming team :)
(And, yes, this post gives a good demonstration of one of the downsides of python's indenting requirements. My opinion: the upsides outweigh the downsides)
Dunno. I get turned off to think that if I miss a tab somewhere I'll get a compiler error. A brace, sure. But whitespace??
I didn't like it either, at first. Then I got used to it. Then I really liked it.
In, let's say, C (I don't know Perl very well), an if statement can be followed by a single statement or a block in braces. To, lets say, add debugging information, one has to enclose the statement in braces. In Python, one needs only to add more statements.
Also, the structure of the code is automatically visible, and errors in indentation stick out like a sore thumb. It's much harder to tell with braces. (especially with the optional braces that C has)
If you use Vi, vi displays the tabs with the same number of spaces as Python equates with them (by default, anyway).
The delimiter symbols ({}, [], () ) are reserved for container data structures instead of syntax. {} denotes a dictionary, [] a list (variable length array), and () a tuple (fixed length array; also used for function calls). This makes the syntax for manipulating data structures cleaner and simpler.
I'm not really a newbie (4 or 5 years coding C) at C/C++, but it's still more readable. Instead of adopting coding styles that make it easy to make sure that all our braces match (while throwing away vertical screen space), we should adopt languages that make it not matter.
I like to think that while the zealots are trying to make themselves heard, the important people are behind the scenes doing the important things. Any loudmouth shouting on behalf of any language should remember that the people who love the language most are working tirelessly to change it for the better. Read Larry Wall's Apocalypses and see if I'm kidding--and pay particular attention to the part where he destroys the regular expression as we know it. :-)
I also like to think that the really hardcore programmers out there aren't wasting their time arguing about what language is superior or whining about what you can do in one environment that you can't in another. Real programmers are too busy getting things working, by any means necessary, within the boundaries of the environment. If you are a true programmer, an environment works as well as you force it to work.
I'm very comfortable in GNU now, Linux, Cygwin, and then some, but it wasn't always so. A few years ago, being a Windows only type and knowing no C or C++, I used to work with Visual Basic a lot. When I found out that Perl worked better for about everything I had been using VB for, I switched. When I couldn't figure out how to do SendKeys or AppActivate using Perl and Win32 API calls, did I spend time griping? No! I wrote an ActiveX DLL, figured out enough C to get COM going, and SWIGged it together.
Slightly more recently, I wrote a parser in Perl to implement a workaround to various shortcomings in Greymatter, but I had to make it work with PHP, in which the entire rest of my site was written (because it's way easier to write a page in PHP than in Perl). Was it any problem? No. For the prototype, I had PHP exec my Perl. Was it messy? Yes! Eventually, when I had the time, I rewrote the parser from top to bottom in PHP.
There's no need to be religious about any of this. If you have the option to use the environment of your choice, by all means, use it! But if you are forced to work outside your boundaries, remember, you are a programmer; you can take it. Plus, the last thing you want to do is take out your frustrations on the masters of the unknown domain.
I write programs all the time that my friends want to try but won't because ActivePerl is 12MB to download. I'm not going to scream at my friends for not having Perl; they just can't use my program. If it's worth my time, I may go to the trouble of rewriting in C++. If it pays enough, I might even spring for Perl2EXE to do the work for me.
It's as simple as that. There's always some solution. You write for your environment. You try to convince your client to deploy programming environment N or virtual machine V on all the workstations; if that's a no go, you do something else that is a go--if that's not practical, you lose the sale.
At this point, I know most of what I need to know to get by in Perl, PHP, JavaScript, C, and C++, and maybe a little VB if I search my memory far enough, and I do virtually all my writing in vim (within which, I admit, I don't know every single command that might be of use to me). If somebody needs me to write something in Python, or Java, or Tcl, or Lisp, or JScript on Windows Scripting Host, or any other wacky thing with which I'm not in constant contact, and makes me do it in Emacs or Pico or even Notepad, damn it, should I back down? Hell, no!
First, I try my obviously overdeveloped shoehorning skills! (It's amazing how many different ways you can find to get incongruous program environments to communicate!) :-D
If that doesn't work, then I owe it to myself to take a serious look at what this environment can do, what it can do right, and what I have to work around. Then, I do my work and move on with my life.
I believe that this is a vital part of what is necessary to be a bona fide Renaissance Programmer, and that most programmers who don't feel the same have no business programming.
That worked fine for me until I needed to alter one of the packages from CPAN. The package in question (name withheld to protect the innocent) did 90% of what I needed, and it was extremely well written and well commented, but it just so happened that the 35% of Perl that it used to get the job done did not overlap hardly at all with the 35% that I was used to using. That is where I fell in love with the Camel book, as I kept banging my head against Perlisms that were just plain weird.
In the end, I solved the problem, but I was so sick of Perl that I gave Python a whirl. I rewrote the program in Python in a few days (the tricky bits had already been solved writing it in Perl), and I have never looked back. It is much easier to read someone else's Python than someone else's Perl. Another huge advantage for me (as an Emacs user) is that Python's documentation is available as info files. That's quite a bit nicer (IMHO) than just man files. Of course, the fact that the Python documentation is so good is a bit of a bummer for the folks writing Python books.
Last I heard, conventional firearms were getting the kid glove treatment from the intelligence and the DoD when it comes to terror -- we've got Total Information Awareness, but Ashcroft refuses to call on/link in gun ownership databases, presumably because of the 2nd ammendment or because of its sacred cow nature to his supporters.
This isn't totally without logic: you can kill a lot more people more quickly with explosives or an airliner than you can with conventional firearms. But firearm acquisition and use ought to be at least as closely monitored as library book usage.
Libertarianism is rich wolves and poor sheep playing gambler's ruin for dinner.
Yes, but did you notice how you were forced to introduce new syntax (the underscore) in your description? Some of us have plenty of experience with using languages where whitespace is significant over the past 20 years, and we're saying "using whitespace to indicate block structure is not robust, the redundancy of block delimiters is useful."
Note: each motor class upward doubles the maxium total impulse of the previous class (letter designation), therefore an E class motor has between 20.1 - 40 N-s, F 40.1 - 80 N-s, G 80.1 - 160 N-s, etc.
Of course any second-grader can figure out that it only takes three motors to exceed the single motor propellant mass limit.
BTW, Estes typically packages the motors in three's.
Hmm... which is the stronger signal to the ATF, trying to buy 40 kg of black powder, or 1,800 D12 rocket motors?!?
As for getting back into model rocketry, go for it! I was away from rockets for over 20 years and got back into it when my kids were old enough to start building and flying them. Plus, you get to say great one-liners at parties like: "Actually, I am a rocket scientist."