Monthly Archives: September 2013

(defn start-blog []…)

Hi, I’m starting this blog after thinking for a while that I need a place to put my thoughts out there and see what comes back.  Primarily this will be a place where I log my various computer or engineering projects, both to share with whomever is willing to read as well as to get feedback from interested parties.  The main efforts here will focus on developing a full-fledged electronic design automation (EDA) tool (aka CAD, ECAD, etc.) using Clojure as the primary language and JavaFX 2.x as the GUI framework.

Initially I’ll be adding some stuff about the Clojure language, specifically as it relates to JavaFX 2.0 and creating all – or portions of – a modern desktop app.  I’ve been interested in GUIs for a while, but I’ve never really dug into creating a full-fledged “real” desktop application.  I have various amounts of experience over the last 15 years in (in no particular order): Clojure, Scheme, Java, Python, SciPy, C/C++/C#, wxWidgets, Matlab, Octave, etc.  I’m a bit of a luddite when it comes to webbish or java-heavy technologies like Ruby, PHP, Perl, ASP, Github, Maven, Eclipse, etc.

Critical to any success is relying on the contributions of others on the internet, so while I will undoubtedly reference others’ contributions, I find that I’m doing stuff I haven’t found online and will share these things as they come.  Basically  I want to share the stuff I wish I’d found and enable others the same joy I’ve had in combining functional programming with GUI creation.

I have a background in electrical engineering and hardware design and have used a variety of EE/cad tools — a few different flavors of SPICE, Orcad, Altium, Tanner, and several of the Cadence and Mentor tools, going all the way back to Viewdraw in 1994, my first university-supported tool in some 200-level digital design course.  While using these tools I’ve often had a running list of gripes and complaints, with everything from license managers (ie LMTools and nickel-and-diming the user down to little things like PDF export) to sweeping notions of design flow and *how* you approach creativity and forcing the user to maintain implementation details in their heads while also trying to think about the project at hand (ie multiple files and multiple tools for each little thing aka Unix style, having to think about different file formats, or single binaries and unified application, or having to “export a netlist” or “compile” the design), to minor nuisance  things like not being able to right-click-copy something out of a text field, or making the distinction between open/save and import/export.  I have not extensively used any of the hobby-ish (or low-cost professional) tools such as Eagle, PCBExpress, or Kicad, but I hope to get into these and see what I can learn and how i can improve on them, and take the good ideas which do in fact exist out there.

The desire to create my own this EDA tool is driven by a very deep and profound hatred for the big tool suites, their licensing schemes, their boneheaded way of approaching the user interaction/user interface, and just the overall feeling that these tools are > 20 years old with patch after patch of false functionality and marketing hype, and the fact that most users are so locked into their junk that there really is no incentive to improve on the user experience.  I want a tool that is *fun* to use, that provides satisfaction when you click on something, rather than frustration and “surprise” at each and every little dialog.  I want something that “just works” with the same level of intuitiveness as some of the smaller shareware utilities out there.  Clearly EDA is a big concept, and there is *necessary* complexity, but from what I’ve seen, specific implementations of EDA involve a lot of unnecessary or incidental complexity for what I assume are probably legitimate original reasons.

Anyway, this is enough for a first post.  I need to figure out how to get syntax highlighting working, figure out how to use github, post files, publish java webstart stuff, etc. etc.  This is a long project.