周年のプロジェクト

2013 + 10 = 2023

2013 + 50 = 2063

2013 + 100 = 2113

記載

二枚の添付垂直象徴がある水平作。和紙の大判スクリーン印刷。

それぞれの作は少なくとも一つの独特の記念印があります。この記念印は一周年、二周年、十周年、50周年、百周年のが選ばれます。あるのは多い印があって、例えば50周年の印と百周年の。10、50、100の交われた周年。十周年等の入道雲。二周年印の壊れた格子。

理論的には、これは七五三の根柢にある数霊術と似合っていますが、大人とより広い複数年や世代の為です。ですので、あるバージョンは100−10−2で、もう一つのは100−50−10です。

ジョン・ケージの誕生百周年記念。好み道場の創立50周年記念。結婚十年記念。東日本大震災と津波の二周年。シリア騒乱の二周年。子供の一歳の誕生日。

2_cali_contrails_installed

カリフォルニアの青い地平線印刷、2013年

二 枚の側面にある狭い二部作。二枚の短冊が中心で交われて一枚の狭い垂直ひもになって、二面の壁があう所に掛かっています。お好みならば、両方の隅で合う平 面が合流点で少し異なる印がありえます。一枚の短冊の広さは90ミリ、 長さは965.2ミリですので、全表面積は90ミリx1930.4ミリです。リサイズした表面のがんぴで手動供給型のインクジェットです。

含めたコンポジションの要素:

  • 10、50、100周年の印
  • 月の絵
  • 夕焼けのかけら
  • フェード

カリフォルニアの飛行機雲、2013年

広 い二部作。四枚の不規則な大きさの短冊が中心で交われて一つの広い水平面の切り取りが見えるひもになります。一枚の短冊の広さは431.8ミリ、長さは 965.2ミリですので、全表面積は863.6ミリx970ミリです。リサイズした表面のがんぴで手動供給型のインクジェットです。

含めたコンポジションの要素:

  • 10周年の印、雲クラスター
  • 2周年の印、明るい格子
  • サンフランシスコからロスまでの飛行機雲
  • サメのひれの帆
  • フェード
  • 結び目の飛行機雲
  • 回帰シミュレーション等

1_a_future_technique_installed

カリフォルニアの青い月の印、2013年

狭 い二部作。二枚の短冊が中心で交われて一枚の狭い垂直ひもになって、二面の壁があう所に掛かっています。お好みならば、両方の隅で合う平面が合流点で少し 異なる印がありえます。一枚の短冊の広さは90ミリ、 長さは965.2ミリですので、全表面積は90ミリx1930.4ミリです。リサイズした表面のがんぴで手動供給型のインクジェットです。

含めたコンポジションの要素:

  • 100周年の印
  • 月の絵
  • 100対1のフクロウ
  • フェード

未来の技術、2013年

広 い三部作。三枚の長い短冊がへりで交われて、一枚の水平面のひもになります。その三枚の中に一枚は部分が切り取られました。一枚の短冊の広さは431.8 ミリ、長さは965.2ミリですので、全表面積は1295.4ミリx970ミリです。リサイズした表面のがんぴで手動供給型のインクジェットです。

含めたコンポジションの要素:

  • 1、2、10、50、100周年の印
  • 100対1の要素
  • 100対1のフクロウ
  • 月の絵
  • カリフォルニアの夕焼けのかけら
  • フェード
  • 太陽の閃光

上に示すように

第3回NBCメッシュテックシルクスクリーン国際版画ビエンナーレ展

受賞者展

宮寺雷太、曽我彩華、わべ まい, ベンジャミン ・デ・ コズニク

Galleryうぇすと

東京都中央区銀座1丁目3番地3号 銀座西ビルヂング

開催資料

会期:4月22日(月)~27日(土)

製造ノート

紙は高知の和紙です。KM-04 Surface Gampi Naturalはカリフォルニア州サンタモニカ市のHiromi Paper International会社から調達しました。

カリフォルニア州サンフランシスコ市Capp通りのDevastation Pacificビルで印刷されました。

English language version of this page: The Anniversary Project.

Getty Taxonomy Typing

Useful links into the Getty Research Institute Art and Architecture Thesaurus.

A allover patterns, appraising, ambiguity, antiquities (object genre), arabic numerals, archipelago, anti-art, architectural follies, archives (groupings), artifacts (digital), artifacts (scientific), artificial light, artificial ruins, artists’ books, artists’ collectives, astronomical charts

B brilliant orange, brush stroke,

C cancellation marks, cast shadows, chops, color-field, complexity, collages, complexity (too much), combines, conceptual art, crop marks, criticism, cultural artifacts, cyanotype

D dark archives, derelict buildings, diamond (mineral), diplomacy, distressed type, distressed silvering, drip painting, documentation (activity)

E energy consumption, enso, error, error (post script), error (clipping), error (compression artifact),  error (resolution), electrostatic, exposed frame construction,

F fake, fade, fibonacci numbers, fineness (thinness), flattery, flow, foliation (pattern), found objects, fraud, free form

G gauging plaster, generative art, geometric patterns, gilding (technique), glare, golden hour, golden ratio, guilloche

H hairline, haze, hybridity, hypotrochoid

I ieee-802.11, imperfection, ink washes, intaglio printing, inkjet, intensity (color property), image/text, institutional critique

J jadeite, journeys

K king tide

L laser prints, lapis lazuli (color range), layering, legal instruments, LEDs, light art, line copy, longest night, lost works

M marginalia (annotations), mass production, metallic (color attribute), mistake, maintenance art

N notan, nostalgia

O optical illusion, observatories, opacity,

performance on paper, philippines, photogravure, photographic techniques (alternatives), photocollage, piracies (forgeries), public art, production, production scars

Q

R ray, ripple, radiate, raster graphics, repetition, ruins

S screen printing, sculpture techniques, silent film, silver, swarm, software, social media, sunglint, sumi, sunlight through the day

T tarnish, tidal wave, time, typography, tesselation

U unfinished

V vector graphics, visualization

W

X xerography

Y

Z

LSB C++ Notes

Install

Base hardware/software config: F18 adair + x86_64.

Test harness for the Linux Standard Base. Bugzilla for the project. The C++ library parts of this are using component “lsb-test-libstdcpp” in bugzilla. The components “Cpp-T2C” and “libstdcpp” are also relevant, these are generated test files and any reference to libstdc++.so, respectively.

A couple of different projects and configurations. For testing the C++ runtime on GNU linux systems (aka libstdc++), want LSB Distribution Testkit. This requires the packages redhat-lsb, redhat-lsb-core, and ctags be installed.

basics:

%mkdir $src/lsb

%cd $src/lsb

%tar xvfz lsb-dist-testkit-manager-4.1.7-1.x86_64.tar.gz
./
./lsb-dist-testkit-manager/
./lsb-dist-testkit-manager/inst-config
./lsb-dist-testkit-manager/install.sh
./lsb-dist-testkit-manager/post-install.sh
./lsb-dist-testkit-manager/lsb-dist-checker-4.1.0.11-1.x86_64.rpm
./lsb-dist-testkit-manager/lsb-setup-4.1.0-1.noarch.rpm

Then, install it:

%./install.sh

A bunch of install spewage omitted. The relevant details:

LSB Distribution Checker

  • Project homepage.
  • installed in: /opt/lsb/test/manager
  • to start: /opt/lsb/test/manager/bin/dist-checker-start.pl

Run Distribution Checker

Now, start up the web-ui:

%/opt/lsb/test/manager/bin/dist-checker-start.pl
The port '8888' will be used by the Distribution Checker's web-UI server.
If you want to change this, run /opt/lsb/test/manager/bin/dist-checker-start.pl <port>

Server started. Log file location:
/var/opt/lsb/test/manager/log/dc-server.log.8888

The start page should be opened in a browser shortly.
If it doesn't open, you can load it at http://localhost:8888/

Got to firefox, open:

http://localhost:8888/

Select Custom Tests Mode. Hit the red “Refresh List” button.  Then, click box by “Libstdc++ Tests” in the “Runtime Interface Tests” category. Scroll to the bottom, hit the green “Run Selected Test” button.

This will chug a bit, and then you’ll get a webpage saying: Success and Passed. It s1`

f18-lsb-original-results

Now, what goes on here? What compiler and library are being tested?

The magic is here:

/opt/lsb/test/libstdcpp_4.1.0/run_tests

Notes

Test files for the Distribution Check/libstdc++ are based on GCC-4.1.x release. For the 4.1.2 release, libstdc++/testsuite ran 2131 testcases in native mode. The LSB testsuite has 1978 testcases, and 1786 are run. Jump ahead six years, the 4.8.0 release has 5367 testscases.

Red Hat Use

See the main LSB at Red Hat page on the wiki. It’s got a lot of great info about current test results.

ABI Notes, commentary

Looking at past releases, zoom in on a couple in particular:

  • gcc-4.2.1, fixed in gcc-4.2.2, GCC PR 33678.  Problem was re-ordering of vtables in libsupc++/typeinfo. In std::typeinfo, the virtual member functions must be ordered as: __is_pointer_p, __is_function_p, __do_catch, __do_upcast. Found via LSB vtable change detector.
  • gcc-4.4.x and above support for exception propagation, GCC PR 40296.Look at __cxa_get_exeption_ptr backports. For std::exception_ptr, std::current_exception, __cxa_get_exception_ptr, backports of this functionality are required if the base system is to deal with C++11 calls. So, back-port exception handling changes to RHEL 5 systems (RHEL 6 support this as based on 4.4.).
  • gcc-4.7.x, including pre-release.
    • For std::list, there is an added data member, _M_size.  Reverted, fixed in 4.7.2. This is problematic when std::list is part of a function signature.
    • For std::pair, an addressable change in C++11 but not C++98, due to the addition of a non-trivial move constructor. Fixed in 4.7.2. That meant in C++98, std::pair was passed in register. In C++11, it was not. Note that this is unrelated to the known C++98/C++11 incompatibility with std::make_pair found by James Dennett (See Appendix D, signature change to explicitly specifying make_pair<template_arguments> will break in C++11, replace with std::pair<tempate_arguments> or just let the compiler deduct). Some commentary from Andreas Jaeger’s blog post about it, the openSUSE bug 767666, GCC changes reference to it.
    • For std::unordered_map, and the rest of the C++11 unordered associated containers,  the situation is a bit different as this is a C++11 only component. Internal changes change data model. Deemed incompatible, but only for C++11, so allowed per C++11 ABI policy.
    • For std::condition_variable_any, added data member _M_mutex from this change. Deemed incompatible, but only for C++11, so allowed per C++11 ABI policy.
    • For std::num_get, vtable change from this change. Fixed via this change, pre-release of 4.7.0. Found via DTS-1.0 testing, running hybrid libstdc++.dts.so with base system running gcc-4.4 libstdc++.so.
    • For std::complex, there are signature changes in member functions, GCC PR 53429. This is a C++98/C++11 compatibility question involving vague linkage and template in-lining. Unresolved.

Also of note is the LSB tracker bug for C++11 support.

General C++11 ABI policy, as per GCC wiki

Some links to cool tools:

pkgdiff, like rpmdiff but open.

ACC, ABI Compliance Checker, lsb.

Combining all this, look at a compatibility report for boost.

The Anniversary Project

2013 + 10 = 2023

2013 + 50 = 2063

2013 + 100 = 2113

Description:

Two horizontal pieces, each with accompanying vertical ensigns. Large format screenprints on Japanese paper.

Each piece contains at least one unique mark indicating an anniversary year. There are one, two, ten, fifty, or hundred year anniversary year marks to choose from. Some of the pieces contain multiple marks: a joint hundred-and-fifty year anniversary. A combined ten-, fifty-, and hundred-year anniversary. A massed cloud of ten-year anniversaries. A broken grid of two year marks.

In theory, this is similar to the numerology behind the Japanese festival Shichi-Go-San (7-5-3), but for older people and spanning much wider spans of years, including multiple generations. So, one version is 100-10-2.  Another version is 100-50-10.

The hundred-year anniversary of John Cage’s birth. The fifty-year anniversary of the favorite dojo opening. A ten-year wedding anniversary. Two-year anniversary of Tohoku tsunami, the two-year anniversary of the Syrian uprising. A child’s first birthday.

2_cali_contrails_installed

Cali Blue Horizon Ensigns, 2013

Two narrow diptychs, flanking. Two strips of paper, joined in the middle to form one narrow vertical band and hung where two walls meet. If desired, both planes that meet at the corner can each have a slightly different ensign at the meeting point. Size is 90mm x 965.2mm for each strip, so a total surface area of 90mm x 1930.4mm. Hand-fed inkjet on re-sized surface gampi.

Composition elements include:

  • 010, 050, 100 anniversary elements
  • moon painting
  • sunset fragments
  • fades

Cali Contrails, 2013

Wide diptych. Four irregularly-sized sheets of paper, joined in the middle to form one wide horizontal band with visible cuts. Size is 431.8mm x 965.2mm for each sheet, so a total surface area of 863.6mm x 970mm. Hand-fed inkjet on re-sized surface gampi.

Composition elements include:

  • 010 anniversary element, cloud clusters
  • 002 anniversary element, radiant grid
  • San Francisco to Los Angeles contrails
  • sharkfin sails
  • fades
  • knot line contrails
  • type regression simulations

1_a_future_technique_installed

Cali Blue Moon Ensign, 2013

Narrow diptych. Two strips of paper, joined in the middle to form one narrow vertical band and hung where two walls meet. If desired, both planes that meet at the corner can each have a slightly different ensign at the meeting point. Size is 90mm x 965.2mm for each strip, so a total surface area of 90mm x 1930.4mm. Hand-fed inkjet on re-sized surface gampi.

Composition elements include:

  • 100 anniversary elements
  • moon painting
  • 100-to-1 owls
  • fades

A Future Technique, 2013

Wide triptych. Three long sheets of paper, one with a section cut out, joined at the edges to form one wide horizontal band. Size is 431.8mm x 965.2mm for each sheet, so a total surface area of 1295.4mm x 970mm. Hand-fed inkjet on re-sized surface gampi.

Composition elements include:

  • 001, 002, 010, 050, 100 anniversary elements
  • 100 to 1 element
  • 100 to 1 owls
  • moon painting
  • cali sunset fragments
  • fades
  • sunglint

As shown:

Awards Winners Exhibition
The 3rd NBC MESHTEC TOKYO INTERNATIONAL SCREEN PRINT BIENNIAL
Miyadera Raita, Soga Sayaka, Wabe Mai, Benjamin De Kosnik
April 22-27, 2013
Gallery West, Ginza 1-3-3, Chuo-ku,Tokyo, Japan.

Production Notes:

Paper is from Kochi, Japan. “KM-04 Surface Gampi Natural” sourced via Hiromi Paper International in Santa Monica, CA.

Printed at Devastation Pacific, Capp Street, San Francisco, CA.

Japanese language version of this page: 周年のプロジェクト.

Doxygen vs. generated graphviz class hierarchy visualizations

Here is a breakdown of the generation steps doxygen uses to visualize class hierarchy. Requisite software includes doxygen-1.8.3 on C++/C++11 files, compilation and development environment is Fedora 18/x86_64 using GNU C++ version 4.8.

Doxygen Overview

Some Doxygen basics, and internals. The Fedora package is doxygen-1.8.3-3.fc18.x86_64, the command line invocation is: doxygen, which is a C++ binary.

To make the doxygen binary debuggable, check out doxygen in subversion and configure the build with --debug. (On Fedora, some other dependencies are required, like qt-devel. An alias between what the Makefiles expect, ie code and the installed qmake-qt4 needs to be defined).

For this investigation, the subject of most interest is the language parser for C++, breaking in parseInput(). The doxygen parse phase lowdown:

The task of the parser is to convert the input buffer into a tree of entries (basically an abstract syntax tree). An entry is defined in src/entry.h and is a blob of loosely structured information. The most important field is section which specifies the kind of information contained in the entry.

The other area of interest is the output generator for graphviz sources and then generated diagrams. So, breaking in function generateOutput() (see src/doxygen.cpp), step until

  if (Config_getBool("HAVE_DOT"))
  {
    DotManager::instance()->run();
  }

This is the part that generates the graphviz source files and then uses dot to create output from the previously-parsed C++ source data. Breaking in function DotManager::run() (see src/dot.cpp) allows stepping through individual graph creation.

XXX file name, class name mapping.

Graphviz Overview

Some graphviz basics, DOT language reference and users guides, wiki. Of particular interest are the “Node, Edge, and Graph Attributes.”

Usual command-line invocation looks like:

dot -v -Tsvg:cairo -o myfile.svg myfile.gv

And then fonts are in ~/.fonts or /usr/share/fonts, and can be controlled via the following attributes:

fontpath="/usr/share/fonts/dejavu"
fontname="DejaVuSansMono"

These should map to installed fonts, ie

%fc-match "DejaVuSansMono"
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"

Doxygen Settings

Parts of the doxygen configuration file that matter, the config settings used, and any commentary.

HAVE_DOT=YES

CLASS_GRAPH=YES

UML_LOOK=NO

COLLABORATION_GRAPH=NO (Interesting on a per-class basis only. For larger projects the noise becomes overwhelming.)

CALL_GRAPH=NO (Same.)

CALLER_GRAPH=NO (Same.)

INCLUDE_GRAPH=NO (Same.)

INCLUDED_BY_GRAPH=NO (Same.)

TEMPLATE_RELATIONS=NO (Relations between primary templates and template instances is very cluttered, noise value high. Template relationships and class hierarchy relations in non-UML mode are displayed on the same diagram, but use a different visual grammar. Classes inherit base to derived. Throw templates in and they read "as if" from base to primary template to specific instance. This should instead be base to specific instance.)

DOT_GRAPH_MAX_NODES=50

MAX_DOT_GRAPH_DEPTH=0

DOT_IMAGE_FORMAT=SVG (Resolution-independant text, editable, lossless)

INTERACTIVE_SVG=YES (Focus control for big diagrams)

With these settings, a PDF file of the GNU C++11 API runs over three thousand five hundred pages.

Doxygen XML attribute for Graphviz

Legend for doxygen-generated graphviz diagrams.

2) what attributes are needed in XML to represent this?
3) what are the added attributes/markup needed to get longstanding bugs fixed? Or are these solely parse errors?

Generated Diagram Quality

Sample set is GCC-4.8.0 C++ docset, based on a generated output on 2013-03-10.

Representative diagrams for more traditionally-styled C++ code, in the form of OO-style class hierarchies, are found based off of the std::exception and std::ios_base root elements.

  1. std::exception, just the class hierarchy diagram, and the Exceptions Module
  2. std::ios_base, just the class hierarchy diagram, and the IO Module

Starting with the exception diagram, because the lack of templates in this hierarchy is a useful simplifying factor. This diagram is accurate. Layout issues include: names overflowing the bounding boxes (__gnu_pbds::intsert_error) and line break issues (same, but others like __gnu_cxx::recursive_init_error). Many of the line connectors and paths to endpoints are infuriatingly erratic. These issues are largely look to be the kind of thing that could be tweaked via various dot settings, or related graphviz tool settings (like neato).

Next diagram: io. This hierarchy diagram is largely accurate, but with distracting elements,  and extraneous information. This is a multi-level class hierarchy with both base classes and base class templates. Starting from the left, reading to the right. The least-derived base is ios_base. A class template for basic_ios derives from it, taking two parameters. In this diagram, two templates derive from ios_base: the primary class template for basic_ios, and a fully-specialized class template for basic_ios instantiated with the integer type char. A couple of things to note, one level in to the diagram:

  • restricting to just primary templates would be useful, ie this diagram without any specializations. Indeed, this is what the diagrams evolve into once level two and above diagrams are cleaved off, ie starting from basic_istream (instead of ios_base) and going to basic_streamstream.
  • there are actually two specializations for this hierarchy, both char and wchar_t. Where’s wchar_t?
  • there are actually typedefs like ios and wios for the char and wchar_t instantiations of the basic_ios class template.
  • basic_ostream char specialization is duplicated, once for basic_ostream<char>, and one for basic_ostream<char, char_traits, char>. Neither of these instances actually exists. There’s a similar phantom template instance for basic_iostream.

Let’s stop here with this diagram. The rest of the hierarchy has similar issues.

Next, let’s examine some template-heavy components and idioms, like policy based design.
Components that use this idiom are found in the class hierarchies for std::allocator, std::unordered_map (and the other unordered_containers), __gnu_cxx::vstring, and the policy-based data structures extensions for which __gnu_pbds::trie.

  1. std::allocator
  2. __gnu_cxx::__versa_string
  3. __gnu_pbds::trie

For the first class, std::allocator, the generated diagram is accurate. Ideally, there would be a visual marker for the allocator void specialization, and note about the grouping of the superset of extension allocators as the base class for std::allocator.

The two extension classes share common issues, and none of have accurately-generated class hierarchies. Both make use of multiple base classes and policy-based design.

Finally, a pass at some C++11 features. Of note are things like variadic templates (invented for std::tuple and then used elsewhere) and template aliases (used in may parts of the library with policy-based designs, like std::allocator and std::unordered_map.)

  1. std::tuple
  2. std::unordered_map

Just making a quick pass here. From the tuple diagram, ponder the implied template relations. This is hard, since making sense of this with a visual grammar would require better grouping between primary template, partial specializations, and full specializations.

And for unordered_map, apparently the complexity of the derivation, plus the templates, plus the use of C++11 features like alias templates aborts the graph. No hierarchy is not an accurate hierarchy.

Doxygen use is not considered harmful, even with these flaws it is an invaluably useful tool. Reasonable people may differ, of course.

Sources (C++11, graphviz)

For a given set of sources:

struct base
{
  enum mode : short { in, out, top, bottom };
  typedef long value_type;
};

struct A : public base
{
  int _M_i;
  int _M_n;
};

struct B : public base
{
  value_type _M_v;

  constexpr B(value_type __v = 6) : _M_v(__v) { };
};

struct C : public B
{
  constexpr value_type
  square() { return _M_v * _M_v; }
};

struct D : public A
{
  D(const D& __d) : A() { };

  ~D() { }
};

Next, use doxygen to generate HTML, with HAVE_DOT set to YES and DOT_CLEANUP set to NO in the doxygen configuration file. With this configuration tweak, when doxygen is used to generate HTML, the doxygen-generated graphviz sources used to create the class diagrams are not destroyed. On examination, they produce the following graphic:

structbase__inherit__graph

And then, look at the generated graphviz for the base class, the root of the diagram:

digraph "base"
{
  // edge and node defaults
  edge [fontname="FreeSans",fontsize="9",labelfontname="FreeSans",labelfontsize="9"];
  node [fontname="FreeSans",fontsize="9",shape=record];

  // actual graph
  Node1 [label="base",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
  Node1 -> Node2 [dir="back",color="midnightblue",fontsize="9",style="solid",fontname="FreeSans"];
  Node2 [label="A",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$struct_a.html"];
  Node2 -> Node3 [dir="back",color="midnightblue",fontsize="9",style="solid",fontname="FreeSans"];
  Node3 [label="D",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$struct_d.html"];
  Node1 -> Node4 [dir="back",color="midnightblue",fontsize="9",style="solid",fontname="FreeSans"];
  Node4 [label="B",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$struct_b.html"];
  Node4 -> Node5 [dir="back",color="midnightblue",fontsize="9",style="solid",fontname="FreeSans"];
  Node5 [label="C",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$struct_c.html"];
}

 

openFrameworks Notes

Setup

Base is ulloa config, Fedora 18 on x86_64. Secondary is Fedora 17 on x86_64. Note, you’ll need to have a video card and driver suitable for running OpenGL. Intel graphics are easy, Nvidia can be done but will need to use proprietary drivers, and not the default nouveau driver.

Follow notes from openframeworks site for linux/64 install, starting with going into the Fedora scripts directory:

cd /home/bkoz/src/openframeworks.v0073_linux64/scripts/linux/fedora

And then:

sudo ./install_codeblocks.sh

sudo ./install_codecs.sh

These should install some packages, if the codeblocks IDE and some of the development packages for audio or video codecs aren’t already installed. Then, do this script, which may start compiling things:

sudo ./install_dependencies.sh

Some editing/slight work-arounds for cairo includes, means using CXXFLAGS=”-I/usr/include/cairo” or doing the following small patch:

*** libs/openFrameworks/graphics/ofCairoRenderer.h.orig 2012-12-28 15:48:06.649358899 -0800
--- libs/openFrameworks/graphics/ofCairoRenderer.h      2012-12-28 15:48:59.502292659 -0800
***************
*** 1,10 ****
#pragma once

! #include "cairo-features.h"
! #include "cairo-pdf.h"
! #include "cairo-svg.h"
! #include "cairo.h"
#include <deque>
#include <stack>
#include "ofMatrix4x4.h"
--- 1,10 ----
#pragma once

! #include "cairo/cairo-features.h"
! #include "cairo/cairo-pdf.h"
! #include "cairo/cairo-svg.h"
! #include "cairo/cairo.h"
#include <deque>
#include <stack>
#include "ofMatrix4x4.h"

After applying the patch, the dependency-making script above should complete without error. It will probably end with something that looks like:


to launch the application

cd bin
./projectGeneratorSimple

Instead, go up a level and run the

buildAllExamples.sh

script, and then then

testAllExamples.sh

script.

If everything has gone correctly, then the last script(testAllExamples.sh) will throw up window after window of delicious OF candy, fun to watch. To go on to the next example, close the topmost window.

If you get to this point, then the preliminary setup should be correct.

linux tcp examples failing, start tcp server? kill firewall? punch holes for openframeworks ports?


Examine Examples

Open up the example project files within the Codeblocks IDE.


Start hacking

Put all projects into the compiled openframeworks directory, in the “apps” subdirectory.


See

1. Generative Design website, code page table of contents.

2. openprocessing website, community site.

3. openFrameworks website.

4. creativeapplications.net

5. Golan Levin is an openframeworks user

6. memo’s libs (MSA libs) on github. Download, then copy into your addons directory.

7. toxiclibs, another good lib

8. podcast on creative coding

9. cinder, which is another, alternative framework not based on processing.

Fedora 18 Notes

Install:

San Francisco, California USA

1. F18 netinst on KVM

2. F18 iso install on Mac Book Air mid-2011. (MacBookAir4,2)

Create usb live image:

livecd-iso-to-disk --efi --format --extra-kernel-args selinux=0 /mnt/auteuil/software/fedora/17/Fedora-17-x86_64-DVD/Fedora-17-x86_64-DVD.iso  /dev/sde

Update/Post-Install:

yum update -y

then

yum install -y system-config-boot system-config-nfs system-config-printer system-config-samba system-config-firewall

look at powertop

from lesswatts.org, known power problems

remove default groupthink in home directory

rm -rf Downloads Documents Music Pictures Public Templates Videos

install various text and graphic editing items

yum install -y emacs abiword inkscape* python-BeautifulSoup ufraw ufraw-gimp

install various printing items

yum groupinstall ‘Printing Support’

yum install -y gutenprint-cups gutenprint-foomatic gutenprint-extras freetype-freeworld
yum install -y foo2qpdl

Next, RPM Fusion

su -c 'yum localinstall --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm'

and then

yum install -y vlc vlc-extras vlc-plugin-jack k3b-extras-freeworld

install video/audio codecs

yum install -y gstreamer-plugins-bad gstreamer-plugins-ugly gstreamer-plugins-good gstreamer-plugins-good-extras gstreamer-plugins-bad-free gstreamer-plugins-bad-free-extras gstreamer-plugins-bad-nonfree gstreamer-ffmpeg

install some compiler stuff, developer tooling.

yum groupinstall “Development Tools”

yum install -y gcc-c++ libstdc++-devel libstdc++-docs boost boost-devel boost-doc valgrind gdb elfutils nemiver

yum install -y dejagnu emacs expect flex bison cmake git-svn mpfr-devel libmpc-devel
debuginfo-install glibc

Install technical writing and visualization

yum install -y doxygen doxygen-latex graphviz 
yum install -y docbook5-style-xsl docbook5-schemas docbook2X docbook-style-xsl
yum install -y dblatex
yum install -y texinfo-tex dblatex docbook-utils-pdf 
yum install -y graphviz-python graphviz-R graphviz-graphs graphviz-doc R-core

install google chrome

install flash. The Fedora flash page is excellent.

install bits for google video chat

Next round of installs is for kerberos/ssh/openvpn. Edit /etc/krb5.conf. Configure /etc/openvpn.

First install miscellaneous utilities, including tcsh

yum install -y unrar tcsh gnome-tweak-tool livecd-tools

Install another music player. Nightingale is the replacement for Songbird.

For virtualization:

yum install @virtualization

Handbrake must be built. Get the last Fedora 64 rpm from the old nightly build. See this page for dependencies. Keep in mind that separate source/build directories don’t seem to work ATM, so hold your nose and build in source, or a copy of source. Also, add -ldl to LDFLAGS.

To deal with DVD, libdvdcss. MakeMKV must be built for Blu Ray.

Install Dropbox.

Install fedora package development packages.

yum install -y fedora-packager

Dependencies for fedora packaging:

yum install -y python3-devel libicu-devel chrpath openmpi-devel mpich2-devel policycoreutils-devel

Install other window managers

yum install @mate-desktop @cinnamon-desktop @kde-desktop


Current issues:

0) base note about Fedora 17 and Apple hardware

1) bluetooth keyboard vs. encrypted home directory, now bug RH863883. At startup, mount of encrypted partition happens before bluetooth keyboard is active. This makes entering the password for the encrypted device impossible.
See one kind of related bugzilla about USB devices: 823815

See bluetooth on fedora.

See this page about linux and keyboards without wires. And this about getting bluetooth keyboards up and working on Ubuntu

For Apple Wireless Keyboard on mac air, need:

yum install -y bluez-hid2hci

2) Wireless on air: use kmod-wl stuff from RPM Fusion for Broadcom chipsets.

 yum install -y kmod-wl

3) Epson 3880. Use the LSB openprinting-gutenprint package for the PPDs. This is currently broken on fedoras older than 14.

4) systemd.
systemd is now king of the mountain for RHEL/Fedora system control. Learn it, love it, use it.

http://fedoraproject.org/wiki/Systemd

http://0pointer.de/blog/projects/systemd-docs.html

systemadm: gui-admin, replacement for system-config-services

systemctl: command line, lists what is running

5) grub files for EFI installs

The move to grubby and grub2 means the usual grub.conf file has moved around. Now located at:

/boot/efi/EFI/redhat/grub.conf

Also, issues with EFI booting, use the UEFI boot manager. This the “efibootmgr” command. Use “efibootmgr -c” to reinsert an entry.

6) ARM

Some notes about Fedora on ARM, and specifically chromebooks.
Man oh man, do we wish that the Nexus 10 was working as well as the Chromebook for installs. Up-and-coming! Check out the Fedora F18 distro notes for chromebook/ A15.
Also Will Cohen’s install + kernel probe notes.

7) xbmc, using it on Android devices and should scope it on the linux desktop as well.

8) set hostname to erie via:

hostnamectl set-hostname erie

9) dual monitor setup. See this general page for F18 Nvidia install steps.

Lots of issues with dual head. For two nvidia cards, GeForce210, the following kernel args are useful:

nouveau.modeset=0 rd.driver.blacklist=nouveau

Useful kernel debugging line:

enforcing=0 1

ie, selinux off and boot to root shell without X. Can also be made permanent via editing of /etc/selinux/config. From there,

service network restart

and

emacs /etc/X11/xorg.conf
or
init 3
or
yum history
yum history info 231

Lots of issues with GNOME, glx and GL. In X, xinerama and randr extensions are incompatible.

Necessary: an understanding of the xrandr extension for X. Useful:

xrandr

Tells the screens and inputs for X.

xrandr -o left

Rotates the screen 90 degrees CCW.

xrandr --output DVI-I-1 --primary

Sets the selected output (DVI-I-1) to primary display device. MATE and GNOME seem to be wildly confused about what is the primary monitor. For some versions of Fedora/GNOME/MATE, the file ~/.config/monitors.xml can be hand-edited to provide that info. On current F18, this file is no longer, and the xrandr approach to setting a primary monitor must be used instead. Of course, at the boot/BIOS level, the primary output display seems to be the card in the lowest-numbered PCI slot.

Be prepared to layout the GNOME/MATE menu bars by hand on each restart. GACK.

10) firefox vs. en_US spellchecking. Open firefox, go to about:config and alter the
preference named “spellchecker.dictionary” to the value of “en_US”. Restart firefox.

Previous install: Fedora 17

Follow

Get every new post delivered to your Inbox.