Gas station without pumps

2012 January 31

Contacting home-schooling parents and parents of gifted kids

Filed under: home school — gasstationwithoutpumps @ 10:14
Tags: , , ,

On Mark Guzdial’s Computing Ed blog, I commented

The ‘gifted children’ mailing lists are full of parents looking for computer science courses (on-line, textbook, summer camp, … ) for their kids. So are the home school mailing lists. There is a large under-served market—the best known player is iD tech camps, and their material tends to be rather light on content and unsatisfying to the brighter students.

Someone asked me where to find these lists and how to market to them.  I responded there, but I thought that the information was useful enough to put it here on my blog, and not just buried in a comment elsewhere.

The best lists I’ve found for parents of gifted kids are the “tag” lists at http://www.tagfam.org/ but marketing is prohibited on the lists.

The best clearinghouse for info about gifted students is Hoagies (and they will take advertising, I think, though most of their material is non-commercial). They have a pretty good list of on-line communities. Listing resources at Hoagies is a great way to reach a lot of parents and teachers of gifted kids, as it is the most commonly referred to resource site. (So far as I know, listing stuff at Hoagies is free—they are interested in being as inclusive as possible of resources.)  The resource lists cover a lot of different subjects (books, toys, games, courses, support groups, training materials for educators, conferences, jokes, schools, psychologists, testing, … ).

One of the three home-school lists I’m on is tagmax (one of the tagfam.org lists)—the other two are small local lists and not appropriate to point to here. There is a lot of discussion of curricula and on-line courses, and endorsements of particular classes are ok (as long as they are real endorsements by people on the list whose kids have taken the courses—advertisers are quickly banned).

I have found quite a few useful pointers on the mailing lists, but traffic on some of the lists is overwhelming.  I generally divert the list traffic to separate files, and only look at the messages once or twice a day.  Some of the lists have many readers—I often get a big spike in readership on this blog when I mention one of my posts there.  (I try to do that sparingly, with only the posts that are really of wide interest to the readership of the mailing lists.)

Another mailing list that I’ve found useful, but overwhelming, is the ap-bio mailing list for teachers of AP Bio classes (mentioned on College Board’s teacher’s corner page).  I’m not an AP bio teacher, but I’m working to get bioinformatics into AP bio classes—a group of grad students and I tested one lesson last week at Pacific Collegiate with 3 AP bio classes and will test another in about 2 weeks.  We’ll be releasing them as soon as we get feedback and clean up any rough spots.

I’ve just joined the AP Physics teachers mailing list, since I find myself needing advice about low-cost lab setups for the home-schooled physics classes fairly often (and I’d like to share some of the labs I’ve posted in this blog).

2012 January 30

F1000 Research—yet another open-access publisher

Filed under: Uncategorized — gasstationwithoutpumps @ 21:38
Tags: , , , , , ,

F1000, who publish the extremely pricey “Faculty of 1000” reviews of scientific literature are now throwing their hat in the open-access publication ring with F1000 Research.

They are planning to do post-publication review,which is the current darling of the open-access advocates, as it pretty much guarantees that anything someone wants to publish will appear—the only barrier being the price the author has to pay to get it published. F1000 has been doing post-publication review (of work from any scientific journal) for years, so they have some ideas about how that should go.

I’ve written some Faculty of 1000 reviews, and I found their editorial constraints rather limiting.  They never wanted any negative comments about a paper, just superlatives.  Even the very good papers I read generally had a few flaws, and they kept wanting to remove mention of those parts from my reviews.  I’ve pretty much given up doing reviews for Faculty of 1000 for several reasons:

  • Their subscription prices are so high that the University of California Library has come close to unsubscribing a couple of times, and I don’t want to be providing free content to a company then charging so much for the content.
  • Their editorial policy of “superlatives only” does not match my more balanced (or perhaps just more negative) reviewing style.
  • I’ve lost interest in the field for which the originally recruited me. I find it very difficult these days to read most papers on protein structure prediction and related fields.  Mostly people are rehashing ideas that have been around for a decade or more, rarely improving on them.  There are probably only a handful of good papers a year in the field, and I don’t have the patience to find them.  (That is the job of F1000 reviewers, and if I were eagerly reading dozens of papers I’d be glad to share the occasional gem, but I’m not eagerly reading papers, so I almost never encounter the good ones.)

Given F1000’s history, I’m worried that the new F1000 Research will be very expensive and will quickly become a repository for trash papers. In a standard open-access journal that problem can be avoided with strong editorial control (PLoS Computational Biology generally publishes decent papers, for example), but with only post-publication review, the venue is likely to get clogged with stuff too bad to be published elsewhere.

Who is going to want to do post-publication review of a stream of junk?  It is hard enough reading the mediocre papers that have already been through peer review already—reading the ones that even the authors think would fail peer review would be excruciating.  If no one competent is reading and critiquing the papers, then the junk will not be filtered out and the whole process will degrade into a vanity press.  There are already dozens of vanity open-access journals that will print any sort of s**t if the author pays the fee (even going through a pretense of peer reviewing), and I did not see anything in the F1000 Research announcement that suggested that they would avoid this trap.

Note that what F1000 is proposing is very different from the open access in arXiv, the (mostly) pre-publication archive heavily used by the physics community. “Open access to 731,853 e-prints in Physics, Mathematics, Computer Science, Quantitative Biology, Quantitative Finance and Statistics.”  The arXiv site does not provide discussion forums, but many researchers put papers into arXiv for pre-publication discussion before submitting them to peer-reviewed journals.  There are enough respected scientists doing this that people do regularly look through arXiv for interesting material in their field. Because depositing a paper in arXiv gets it read by a few people, but does not count as publication for promotion and tenure, there is little incentive to clog arXiv with junk.

People do sometimes stick papers in there to establish that they got an idea first, even if the paper needs some work still before it is publishable, and sometimes the early drafts of a paper have flaws that are revealed before publication, but most of the papers in arXiv are published in peer-reviewed journals eventually.

Also, note that the fields most rife with sloppy research and outright fraud are not covered by arXiv (medical research seems to have the lion’s share of scientific fraud, probably because of the amount of money involved). Although there are some crackpot papers in arXiv, for the most part it is real science. I believe that F1000 wants to cover a wider swath, including fields in which fraud and crackpot theorists are a more common problem.  Relying on post-publication review seems a risky endeavor.

Disclaimer: as an unfunded researcher, I have mixed feelings about open-access publication. I like getting papers for free, and I like the idea of distributing scientific papers as freely and cheaply as possible. But most of the business models call for the author to pay for publication, which is fine for those who have grants that can pay publication charges, but deadly for those of us without funding.  Open-access publishing may, in fact, restrict publishing to a smaller group of authors than the traditional publication model—those with money.  Requiring those with grants to publish in open-access venues makes some sense to me as a taxpayer, but if it results in the loss of subscriber-pays journals, many researchers will be excluded from publication, and everyone will need to spend even more time writing grant proposals instead of doing research.

What I’d like to see are more things like arXiv, which provide free access funded neither by the authors nor the readers, but by organizations with an interest in free distribution of scientific literature (granting agencies, governments, and research libraries, for example).  I doubt that F1000, as a for-profit company, plans anything like that.

Magnetometer and accelerometer read simultaneously

In Learning to Use I2C and Magnetometer not fried, I talked about interfacing the MAG3110 magnetometer and MQA8452Q accelerometer to an Arduino.  For both, I’m using breakout boards from Sparkfun Electronics.

I  checked today that there are no problems when I connect both devices to the same I2C bus.

The first test was very simple: I put both the breakout boards into a breadboard and wired them together, then tried running each of the programs I’d written for the chips separately. Result: no problems—worked first time.

I then tried merging the programs (cleaning up any naming conflicts) so that both could be run from the same code.  After a few typo fixes, this also worked fine

I think I’m now ready to hand over the software to the students to use for their robot.

I still need to put the i2c.h, i2c.cpp, and accel_magnet code in some public place for others to use (perhaps on github? maybe on my web pages at work?) [UPDATE 2012-jan-31: I have put the libraries and the sample code for the accelerometer and magnetometer at http://users.soe.ucsc.edu/~karplus/Arduino/]

One thing that is still missing is doing tilt correction for the compass heading.  Since the ROV is not expected to remain level (the accelerometer is intended to be used in a feedback loop to adjust the pitch, with anything from -90° to +90° being reasonable), getting a good compass heading requires rotating the magnetometer readings into the horizontal plane.  Only one of the students in the robotics club has had trigonometry or matrix math, so I’ll have to work with him to get him to figure out how to do the tilt correction. It may be simplest conceptually  to compute pitch and roll angles first, then rotate twice, rather than trying to do the whole tilt correction in one step (especially since the Arduino does not have matrix libraries).

2012 January 29

Magnetometer was not fried

Filed under: magnetometer,Robotics — gasstationwithoutpumps @ 13:12
Tags: , , , , ,

MAG3110 breakout board by Sparkfun

In Learning to Use I2C, I talked about the difficulty I’d been having getting the MAG3110 breakout board from Sparkfun to work, and my fears that I had burned it out by running it overnight at 5v (instead of the rated 3v).  I suspected that my problem was really a software problem, but debugging the software when I was afraid that the hardware was fried seemed like an exercise in futility.

I bought another of the breakout boards from Sparkfun (they’re only $15), and soldered on a header yesterday.  The code failed in almost exactly the same way with the new (presumed good) part as with the old (presumed fried) part, so I was convinced that the problem was indeed in the software.

I spent half of yesterday and most of this morning carefully rewriting the library of I2C interface code.  I was starting with example code from Sparkfun for the MMA8452Q accelerometer, which I had generalized to handle other I2C devices.

The library worked fine with the accelerometer, so I thought it was ok, but it did not work with the magnetometer. I added a lot of error checking (making sure that the microprocessor was in the expected state after each I2C operation), and found that things were not working as expected. The extra error checking made it much easier to diagnose the problems. I had to re-read the I2C documentation in the ATMega328 datasheet several times, to make sure that I had all the details right (I didn’t, of course). The documentation in that data sheet is better than several of the tutorials I’ve seen on line, and is both thorough and comprehensible in describing the interface.

I did not implement all features of the I2C  interface—in fact, I have a rather minimal implementation that uses polling rather than interrupts and assumes that the Arduino will always be the bus master.  Those assumptions are fine for most Arduino projects, which just use the I2C bus for talking to a handful of peripherals, but sometime in the future I may need to make a more complete set of code that can handle multiple masters, the Arduino as a slave device, and interrupts rather than polling and waiting for operations to finish.

Because I was more interested in simplicity and robustness than speed, I rewrote the code so that transactions were finished (and appropriate status checked) before functions returned.  With these changes I found that the STOP condition was not happening, despite being requested.  All other operations on the bus are checked with the TWINT bit  of the TWCR register and the upper bits of the TWSR register, but determining that STOP has completed requires checking the TSWTO bit of the TWCR register. The code I had started from just checked the TWINT bit for the other operations, and had a fixed timeout that was too short—it did no checking at all on the STOP state, just adding a fixed delay.

Once I got the STOP timing cleaned up (and earlier, making sure to send NAK when reading the last byte), everything worked fine.  The accelerometer code  had probably worked ok because there were enough delays after stops that the stops completed, even though I had not checked to make sure.  With the fixed code, even the magnetometer that I thought I had fried seems to work ok.

The interface for the students in the Robotics Club is fairly simple (much simpler than the standard “Wire” library):

// Read one register
uint8_t i2cReadRegister(uint8_t i2c_7bit_address, uint8_t address);
// Read num_to_read registers starting at address
void i2cReadRegisters(uint8_t i2c_7bit_address, uint8_t address, uint8_t num_to_read, uint8_t * dest);

// Write one register
void i2cWriteRegister(uint8_t i2c_7bit_address, uint8_t address, uint8_t data);
// Write num_to_write registers, starting at address
void i2cWriteRegisters(uint8_t i2c_7bit_address, uint8_t address, uint8_t num_to_write, const uint8_t *data);

I suppose I should check that there are no problems when I connect both devices to the same I2C bus, before handing this over to the students to use for their robot.

I should also put the i2c.h and i2c.cpp in some public place for others to use (perhaps on github? maybe on my web pages at work?). It is really a shame that WordPress.com does not permit code-like files as pages.

[Update 22 May 2012:  I’ve had the code available at http://users.soe.ucsc.edu/~karplus/Arduino/libraries/ for some time now, but forgot to update this post to mention it.]

2012 January 28

Physics homework for chapter 6

Filed under: home school — gasstationwithoutpumps @ 10:56
Tags: , ,

For Chapter 6 of Matter and Interactions, we should do the following problems:

6.P.54, 6.P.61, 6.P.66, 6.P.71, 6.P.81, 6.P.87, 6.P.95, 6.P.98, 6.P.100, 6.P.105, 6.P.107, 6.P.108

Next Page »