Domain: mems-exchange.org
Stories and comments across the archive that link to mems-exchange.org.
Comments · 12
-
Nanotech science
From my collection:
* Nanotechnology information [archived] [2002]
* Bibliography of nanotechnology and nanoscience [pdf] [2004]
* Brad Hein's nanotechnology website
* Ned Seeman's DNA nanotech bibliography
* MEMS/nanotech reading list
* Even more publications in nanotechnology
* sci.nano archives
* The open micro/nano-manufacturing project
* Nanotech in scifi
And if anybody has links on nanomechanical synthesis, that'd be much appreciated. IIRC, nanolithography is one of the main areas of development, along with nonlinear optics to get the required precision manufacturing. -
Easy installation
For a window platform, download Instant Rails
Or for linux, install mod_scgi and follow the instructions here
It's stinkin' easy, I can do it in about 5 minutes. Any hosting admin worth their salt can even script it in about 10 minutes. -
Re:Notable Release
And they redeveloped the site a few years back with Quixote, a very cool, no-nonsense Python-based web framework.
-
What do you use for Rails? FCGI, FCGID, or SCGI?
It looks like there are 3 choices for running Rails on Apache2:
mod_fcgi - original fastcgi, been 18+ months since last code change
http://www.fastcgi.com/
mod_fcgid - binary-compatible with fastcgi with improved process management
http://fastcgi.coremail.cn/index.htm
mod_scgi - simpler protocol utilizing Python (not sure of speed vs other two)
http://www.mems-exchange.org/software/scgi/
Which do you use and why? Are there any comparisons that show both speed and memory utilization among these? Did you try one and dump it after finding problems? -
Quixote does XMLRPC easier...
As an alternative, Quixote http://www.mems-exchange.org/software/ has a slightly different flavor to exposing Python objects via the url, probably a little more secure out of the box (including cross site scripting protection) and does XMLRPC in a straightforward manner.
-
Re:Advantages?
Not in the standard lib but : Quixote is the one I use.
-
Re:Played with it
But Love of Whitespace (tm) is what makes Python terrific...
;-)Initially I was afraid of whitespace, and now I can't imagine a language that did not enforce its use. Whitespace makes code readable, and makes it possible for me to maintain other peoples code long after they have left with a minimum of head bashing against the desk.
But enough about Whitespace, I wanted to comment on Rails - I had a good look at it - very cool stuff. However I'm not willing to switch languages and Python has very bool web-stuff too, so I don't need to.
I have not used ASP or PHP in years now - have long since switched to Python and a lesser known but growing in community web framework called Quixote.
See: http://www.mems-exchange.org/software/
Quixote (and related framework helper Dulcinea, and object database Durus) make quick work out of data driven web applications, particularly if your thought process is more "Programmer developing web application" rather than "Web GUI developer needing to intergrate some data pieces". Highly recommended.
Durus is a relation in some ways to Zope's ZODB, but infinitely simpler -- you can understand the unerpinings of Durus with a simple readthrough of the code.
Check out the stuff even if you don't use Python - its very useful software that doesn't believe in magic. If you have the time to invest, Quixote, Dulcinea and Durus make a terrific combo that will give you all sorts of pre-done app components and get you going quickly, more than saving the up front learning curve time invested in the end.
And if object db's aren't your think, nothing in Quixote prevents using Postgres or any common SQL DB with a tool like SQLObject (been there, done that). I come from a long background of SQL driven apps but now will question whether I need them and use an ODB like Durus where it makes sense. Its a real treat to be able to do this:
class SomeThing(Persistent):
____ foo = None
____ children = {}
____ def add_child(self, child):
________ children[child.key] = child
class Child(Persistent):
____ someotherstuff = foobar()... And that's it -- regular python. No db code, everything is saved to the Durus object db, attribute changes etc - I don't have to think about it.
-
Libraries Comparison
Heh, hehe, okay.
According to Bagley's site, we should all be using Ocaml anyway. Who knows, he may even be right...
In reference to the Bagley test, Java was more performant than Python, true. But Python won over Java on both memory and lines of code. Also, his tests, as all artificial benchmarks, are both accurate only for the point-in-time and are only accurate within the limits of the test conditions themselves. More recent versions of both Java and Python are faster. On top of that, special-purpose optimizations exist for both Java and Python if you really need that extra spurt of speed -- think Jikes or TowerJ for Java and Psyco for Python. More to the point, though, Java may be faster than Python, but it isn't faster by an order of magnitude. The difference in speed between them is not enough to worry about -- if you really need that much speed, you won't be programming in either Java *or* Python, you'll be coding in C and assembler. Your performance argument is irrelevant.
Your libraries argument is somewhat more compelling. However, you may not be aware that there are two major versions of Python, standard Python implemented in C and Jython, implemented in Java. Using Jython, you can write Python that has full access to all of Java's libraries.
On top of that, I'll make a very rough comparison between the various projects on Jakarta and extant Python libraries. I don't think I've seen anything like this, as Python has a poor record for collating their libraries and apps in one place, so the effort is worth it simply for educational purposes, if nothing else.
Disclaimer: I am not terribly familiar with most of these projects, and they have varying states of completeness and maturity. I merely aim to show that analogs of the various Jakarta projects do exist in the Python world. Please feel free to peruse them yourself and come to your own conclusions.
Jakarta Ant -- PyAnt , SCons
Alexandria -- I don't know of any comparable Python applications. However, the individual components of Alexandria (doc generation, CVS access, etc.) are available: check out HappyDoc , and various modules for use with the Zope application server, including CVSFile
Okay, now I'm going to lump together a bunch of Jakarta projects. Individual authors and users of these projects will inevitably scream, but my justification is that they are all web application servers of one sort or another. Their purposes are all the same. They have many differences in approach, philosophy, scope, and implementation, but at heart, they are all web application servers or web application server frameworks. Those projects are: Avalon, Jetspeed, Struts, Turbine, Velocity, Slide, and Tomcat itself. Oh, and I might as well throw James in here, too. Python web app servers and frameworks are equally numerous, and several are in advanced stages of maturity: again Zope, Twisted, Webware, Quixote, CherryPy, and SkunkWeb. There are more, but I'll leave that as an exercise for the reader. Google is your friend.
Lucene has no real counterpart in Python. David Mertz has put together a text indexer and search program, available at his site, but it looks small compared to Lucene. There is also something called WePaSe, but there is no information on it aside from its freshmeat release announcement.
Gump also has no counterpart. Cactus has an equivalent in WebUnit and PyUnit. Log4J's Python copy is called, naturally, Log4Py.
ORO and Regexp provide regular expressions for Java. Python has regular expressions built in to the standard library.
OJB provides an object-relational bridge for Java, similar in concept to Sun's JDO specification. Python counterparts are Modeling , PyDO, which is a subproject of the above-mentioned SkunkWeb, and MiddleKit, a subproject of WebWare.
ECS, JMeter, and POI have no Python counterparts. BSF also has no counterpart, since it embeds a scripting language in compiled Java. Perhaps its "counterpart" is Jython. Likewise, BCEL has no counterpart, nor does Watchdog.
Taglibs has no direct counterpart. Instead, Python has Spyce, Cheetah, PSP, and probably close to a dozen other implementations of the ASP/JSP theme, each with their own library of tags. Lack of a standard is perhaps not a good thing, but the existence of bunches of competing implementations is not a bad thing. Perhaps the most direct counterpart would be Zope's built-in technologies, DTML and ZPT. ZPT has also been built out into a standalone version, SimpleTAL.
Jakarta Commons has too many small projects for me to want to research Python equivalents. If you are looking for something in particular, check the Vaults of Parnassus first.
As for Apache XML, Python has SOAPy and ZSI implementing SOAP, and DOM, SAX, and XML-RPC are built in to the standard library. 4Suite implements DOM, SAX, RDF, XSLT, XInclude, XPointer, XLink and XPath, and has an XML and RDF data repository and server built on top, which would make it very roughly equivalent to both Cocoon and Xindice. I don't know of any Python equivalents for Batik, FOP or XMLSecurity.
Python has relational database access through its DBAPI standard, with adaptors for just about every database. There are a number of object databases coded specifically for (and often in) Python, the most well known being ZODB, which was developed by Zope. There are adaptors for other object databases as well.
There are really two spaces where Java outstrips Python, and the second space is IMHO directly caused by the first: standardization, and J2EE. Python puts out a language implementation and a lot of very useful libraries, but does not have any standardization body like the JCP. The result is lots of fragmentation. Individual developers write their own libraries and applications that compete with each other while offering wildly differing APIs and programming approaches. There has been some push to organize, through the official Python SIGs, but their efforts, while noble, have not been massively effective. Only this month has an initial implementation of a Python library repository similar to CPAN been released. Kudos to Andrew Kuchling, who made it happen, but it is LONG overdue.
Regarding J2EE, the only viable competitor is Zope. Even then, Zope really doesn't address the same problem space. The shortfall here comes from a number of different factors: corporate buy-in, public perception, lack of an established problem-space solution, and lack of published standards. Zope is a great solution, and has been used by a number of high-profile companies, but its focus is different.
Well, I hope you find this comparison to be useful. *I* certainly found it enlightening. -
not slashcode; perhaps LWN
Everyone so far has said "slashcode". I don't think that's a good idea. I doubt the kind of "peer review features" offered here will help, and I doubt it's easy to extend to what you want. The same goes for PHP-Nuke and others.
Here's a slightly less obvious answer. LWN is doing something a little closer to what you're talking about. They have subscription and delayed release for non-subscribers. They are planning to release their code, which is based on Quixote.
You have given very little information, so perhaps you can expect only answers like "slashcode" and "LWN". It depends on many things including the subject matter of the journal, what sort of mark-up and formatting is involved, and how much special typesetting you want in the printed editions. If it's not-for-profit, how about staying out of dead trees altogether?
I wish journals -- and websites -- would keep it simple.
-
Re:So basically...
I think that this might have applications in MEMS technology.
-
Further referencesLook at Pister's Smart Dust page.
Albert Pisano, the outgoing DARPA program manager for MEMS, likes to talk about building a MEMS dandelion seed, a few mm in diameter. (I saw him deliver the talk at GWU, and he's also given it at NIST.) With current process technology, an old processor like the 8088 would easily fit in that space; in fact, you could get a few hundred 8088s in that space, so computational power isn't a problem. Add power generation, sensors, and radio communications, and you're on to something!
I work on software for a MEMS-related project (the MEMS Exchange). It's an interesting field, and one that's already having an impact in specialized areas like accelerometers, and is very close to becoming widespread.
-
Re:Personal ExperienceIt's probably more productive to form contacts inside other organizations, and use them to gain special attention from the people doing the hiring. Developing free software is helpful, because it gives you a track record and brings you to people's attention. My last two jobs were both acquired through contacts made on Usenet.
My current project, the MEMS Exchange, is looking for good developers, and placement services aren't much help, because the people we've interviewed often seem to be clueless. (Write me if you'd be interested -- we're in the DC area, and are a research-oriented non-profit.) We've had horrifying experiences where a candidate's CV looked good, but it all fell apart at the interview, where we found they couldn't write pseudocode for reading a file line-by-line. If we knew a person could at least design and code reasonably, because we knew they'd maintained a non-trivial software package, that would be a good foot in the door. Similarly, a while back Digital Creations got a bunch of new employees, hiring practically everyone who had done a significant project using Zope. This is another good reason to hack on free software; it can earn you a reputation, and that reputations can lead to better offers and more interesting jobs.