About me

I’m a chemistry professor who writes software to design molecules that I hope will make the world a better place. I’ve been programming since I was 12, I have written code in a lot of programming languages including Basic, X86 assembler, Pascal, Prolog, Fortran, Smalltalk, TCL, PHP, Python, C, C++ and Common Lisp. More on this later.

I run a research group in the Chemistry Department at Temple University in Philadelphia, PA. We have developed a way to make the largest, most complex and most “programmable” molecules outside of biology. We call them “spiroligomers”, they are large, shape-programmable and functional group programmable molecules that let us construct molecules that bind proteins as therapeutics and accelerate chemical reactions the way that enzymes do. The goal is to create molecules that can do everything that proteins can do in nature but be designable and evolvable by human beings. More on this later.

11 thoughts on “About me

  1. I was hooked 10 minutes into your Google tech talk 20150609 at MDM2 … better than Nutlin … just read P53, the gene that cracked the cancer code … my husband;s stage 4 gallbladder cancer has mdm2, frs2, stk11 … plus 12 unstudied ones … so I appreciate your sharing… THANK-YOU for your dedication and persistence and SUCCESS.

  2. Hi: This may be an awkward/impolite way to try to get in touch, but at your leisure I’d appreciate suggestions for Qt+Clasp integration. Currently I’ve developed a Qt creator plugin to run Clasp code, and extended Clasp with some functions to call back to Qt, which combined with Q_INVOKABLE annotated C++ methods allows Clasp to dynamically script Qt GUIs. I had previously worked with ECL, but I think Clasp is a great alternative (and it’s a fascinating body of work — is there a computer science equivalent of a Fields medal?) … For example, a common use-case is building GUIs from XML code or incorporating XML from HTTP APIs; XQueries generate Lisp code which calls back to C++ constructors or methods. To link Clasp into Qt projects I added a few targets to the main makefile to create a static library. I was also — using the older Clasp sources which I think precede using the x86_64 varargs ABI — able to compile a minimal Clasp library for Windows, with the idea that Qt could be used for otherwise UNIX-specific functionality like filesystem, sockets, and so forth.

    I’d like to expand this into a comprehensive Qt scripting platform, with Qt Creator providing some functionality to serve as an IDE for Clasp. One issue is that Qt Creator plugins need to reside in a specific directory so the logic in bundle.cc has to be modified when Clasp is used in this context. Also, the plugin build system might have to be integrated with that of Clasp. Qt has a repository of plugins which is a good way to share projects with the C++ community, but automating the build process may require some more effort. I’d be interested to know if you have specific guidelines or recommendations for future development along these lines — and whether integration with Qt seems like a good use-case for Clasp.

    For the record — since Lisp coding seems to be rather foreign to most Qt developers, I also experimented with designing a more high-level, JavaScript-like language which runs in the Clasp environment by inserting callbacks into the readtable code. When the alternate syntax is operative, the reader gets tokens from a precompiled data structure (assembled using QRegularExpression, so people can tweak the grammar if they want, a pure Qt parser — not the likes of YACC which can be a royal pain when it comes time to build); source files can switch between the “normal” Lisp syntax and the alternative. Any Lisp semantics is available in the alternative syntax; it’s just a slightly different way to write code, with statements, blocks, and lexical variables declared when they’re used rather than at the top of the scope. I think this is a way to ease the transition to Lisp from someone coming from a C++/JavaScript/etc. background, though perhaps Lisp purists would disapprove.

    This project was initially conceived with the help of the Brooklyn chapter of the Open Web Application Security Project, which likes to sponsor new languages that encourage more secure coding practices. Currently OWASP overall have promoted a more secure version of Python and a Haskell-like web application language called Opa. The plan for my project is to gradually incorporate extra security features based in part on E (which is a kind of security layer on Java that has been ported to Lisp, and it’s reasonable to substitute Qt/C++ for the Java and Clasp for the Lisp); and employing some Haskell semantics concepts, like Monads (cf. David Sorokin’s Monads-for-Common-Lisp library). Those are the more long-term goals anyhow.

    Anyhow, again I’d appreciate any comments or suggestions if you’d care to. Thanks, and especially thanks for all the years of effort which obviously were required to create Clasp.

    • Nathaniel – I’d love to help you. This sounds very exciting. We should talk – there have been many developments. Do you use IRC? I’m on #clasp on irc.freenode.net. almost every day.

      • Hi Thanks! I’ll have to learn IRC, which I’ve only used once or twice. The immediate motivation for my writing at this time was that Qt just released 5.7 on Thursday, and I checked that the new Qt and Clasp can build nicely together (at least they do on my system, OpenSuse Leap — but I had to manually ensure that Clang/LLVM 3.6 and not a more recent version was downloaded during installation). I added the Qt libraries and paths to local.config. Since everything built OK, I figured this was a good time to move forward. Anyhow, I’ll make a point checking in on IRC in the near future.

      • I’ve upgraded Clasp to support llvm3.9 and made lots of other changes. I can help you bring your stuff up to date.

        Send me an email (meister@temple.edu). I’m rearranging the Bundle code so that Clasp is more intelligent about finding the directories that it needs at startup. I can incorporate what you need or develop and API for you to specify additional directories at startup.

      • Nathan, could we get in touch again? The new build system is up and running well. The thinLTO (fast link-time-optimization) is working perfectly. I’d like to learn more about this Qt interface you have implemented in Clasp.

    • The latest, greatest version of clasp is in the ‘testing’ branch. Send me an email if you need any help building it or need tweaking of the new ‘waf ‘ based build system.

  3. I hope the waf based build system doesn’t act as a barrier. That’s why id be happy to make changes to facilitate what you are doing once I have a clearer idea of what it is.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s