I've been going through the Edgecase Ruby koans in an effort to learn Ruby. I'm little over a third done. It's not a break though but it is an impressively elegant scripting language.
I like the orthogonal design with everything being an object. My husband, on the other hand doesn't like that sort of thing. He's sees the purpose of objects as modeling things in real life. There aren't strings and arrays in real life so why should these be objects?
Weird stuff, generally tied into writing genre fiction. The tech industry and things relating to parenting will come up ocassionally.
Tuesday, January 4, 2011
Tuesday, December 14, 2010
Mixing Fantasies
My husband and my daughter are talking about their respective fantasy worlds. My daughter's is based on Marvel Comics and includes a heavy dose of magic and mythology, as well as a superpowered character she identifies with.
My husband does not have a hero whom he identifies with and his world is full of interesting alien races based on scientific speculation. He does not include magic and includes a lot of adult politcal cynicism. It is assuming to see my daughter mix her creations with my husband's. If an adult mixed magic with my husband's science fiction, it would be butchery, but I'm enjoying my daughter's fluid, though still immature imagination.
My husband does not have a hero whom he identifies with and his world is full of interesting alien races based on scientific speculation. He does not include magic and includes a lot of adult politcal cynicism. It is assuming to see my daughter mix her creations with my husband's. If an adult mixed magic with my husband's science fiction, it would be butchery, but I'm enjoying my daughter's fluid, though still immature imagination.
Friday, December 3, 2010
Men and Violence -- Writing Escapist Heroes
The other day I read an article on Science Daily suggesting that some kind of female animal, I forget which, loses interest in males who lose fights. Their was a suggestion that human females would feel the same way. For writers the implication would be that to be attractive to female readers, a male hero should never lose a physical fight.
Though I've been attracted to men who I imagined were skilled fighters, I think that human females are a little bit more complicated than this, at least when they are sober. In popular fiction, male heroes can be skilled fighters, but two other intertwined qualities are also important.
The first is having good judgement in stressful situations. The hero shouldn't be an idiot who would charge a tank with a sword, no matter what crimes the tank driver has committed. A writer can even get a little sexist and have the hero's love interest test him by suggesting doing something dangerous. The hero should be able to refuse her. He comes across as a better man if anger, fear and lust are not able to truly corrupt his judgment.
The second quality is honor. While he needn't be and probably shouldn't be a virgin milquetoast goody-goody, he should have some lines that he won't cross. He can drink, swear, and get into some avoidable fights, but he should show fidelity to a personal code, even at some cost to himself.
No doubt men and women who have acted heroically in real life might find the above somewhat silly. After all, a real hero is often an ordinary person who did the best he or she could do in extraordinary circumstances, but I am trying to describe a type of male character that would be entertaining for me to read about, not to dissect real life heroism.
Though I've been attracted to men who I imagined were skilled fighters, I think that human females are a little bit more complicated than this, at least when they are sober. In popular fiction, male heroes can be skilled fighters, but two other intertwined qualities are also important.
The first is having good judgement in stressful situations. The hero shouldn't be an idiot who would charge a tank with a sword, no matter what crimes the tank driver has committed. A writer can even get a little sexist and have the hero's love interest test him by suggesting doing something dangerous. The hero should be able to refuse her. He comes across as a better man if anger, fear and lust are not able to truly corrupt his judgment.
The second quality is honor. While he needn't be and probably shouldn't be a virgin milquetoast goody-goody, he should have some lines that he won't cross. He can drink, swear, and get into some avoidable fights, but he should show fidelity to a personal code, even at some cost to himself.
No doubt men and women who have acted heroically in real life might find the above somewhat silly. After all, a real hero is often an ordinary person who did the best he or she could do in extraordinary circumstances, but I am trying to describe a type of male character that would be entertaining for me to read about, not to dissect real life heroism.
Arsenic Based Life?
Yesterday their was a NASA press release about a bacteria that uses arsenic as part of its DNA. This doesn't really mean that it is based on arsenic, like every other life form on earth it relies of the ability of carbon atoms to form four strong covalent bonds. Instead what is truly interesting is that by using arsenic instead of phosphorus in the backbone of its DNA the bacteria is performing a biochemical trick that nobody ever realized was possible.
The implication for science fiction that is that while realistic aliens will be limited in what they can do by basic physical laws, the details of there metabolisms would be impossible to predict. What we see as toxic minerals or dangerous industrial chemical waste might be lunch for them.
The implication for science fiction that is that while realistic aliens will be limited in what they can do by basic physical laws, the details of there metabolisms would be impossible to predict. What we see as toxic minerals or dangerous industrial chemical waste might be lunch for them.
Wednesday, November 24, 2010
Education -- Some Rambling Thoughts
There is an endless drumbeat on how people in the US need to be better educated. I'm not arguing that education isn't good, but I question the ability of education to help us compete in world markets.
Obviously, if everybody in the US had mathematical skills equivalent to John Von Neuman, a key designer of both the hydrogen bomb and the modern computer, we would have something to sell abroad. However, I don't believe that any type of education could reliably produce that kind of genius unless it also involved some type of invasive brain modifying technology.
Also, though he sufficient social skills to be able to marry and raise a family, he also had some foolish habits such as attempting to drive and read at the same time.
I think that education, while it must be partially aimed at employability, must really be aimed at equipping average people with what they need to live a good life as mature human beings. This means, though I don't knock regimentation and drill, that students cannot spend all of their time studying academic skills, as for many people these will not be the most important aspects of their adult lives.
Ultimately, I fear the problem of what and how to teach can be addressed narrowly in a scientific way. For instance, we can learn, though controlled trials, how best to teach arithmetic. However, in a broad sense it is too large and value laden to ever be perfectly addressed. In particular, national competitiveness seems to be a wrong standard. If my children are reasonably happy and healthy than I simply don't care about whether they or children in China are the best ones at Calculus.
Obviously, if everybody in the US had mathematical skills equivalent to John Von Neuman, a key designer of both the hydrogen bomb and the modern computer, we would have something to sell abroad. However, I don't believe that any type of education could reliably produce that kind of genius unless it also involved some type of invasive brain modifying technology.
Also, though he sufficient social skills to be able to marry and raise a family, he also had some foolish habits such as attempting to drive and read at the same time.
I think that education, while it must be partially aimed at employability, must really be aimed at equipping average people with what they need to live a good life as mature human beings. This means, though I don't knock regimentation and drill, that students cannot spend all of their time studying academic skills, as for many people these will not be the most important aspects of their adult lives.
Ultimately, I fear the problem of what and how to teach can be addressed narrowly in a scientific way. For instance, we can learn, though controlled trials, how best to teach arithmetic. However, in a broad sense it is too large and value laden to ever be perfectly addressed. In particular, national competitiveness seems to be a wrong standard. If my children are reasonably happy and healthy than I simply don't care about whether they or children in China are the best ones at Calculus.
Wednesday, November 10, 2010
Who Doesn't Have To Worry?
Sixty Minutes did a recent story on unemployment in Silicon Valley. Some discussion boards are full of American software engineers complaining that Indians, from the subcontinent not the Navaho Reservation, are taking their jobs. There's a trend to advise young people to go into medicine or law rather than computing.
Several things have contributed to this and offshoring and immigration being only one of many. First, during the dot com bubble more people got into computing than the field could absorb. Second, there is a lot of good software available all ready. Consider, in the mid eighties, someone working for a small business might need a program written to pull data out of a DBase database and perform some analysis on it. Today, the same data would likely be kept in Excel format and easily analyzed by the same person who generated it. The code to do so is already present in Excel and doesn't have to be written by someone else.
This use of building blocks constructed by others even extends to entertainment software. Take Second Life, for instance, Linden Research didn't develop code to simulate physics within their virtual world instead they used the Havoc Physics Engine. While integrating Havoc with the rest of their technology was probably hard, it was likely easier than writing their own physics engine from scratch.
In science, also, there are excellent pre-written tools. Scientists don't need to write or hire someone to write code for storing DNA sequences, they use MySQL. They also often don't need code written to extract specific statistics from their experimental data. Those algorithms are likely to be available as part of numerous statistics packages, including free packages such as R.
So, who doesn't have to worry? The answer for me would be people who work at a high level in computer security as they have human opponents who are always trying to come up with new ways to exploit the internet for ill-gotten gains, software architects with a track record of successful projects, and, in some cases, people with specialized skills such as working with embedded systems. The problem is that you can't just go school to land of these jobs. Everybody I've talked to with such skills has been very smart. My expectation is that at the highest levels software will still be a very good field to be in even in the United States, but that if you are not one of the smartest people around you will trouble making a long term career of it.
As very smart people who are interest in computers rather than something else are relatively rare, despite existence of many average programmers who have less work than they want, companies will still find themselves paying more than they'd like for the kind of talent they need. Thus, I expect both most programmers and many employers of programmers to be dissatisfied with the market for some time to come.
Several things have contributed to this and offshoring and immigration being only one of many. First, during the dot com bubble more people got into computing than the field could absorb. Second, there is a lot of good software available all ready. Consider, in the mid eighties, someone working for a small business might need a program written to pull data out of a DBase database and perform some analysis on it. Today, the same data would likely be kept in Excel format and easily analyzed by the same person who generated it. The code to do so is already present in Excel and doesn't have to be written by someone else.
This use of building blocks constructed by others even extends to entertainment software. Take Second Life, for instance, Linden Research didn't develop code to simulate physics within their virtual world instead they used the Havoc Physics Engine. While integrating Havoc with the rest of their technology was probably hard, it was likely easier than writing their own physics engine from scratch.
In science, also, there are excellent pre-written tools. Scientists don't need to write or hire someone to write code for storing DNA sequences, they use MySQL. They also often don't need code written to extract specific statistics from their experimental data. Those algorithms are likely to be available as part of numerous statistics packages, including free packages such as R.
So, who doesn't have to worry? The answer for me would be people who work at a high level in computer security as they have human opponents who are always trying to come up with new ways to exploit the internet for ill-gotten gains, software architects with a track record of successful projects, and, in some cases, people with specialized skills such as working with embedded systems. The problem is that you can't just go school to land of these jobs. Everybody I've talked to with such skills has been very smart. My expectation is that at the highest levels software will still be a very good field to be in even in the United States, but that if you are not one of the smartest people around you will trouble making a long term career of it.
As very smart people who are interest in computers rather than something else are relatively rare, despite existence of many average programmers who have less work than they want, companies will still find themselves paying more than they'd like for the kind of talent they need. Thus, I expect both most programmers and many employers of programmers to be dissatisfied with the market for some time to come.
Tuesday, November 9, 2010
Let's Forget about UIs For Now -- Opensim
I was going to post about Java Swing as a UI frame work but I got bored with that. Instead I worked on getting an instance of OpenSimulator running on my Mac Pro.
I used use Secondlife, the virtual world developed by Linden Research, a good bit. I am not particularly interested in online role playing in any form, although I used to do table top, and buying tons of virtual clothes doesn't interest me that much, though I admire the artistry behind them.
I enjoyed the surrealism of SL and wanted to find out what went on behind the scenes to make a virtual world work. I quickly learned the basic techniques for building objects out of secondlife primitives and perused the SL Wiki to learn about the basic structure of Linden Scripting Language (LSL) scripts.
I then hit a bit of a wall. To make good looking content you have to be able to upload your own textures and animations into Second Life. Doing this requires making a micropayment to Linden Labs, something I didn't want to do. Also, my children, God bless them, discovered how to use my account to buy virtual goods, something I didn't want.
I probably could have come with a better use of my time, but to be able to privately develop Secondlife content, I decided to load OpenSimulator, an open source package providing similar functionality on to my machine. The first problem with this was that OpenSimulator is written in C# a Microsoft developed language not native to the Macintosh. Now, C#, like Java, compiles not to native machine code, but instead to code for a virtual machine that runs on top of the native hardware.
To run this on a Macintosh, the OpenSimulator web site suggested, you need a program called mono to act as an interpreter for the compiled C# code. I downloaded and installed this and then downloaded an OpenSimulator tar ball. Once I extracted OpenSimulator from the tar ball and tried to run it, it failed, something not unexpected with open source software, which typically doesn't provide a lot of handholding.
Digging around in the opensim.ini configuration file and the OpenSimulator wiki, I discovered the reason for this. OpenSimulator like most modern software uses a relational database to store all sorts of information. Out of the box it was configured to use the SQLite database, the same one provided in IPhones and Droid smart phones.
A version of of SQLite does come with MacOS, however, OpenSimulator is not compatible with it out of the box. The three choices available were to, configure it work with the older version on the Mac, upgrade my Mac's SQLite software, or install MySQL, an open source database widely used in industry to store small to medium amounts of data. As I'd worked with MySQL before, I chose that route. Along the way I found out that though MacOS Server has MySQL installed out of the box, vanilla MacOS does not. Fortunately, it was easy enough to install from the MySQL website.
Since OpenSimulator seemed to want to log in to a database named opensim under MySQL, I created this and also created an account under MySQL with all privileges for that database. After more futzing around with OpenSimulator configuration I was able to get two regions, a few square miles of virtual land, up and running. What will I do with it, I'm not sure yet.
I used use Secondlife, the virtual world developed by Linden Research, a good bit. I am not particularly interested in online role playing in any form, although I used to do table top, and buying tons of virtual clothes doesn't interest me that much, though I admire the artistry behind them.
I enjoyed the surrealism of SL and wanted to find out what went on behind the scenes to make a virtual world work. I quickly learned the basic techniques for building objects out of secondlife primitives and perused the SL Wiki to learn about the basic structure of Linden Scripting Language (LSL) scripts.
I then hit a bit of a wall. To make good looking content you have to be able to upload your own textures and animations into Second Life. Doing this requires making a micropayment to Linden Labs, something I didn't want to do. Also, my children, God bless them, discovered how to use my account to buy virtual goods, something I didn't want.
I probably could have come with a better use of my time, but to be able to privately develop Secondlife content, I decided to load OpenSimulator, an open source package providing similar functionality on to my machine. The first problem with this was that OpenSimulator is written in C# a Microsoft developed language not native to the Macintosh. Now, C#, like Java, compiles not to native machine code, but instead to code for a virtual machine that runs on top of the native hardware.
To run this on a Macintosh, the OpenSimulator web site suggested, you need a program called mono to act as an interpreter for the compiled C# code. I downloaded and installed this and then downloaded an OpenSimulator tar ball. Once I extracted OpenSimulator from the tar ball and tried to run it, it failed, something not unexpected with open source software, which typically doesn't provide a lot of handholding.
Digging around in the opensim.ini configuration file and the OpenSimulator wiki, I discovered the reason for this. OpenSimulator like most modern software uses a relational database to store all sorts of information. Out of the box it was configured to use the SQLite database, the same one provided in IPhones and Droid smart phones.
A version of of SQLite does come with MacOS, however, OpenSimulator is not compatible with it out of the box. The three choices available were to, configure it work with the older version on the Mac, upgrade my Mac's SQLite software, or install MySQL, an open source database widely used in industry to store small to medium amounts of data. As I'd worked with MySQL before, I chose that route. Along the way I found out that though MacOS Server has MySQL installed out of the box, vanilla MacOS does not. Fortunately, it was easy enough to install from the MySQL website.
Since OpenSimulator seemed to want to log in to a database named opensim under MySQL, I created this and also created an account under MySQL with all privileges for that database. After more futzing around with OpenSimulator configuration I was able to get two regions, a few square miles of virtual land, up and running. What will I do with it, I'm not sure yet.
Subscribe to:
Posts (Atom)