Wednesday, June 18, 2014

A MinGW-w64 Toolchain Matrix (Unofficial) (Draft 2)

Downloads: MinGW-w64 builds from 4.8.2 revision 0 to 4.9.0 revision 5
Version i686
POSIX win32
Dwarf SJLJ Dwarf SJLJ
4.8.2 rev 4 rev 4 rev 4 rev 4
rev 3 rev 3 rev 3 rev 3
rev 2 rev 2 rev 2 rev 2
rev 1 rev 1 rev 1 rev 1
rev 0 rev 0 rev 0 rev 0
4.8.3 rev 0 rev 0 rev 0 rev 0
4.9.0 rev 3 rev 3 rev 3 rev 3
rev 2 rev 2 rev 2 rev 2
rev 1 rev 1 rev 1 rev 1
rev 0 rev 0 rev 0 rev 0


Rationale:
  • Toolchain Divergence
    • Qt 4.8.6 for Windows platforms (MinGW) is compiled for MinGW-w64 version 4.8.2 , i686 architecture, POSIX threads, Dwarf exception handling, as explained in a dialogue window during installation of the MinGW edition of Qt 4.8.6. The text in the dialogue window denotes revision 3, specifically.
    • The primary makefile for the Lisp Kernel  in Clozure Common Lisp (CCL) ...
      • for Microsoft Windows Win32 architectures, CCL uses the i686 edition of MinGW-w64 
      • for Microsoft Windows Win64, CCL uses the x86_64 edition of MinGW-w64 
  • To create a template for reports on release testing

Formatting Notes:
(labels ((do-print
          (str &rest args)
          (let ((b (current-buffer)))
            (newline b)
            (princ (apply #'format str args) b)))
         (print-tr
          (rel rev)
          (do-print "<tr id='mingw64_r%s_%s'>" rel rev))
         (print-tr-1
          (rel rev)
          (print-tr rel rev)
          (do-print "<td rowspan='%s'>%s</td>" (1+ rev) rel))
         (print-td
          (rel rev arch threads eh)
          (do-print
           "<td id='mingw64_%s_r%s_%s_%s_%s'><a href='http://sourceforge.net/projects/mingw-w64/files/Toolchains%%20targetting%%20Win32/Personal%%20Builds/mingw-builds/%s/threads-%s/%s/%s-%s-release-%s-%s-rt_v3-rev%s\.7z/download'>rev %s</a></td>" rel rev arch threads eh
           rel threads eh
           arch rel threads eh rev
           rev
           )))
  (dolist (release-info '(("4.8.2" 5) ("4.8.3" 1) ("4.9.0" 4)))
    (destructuring-bind (release n-revs) release-info
      ;; release 4.8.2 available to r4 (zero indexed)
      ;; release 4.8.3 available to r0 (zero indexed)
      ;; release 4.9.0 available to r3 (zero indexed)
      (let ((rev-max (1- n-revs)))
        (do ((rev rev-max (1- rev)))
            ((= rev -1))
          (cond ((= rev rev-max)
                 (print-tr-1 release rev))
                (t
                 (print-tr release rev)))
          (dolist (arch '("i686"
                          ;; "x86_64"
                          ;; NB: x86_64 not available under MinGW "Personal Builds"
                          ))
            (dolist (threads '("posix" "win32"))
              (dolist (eh '("dwarf" "sjlj"))
                (print-td release rev arch threads eh)
                ))))
        (newline (current-buffer))
        (princ "</tr>" (current-buffer))
        ))))

Tuesday, June 17, 2014

Towards an ad hoc Study of Natural Language Analysis

Philosophical Concepts:

  • Narrative
  • Rhetoric
  • Poetry
  • Romanticism

Objects:

  • This study will focus on a subset of literary works written by William Shakespeare [Sidebar: Authorship]
  • This study will not focus on the stageplays of William Shakespeare
    • In each of the stageplays of William Shakespeare, each character in the stageplay's dramatis personae has an individual narrative, evolving across the duration of the stageplay, as in interaction with other characters in the stageplay -- in dialogue -- and in each character's own ostensibly reflective introspections, as functionally telegraphed to the audience, verbally, in monologue
    • A study of the text of a stageplay may be made with consideration of each character's own individual narrative, in the stageplay
  • This study will focus on the full set of romantic sonnets written by William Shakespeare and published at Project Gutenberg
  • This study will not focus on:
    • Works of political rhetoric
    • Works of contemporary journalism
    • Texts of scientific dissertations

Platform:

To Do

  • Sonnets in XML
  • Structural workflow diagrams in BPMN, from systematic "input" to systematic "output"
    •  Formalizing this ad hoc study into a practical work of systematic literary analysis
  • Applying Maui Indexer
  • Viewing keyphrase models in Protege
  • "Further Work"
    • Towards a Concept of "Knowledge Views"
      • Concept: Interpretive application of SKOS knowledge models in OWL format, by individual systematic actors
      • Practical Domains
        • Humanistic literary analysis and interpretation -- "ergo, ad hoc"
        • Development of a literary model for mechanical reasoning and mechanical learning (ANN, ART, Parallel Computing) utilizing OWL.
          • See also: SWRL
          • Applications: "Expert search"
    • Extending on lexical analysis -- focusing on keyphrase extraction -- with analysis of lexical semantics -- focusing on keyphrase relations within a singular work of narrative text
      • Statistical view: "How many times is the noun, 'Foo,' preceded by each of the nouns: 'Bar', 'Baaz', 'Quux'?"
      • Incorporating a model for linguistic semantics -- focusing on differentiation of types of word, e.g nouns, verbs, adjectives, ... -- within a model for lexical and semantic text analysis
      • Incorporating a model for structural semantics, in individual literary metatypes
        • e.g a structural model for poems: [Poem]---+-[Stanza]---+-[Verse]
        • e.g a structural model for stageplays:  [Stageplay]---+-[Act]---+-[Scene, Setting]---+-[Dialogue | Monologue]---+-[Verse, Blocking, Author's advice to actor, ...]
    • A survey of existing algorithms in design of Artificial Neural Networks (ANN)
      • Concept: Logical computing
      • Concept: Unsupervised learner models
        • Adaptive Resonance Theory (ART)
        • Bayesian Analysis
        • ...
      • See also: SWRL
    • A survey of existing algorithms in parallel/cluster computing
      • See also: GNU Common Lisp, Maxima
      • See also: Beowolf "best practice" clustering models
      • See also: Raspberry Pi computing clusters
      • See also: BeagleBone Black
    • A survey of natural language processing models as applied in text based search engine systems

Monday, June 16, 2014

Notes - Developing with Clozure Common Lisp on Microsoft Windows Platforms, using the Eclipse IDE

Essential Outline, Overview

I. Install IDE

II. Install toolchain components

III. Install software components

  1. Install precompiled components
  2. Build source-code components

IV. "Write new lines of code"

V. "Release new lines of code"

VI. "Release party"

VII. "Maintain released code"

VIII. IPO

Note: This outline proposes an alternative to to crowd-sourced economic models.

IX. ....?


Practical Outline, Current Draft

  1. Install GNU C/C++ Toolchain via Cygwin. 
    • Supporting documentation resources may include:
    • Observe that there are two distinct C/C++ compiler toolchains available for installation via Cygwin: The GNU Compiler Collection (GCC) and the Minimialist GNU for Windows (MinGW) toolchain
      • Additionally, a 64 bit edition of the GCC toolchain is available via cygwin64-gcc 
      • Alternately, a 64 bit edition of the MinGW toolchain is available in two editions:
        • mingw64-i686-gcc 
        • mingw64-x86_64-gcc
        • Referencing the mingw-w64 General Usage Instructions, the mingw-w64 i686 toolchain would be used for compiling 32 bit binaries on a 64 bit host platform, whereas the x86_64 toolchain would be used exclusively for compiling 64 bit binaries
        • For compiling CCL for Microsoft Windows platforms, mingw64 is the recommended toolchain. For a complete Microsoft Windows build of CCL -- for Windows 32 bit and Windows 64 bit target platforms -- both of the MinGW-w64 i686 and x86_64 toolchains should be installed, for compiling the CCL Lisp kernel respectively for 32 bit and 64 bit Microsoft Windows platforms. 
        • Observe the advice denoted in the following source files, and the Cygwin packages recommended in the same:
          • Makefile for CCL 1.9 on Win32, recommending the following Cygwin packages:
            • make
            • m4
            • mingw64-i686-binutils
            • mingw64-i686-gcc-core
            • mingw64-i686-headers
            • mingw64-i686-pthreads
            • mingw64-i686-runtime
          • Makefile for CCL 1.9 on Win64, recommending Cygwin software packages:
            • make
            • m4
            • mingw64-x86_64-binutils
            • mingw64-x86_64-gcc-core
            • mingw64-x86_64-headers
            • mingw64-x86_64-pthreads
            • mingw64-x86_64-runtime
          • Using the Eclipse IDE C Development Tools (CDT) in an Eclipse CDT C/C++ project, each toolchain may be defined seperately, in an individual toolchain configuration, via the project properties dialogue window for the respective project.
  2. Install Eclipse IDE (Kepler)
  3. Install additional extensions for the Eclipse IDE:
    • Collaboration // Subversive (SVN) team provider 
    • Programming Languages // C/C++  Development Tools
  4. Download the CCL 1.9 distribution for Microsoft Windows Platforms (source and binaries). 
    • See Getting Closure CL
    • SVN URL http://svn.clozure.com/publicsvn/openmcl/release/1.9/windows/ccl
    • Create as Generic Project
      • After download: Convert to C Project, referring to Eclipse IDE online help documentation
        • Select C Project
        • Select Project Type: Makefile Project (Cygwin GCC)
          • NOTE: Ensure that the Cygwin GCC installed and that the user's PATH environment variable is appropriately configured, within the Eclipse IDE session -- e.g PATH should contain an entry  c:\cygwin\usr\bin at the end of the PATH environment variable value (refer to later outline entries, here)
        • Observe that the primary makefile is located under the directory lisp-kernel/{architecture}, for each supported {architecture} within the CCL source tree (e.g. win32, win64)
        • After converting the project containing the CCL source tree into a C project, then right click on the project, in the Eclipse IDE Project Explorer view, and select the Properties entry, in the project context menu
          • Observe the project properties, C/C++ Build and C/C++ General. 
          • Specifically, under the C/C++ Build property, as to ensure that Cygwin is available on the system PATH at build time
            1. Select the Build Variables entry
            2. Select ADD
            3. Enter PATH as the variable name
            4. Add the entry: ${CYGWIN_HOME}\usr\bin and select OK
            5. Select ADD, again
            6. Optionally, in the Build Variables dialogue window, select Show system variables to review the full list of environment variables that will be defined in the build environment.
          • Select the root C/C++ Build property, and append the appropriate CCL lisp-kernel makefile location to the Build Command, e.g substituting the appropriate project name (in this configuration, ccl-1.9-windows-ms)  the build command  for building CCL for 64 bit Microsoft Windows platforms:  make -f ${workspace_loc:/ccl-1.9-windows-ms}/lisp-kernel/win64/Makefile
          • TO DO: One or more of:
            • Define an "add on" central makefile for both of win32 and win64, such that the central makefile would permit for specification of which target platform to select, at build time
            • Configure the Eclipse project for the CCL build, such that an environment variable may be used to select which target platform to compile for, e.g to a Build Command:  make -f ${workspace_loc:/ccl-1.9-windows-ms}/lisp-kernel/${target.arch}/Makefile
            • Define a separate Eclipse CDT make target for each respective target runtime platform. See also: Creating a make target, in the Eclipse CDT Online Help Documentation
  5. Refer to CCL manual, Chapter 3: Building Clozure CL from its Source Code, specifically section 3.5, Using "make" to build the lisp kernel
  6. ... #YMMV
To do:
  • Developing with McCLIM
    • UI Concepts in CLIM
    • Contrast: 
      • Geometric GUI design / view
        • CLIM
      • Structural GUI design / view
        • Qt, GTK, Eclipse Standard Widget Toolkit, ...
    • Observations:
      • CLIM was designed for integration with window systems
      • CLIM was developed at a time before the widespread development and adoption of standard GUI component toolkits, as available in contemporary editions of the Microsoft Windows, OS X, and Linux/X11 desktop platforms
        • Sidebar: Toolkits and Desktop Environments -- primarily on Linux/X11 platforms
          • GTK, GNOME
          • Qt, K Desktop Environment (KDE)
      • The design of the CLIM GUI architecture effectively requires that the Common Lisp implementation will perform in a role as layout manager, on the graphical desktop platform
      • Standard GUI component toolkits such as Qt would be defined with, in each, their own respective layout managers
        • Functionally dependent on available interfaces, the toolkit's own layout manager may be interfaced via FFI
  • Developing with Qt and McCLIM
    • Qt 5 on Microsoft Windows (Windows 8, WinRT, Metro UI ) -- Resources
      • Qt for Windows (Qt 5)
        • Download Qt
          • Observe that the Qt WinRT 5.3.0 binary edition is compiled for a 32 bit architecture, and therefore would require a 32 bit Lisp image for FFI
          • Note that CommonQt does not presently support Qt 5
          • Observe that Qt 4.8 (4.8.6) is available in an edition compiled with MinGW
            • The exact toolchain edition, as mentioned in the text of a a dialogue window, at installation time: MinGW GCC 4.8.2 i686, POSIX threads, Dwarf exception handling. A corresponding edition is available via the MinGW-w64 project, as hosted at SourceForge.net. 
            • Observe that CommonQt makes reference to the Qt 4 edition compiled with Microsoft Visual Studio / Visual Studio Express
      • Qt 5 on Windows 8 and Metro UI (ca. 2012)
      • Introduction to jom 
        • jom - parallel alternative to nmake, Microsoft Windows platforms
      • Qt 5 on Windows ANGLE and OpenGL
        • OpenGL ES 2.0 for embedded systems
        • QtMultimedia
        • Microsoft Windows RDP
    • Qt, Qt Smoke interfaces, and CLtL
  • A survey of free/open source software distribution models
    • Debian
      • Feature: Standardized, extensible packaging system
      • Feature: Command-line package management tools
      • Feature: Package signing
      • Feature: GUI package management tools available
      • Feature: OS-wide package management for Debian GNU/Linux and Debian-based GNU Linux distributions
      • Feature: Package dependency management specifications may include information about direct build dependencies
      • Feature: Repository structure delimited according to release objects, e.g. "Woody"
      • Feature: Allows convenient backporting of source packages, between individual release sets
    • Cygwin
      • Feature: Central repository of free/open source software (FOSS) for Microsoft Windows platforms
      • Feature: GUI package management tool
    • Eclipse Update Sites
      • Feature: GUI package management for Eclipse IDE extensions
      • Feature: Licensing notification, previous to installation time
      • Feature: XML format for repository metadata
      • Feature: Some extensions provide their source code in separate extension packages
    • Maven Repositories
      • Feature: Extensible model for public/private distribution of Java archives
      • Feature: Package metadata is defined in an XML POM (Project Object Model) file
      • Feature: Allows for distribution of source archives in parallel to compiled source archives
    • Emerge (KDE edition)
      • ....
    • See also: ChromiumOS source code repositories
      • ...



Backtrack Log

Errors were encountered when installing the following packages via Cygwin 
  • libcom_err2-1.42.10-1 (package libcom_err2, located under 'e2fsprogs' directory in the local package downloads cache)
    • "Unable to extract /usr/bin/cygcom_err-2.dll [...]"
  • libintl8-0.18.3.2.2-2 (package libintl8, located under the 'gettext' directory)
    • "Unable to extract /usr/bin/cygintl-8.dll [...]"
  • Apparent cause: Files "In use" within another process; unable to overwrite, due to process file-locking.
The package installation process proceeded otherwise normally, despite those errors.

Recommended resolution: Delete the downloaded package archives  for those packages, (Note: Possibly not necessary in this instance, but advised) and reinstall those packages, via Cygwin Setup.exe, after all of the packages are installed.

Those errors were repeatable. The errors were a result of there being a Squid HTTP proxy service running in background, during the installation of those software packages.

Recommended resolution (Updated): When encountering a similar error message, shut down the Microsoft Windows Service for Squid HTTP proxy and select "Retry," in the dialogue window displaying the error message. After the installation completes, restart the proxy service -- observing that any access to the local HTTP proxy service will be interrupted, during the installation.

Thursday, June 12, 2014

Workspaces, Source Trees, and Working Sets - Towards an Abstract View Of Baseline Project Resource Container Models (Draft 7)


Brief Exposition

Earlier this year, I'd purchased a Chromebook. I'd made an extensive effort of detailing my "First boot," albeit as something of a "Chromebook Fanboy" then -- that, before I began to try to comprehend the ChromiumOS source code repository, a task that remains "Incomplete," to this day.

A couple of months after that "fist boot," my Chromebook became my primary development platform. That was around when my old/newest Toshiba laptop became unbootable from its internal hard drive -- as was certainly due to the hard shutdowns that that PC was so apt at making, when running MS Windows, and the corresponding filesystem corruption during the hard shutdowns, corruption apparently not only on the NTFS partition but also on the boot sector.  That laptop, with that internal hard drive, now cannot boot from the internal hard drive. I've certainly tried to recover that other laptop's internal hard drive, using SystemRescueCD, but to no avail. I can use SystemRescueCD on a DVD-ROM drive, to boot the PC and to chroot to the existing Linux partition on that PC, and from that chroot, I can even 'mount' the primary NTFS partition on the hard drive, and any of the two NTFS-format rescue partitions. I've tried to use TestDisk to recover the MBR and make the internal hard drive bootable again, but to no avail. At some future time, I might endeavor to install an SSD drive into the laptop, and to image the old hard drive onto that SSD, across the "swap."

When I was using my Chromebook as my primary development platform -- granted, absent some features such as SBCL, Virtualbox, and QEMU, it being a Samsung Chromebook, and therefore an ARM Chromebook -- first, I'd installed a KDE chroot using Crouton. Using that chroot environment, I'd begun to make use of an SD card that I had around, a little 16GB media card, to store the files of the chroot desktop workspaces.


An ad hoc Workspace Model

In regards to how I had developed workspaces on that SD card, it was essentially similar to how the Eclipse IDE manages workspaces  in the Eclipse IDE. Sure, though, the approach I had developed was distinctly ad hoc. In a personal regards, I was using only Emacs as an IDE -- Eclipse Kepler not being available via the Ubuntu ARM ports, at that time. In the approach I'd developed for ad hoc workspace development on that SD card, I basically had made one workspace per each specific task area such as I could endeavor to collect and to develop source code resources within.  For instance, I'd made an a workspace for working with McCLIM, on that platform -- ultimately, porting McCLIM to ECL and CCL,  The last workspace that I'd made, on that platform, it was essentially for building an Eclipse Kepler edition for ARM, using the Ubuntu Eclipse source package. I'd left that aside, however, when I discovered that as well as I would also to backport Jetty for that, I'd also have to backport Apache Tomcat 7. I wasn't certain of how much further the backport list would expand from there, so I left that backport project aside, in its workspace.

Presently, I have a great, new, remarkably well featured and furthermore remarkably student budget friendly HP Pavilion 15" TouchSmart PC. In the process of making it "My PC," I've since made a TAR archive of my workspaces set on the Chromebook, transferred it to the Pavilion PC using SSH, then configured the Cygwin environment on the Pavilion PC to create native MS Windows Shortcuts in lieu of Symbolic Links, and then unpacked the archive as transferred. 

Presently, before finishing that workspace migration, I would like to take some time to reconsider how I've organized the workspaces of the same -- considering that in the Eclipse IDE, I could use project groups, alternate to filesystem directories, for creating something like my Chroebook's ad hoc workspaces, namely for organizing source trees into task groups, insofar as in metadata created and applied by the Eclipse IDE.

The tangential idea that -- in regards to this article -- that I am "looking for," I think, is to create a portability layer for working with Eclipse IDE workspaces in a development environment in Common Lisp.

There is a pragmatic concern, also. As a case in point, there's my CCL workspace from my Chromebook, in which I've cloned a source tree for each of:
  • CCL Linux ARM, release 1.9
  • CCL Linux ARM Trunk
  • CLX, as in portable CLX
  • FFIGEN4, as forked by CCL
Presently, I'll need to add a CCL Windows Trunk source tree to that short list. I would like to be able to keep that short list consistent, of course, for synch back to the Chromebook -- and that, in developing not any sort of hack in tools development, around this task.

Migrating the SCCM Repositories

When I was migrating the Chromebook's workspaces onto my Windows 8 laptop, I observed that I might have to update the Git config for each Git repository now on the latter, to ensure that each Git repository is using a desired semantics for text file line endings on the Microsoft platform, as well as with  specify settings with regards to symlink handling, file permissions, pathnames, and for using SourceGear DiffMerge as a tool for the diff and merge commands in Git. 

Sure, I've used git config to specify some site-specific default settings for those configuration items, however I'm concerned that I should have to ensure that all of those configuration items will override any current repository-specific configuration settings as such, for those configuration items, and onto those source tree items that I've now migrated from an Ext4 filesystem.

Of course, there are also some SVN and CVS managed source trees in that set of workspaces. I think, it calls for a development of an abstract model for SCCM tools and interfaces

Workspace as Concept

Presently, I would like to begin a tangent about ISO topic maps and/or SKOS and/or CORBA. Briefly:

  • A workspace -- in a sense of a container of digital file source trees and changesets -- can be modeled as a SKOS Concept
    • ...regardless of the SCCM tool used for each respective soucre tree and changesets
    • ...and in such a manner a that the SKOS Model thusly defined may be applied by developer tools within an integrated desktop environment, as for a purpose of "checking out" a sort of broader "thing" than a Git repository with submodules  -- namely and rather, for "checking out" or "cloning" such a workspace as would be defined in such a SKOS model
  • SKOS 2 is implemented in OWL
    • OWL is supported with the ODM metamodel published by the OMG
    • MOF2I, published by the OMG, provides a means for transforming an MOF metamodel into a set of IDL interface definitions, though of course the practical details of the transformation may seem however obscure in all of the the rhetorical statements in the MOF2I specification
  • A CORBA-backed distributable service could be developed for checking out workspaces, in using a model derived of the SKOS model -- possibly, integrating persistent CORBA IOR URI into the OWL+SKOS metamodel, furtermore
    • Such a network service could be userfully implemented on a thin client platform, or on a PC

Workspace as Filesystem Resource

An Eclipse IDE workspace may contain an indefinite number of source trees -- literally, filesystem resources -- each, loaded as an Eclipse project, with corresponding Eclipse IDE project metadata.

Each source tree may be categorized, within the Eclipse IDE, within zero or more working set items. Those working set items would, in each, be local to the Eclipse IDE workspace that is being visited in the Eclipse IDE. (An Eclipse IDE working set would be similar to the concept of ad hoc filesystem workspace, as I'd made when developing on my Chromebook)

The set of working set items in a single Eclipse IDE workspace is listed in the workspace metadata created by the Eclipse IDE, in each specific Eclipse IDE workspace. However, rather than editing the metadata external to the metadata controller application -- in this situation, the Eclipse IDE -- it would be more advantageous to use an interface within the Eclipse IDE -- such an interfaces as may be available, hypothetically, for a sort of provisioning of project resources in the Eclipse IDE.

Workspace as CORBA IDL Interface

Hypothetically, it is possible to share working sets between individual desktop platforms -- ostensibly, in an extension to the Eclipse IDE, as well as in extensions to other desktop applications such as Emacs SLIME, and mobile applications such as Textastic. A CORBA architecture may be developed, for such an extension -- implementing sort of a peer to peer CORBA architecture for authorized workspace sharing between individual desktop PCs and thin client platform applications, or alternately, for sharing workspaces and project information in synchronization with a central project management server, the later also using CORBA .

In CORBA IDL, the interface definitions for the source-tree/working-set association model would be essentially trivial -- such as to define an IDL interface SourceTree (container, contained), and an interface, WorkingSet (container), with a few simple operations in each respective IDL interface definition for managing a doubly-linked list associating zero or more SourceTree items with each WorkingSet.

Of course, the WorkingSet interface would, in itself, need a convenient, additional interface available -- such as may be defined with a name, WorkspaceManager -- for listing a set of WorkingSet instances registered within a CORBA ORB. The WorkspaceManager and Workspace interfaces could then be defined as to contain similar operations for operating on a doubly-linked-list associating zero or more WorkingSet objects with a single WorkspaceManager


Applications for a CORBA Workspace Manager

  • Central management of user/team workspaces, working sets, and working-set/project associations
    • Towards an abstract concept similar to Git submodules and SVN externals
      • May be defined in such a manner as to be applicable not exclusively onto a single SCCM service, but rather, as to be portable onto multiple SCCM services (Git, SVN, Hg, Darcs, CVS, ...) 
      • May be designed as to allow for team synchronization of workspaces, across a heterogeneous SCCM service mix
      • Might provide some features such as may be functionally analogous to some features provided in the Eclipse IDE, primarily in the Eclipse Team extensions
    • May be applied as effectively a component for a team SCCM application framework, for LAN-local developer teams and for distributed developer teams
    • May be utilized within centalized workflows for distribution management and reporting for projects
  • May be utilized within mobile development applications, essentially as a sort of distributed project model

Commensurate Dependency: Multi-User Model in CORBA

To define a multi-user WorkspaceManager as an application of CORBA network service technologies, it would require a definition of a set of CORBA IDL interface definitions, for defining a user model in CORBA IDL.
  • Goals:
    • to support user authentication in CORBA interface implementations
    • to provide interfaces for user identity management, for application within user authorization procedures, in extensional implementations of CORBA interfaces
    • for application in the Project WorkspaceManager design and its implementation
    • for application within other CORBA application designs entailing multi-user access and authorization models and corresponding procedures applied onto digital resources, within a CORBA services network
  • References for a central user model interface library, in free/open standards and free/open source software models, may include:
    • Liferay. Security and Permissions, in manual: Liferay Portal 6.2 Developer's Guide
      • The Liferay Portal Permissions DRAC model extends on the JSR 286 Portal Resource model, and JSR 286 Principal Security model
      • Refer to the following sections of JSR 286 (PDF):
        • Section PLT.21, User Information -- referencing JSR 286 user attributes
        • Section PLT.24, Security -- noting section PLT.24.2, Roles, and the corresponding section SRV.12.4 of the Servlet Specification as referenced in JSR 286, namely JSR 154, Java Servlettm 2.4
    • Picketlink IDM -- as used in GateIn and the eXo Platform
    • OpenLDAP
      • Note that the Liferay, GateIn and eXo Platform portal frameworks, when installed, can each be configured to use an LDAP service for principal authentication and principal metadata within the web portal
      • Furthermore, a Linux host can be configured to use an LDAP service for host-level principal authentication
      • Therefore, LDAP might be preferred as a a central principal information service for networked applications
      • Observe the features of OpenLDAP's functional model -- as detailed in the OpenLDAP Administrator Guide 2.4  (alternate editions)-- including:
        • Central, selective LDAP directory replication, using OpenLDAP slurpd
        • OpenLDAP backend service interfaces
          • BerkeleyDB
          • SQL
          • Others
      • Alternatives: On the Java platform, Apache DS provides a Java-based LDAP server implementation. On Microsoft Windows host networks, consult documentation about Microsoft Active Directory.
    • PAM, NSS on Linux
      • Note configurations for using an LDAP service as a principal authentication service on a Linux host, using PAM and NSS
    • Kerberos
      • Note, specifically, the concept of a domain in Kerberos
    • X.509 (PKI/PMI) -- referencing:
      • X.509 article at Wikipedia, the Free Encyclopedia
        • Note, specifically, the concept of certificate revocation lists
      • strongSwan -- free/open source VPN service application
      • EJBCA -- Java-based X.509 Certificate Authority (CA) service
      • OpenSSL -- free/open source X.509/SSL toolkit
      • CORBA 3.3, module CSI

Implementation Proposal

CORBA ORB Implementations
  • JacORB, 
    • Contexts
      • Eclipse IDE plugins
      • Liferay 'ext' plugins
        • JacORB CORBA service for Liferay 
          • Observe that a "new" JacORB service installation would collide with the CORBA services provided by some enterprise application containers such as Glassfish, but would provide necessary functionality lacking from a "Bare bones" Liferay installation onto Tomcat 7
        • Implementation of CORBA user model onto Liferay
        • Implementation of additional IDL interfaces onto JSR 286 (comprehensive)
      • Liferay 'portlet' plugins
        • Workspace view (project resource list)
        • WorkspaceManager porlet (workspace list)
        • configuration dashboard component for WorkspaceManager
    • Observe that JacORB supports authentication with Kerberos (LAN, etc)
  • CLORB, in the Common Lisp components

Wednesday, June 11, 2014

Towards an Abstract Model for Community-Edited -- i.e Wiki -- Content Resources

Recently, I purchased a new laptop -- to my opinion, a remarkably well featured laptop, for its baseline price, featuring a 15" HP TouchSmart screen, and Windows 8, on an Intel Core i3 MCU with 750 gig quiet, efficient internal HDD, for less than $500 at a contemporary office supply store, "Sublime" perhaps, but it is a workhorse laptop. In the process of beginning to outfit the same veritable workhorse, I've installed a number of desktop applications and some hardware drivers for networked consumer devices in my PC and LAN configuration -- had shared some notes and a brief review, in a previous 'blog entry, this week.

Sure, in outfitting my veritable workhorse of a laptop, I've found it useful to keep my notes not only in a digital format. A spiral-bound notebook on a modest pressed-fiber clipboard, a pen, and an a sense for creating outlines -- that may suffice, when the laptop is occupied with other processor-consuming tasks, such as to unarchive a GZipped Tape Archive (TAR) of some 2 gigabytes of storage, in beginning to migrate one's software/electronics development workspace from a 16 gigabyte SD card formatted Ext4 and used in a Chromebook chroot, onto NTFS in a Windows 8 laptop.

When I was writing my notes on paper, last night -- one thing about pen and paper, it may afford more opportunities than the digital medium, for easy, novel markup and annnotation, not insomuch in a typesetter view, though certainly in a utility regards -- I noticed that I can organize some number of items in my "Laptop refit" to-do list, that I can organize some of those items each into a discrete thread of tasks and contexts -- four threads total -- across thirteen "baseline" to-do items. Some of those items pertain to a business plan I have begun developing, and that I will not be able to share much of notes about, online or in any social networking, until at least registering a domain name to develop a "web identity" for the business ostensibly modeled in my business plan. I am mostly concerned to avoid "Domain name squatting," in that much, though there is a bit of a broader concern of intellectual property rights, in my remaining taciturn about such an enterprising thing as a business plan, on this none so privacy-friendly public Internet.

With a focus set more for ethics in free/open source software (FOSS) development, less for the necessarily proprietary qualities of any endeavor of making an enterprise with one's own material and intellectual capital -- ethics, such as codified of the Debian Free Software Guidelines, such that I myself would much prefer to the GNU Manifesto, candidly, as an expression of ethics in FOSS development, in any application -- then it may be conceivable, I think, that I would begin to organize that laptop/software task "To Do" list and its context categories, to produce some public content for a wiki, out of that outline -- perhaps, to develop a wiki around my DSP42 web log, here. 

As in regards to information science -- not insomuch with regards to politics -- I think that that at this point, one could ask, in a philosophical question, "What wold Thomas Jefferson Do?" but I myself am more interested in a practical question, "What may and shall I do?"

Clearly, what I shall do at first is to begin to write, to clarify my own ideas to myself, in a manner of sharing my own ideas in a literary manner, on the public Internet. This is in a manner of writing for knowledge, not insomuch of writing for "First impressions," though I should wish to write in a legible manner -- of course -- or I might leave an impression as though I was only trying to make an homage to a poem by Amiri Baraka. That is, if I would write in any too abstract of a manner -- perhaps, like in a manner of a concrete poem, with some reference to the fist Dadaists, Tristan Tzara himself, and the first rise of post-war consumerism in Europe, circa the post-WWI epoch in which there was also surrealism and perfume -- if I would write in any too subjectively abstract of a manner, my writing  might be too easily misinterpreted. In this matter, I am interested more in making an article that  might make some technical sense, at least "to myself," at any later time, more than in making any sort of a literally expressive "statement." This is more a journal than an op-ed, more an item of "Cobbler's notes" than of any manner of a marketing banner.

So, I am interested, firstly, in developing a concept of a model for a wiki, towards an abstract model such as would suit the semantics and structure of a wiki, without any exclusive regards towards any singular wiki medium or wiki application framework -- not only in a separation of literal logic apart from content presentation, as with XML and other normative markup formats, but moreover in developing a separation of application logic in a manner apart from, and more abstract than any single application, and namely such as must be delimited for rendition with documentation, CORBA IDL interfaces, and IDL interface bindings in any single programming language in which a CORBA ORB is usefully implemented.  The matter of seperating application logic apart from application -- it might seem like, philosophically, simply a new rendition of the older logic/presentation distinction as represented around XML, but I think it is otherwise "new," in a sense -- and how that is represented in CORBA, betwixt a CORBA IDL Interface definition and its binding in a single application of CORBA -- with no too slight regards for the necessarily proprietary nature of intellectual property, in the same discussion. Though my note, as such, might seem to lend a question to the reader, but here is a novel thing to distract:


Portage, by Johnny Automatic

Broadly, if one may develop a suitably domain-neutral, technical  model for a Wiki -- as a wiki being a web content resource -- one could easily use UML. Then, perhaps the model, "thusly developed" could be of some suitable applicability, for developing any single practical extension of the same abstract model -- as would be, then, in application of the same model onto one or  more application frameworks -- in this matter, specifically for developing a single wiki, in a heterogeneous application environment, on a heterogeneous, networked systems platform, namely of a small office/home office (SOHO) LAN interfacing with the public Internet. The wiki, itself, might be comprised of files in any number of markup formats (XML, HTML, Markdown, ...) along with resources in any number of document formats (ODS, XLS, ...) -- more towards a metadmodel for an application, then, if not a corresponding metaclass model. 

Sidebar: MetaIDL?
Of course, CORBA itself supports CORBA reflection, and IDL can be extended for a meta-interface protocol of some kind, perhaps to  model the Common Lisp metaobject protocol, in some regards. So, even a metaclass model can be represented for interfaces, in CORBA IDL, and though it might seem like something of a "hack," in an abstract regards, but whom would suggest that one cannot make an original application of CORBA IDL? Myself, I've not studied CORBA applications for DARPA, though I am familiar with not so much. I'm interested in applying CORBA technologies for applications in consumer-grade computing, and though the consumer computing market -- in "the cloud," namely -- has much been "scaled" in recent years, and I myself would not wonder for long, as to "Wherefore and how the development of the new Cloud is inspired," on this public Internet, and/or in commercial enterprise, and/or in any broader, humanistic endeavor -- so, I am interested in applying CORBA for consumer-grade applications, with no short shrift lent for application context and user data security. Personally, I am none too familiar with boats of the sea, been gratefully land-locked in most of my life's time -- and that aside, then sure, this endeavor, "mines" it will need some efforts in demystifying CORBA, and MOF, and UML, and furthermore. I know of a practical thread, at that -- so far as CORBA, at least -- in Common Lisp, it is named CLORB. One might not have "Seen that coming," but sure this endeavor will not be much on "Surprises."


If I arrive at a sense of crisis, then, perhaps it is more a crisis of heterogeneity than of any ostensibly sentimental failure. I value diversity, much, but in trying to develop any singular platform out of a lot of differing "hacks" in technology, then perhaps one might develop more a sense of understanding about the usefulness of a central, baseline model, in computing -- such as represented of specifications of the Object Management Group (OMG), publisher of standard specifications such as of OMG MDA, MOF, UML, SysML, CORBA and its numerous extensions, and such -- and sure, I am a fan of Leonardo DaVinci's work in engineering, also. This, there's no "secrete code" and no whistling poodle in the matter, CORBA can be used on any number of popular, consumer-grade computing platforms. I'm afraid I will not be able to be a star of that, it is simply "Too obvious."

As well as of CORBA, in a sense of central models, there's also the perhaps "more recent" work of agencies of the World Wide Web Consortium (W3C) in regards to developing specifications originally in extension of SGML, ultimately in development of XML and then of so many streams-oriented protocols applying XML. Of course, XML has its utility as a normative markup format, but -- back to the wiki concern -- there's a matter of application user interfaces,  such that the enterprise standards quite leave unaddressed.

 La mariée mise à nu par ses célibataires, même (Le Grand Verre), by Marcel Duchamp

And so, one is reminded of a work by Marcel Duchamp, even.

After enough of Dadaism's response to consumerist post-WWI Europe .... Things that one does not have a photo of: Picasso's Guernica in the Green Zone. Oh, but so, Surrealism? Oh, "I've heard of it." and incoming mortars on Easter Sunday? Oh, I've heard of that, too, "Far and away," and on CNN.

So, back to tech topics, in matters more concrete than cultural: As a student of an online university -- after enough of the push-button nicety of WYSIWYG editors for web-based HTML content, those available in the university's mandatory online discussion forums, such as allowing some at least limited HTML content markup -- namely, as my being a student in the goings of an online university, "Of late," and quite the opposite of a "Fan of" any sort of ad hominem "push-button theories," candidly, whatever anyone's efforts for "getting a rise" might be thought to derive to -- well, but I wonder why Afghanistan halted the reconstruction of the Buddha statues? I've read of that -- and sure, there's history in the world, "I've heard of it."

So, but why would I want to be doling over the guttural details of consumer tech systems, when I could be preparing to disembark on a history expedition? Personally, I don't know, "Why, that?" 

Because Industrial Music, and not consumerism.

Other things that one might not have a photo of may include: A bear cub jogging down a hill, "All in good company", in the outdoors beyond agendas.

As for agendas: If there's anyone of my family whom did not move away Texas, with my grandfather D_, I wonder if historianship runs in the family, on that side of the family? The side of my family that is not the side of my family that constructed and operated a lumber mill in the early 1900's? My grandfather, whom reminds me of stories of Solomon -- pre-hipster-1960s family, That "My family."

Diversity -- it's a topic I was born into, and it's not "Old hat," not to me.

Tuesday, June 10, 2014

Brief Review - 15" Edition of Hewlett Packard's Pavilion Computers with HP TouchSmart

Avoiding any manner of a lengthy autobiography, "To keep it short," I've arrived at a brief moment in my life when I've been able to afford some of my student budget, to purchase a new laptop. The laptop I've purchased, I've purchased after some substantial research. My new laptop, it's an HP Pavilion model, 15 inch display, approximately 5 hour battery life on a less than 5 hour battery charge -- some wattage, no doubt, lost across the AC-to-DC inverter in the "wall wart".It's such a leap forward from my old Toshiba, in such a far leap of usability, with not a tiny screen, I am well impressed at my current "User experience" with the same PC.

With my being in a course of study in which I will be spending a lot of time, in my life's time, in staring at a digital display screen of some kind, working via the human computer interface (HCI) features of a PC, and trying to work with software on the PC -- perhaps most of the time time, in at least practical regards, "successfully" so -- whatever processor/graphics chipset configurations, whatever IO bus and peripherals, whatever elements and features of a computer system of any particularly nature, application, and authority -- I have my own laptop, my own laptop is an HP, it's got a sleek looking form factor, a spacious screen, and an ever more customizable Windows desktop. I've not yet configured my new laptop for "Dual boot" -- rather focusing on developing the toolchain on the Windows partition.

Though I can tolerate the tiny text of my 10" Samsung Chromebook's screen, this new laptop, it's like veritably "a load of my back." If one would endeavor to develop so much as a working draft expressing an idea for so much as a design of a computer system component, before "line one" of code, it sure takes time, focus, and consideration untold, most of that time spent in staring at a PC, working with the software on the PC's OS - there aren't many ways around that, except to revert to "Pen and paper." Sure, "Pen and paper" can be useful nonetheless -- can be a great medium for sketching out a project plan without interference from awkward document editor interfaces -- but when it's for developing a digital component, then it must needs be "worked on," at a computer, and there must needs be incentive enough -- however real and perceived in the subtle semantics of one's own experience and one's own knowledge -- incentive sufficient for producing such endeavor. Candidly, a user experience at a poorly designed laptop isn't much of  an incentive. With enough study and effort, however, one can make well of even a less-than-positive user experience as such.

Personally, I think it's great that I don't have to forever squint at the screen of my Chromebook, now, or try to thumb my way through any further study with a none-too-developer-friendly Tablet PC. To my point of view, the HP Pavilion I've purchased, it's a PC designed to be a workhorse of a PC, and it's got a stylish design in no less.

Of course, in so much as the "First boot" of my HP, I've taken some time to locate some resources for the goal of making it a more effectual PC user experience, for my own PC "Usage case," as I am developing "Thus far." This morning, I've furthermore installed some new software items, and there will be "More of that, ahead".  I'll share the "UX resources," here, the rest would be for material of more lengthy dissertations:

  • Classic Shell Project. Classic Shell - Start Menu and Other Windows Enhancements.
    • Free/open source software product for Windows 8 platforms
    • Supported fiscally with developers' own budgeting and by donations from appreciative users with sufficient budget for donation
    • Reintroduces the classic "Start menu" HCI element to the Windows 8 desktop
    • Can be used as completely an alternate to the Windows 8 "Start screen"
      • To my understanding, the Windows 8 "Start screen" is more an advertising channel than any sort of a useful HCI/UX element. Personally, I am not interested in such "Goodwill branding," i.e. "Salesmanship" at my PC's Desktop.
      • Pragmatically, I find it troublesomely difficult to make efficient use of the Windows 8 Start Screen. It is not any kind of a useful "start" in my "Usage case" on the Windows platform, but at least it is easily removed from one's PC workflow, with such as the Classic Shell application. 
      • Personally, I don't need any more "light" kitchen recipes in my veritable card-box of kitchen recipe index cards, but I'm sure it's a novel part of the Windows 8 "User experience" (UX) for some Windows 8 users, probably in the most. #YMMV
      • The alternate "Start Menu" developed by the Classic Shell Project -- I could stack up all sorts of superlatives of the items, it's really a superb piece of work for the Windows User Experience.
      • Allows complete customization of the "Start menu"
      • Reminiscent of the K Desktop Environment (KDE) menu editor, on the Linux platform, but it's really more expansive than the KDE menu (KDE 3) in available menu-driven functions
      • Really really useful for making shortcuts and other features for effectual "User experience" at the desktop PC
    • An invaluable item of software for the Windows 8 platform
    • That it's possible, on the Windows 8 platform, even so much as possible for the Classic Shell Project to develop and distribute such a software item that integrates so well with the Windows 8 desktop environment -- without any of the broader UX differences of, for instance, Geoshell on MS Windows desktop platforms -- and for oneself, as a Windows PC user, to install such an item and make a comfortable use of the application, to me it represents something like a "Paradigm shift" in my own user experience of the Windows desktop platform. Sure, it's still not Linux -- it's not an RTOS-capable platform in itself, MS Windows 8, and it doesn't feature the same TCP congestion control options, and it's not as easy to configure at the terminal emulator, and it's not a server-grade OS insomuch -- but I think it's pretty darned swell for "The mainstream work," at a desktop, and I am very well impressed with it. I'll try to stop harking on the Traf0Data "Backstory" of the ripoff by the company that preceded the Microsoft Corporation in the previous company's ripoff of a competitor's product that Traf0Data rebranded as MS-DOS, in some collusion with IBM -- cf. Digital Research CP/M -- and so, its still not clear of the ethical question, as of, "What becomes of that kind of a ripoff?"
    • Microsoft Windows Edition 8, these decades later, across so many changes in management and policy in "Redmond" -- Windows 8 is really a swell desktop platform,. Personally I think that -- with the Classic Shell addition -- then, it's "best of class," as a pragmatic desktop platform, insofar as I know of PC desktops. (I've not had any experience with OS X, albeit -- Apple has really out-prestiged me with their hardware pricing model and the OS X "Hackintosh ist verboten" licensing policy -- similar, my impressions of Apple XCode, so far as I have read of.)  
  • Synaptics. Synaptics Gesture Suite™ Windows 8 for TouchPad™
    • Application: For laptop PCs, tablet PCs, and the HP "x2" hybrid laptop/tablet form factors
    • Reader comment: This page illustrates, in a few simple graphics, the gestures available on a Synatpics touchpad (as featured on an HP Pavilion laptop) and a touchscreen for Windows 8 PCs
    • There's also a control-panel applet for configuring the gestures, and enabling any non-default gestures (e.g edge-of-touchpad scroll) and disabling any gestures such one might not wish to use (e.g two-finger scroll, as sometimes might be mistaken by the touchpad interpreter as if it was meant to be a screen-zoom gesture instead) . That control panel applet is illustrated in an article at Eightforums: Touchpad Edge Swipes - Enable or Disable in Windows 8
  • Partha's Place -- home of literature and compiled MS Windows 64-bit editions of the GNU Image Manipulation Program (GIMP) and the Inkscape vector graphics platform, both being free/open source software components of some ostensible use to visual designers, alternate to a subscription to the Adobe Creative Suite in its "CS6" edition.
  • XMing - home of the XMing X Windows Server for Microsoft Windows Platforms, and Portable Putty
    • Portable Putty - Notes
      • an alternative distribution of the upstream Putty SSH client toolkit
      • provides some additional functionality, with regards to SSH session configuration, namely in not using only the MS Windows Registry for storing Putty session configs
      • observe that components of Putty are installed along with some third-party tools, such as TortoiseGit, which provides individual pageant and puttygen binaries. 
        • See also: Git for Windows with TortoiseGit and GitHub, 
          • observe, then, that the GitHub client for Windows also provides some functionality effectively duplicated by msyGit, the latter of which is used by Tortoisegit. 
          • In desktop environments in which the OS is installed via a normal software packaging system -- that providing a complete set of dependency management features -- such as the Debian Packaging System (Deb) or the Red Hat Package Manager (RPM), certainly the issue of dependency management for those operating systems would be easier for software distributors and host administrators to resolve, together, without such duplication of functionality. 
          • On Microsoft Windows platforms, there are "These, available." 
      • binaries available via the Xming project, for 32 bit and 64 bit MS Windows platforms for a modest, initial fee, in essentially a subscriber-based model
      • both of the upstream distribution of Putty and the XMing distribution of Portable Putty provide Pageant, as namely:
        • an SSH agent whose HCI elements are integrated with the Microsoft Windows System Tray
        • useful in OS user session context, for keeping one's user SSH keys active, as in sessions with GitHub  -- a distributed SCCM service with extensive web-based features, derived onto the Git distributed  SCCM system, and well supported on MS Windows platforms, cf Pro Git -- and Amazon Web Services (AWS) a scalable web service provider with a "Free tier", IDE integration (AWS plugins for the Eclipse IDE), and expansive documentation about AWS's broad, scalable array of web hosting services and features.
  • Luckasoft. Enginsite Data Freeway
    • Freeware graphical SFTP/WebDAV/FTP client for MS Windows desktops
    • Free web-based registration available - refer to web form, privacy policy
  • Ext2Fsd Project. Ext2Fsd
    • Driver for Ext revision 2 and later filesystems (cf. Linux kernel filesystem IO) implemented for Microsoft Windows Platforms
    • Windows 8 supported since edition 0.52
    • Might be beta, therefore might not be applicable in commercial server environments
    • Developers are advised to user each's own discretion, in selection of development toolbox elements
    • Ext2 "Write Support" optional, may be enabled at installation time
    • Brief summary of usage case: I have a Samsung Chromebook with a Crouton chroot installed on the Chromebook's internal MMC/SSD storage. The Crouton chroot contains an installation of the K Desktop Environment and a number of developer platform tools, including KiCAD and Fritzing, compiled for the Samsung Chromebook's ARM architecture and installed via an Ubuntu ARM ports repository. It's become a crowded chroot filesystem. I've been keeping my workspace files on a removable SD card, on that Chromebook. I'd formatted the SD card as Ext4 when I began this application of that SD card. I'm aware that an Ext3 or Ext4 partition can be "mounted" i.e "made available to the OS," as in either case an Ext2 filesystem though without filesystem journaling when either is mounted as Ext2. Presently, I need to get my workspace files copied from the SD card (Ext4 partition) to my new Laptop (NTFS partition). Of course, after that, I will have to reconfigure every Git repository on the SD card, for working around MS Windows's policies for text file EOL, filenames, and file modes. I'm not otherwise concerned about the loss in file mode information, across the file copy operation - any files that need to be "exec" have already been made "exec" in the current edition of  any Git repositories on that SD card. The Ext2Fsd driver should be sufficient as to allow the initial copy of files (using 'tar', via Cygwin) from the SD card to my laptop's internal hard disk drive, without rebooting to a rescue disk, for that task.
    • Issues Observed:
      • File-name lengths incompatible with NTFS
      • File-name encodings incompatible with NTFS -- for instance, file names created by "drag and drop" desktop links for HTTP URL references originally encoded by KDE 3's Dolphin file manager. 
    • Hosted by SourceForge.net
  • Netcup GmbH. QEMU Binaries for MS Windows Platforms
  • Adobe Acrobat Reader, as an alternative to the PDF reader that ships with Windows 8
  • Sysinternals Process Utilities
  • Advice: Resizing desktop icons in Windows 7, at Microsoft help online
Personally, I look forward to seeing how useful the touchscreen on the laptop could be, when used with National Instruments (NI) LabVIEW's front panel block displays for LabVIEW "G" programs. From the duration of a previous employment, a little more than a year ago, I have a nice soft-end touch-screen stylus, aside from my custom tablet PC bundle -- certainly, a stylus designed for a touchscreen architecture in some ways distinct to that used in the HP TouchSmart models -- but a soft stylus, such that would be useful in an application of the touchscreen HCI element of my HP Paviliion TouchSmart PC, without making finger-marks on the display screen of the PC.

HP Paviliion PCs are stocked by a number of "Big Box Stores," including office supply stores. One may endeavor to "Shop around" for an HP Pavilion with TouchSmart technology, and perhaps one might find a nice mix of PC features and affordability, on student budget or otherwise.

"Once on a blue moon," one might even find a substantial discount on a great quality PC. I purchased my new PC at an Office Depot -- I'd ordered it online, for pickup "in store," to avoid the hassles of the local "Geek squad," and save the delivery truck the short drive. Sure, it was a long drive, to me though -- a few hours alone, along a contemporary highway, in a peculiarly spirited "46th out of 50" state in the US. The irony of things, I would typically prefer to leave "Untold"

So, but I've found a nice quiet place well away from the clusterfark in the state-local metro areas, and have begun to study the PC I've purchased. Maybe it's nice enough, that last item, that one could write about it without so much as seeming as inviting any excess of politics.

Monday, June 2, 2014

Papilio and Xilinix FPGAs

I've recently begun to study FPGA programming, albeit through kind of an impractical program at DVUO. In a small, practical regards, the course focuses on Altera FPGAs and Altera's free and unsupported (?) Quartus II Web Edition as -- basically -- lab kit items for the course at DVUO. I constantly have to "Do some additional reading," to get anything out of the DVUO courses. Personally, I'm not studying up for "Signing off at the Blarney Stone."

In that additional reading, I have learned:

In addition to the Altera FPGA line, Xilinix also manufactures FPGAs, such as the Xilinix Spartan 3 and Spartan 6 FPGAs.

Spartan FPGAs are available in the "DIY" electronics market, on the Papilio -- alternately, ZPUino -- FPGA boards, such as the "Papilio pro".  The  software tooling for Papilio is more bear-bones than Quartus -- the former, extending on the Arduino programming toolkit.  The Papilio toolkit uses a bitfile format for direct programming of the FPGA. Papilio boards can be programmed with Papilio's ZAP IDE and the Xilinix ISE WebPack.

A Papilio board can be extended, in its hardware, with a "Wing" or "Megawing", such that essentially "plugs into" I/O headers on the Papilio circuit board.

Papilio is an open platform, and thoroughly supported for programming on Linux and on Microsoft Windows.

Ostensibly, Papilio, too, can be used to simulate a full multiplexer or demultiplexer, or alternately a single 74138 or 74148 circuit's logic profile, in today's world o' technology. We've studied the latter at DVUO -- something of some allegedly "common" integrated circuits, really difficult for this student, me, to find any applications for, or any sense of relevance about, in the regards to the industry, today. Perhaps it makes more sense in a broader circuit with clock synch, and as an artifact of an at least historic technical interest. So maybe I, too, can believe in magic beanstalks, after all -- if only those beans were just as good in an "unsmart" crock pot.

Works Consulted:
[1] http://www.xilinx.com/products/silicon-devices/fpga/spartan-6/
[2] http://papilio.cc/index.php?n=Papilio.ZPUinoIntroduction
[3] http://papilio.cc/index.php?n=Papilio.ArduinoCore
[4] https://github.com/GadgetFactory/Papilio-Loader/blob/master/xc3sprog/trunk/bitfile.h
[5] http://papilio.cc/index.php?n=Papilio.Hardware
[6] http://gadgetfactory.net/learn/2013/10/29/papilio-schematic-library-getting-started/
[7] http://gadgetfactory.net/learn/2013/10/23/install-xilinxs-free-ise-webpack/
[8] http://www.xilinx.com/products/design-tools/ise-design-suite/index.htm
[9] http://www.xilinx.com/products/design-tools/ise-design-suite/ise-webpack.htm