[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