[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: gEDA-user: Functional blocks and PCB format changes



       IMHO, the "problem" with XML lies not in the bloat, even a factor
   10 larger
       would be acceptable, it's the <$TAGS> that have to be identical
   across all
       applications to have a "truly" exchangeable XML file.
   [1]http://www.ibm.com/developerworks/xml/ XML can be easy or hard, big
   or
   small, depending on the task at hand.
   Specifically related to this discussion is this:
   "Create a maintainable extensible XML format
   Reduce change when you design XML formats agile enough to incorporate
   new requirements"
   [2]http://www.ibm.com/developerworks/library/x-extensxml.html
   The problems described there are not specific to XML formats.
   XML gives us the ability to interact with other tools.  JSON gives
   smaller file format, with Lots of Irritating Silly Parentheses.  YAML
   gives flexibility, with small file size.  SVG lets us layout boards in
   our browser (I've actually wanted to do that due to restrictive IT
   policies on what software can be installed and used).  The 'What' of a
   requirement document is more important than the 'How'.  No reason at
   all that there can not be multiple file formats, *if* things are
   specified well.
   We all have many wishes, with a fixed amount of time to allocate to
   our lives, unless we make time to code things we'll be spending time
   on wishes and still be where we started in the end.  "The Devil's
   weapon of choice today, is distraction from our goals in life."
   Here is my Wish List of sorts:
   Anyone ever consider the heretical idea of tossing it all and start
   over fresh? Lets us get things like hard-metric options as the first
   thing that came to mind.
   There are many external libraries today, for examples many from the
   Boost and wxWdigets domains, that make that idea easier than in the
   past, see below for the easy stuff.
   The hard part is the domain specific stuff, that few of us understand
   berried in 20+ years of accumulated poorly commented cruft.
   DJ is there any hope of creating a library of the domain specific
   stuff?
   For the easy stuff, as long as we don't have a "Not Invented Here"
   complex or "external dependencies make it hard to build"
   [3]et.al. problems (reinventing the wheel just takes valuable
   development
   time to make a lot of incompatible wheels):
   Polygon library: Booleans/clipping, resizing/offsetting and more
   for planar polygons with integral coordinates.
   [4]http://www.boost.org/doc/libs/1_44_0/libs/polygon/doc/index.htm
   Interprocess: handling to Schematics for real time interaction.
   [5]http://www.boost.org/doc/libs/release/doc/html/interprocess.html
   Quaternion Math: Gets around accumulating errors when rotating objects
   in six-degrees-of-freedom (See Stewart Platforms), when we go 3D
   someday.
   [6]http://www.boost.org/doc/libs/release/libs/math/doc/quaternion/html/
   index.html
   MPI: Message Passing Interface library, for use in distributed-memory
   parallel application programming, for that 1000 layer board (that no
   one could ever build, lets be realistic in requirements).
   [7]http://www.boost.org/doc/libs/release/doc/html/mpi.html
   Parameter Library: Write functions that accept arguments by name.
   [8]http://www.boost.org/doc/libs/release/libs/parameter/doc/html/index.
   html
   Program Options: The program_options library allows program developers
   to obtain program options, that is (name, value) pairs from the user,
   via conventional methods such as command line and config file,
   environment variables.
   [9]http://www.boost.org/doc/libs/release/doc/html/program_options.html
   Property Tree: A tree data structure especially suited to storing
   configuration data.
   [10]http://www.boost.org/doc/libs/release/libs/property_tree/index.html
   Pyton (for scripting): The Boost Python Library is a framework for
   interfacing Python
   and C++. It allows you to quickly and seamlessly expose C++ classes
   functions and objects to Python, and vice-versa, using no special
   tools -- just your C++ compiler.
   I'd do something with Lua myself actually, see below.
   [11]http://www.boost.org/doc/libs/release/libs/python/doc/index.html
   Signals2: Managed signals and slots callback implementation
   (thread-safe version 2), for plug-in implementations.
   [12]http://www.boost.org/doc/libs/release/libs/signals2/
   System: Operating system support, including the diagnostics support
   that will be part of the C++0x standard library.
   [13]http://www.boost.org/doc/libs/release/libs/system/doc/index.html
   Boost also has several Smart Pointers, several Parsers, Exception
   handling, Threads and other techniques to make robust code.
   See the whole list here: [14]http://www.boost.org/doc/libs/
   For the GUI I'd use wxWidgets [15]http://www.wxwidgets.org/ which in
   time
   will run on your iWhatsit, and does run on PC, Mac, Unix [16]et.al,
   today.
   Use OpenGL for the machines with the power to use it where 'expensive'
   doesn't mater, and SDL for the slow old machines.  Requires a good
   abstraction layer.
   wxKeybinder: A pre-built panel and a complete system to
   view/remove/add/edit command shortcuts.
   [17]http://wxcode.sourceforge.net/components/keybinder/
   wxScript: A set of abstract classes to add a script-interpreter
   support to your wxWidgets applications/libraries.  Python, Lua and
   tolua, underc, cint (all optional).
   [18]http://wxcode.sourceforge.net/components/wxscript/
   wxDatabaseLayer: SQLite3, Firebird, MySQL, Postgresql (all optional)
   [19]http://wxcode.sourceforge.net/components/databaselayer/
   I'd go with wxSQLite3 for a standardized storage, instead of adhoc
   file/memory creations.
   [20]http://wxcode.sourceforge.net/components/wxsqlite3/
   Embedded Firebird for those that want full-up database.
   [21]http://www.firebirdsql.org/manual/fbmetasecur-embedded.html
   They mention Security in the Firebird link.  Security is important to
   consider; buffer overflows, loadable executable plugins [22]et.al.  We
   don't want our projects showing up on a SANS list.
   See here for several other applicable libraries:
   [23]http://wxcode.sourceforge.net/singlepagelist.php
   I'm sure others would want different languages (Erlang anyone?  My
   choice of the moment.), no
   changes at all, etc.  End results are what matter.
   --
   [24]http://blog.softwaresafety.net/
   [25]http://www.designer-iii.com/
   [26]http://www.wearablesmartsensors.com/

References

   1. http://www.ibm.com/developerworks/xml/
   2. http://www.ibm.com/developerworks/library/x-extensxml.html
   3. http://et.al/
   4. http://www.boost.org/doc/libs/1_44_0/libs/polygon/doc/index.htm
   5. http://www.boost.org/doc/libs/release/doc/html/interprocess.html
   6. http://www.boost.org/doc/libs/release/libs/math/doc/quaternion/html/index.html
   7. http://www.boost.org/doc/libs/release/doc/html/mpi.html
   8. http://www.boost.org/doc/libs/release/libs/parameter/doc/html/index.html
   9. http://www.boost.org/doc/libs/release/doc/html/program_options.html
  10. http://www.boost.org/doc/libs/release/libs/property_tree/index.html
  11. http://www.boost.org/doc/libs/release/libs/python/doc/index.html
  12. http://www.boost.org/doc/libs/release/libs/signals2/
  13. http://www.boost.org/doc/libs/release/libs/system/doc/index.html
  14. http://www.boost.org/doc/libs/
  15. http://www.wxwidgets.org/
  16. http://et.al/
  17. http://wxcode.sourceforge.net/components/keybinder/
  18. http://wxcode.sourceforge.net/components/wxscript/
  19. http://wxcode.sourceforge.net/components/databaselayer/
  20. http://wxcode.sourceforge.net/components/wxsqlite3/
  21. http://www.firebirdsql.org/manual/fbmetasecur-embedded.html
  22. http://et.al/
  23. http://wxcode.sourceforge.net/singlepagelist.php
  24. http://blog.softwaresafety.net/
  25. http://www.designer-iii.com/
  26. http://www.wearablesmartsensors.com/

_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user