About
Fletcher builds objects and systems that investigate the social, historical, and environmental implications of data and computation. His work has been featured in Fast Company, Hacker News, Forbes, Make, Parabolic Arc, and Vice’s Motherboard.
Fletcher builds objects and systems that investigate the social, historical, and environmental implications of data and computation. His work has been featured in Fast Company, Hacker News, Forbes, Make, Parabolic Arc, and Vice’s Motherboard.
MPS - 2015
BA - 2009
January 2015 - Present
Designing and building sensor systems for collecting, storing, and visualizing data for NASA contract space suits.
January 2015 - November 2016
Two long-term contracts producing wireframes and designs for internal and external products with a focus on communicating AI, Machine Learning, and Data science concepts to the general public.
May 2016
Worked with undergraduate students in the Interactive Media Arts program (IMA), teaching physical computing and aerial robotics.
Summer 2015
Served as facilitator and adviser for museum professionals from MoMA, The Metropolitan Museum, Radio Lab, and more.
Spring Semester 2014
Co-taught Spring 2014 semester of Flying Robotic Journalism at ITP. Conducted pilot training sessions, lectured, and modified and maintained drones and associated equipment.
Summers 2015, 2016
Led workshops and help sessions for participants.
2013 - 2014
Idea generation and product development for a variety of NYC-based companies in the Technology and Healthcare fields.
2010 - 2013
Conducted grand-funded agricultural research projects in association with the USDA, Cornell University, the University of Vermont, and the Northeast Hops Alliance.


Enter the Original Date of Your Loan:
Enter the Amount the Original Loan was for:
Check Loan
YOU OWE


{% extends "base.html" %} {% block title %}
{% if fp_cookie_id %} Our first party cookie is tracking you as is expected. You are being tracked via ID: {{ fp_cookie_id }} {% else %} We are attempting to track you, but we are a first party website so this is expected. {% endif %}
| Recently link clicked websites: |
|---|
| {{ entry.site }} |


--- layout: default title: About ---
I am currently around 59°24'22.4"N 18°19'25.3"E. You can reach me at {{ site.author.email }}.
Currently I work at @proxy.
I am also a Technical startup advisor with a passion for doing the right thing.
Currently Advising
Advising in the past
I bought hussfelt.net for my personal interest in my surename somewhere back in the early 2000. First instance of a website was in the early 2002 - a snapshot from 2003 can be found at the wayback machine. During 2004 I lost the domain in a snapback to some guy in Kenya. I still wonder if he really thought he'd get some money for it! :-) Got the domain back a few years later, and hosted a site in the end of 2008. Ran the blogging-platform syte for a while. Now ended up with Jekyll, hosted on Github!
Some fun facts about the site include:
For comments or questions, feel free to ask me on Twitter or shoot me an email at henrik at henrik dot se.


This page is under development. Please see the home page or the view texts page for live content.
The image in the Digital South English Legendarylogo is Saint Mary of Egypt carrying loaves into the desert from Oxford University, Bodleian Library, Tanner 17, fol. 085r.


23 December 1998
Disease Outbreak Reported
Unconfirmed intense outbreaks of influenza in the northern part of the country have been reported. Viruses are currently being investigated by the WHO collaborating centre in Atlanta, Georgia and followed up together with the Chinese health authorities. It is important to note that not all acute respiratory illnesses, even in city-wide influenza outbreaks, are necessarily caused by influenza. It is likely that other viruses like respiratory syncitial viruses and parainfluenza viruses may also be circulating and causing influenza-like illnesses in the population.


Borders
There is a base border module that can be extended with the border-width, border-color, border-style modules. By default you don't need to set a border color. It will just inherit whatever the text color is for that dom node. You can target any side to put a border on ie. top, right, bottom, left.


Distributed .NET Newsletter
Here. From Ingo Rammer: Starting with February 2003, I will publish a free, bi-weekly newsletter on distributed programming with .NET which covers architecture, design and development guides and tips as well as links to other free material I consider as "must reads".


Merge.base Async
Merge.base(repo, one, two).then(function(oid) {
// Use oid
});
| Parameters |
Type |
|
| repo |
Repository |
the repository where the commits exist |
| one |
Oid |
one of the commits |
| two |
Oid |
the other commit |
| Returns |
|
| Oid |
the OID of a merge base between 'one' and 'two' |
Merge.bases Async
Merge.bases(repo, one, two).then(function(oidarray) {
// Use oidarray
});
| Parameters |
Type |
|
| repo |
Repository |
the repository where the commits exist |
| one |
Oid |
one of the commits |
| two |
Oid |
the other commit |
| Returns |
|
| Oidarray |
array in which to store the resulting ids |
Merge.commits Sync
Merge.commits(repo, ourCommit, theirCommit, [options]);
Merge 2 commits together and create an new index that can
be used to create a merge commit.
| Parameters |
Type |
|
| repo |
Repository |
Repository that contains the given commits |
| ourCommit |
Commit |
The commit that reflects the destination tree |
| theirCommit |
Commit |
The commit to merge into ourCommit |
| [options] |
MergeOptions |
The merge tree options (null for default) |
Merge.fileInitInput Sync
var result = Merge.fileInitInput(opts, version);
| Parameters |
Type |
|
| opts |
MergeFileInput |
the git_merge_file_input instance to initialize. |
| version |
Number |
the version of the struct; you should pass GIT_MERGE_FILE_INPUT_VERSION here. |
| Returns |
|
| Number |
Zero on success; -1 on failure. |
Merge.initOptions Sync
var result = Merge.initOptions(opts, version);
| Parameters |
Type |
|
| opts |
MergeOptions |
the git_merge_options instance to initialize. |
| version |
Number |
the version of the struct; you should pass GIT_MERGE_OPTIONS_VERSION here. |
| Returns |
|
| Number |
Zero on success; -1 on failure. |
Merge.merge Sync
Merge.merge(repo, theirHead, [mergeOpts], [checkoutOpts]);
Merge a commit into HEAD and writes the results to the working directory.
| Parameters |
Type |
|
| repo |
Repository |
Repository that contains the given commits |
| theirHead |
Commit |
The annotated to merge into HEAD |
| [mergeOpts] |
MergeOptions |
The merge tree options (null for default) |
| [checkoutOpts] |
CheckoutOptions |
The checkout options (null for default) |
Merge.trees Async
Merge.trees(repo, ancestor_tree, our_tree, their_tree, opts).then(function(index) {
// Use index
});
| Parameters |
Type |
|
| repo |
Repository |
repository that contains the given trees |
| ancestor_tree |
Tree |
the common ancestor between the trees (or null if none) |
| our_tree |
Tree |
the tree that reflects the destination tree |
| their_tree |
Tree |
the tree to merge in to our_tree |
| opts |
MergeOptions |
the merge tree options (or null for defaults) |
Merge.ANALYSIS ENUM
| Flag |
Value |
| Merge.ANALYSIS.NONE |
0 |
| Merge.ANALYSIS.NORMAL |
1 |
| Merge.ANALYSIS.UP_TO_DATE |
2 |
| Merge.ANALYSIS.FASTFORWARD |
4 |
| Merge.ANALYSIS.UNBORN |
8 |
Merge.FILE_FAVOR ENUM
| Flag |
Value |
| Merge.FILE_FAVOR.NORMAL |
0 |
| Merge.FILE_FAVOR.OURS |
1 |
| Merge.FILE_FAVOR.THEIRS |
2 |
| Merge.FILE_FAVOR.UNION |
3 |
Merge.FILE_FLAGS ENUM
| Flag |
Value |
| Merge.FILE_FLAGS.FILE_DEFAULT |
0 |
| Merge.FILE_FLAGS.FILE_STYLE_MERGE |
1 |
| Merge.FILE_FLAGS.FILE_STYLE_DIFF3 |
2 |
| Merge.FILE_FLAGS.FILE_SIMPLIFY_ALNUM |
4 |
| Merge.FILE_FLAGS.FILE_IGNORE_WHITESPACE |
8 |
| Merge.FILE_FLAGS.FILE_IGNORE_WHITESPACE_CHANGE |
16 |
| Merge.FILE_FLAGS.FILE_IGNORE_WHITESPACE_EOL |
32 |
| Merge.FILE_FLAGS.FILE_DIFF_PATIENCE |
64 |
| Merge.FILE_FLAGS.FILE_DIFF_MINIMAL |
128 |
Merge.PREFERENCE ENUM
| Flag |
Value |
| Merge.PREFERENCE.NONE |
0 |
| Merge.PREFERENCE.NO_FASTFORWARD |
1 |
| Merge.PREFERENCE.FASTFORWARD_ONLY |
2 |
Merge.TREE_FLAG ENUM
| Flag |
Value |
| Merge.TREE_FLAG.TREE_FIND_RENAMES |
1 |


gummy.gateways module¶
If you want to use your gateway (not listed here), please inherit GummyAbstGateWay
class and create your own class.
I would also appreciate if you could do “pull request” about your own class :)
The following information may be useful when you create your own class
content |
position |
|---|---|
What is |
|
How to set a environment variables, or give a kwargs |
|
You can easily get (import) Gateway Class
by the following ways.
>>> from gummy import gateways
>>> gateway = gateways.get("useless")
<gummy.gateways.UselessGateWay at 0x124a4de50>
>>> from gummy.gateways import UselessGateWay
>>> useless = UselessGateWay()
>>> gateway = gateways.get(useless)
>>> gateway
<gummy.gateways.UselessGateWay at 0x124a08730>
>>> id(gateway) == id(useless)
True
-
class
gummy.gateways.
GummyAbstGateWay
(verbose=True, required_keynames={}, dotenv_path='/Users/iwasakishuto/.gummy/.env')[source]¶ Bases:
object
If you want to create your own gateway class, please inherit this class.
- Parameters
verbose (bool) – Whether to print message or not. (default=
True
)required_keynames (dict) – Required keynames for
passthrough_base
or_pass2{journal_name}
method. Seesetup
.dotenv_path (str) – where the dotenv file is. (default is
where_is_envfile()
)
-
required_keynames
¶ Required
kwargs
. (journal_name
->key_list
)- Type
dict
-
journal2method
¶ Which method to use. Use
_pass2others
for journal which does not exist in the key. (journal_name
->method
)- Type
dict
-
property
class_name
¶ Same as
self.__class__.__name__
.
-
property
name
¶ Gateway service name. It is used for converting key name to environment varname. see
keyname2envname
method.
-
setup
(required_keynames={})[source]¶ Setup
If you want to use your gateway service, you will probably need to
log in with your
username
andpassword
to use the gateway serviceprocess for each service. (it is expected that the required information or required process will differ for each journal)
To make it easier to add a supported journals,
1
will be handled bypassthrough_base
method, and2
will be handled by_pass2{journal_name}
method, so when adding a supported journal, only_pass2{journal_name}
needs to be added.If there is any information you have to fill in when using gateway service, you need to give
required_keynames
.>>> class UTokyoGateWay(GummyAbstGateWay): ... def __init__(self): ... super().__init__( ... required_keynames={ ... "base" : ["username", "password"] ... } ... )
"base"
is the key forpassthrough_base
method."{journal_name}"
is the key for_pass2{journal_name}
method.
- Parameters
required_keynames (dict) – Required
kwargs
forpassthrough
method.
-
keyname2envname
(keyname)[source]¶ Convert keyname to environment varname.
- Args
keyname (str) : Keyname for
passthrough_base
or_pass2{journal_name}
method.
Examples
>>> from gummy.gateways import UselessGateWay >>> gateway = UselessGateWay() >>> gateway.keyname2envname("name") 'TRANSLATION_GUMMY_GATEWAY_USELESS_NAME' >>> gateway.keyname2envname("hoge") 'TRANSLATION_GUMMY_GATEWAY_USELESS_HOGE'
-
property
required_env_varnames
¶ Required environment varnames.
Examples
>>> from gummy.gateways import UTokyoGateWay >>> gateway = UTokyoGateWay() >>> gateway.required_env_varname {'base': ['TRANSLATION_GUMMY_GATEWAY_UTOKYO_USERNAME', 'TRANSLATION_GUMMY_GATEWAY_UTOKYO_PASSWORD']}
-
property
supported_journals
¶ Supported journals. Use
_pass2others
method for other journals.Examples
>>> from gummy.gateways import UTokyoGateWay >>> gateway = UTokyoGateWay() >>> gateway.supported_journals ['ieee', : 'wileyonlinelibrary']
-
get_required_keynames
(journal_type=None)[source]¶ Get required keynames for given
journal_type
.- Parameters
journal_type (str) – Journal name.
Examples
>>> from gummy.gateways import UTokyoGateWay >>> gateway = UTokyoGateWay() >>> gateway.get_required_keynames("ieee") ['password', 'username']
-
get_required_env_varnames
(journal_type=None)[source]¶ Get required keynames for given
journal_type
.- Parameters
journal_type (str) – Journal name.
Examples
>>> from gummy.gateways import UTokyoGateWay >>> gateway = UTokyoGateWay() >>> gateway.get_required_env_varnames("ieee") ['TRANSLATION_GUMMY_GATEWAY_UTOKYO_PASSWORD', 'TRANSLATION_GUMMY_GATEWAY_UTOKYO_USERNAME']
-
get_val
(keyname, **gatewaykwargs)[source]¶ Get the value from
gatewaykwargs
or an environment variable.- Parameters
keyname (str) – Keyname for
passthrough_base
or_pass2{journal_name}
method.gatewaykwargs (dict) – Given
gatewaykwargs
.
Examples
>>> from gummy.gateways import UTokyoGateWay >>> gateway = UTokyoGateWay() >>> print(gateway.get_val("hoge")) None >>> print(gateway.get_val("username")) USERNAME_IN_ENVFILE >>> print(gateway.get_val("username", username=":)")) :)
-
abstract
passthrough_base
(driver, **gatewaykwargs)[source]¶ Perform necessary processing when using gateway service regardless of journal.
- Parameters
driver (WebDriver) – Selenium WebDriver.
gatewaykwargs (dict) – Given
gatewaykwargs
.
-
passthrough
(driver, url=None, journal_type=None, **gatewaykwargs)[source]¶ Perform the necessary procedures to access journals and return WebDriver and function which converts raw URL to ssl URL. When you use gateway service, you need to set environment variables in .env file, or call a method with keyword argment.
Set environment variables in .env file. (recommended):
>>> # Write and update `.env` file. >>> from gummy.utils import show_environ, write_environ, read_environ >>> write_environ( ... TRANSLATION_GUMMY_GATEWAY_UTOKYO_USERNAME="username", ... TRANSLATION_GUMMY_GATEWAY_UTOKYO_PASSWORD="password", >>> ) >>> show_environ(default_dotenv_path) * TRANSLATION_GUMMY_GATEWAY_UTOKYO_USERNAME : "username" * TRANSLATION_GUMMY_GATEWAY_UTOKYO_PASSWORD : "password" >>> # Call with no kwargs. >>> from gummy.utils import get_driver >>> from gummy import gateways >>> gateway = gateways.get("utokyo") >>> with get_drive() as driver: ... driver = gateway.passthrough(driver) ... :
Call a function with keyword argument:
>>> from gummy.utils import get_driver >>> from gummy import gateways >>> gateway = gateways.get("utokyo") >>> with get_drive() as driver: ... driver = gateway.passthrough(driver, username="username", password="password") ... :
- Parameters
driver (WebDriver) – Selenium WebDriver.
url (str) – URL you want to access using gateway.
journal_type (str) – journal type. Give if known in advance. (default=
None
)gatewaykwargs (dict) – kwargs for
_pass2{journal}
- Returns
(Selenium WebDriver, How to convert raw URL to sslURL)
- Return type
tuple (WebDriver, function)
-
class
gummy.gateways.
UselessGateWay
(verbose=True)[source]¶ Bases:
gummy.gateways.GummyAbstGateWay
Use this class when you do not use the gateway service.
-
class
gummy.gateways.
UTokyoGateWay
(verbose=True)[source]¶ Bases:
gummy.gateways.GummyAbstGateWay
Authentication Gateway Service for students at the University of Tokyo.
This class is not available except for students. Authentication Gateway Service is for faculty and staff members.
>>> from gummy import gateways >>> gateway = gateways.get("utokyo") >>> gateway.required_env_varnames {'base': ['TRANSLATION_GUMMY_GATEWAY_UTOKYO_USERNAME', 'TRANSLATION_GUMMY_GATEWAY_UTOKYO_PASSWORD']} >>> gateway.required_keynames {'base': ['username', 'password']}
-
passthrough_base
(driver, **gatewaykwargs)[source]¶ Access SSL-VPN Gateway of Information Technology Center, The University of Tokyo and do the necessary processing.
-


| Opcode/Instruction | Op/En | 64/32 bit Mode Support | CPUID Feature Flag | Description |
|---|---|---|---|---|
| EVEX.NDS.LIG.66.0F3A.W1 55 /r ib VFIXUPIMMSD xmm1 {k1}{z}, xmm2, xmm3/m64{sae}, imm8 | A | V/V | AVX512F | Fix up a float64 number in the low quadword element of xmm2 using scalar int32 table in xmm3/m64 and store the result in xmm1. |
| Op/En | Tuple Type | Operand 1 | Operand 2 | Operand 3 | Operand 4 |
| A | Tuple1 Scalar | ModRM:reg (r, w) | EVEX.vvvv | ModRM:r/m (r) | Imm8 |
Perform a fix-up of the low quadword element encoded in double-precision floating-point format in the first source operand (the second operand) using a 32-bit, two-level look-up table specified in the low quadword element of the second source operand (the third operand) with exception reporting specifier imm8. The element that is fixed-up is selected by mask bit of 1 specified in the opmask k1. Mask bit of 0 in the opmask k1 or table response action of 0000b preserves the corresponding element of the first operand. The fixed-up element from the first source operand or the preserved element in the first operand becomes the low quadword element of the destination operand (the first operand). Bits 127:64 of the destination operand is copied from the corresponding bits of the first source operand. The destination and first source operands are XMM registers. The second source operand can be a XMM register or a 64- bit memory location.
The two-level look-up table perform a fix-up of each DP FP input data in the first source operand by decoding the input data encoding into 8 token types. A response table is defined for each token type that converts the input encoding in the first source operand with one of 16 response actions.
This instruction is specifically intended for use in fixing up the results of arithmetic calculations involving one source so that they match the spec, although it is generally useful for fixing up the results of multiple-instruction sequences to reflect special-number inputs. For example, consider rcp(0). Input 0 to rcp, and you should get INF according to the DX10 spec. However, evaluating rcp via Newton-Raphson, where x=approx(1/0), yields an incorrect result. To deal with this, VFIXUPIMMPD can be used after the N-R reciprocal sequence to set the result to the correct value (i.e. INF when the input is 0).
If MXCSR.DAZ is not set, denormal input elements in the first source operand are considered as normal inputs and do not trigger any fixup nor fault reporting.
Imm8 is used to set the required flags reporting. It supports #ZE and #IE fault reporting (see details below).
MXCSR.DAZ is used and refer to zmm2 only (i.e. zmm1 is not considered as zero in case MXCSR.DAZ is set).
MXCSR mask bits are ignored and are treated as if all mask bits are set to masked response). If any of the imm8 bits is set and the condition met for fault reporting, MXCSR.IE or MXCSR.ZE might be updated.
enum TOKEN_TYPE { QNAN_TOKEN ← 0, SNAN_TOKEN ← 1, ZERO_VALUE_TOKEN ← 2, POS_ONE_VALUE_TOKEN ← 3, NEG_INF_TOKEN ← 4, POS_INF_TOKEN ← 5, NEG_VALUE_TOKEN ← 6, POS_VALUE_TOKEN ← 7 } FIXUPIMM_DP (dest[63:0], src1[63:0],tbl3[63:0], imm8 [7:0]){ tsrc[63:0]←((src1[62:52] = 0) AND (MXCSR.DAZ =1)) ? 0.0 : src1[63:0] CASE(tsrc[63:0] of TOKEN_TYPE) { QNAN_TOKEN: j←0; SNAN_TOKEN: j←1; ZERO_VALUE_TOKEN: j←2; POS_ONE_VALUE_TOKEN: j←3; NEG_INF_TOKEN: j←4; POS_INF_TOKEN: j←5; NEG_VALUE_TOKEN: j←6; POS_VALUE_TOKEN: j←7; } ; end source special CASE(tsrc...) ; The required response from src3 table is extracted token_response[3:0] = tbl3[3+4*j:4*j]; CASE(token_response[3:0]) { 0000: dest[63:0]←dest[63:0] ; preserve content of DEST 0001: dest[63:0]←tsrc[63:0]; ; pass through src1 normal input value, denormal as zero 0010: dest[63:0]←QNaN(tsrc[63:0]); 0011: dest[63:0]←QNAN_Indefinite; 0100:dest[63:0] ← -INF; 0101: dest[63:0]←+INF; 0110: dest[63:0]←tsrc.sign? –INF : +INF; 0111: dest[63:0]←-0; 1000: dest[63:0]←+0; 1001: dest[63:0]←-1; 1010: dest[63:0]←+1; 1011: dest[63:0]←1⁄2; 1100: dest[63:0]←90.0; 1101: dest[63:0]←PI/2; 1110: dest[63:0]←MAX_FLOAT; 1111: dest[63:0]←-MAX_FLOAT; } ; end of token_response CASE ; The required fault reporting from imm8 is extracted ; TOKENs are mutually exclusive and TOKENs priority defines the order. ; Multiple faults related to a single token can occur simultaneously. IF (tsrc[63:0] of TOKEN_TYPE: ZERO_VALUE_TOKEN) AND imm8[0] then set #ZE; IF (tsrc[63:0] of TOKEN_TYPE: ZERO_VALUE_TOKEN) AND imm8[1] then set #IE; IF (tsrc[63:0] of TOKEN_TYPE: ONE_VALUE_TOKEN) AND imm8[2] then set #ZE; IF (tsrc[63:0] of TOKEN_TYPE: ONE_VALUE_TOKEN) AND imm8[3] then set #IE; IF (tsrc[63:0] of TOKEN_TYPE: SNAN_TOKEN) AND imm8[4] then set #IE; IF (tsrc[63:0] of TOKEN_TYPE: NEG_INF_TOKEN) AND imm8[5] then set #IE; IF (tsrc[63:0] of TOKEN_TYPE: NEG_VALUE_TOKEN) AND imm8[6] then set #IE; IF (tsrc[63:0] of TOKEN_TYPE: POS_INF_TOKEN) AND imm8[7] then set #IE; ; end fault reporting return dest[63:0]; } ; end of FIXUPIMM_DP()
IF k1[0] OR *no writemask* THEN DEST[63:0]←FIXUPIMM_DP(DEST[63:0], SRC1[63:0], SRC2[63:0], imm8 [7:0]) ELSE IF *merging-masking* ; merging-masking THEN *DEST[63:0] remains unchanged* ELSE DEST[63:0]←0 ; zeroing-masking DEST[127:64] ← SRC1[127:64] DEST[MAXVL-1:128] ← 0 Immediate Control Description:
VFIXUPIMMSD __m128d _mm_fixupimm_sd( __m128d a, __m128i tbl, int imm);
VFIXUPIMMSD __m128d _mm_mask_fixupimm_sd(__m128d s, __mmask8 k, __m128d a, __m128i tbl, int imm);
VFIXUPIMMSD __m128d _mm_maskz_fixupimm_sd( __mmask8 k, __m128d a, __m128i tbl, int imm);
VFIXUPIMMSD __m128d _mm_fixupimm_round_sd( __m128d a, __m128i tbl, int imm, int sae);
VFIXUPIMMSD __m128d _mm_mask_fixupimm_round_sd(__m128d s, __mmask8 k, __m128d a, __m128i tbl, int imm, int sae);
VFIXUPIMMSD __m128d _mm_maskz_fixupimm_round_sd( __mmask8 k, __m128d a, __m128i tbl, int imm, int sae);
Zero, Invalid
See Exceptions Type E3.


We're sorry but union-ad-admin doesn't work properly without JavaScript enabled. Please enable it to continue.


Switchable Glass: A possible medium for
Evolvable Hardware
Department of Computer Science,
Faculty of Mathematics and Computer Science,
Babes-Bolyai University, Kogalniceanu 1
Cluj-Napoca, 400084, Romania.
<EMAIL_ADDRESS>NASA conference on
Adaptive Hardware Systems,
IEEE CS Press, pp 81-87,
2006
[PDF
version here]
Abstract:
The possibility of using switchable glass (also called smart windows)
technology for Evolvable Hardware tasks is suggested in this paper.
Switchable glass technology basically means controlling the transmission of
light through windows by using electrical power. By applying a variable
voltage to the window we can continuously vary the amount of transmitted
light. Three existing technologies are reviewed in this paper:
Electrochromic Devices, Suspended Particle Devices and Liquid Crystal
Devices. An Evolvable Hardware application for a light-based device is
described. The proposed device can be used for solving an entire class of
problems, instead of one problem only as in the case of other dedicated
hardware.
1 Introduction
Intrinsic Evolvable Hardware (EHW) employs the Darwinian principle of evolution
directly into hardware. Several devices have been used so far in this purpose:
Field Programmable Gate Array [16], Field
Programmable Transistor Array [15], Field
Programmable Analog Array [3] and Liquid
Crystal [11,
12].
In this paper we suggest the use of switchable glass (commercially known as
smart windows) for Evolvable Hardware purposes. Because switchable glass affects
only the transmitted light, we can used this technology for light-based
computations only.
In the area of light control, there are three main technologies: Electrochromic
Devices, Suspended Particle Devices and Liquid Crystal Devices. Electrochromic
Devices technology is based on chemical reactions whereas Suspended Particle
Devices technology uses field effects. These technologies are widely used to
manufacture smart windows [9]. These types
of glass can be automatically controlled to adjust the amount of light passing
through them.
Suspended Particle Device refers to rod-like particles suspended in a fluid.
With no applied voltage, the particles are randomly oriented and block light
(dark state). When a voltage is applied, the particles align with the electric
field and let light though (light state). By varying the applied voltage, we can
continuously vary the amount of transmitted light.
Electrochromic glass becomes translucent when voltage is added and are
transparent when voltage is taken away. Like suspended particle devices,
electrochromic windows can be adjusted to allow varying levels of visibility.
Liquid crystal glasses become transparent when a voltage is added and have an
opaque behavior when there is no electrical power applied. However, liquid
crystal glass has only 2 states: opaque and transparent with no other degrees of
visibility.
The paper is structured as follows: The properties of intrisic EHW systems are
briefly described in section 2. Section
3 reviews the current directions in the field of switchable glasses. A
possible EHW application of switchable glass is presented in section
5. Conclusions and further work directions are given in section
6.
2 Properties of EHW devices
According to [12] there are several
characteristics that a material should have in order to become a possible
candidate for EHW tasks:
- the material should be configurable
by applying some electrical power or any other source of energy (such as
light),
- the material should affect an incident signal (optical or
electronic),
- the material should be able to be reset to its original
state.
In this paper we suggest the possibility of using switchable glass as a platform
for EHW tasks. This kind of material has all the properties required by the EHW
tasks:
- the switchable glass can change its
degree of opaqueness by applying some electrical power,
- the switchable glass affects the quantity of light that
pass through it,
- the switchable glass is able to be reset to its original
state by removing the source of power.
Because switchable glass affects only the transmitted light, we can used this
technology for light-based computations only.
3 Overview of the switchable glass
technology
Three existing technologies in the field of switchable glasses are briefly
described in this section. These technologies are: Suspended-particle devices,
Electrochromic devices and Liquid crystal devices.
3.1 Suspended-particle devices
Suspended Particle Devices (SPDs) [7,
19], also called light valves use either a liquid suspension
or a film within which droplets of liquid suspension are distributed.
Light-absorbing microscopic particles are dispersed within the liquid
suspension. The liquid suspension or film is then enclosed between two glass or
plastic plates coated with a transparent conductive material. The mechanism
behind SPD is similar to that of the dielectric in a parallel-plate capacitor
which means that the atoms of the dielectric are polarized by the electric
field. When an electrical voltage is applied to the suspension via the coatings,
the particles are forced to align.
This allows a range of transparency where light transmission can be rapidly
varied to any degree desired depending upon the voltage applied.
An example of how SPD works is given in Figure 1.
figure=Picture1.eps,width=4.1in,height=2.7in
Figure 1: The materials within a SPD-based glass (from left
to right): glass or plastic panel, conductive material - used to coat the
panes of glass, Suspended Particle Devices - millions of these black
particles are placed between the two panes of glass, a second glass or
plastic panel. We have kept the glass panels in order to show how this
technology works. When the SPDs are switched on, via the conductive coating,
they line up in a straight line and allow light to flow through. When
switched off the SPDs move back into a random pattern and block light.
The way in which SPD glass works is very simple, if one thinks of SPDs as light
valves. In a SPD window, millions of SPDs are placed between two panels of glass
or plastic. When electricity comes into contact with the SPDs via the conductive
coating, they line up in a straight line and allow light to flow through. Once
the electricity is taken away, they move back into a random pattern and block
light. When the amount of voltage is decreased, the window darkens until it's
completely dark after all electricity is taken away.
3.2 Electrochromic devices
Electrochromic windows [4,
9, 13,
19] are made of special materials that have electrochromic
properties. Electrochromic basically describes materials that can change
color when energized by an electrical current. Electricity generates a chemical
reaction in this material. This reaction (like any chemical reaction) changes
the properties of the material. In this particular case, the reaction changes
the way the material reflects and absorbs light. In some other electrochromic
materials, the change is between different colors. In electrochromic windows,
the material changes between colored (reflecting light of some color) and
transparent (not reflecting any light).
At its most basic level, an electrochromic window needs this sort of
electrochromic material and an electrode system to change its chemical state
from colored to transparent and back again.
Electrochromic glass is made by sandwiching certain materials between two panes
of glass. Figure 2 shows the materials inside one
basic electrochromic window system and the way in which this system works.
figure=Picture2.eps,width=5in,height=2.7in
Figure 2: The materials within a ECD-based glass (from left
to right): glass or plastic panel, conducting oxide, electrochromic layer,
such as tungsten oxide, ion conductor/electrolyte, ion storage, a second
layer of conducting oxide, a second glass or plastic panel. We have kept the
glass panels in order to show how this technology works. When switched off,
an electrochromic window remains transparent (left side). When switched on,
a low volt of electricity makes the electrochromic window translucent (right
side).
In the design shown in Figure 2, the chemical
reaction at work is an oxidation reaction – a reaction in which molecules in a
compound lose an electron. Ions in the sandwiched electrochromic layer are what
allow it to change from translucent to transparent. It's these ions that allow
it to absorb light. A power source is wired to the two conducting oxide layers,
and a voltage drives the ions from the ion storage layer, through the ion
conducting layer and into the electrochromic layer. This makes the glass opaque.
By shutting off the voltage, the ions are driven out of the electrochromic
layers and into the ion storage layer. When the ions leave the electrochromic
layer, the window regains its transparency.
With an electrochromic smart-window, it only requires electricity to make the
initial change in opacity. Maintaining a particular shade does not require
constant voltage. One only needs to apply enough voltage to make the change, and
then enough to reverse the change.
3.3 Liquid crystal devices
Polymer Dispersed Liquid Crystals (PDLCs), [8,
19] or Liquid Crystals Devices (LCDs) are another major application
in the field of switchable windows.
An example of how LCD works is given in Figure 3.
figure=Picture3.eps,width=4.5in,height=2.7in
Figure 3: The materials within a LCD-based glass (from left
to right): glass or plastic panel, interlayer film, liquid crystal film, a
conductive coating, liquid crystal layer, a second conductive layer, a
second liquid crystal film, a second interlayer film, a second glass or
plastic panel. We have kept the glass panels in order to show how this
technology works. When switched off the liquid crystal droplets are randomly
oriented, creating an opaque state. When switched on the liquid crystals
align parallel to the electric field and light passes through, creating a
transparent state.
In the opaque state, the glass diffuses direct sunlight and eliminates 99
percent of the ultraviolet rays.
LCDs operate on the principle of electrically controlled light scattering. They
consist of liquid crystal droplets surrounded by a polymer mixture sandwiched
between two pieces of conducting glass. When no electricity is applied the
liquid crystal droplets are randomly oriented, creating an opaque state. When
electricity is applied the liquid crystals align parallel to the electric field
and light passes through, creating a transparent state.
LCD windows can only be in one of the two states: transparent or opaque. There
is nothing between these states, regardless how much electrical power is
applied.
4 Advantages and weaknesses
A comparison of the features of the switchable glasses technologies is given in
Table 1.
An important advantage of Suspended-Particles Devices and Electrochromic Devices
is their ability to continuously vary the amount of transmitted light based on
continuous variations of the applied electrical power. This feature makes SPDs
and ECDs very suitable for a large number of problems whose parameters are
real-valued. By contrast, Liquid Crystal Devices are of ON-OFF type: they can
have only 2 states.
A possible drawback is the speed of performing the changes. As a general remark,
the speed is directly connected to the glass surface. A bigger surface requires
more time to change its state than a smaller surface. However, for EHW tasks the
required surface can be microscopic, which requires less than 1 microsecond to
perform a complete cycle (in the case of SPDs).
Because ECDs depend on ion injection and chemical reactions, the process is
inherently slow. However, SPDs depend on a field effect, thus responding in very
short time. As the technology advances we can expect to have smart glass which
will respond faster to the applied electrical power.
5 Applications
In this section we describe an application for solving the 0/1 knapsack problem
[2,
10]. For this purpose we have designed a special system which
consists in two main parts:
- A computer which runs a standard
Evolutionary Algorithm (EA) with binary encoding and
- an evolvable hardware light-based device for computing
the fitness of a chromosome.
A schematic view of the proposed system is depicted in Figure
4.
figure=Picture4.eps,width=4.8in,height=2.8in
Figure 4: A schematic view of a light based-computer which
performs a EHW task for solving a knapsack problem with 5 items. The weight
of each item is encoded by the SPD array of glass pieces. The LCD array
encodes the structure of the chromosome (the light is blocked if the
corresponding gene xi has value 0 and the light is
allowed to pass if the corresponding gene xi has
value 1). When a source of light is applied, the first two arrays perform
xi*wi operation. The biconvex
lens will focus all rays into a single spot which is equivalent with
computing the sum x1*w1+...+xn*wn.
Finally a solar cell will convert the light into electrical power which will
be sent back to the computer
5.1 The knapsack problem
In this problem we have a set M of n items. Each item has its own
weight wi. We also have a knapsack of capacity C.
We have to fill the knapsack using some objects in the set M so that:
- the total weight of the objects in
the knapsack does not exceed the given capacity C,
- the difference between C and the sum of the
weights of the objects in the knapsack is minimal.
Without losing the generality we may assume that each weight is a real number
between 0 and 1. Otherwise we can scale them to that interval.
The knapsack problem belongs to the class of NP-Complete problems [2,
6]. No polynomial-time algorithm is known for solving it.
Evolutionary algorithms have been extensively used for solving this problem and
its countless variants [1,
5, 18].
5.2 Evolutionary Algorithms for the
knapsack problem
We use a standard representation of a chromosome: a binary string x of
length n. Each position xi is filled with either
1 (meaning that the object is in the knapsack) or 0 (meaning that the object is
not in the knapsack). The fitness is equal to the difference, in absolute value,
between C and the sum of the objects in the knapsack. If the capacity C
is exceeded, the corresponding chromosome will have the fitness equal to ∞. The
fitness of a chromosome is computed by the EHW device (see section
5.3).
5.3 The EHW device
The EHW device (used for computing the fitness of a chromosome) consists in 5
main parts:
- several continuous sources of light.
Their number is equal to n (the number of objects in the set M).
- an array of n LCD cells. Each cell is an
reconfigurable LCD glass which lets or does not let the light to pass through.
This array has the same structure as the structure of the chromosome whose
fitness is computed: 1 - the light is not blocked and 0 - the light is blocked.
This array will be reconfigured (by applying a predefined electric power) by the
computer everytime when the fitness of a chromosome needs to be computed.
- an array of n SPD cells. Each cell is an SPD glass
which allows a variable degree of light to pass through. This array encodes the
weights of the given objects. When we have defined the problem (see section
5.1) we have imposed a restriction that each weight is between 0 and 1. Thus
each SPD cell is configured to let wi*100% of the
incoming light to pass through. If wi = 1 it means that
the corresponding glass is fully transparent allowing to pass 100% of the
incoming light. When wi is near to 0 means that the
corresponding glass blocks almost all of the incoming light. This array of SPD
cells actually encodes the problem to be solved. This is why it should be kept
fixed during a run. However, when the problem is changed (i.e. the weights of
the objects are changed) we can reconfigure this SPD array too. This feature
gives us a great generalization ability.
- The effect of these arrays (LCD and SPD), when a light is
applied, is equivalent to performing, for each object, the multiplication xi*wi.
For computing the sum of the previously generated values we can use a biconvex
lens. This lens will focus all rays in a given point also called focal point.
The lens is a very important piece of this device, because it can compute a sum
of numbers in O(1) time. The conventional devices (electrically powered) can do
this operation in O(n) time.
- The light is then captured by a solar cell (photo cell)
which transforms it into electric power, which is later sent to computer as a
analog signal. The computer will calculate the actual fitness based on the
differences between C and the value generated by the EHW device.
5.4 How the system works?
The system works as follows (see also Figure 4):
- The SPDs cells are reconfigured at
the beginning of the search in order to encode the knapsack problem (i.e.
the weights of the objects). These cells are not reconfigured anymore during
the current run. They are kept fixed until a new knapsack problem will be
solved.
- A computer runs an Evolutionary Algorithm for solving the
knapsack problem as described in section 5.2.
- When the fitness of a chromosome needs to be computed its
structure will be downloaded into the LCD array. This means that the LCD array
will be reconfigured (by applying/removing some electrical power to each of its
cells) in order to reflect the structure of the chromosome. The light rays will
pass through a cell only if the corresponding object is in the knapsack
(according to the current chromosome).
- When the light rays will pass the second layer (SPDs
array), they will have a power which reflects the degree of opaqueness of each
cell (which actually encodes the weight of each object).
- Finally, the light rays are focused by a biconvex lens
and the resulting ray will be captured by a solar cell. The signal, which is
sent back to the computer, by the solar cell encodes the sum of the weights of
the objects in the knapsack.
- The computer calculates the fitness by comparing value
C with the sum of the objects in the knapsack.
5.5 Advantages
Because of its two levels of reconfigurability, this EHW device has an important
advantage: it can be used for solving an entire class of knapsack problems,
without changing the device. The second array (the array of SPD cells) allows us
to reconfigure the weights, thus permitting to encode and solve all knapsack
problems which have no more than n objects. However, the maximum number
of objects, for a given device, cannot be modified.
Another important advantage is given by the use of the biconvex lens. This type
of lens allows us to compute the sum x1*w1+x2*w2+...+xn*wn
in O(1) time by focusing the entire light to a single spot. Note that a standard
computer needs O(n) steps to do this operation.
Table 1: The differences between the compared smart glass
technologies. Second column shows when the glass is transparent. Switched
ON means that an electrical current is applied to obtain the transparent
state. Third column shows whether the glass can be kept in other states
between opaque and transparent. Fourth column shows whether glass requires
power in order to maintain its state after an initial electrical power has
been applied for changing the state
| Material |
When is transparent? |
Continuous states between opaque and transparent? |
Requires power to maintain the state? |
| Suspended Particle Devices |
Switched ON |
YES |
YES |
| Electrochromic Devices |
Switched OFF |
YES |
NO |
| Liquid Crystal Devices |
Switched ON |
NO |
YES |
6 Conclusion and future work
The possibility of using switchable glass for Evolvable Hardware tasks has been
suggested in this paper. Three commercially available technologies in the field
of smart windows have been reviewed. Strengths and weaknesses of these
technologies have been deeply presented.
A potential application of these technologies for evolution in materio
tasks has been described.
Further efforts will be focused on two directions:
- implementing the proposed hardware,
- finding new applications which are suitable for this
model,
- applying the switchable glass to reversible computing [14].
This task could be possible because the glass is able to restore its original
state after removing the source of energy.
References
-
[1]
-
C. Cotta, J.M. Troya, A hybrid genetic algorithm for the 0-1 multiple knapsack
problem, Artificial Neural Nets and Genetic Algorithms, Springer-Verlag, (3) pp.
250-254, 1998
- [2]
-
V. Chvatal, Hard knapsack problems, Operations Research 28, pp. 1402-1411, 1980
- [3]
-
S. J. Flockton and K. Sheehan, Intrinsic circuit evolution using programmable
analogue arrays, Proceedings of The Second International Conference on Evolvable
Systems: From Biology to Hardware, LNCS, vol. 1478, Springer-Verlag, pp.
144-153, 1998
- [4]
-
C. Granqvist, Handbook of inorganic electrochromic materials, Elsevier Press,
Amsterdam; New York, 1995
- [5]
-
C. Grosan, Improving the performance of evolutionary algorithms for the
multiobjective 0/1 knapsack problem using epsilon -dominance, IEEE Congress on
Evolutionary Computation, pp. 1958-1963, IEEE Press, 2004
- [6]
-
M.R. Garey, D.S. Johnson, Computers and Intractability: A Guide to
NP-Completeness, Freeman & Co, San Francisco, CA, 1979.
- [7]
-
J. M. Harary, Production and Performance of Suspended Particle Device (SPD)
Products, in Proceedings of the 5th International Meeting on
Electrochromism (IME-5) Golden, Colorado, 2002
- [8]
-
I. C. Khoo, Liquid Crystals: physical properties and non-linear optical
phenomena, Wiley, 1995
- [9]
-
M. R. LaPointe, G. M. Sottile, 2000 survey of window manufacturers on the
subject of switchable glass, Society of Photo-Optical Instrumentation Engineers
and Switching Materials, Vol. 4458, pp. 112-119, 2001
- [10]
-
S. Martello, P. Toth, Knapsack problems: Algorithms and Computer
Implementations. John Wiley & Sons, 1990
- [11]
-
J. Miller and K. Downing, Evolution in materio: Looking Beyond the Silicon Box,
Proceedings of the 4th
NASA/DoD Conference On Evolvable Hardware, pp. 167-176, IEEE Computer Society
Press, 2002
- [12]
-
S. Harding, J. Miller, Evolution in materio: Initial Experiments with Liquid
Crystal, Proceedings of the 6th
NASA/DoD Conference On Evolvable Hardware, pp. 167-176, IEEE Computer Society
Press, 2004
- [13]
-
R. Mortimer, Electrochromic materials, Chemical Society Reviews, Vol. 26(3), pp.
147 - 156, 1997
- [14]
-
M. Oltean, Evolving reversible circuits for the even-parity problem, EvoHOT
workshop, Applications of Evolutionary Computing, F. Rothlauf, (et al.) (Eds.),
LNCS 3449, pp. 225-234, Springer-Verlag, Berlin, 2005
- [15]
-
A. Stoica, (et al.), Evolution of analogue circuits on Field Programmable
Transistor Arrays, Proceedings of the 2nd NASA/DoD Workshop on
Evolvable Hardware, pp. 99 - 108, IEEE Computer Society Press, 2000
- [16]
-
A. Thompson, An evolved circuit, intrinsic in silicon, Proceedings of the 1st
International Conference on Evolvable Systems: From Biology to Hardware, LNCS,
vol. 1259, Springer-Verlag, pp. 390 - 405, 1997
- [17]
-
A. Thompson, On the Automatic design of Robust Electronics through Artificial
Evolution, Proceedings of the 2nd International Conference on
Evolvable Systems: From Biology to Hardware, LNCS, vol. 1478, Springer-Verlag,
pp. 13 - 24, 1998
- [18]
-
E. Zitzler, Evolutionary algorithms for multiobjective optimization: Methods and
Applications. Ph. D. thesis, Swiss Federal Institute of Technology (ETH) Zurich,
Switzerland, 1999
- [19]
-
http://electronics.howstuffworks.com/
This document was translated from LATEX
by
HEVEA.


There is a feature to add your householders to a map, so you can remember easily pinpoint their locations when you visit them.
Record how many videos and publications have you shared in the ministry. This feature will also allow you to record how many hours you have dedicated to minister to Jehovah.
The web application allows you to record your householders, see them in a list, know how many times you have visited them and determine when you have last visited them.
See in a glance, how you have been with the current month, of the date selected. Shows weekly and monthly total of your activities/shared materials in your ministry.
The web application allows you to record some of your householder's details, mark if you have started a bible study with the householder, edit the details provided and most importantly, add notes regarding your visits.


Larger, yet dramatically thinner. More powerful, but remarkably power efficient. With a smooth metal surface that seamlessly meets the new Retina HD display.
Here is your profile.


A highly motivated frontend developer eager to learn all about web development.
Started studying web development by itself in 2015 on MOOCs websites with focus in frontend.
Became enthusiastic about ReactJS after completing a 5 weeks Full Stack Development bootcamp with Codaisseur.
After that started working with ReactJS Native (iOS and Android) together with Flux, completing 7 months of working experience in this area.


{% if site.owner.google.ad-client and site.owner.google.ad-slot %}{% include ad-footer.html %}{% endif %} © 2019 David Castillo. All Rights Reserved


--- redirect_from: /our_values.html disable_subscribe_button: true show_hero: true ---
Our old political options are broken, and we need new choices for the 21st century. We are building a new political party that's all about working towards a better future, built on openness, collaboration and the power of the Internet to connect us all.
We started by creating an open manifesto and standing in the 2015 election, but we need your help. If you're in, sign up below.
{% include mailchimp_form.html %}And, if you want to get started right away, come and talk to us in our forum right now.
{{principle.text}}


${properties.jcr:description @ context='html'}
Please create a pipe or browse through pipe history and library
learn more about Apache Sling Pipes on Apache Sling website


The ACEA provides prompt response and identification of available commercial, office, industrial and developable land requests tailored to your specifications and requirements. The ACEA acts as your liaison with brokers for follow up information requests while maintaining strict confidentiality until your firm is ready to engage in actual site visits. Our staff is available to accompany you on site visits and provide insight and assistance throughout the process.
Lauren H. Moore
Executive Director
Atlantic County Economic Alliance
2009-B Hamilton Mall
4403 E. Black Horse Pike
Mays Landing, NJ 08330


Zero Configuration
Sizes
HTML Attributes
Animations
Masking
Reactive
The icon will be recreated when a bindable property is changes.
Plugin Configuration
The icon rotation will change for the new icon because the configuration object "rotation" property is being reset
Icon prefix
You can override the default "fas" icon prefix by binding to another prefix in your view or the icon configuration


public interface IDeviceListener
| Modifier and Type | Method and Description |
|---|---|
void |
deviceAdded(IDevice device)
Called when a new Device is found.
|
void |
deviceIPV4AddrChanged(IDevice device)
Called when a network address has been added or remove from a device.
|
void |
deviceMoved(IDevice device)
Called when a Device has moved to a new location on the network.
|
void |
deviceRemoved(IDevice device)
Called when a Device is removed, this typically occurs when the port the
Device is attached to goes down, or the switch it is attached to is removed.
|
void |
deviceVlanChanged(IDevice device)
Called when a VLAN tag for the device has been added or removed.
|
void deviceAdded(IDevice device)
device
- the device that changedvoid deviceRemoved(IDevice device)
device
- the device that changedvoid deviceMoved(IDevice device)
device
- the device that changedvoid deviceIPV4AddrChanged(IDevice device)
device
- the device that changedvoid deviceVlanChanged(IDevice device)
device
- the device that changed


CHILD Program Description
Version 2.0
Greg Tucker1
Department of Civil and Environmental Engineering
Massachusetts Institute of Technology
Cambridge, MA 02139
Part IV-B of final technical report submitted to U.S. Army Corps of Engineers Construction Engineering Research Laboratory (USACERL)
by Gregory E. Tucker, Nicole M. Gasparini, Rafael L. Bras, and Stephen T. Lancaster
in fulfillment of contract number DACA88-95-C-0017
April, 1999
CHILD Program Description
Version 2.0
Design Philosophy
The CHILD software has been designed to maximize modularity and flexibility. For that reason, the C++ code is divided among a group of files and classes, many of which are general utilities that are independent of the model itself and may be reused in other applications. The mesh-handling routines are designed to function independently of the process routines, so that in principal the mesh-handling routines can be used by other applications unrelated to CHILD (note that with the current release, some explicit references to CHILD’s meandering and “layering” capabilities still exist within the mesh routines; further development is needed to fully realize the potential for completely independent mesh capabilities). Basic parameters and functionality related to each process are in most cases grouped into a single “process class” or group of related classes; for example, overbank deposition is managed using the tFloodplain class, which is wholly contained within the files tFloodplain.h and tFloodplain.cpp. The various functional capabilities of the model and the associated classes and files are summarized in Table 1.
The tMesh class manages the simulation mesh and it includes functions for creating, reading, and updating the mesh, as well as routines for managing dynamic point addition, deletion, and movement. Class tMesh contains linked lists of each of the three mesh elements, which are encapsulated in the classes tNode, tEdge, and tTriangle. Decoupling of these mesh-management capabilities from the various process routines is accomplished in part by the use of templates. tMesh is a templated class, with the template variable being the data type that represents a node on the mesh. In principal, this design makes it possible to create a mesh using any user-specified node type as long as the user-defined node class is a descendent of the base class tNode (again, with the current release this decoupling is not complete; some “landscape-related” functionality is still required within the inherited node class). The base tNode class simply represents a node in a Delaunay triangulation, and does not include any data or methods related to landscape processes. Instead, landscape data for individual nodes (data such as discharge, flow direction, erodibility, etc.) are contained within the inherited class tLNode (see summary in Table 1). The base class tNode provides several virtual functions that are overridden by tLNode to handle cases such as node initialization following mesh insertion and the addition or removal of a “spoke.”
Output routines follow a similar design. The tOutput class manages output of triangulation data for a generic mesh. It provides a virtual function, WriteNodeData, that can be overridden by any descendent class to perform additional output specific to a given application. In CHILD, the inherited tLOutput class manages output of various hydrologic and geomorphic quantities.
Typically, a given process or set of processes requires both “global” parameters and functions —e.g., physical constants that are uniform in space and time and routines that compute process rates across the whole domain — as well as properties that vary in space (such as runoff) and must therefore be included at the node level. In most cases, this is handled by encapsulating global data and methods within a master process class, and adding node-specific variables as needed to the tLNode class (or the classes embedded within it; see Table 1). In this regard, CHILD’s erosion, transport, and deposition routines deserve special mention. The tErosion class contains basic parameters and functions related to hillslope and channel erosion. This class also includes a numerical solution scheme for stream detachment and transport. The solution scheme is not specifically tied to any given formula. Ideally, therefore, one should be able to modify or replace the underlying detachment and/or transport calculations without needing to recreate the overall solution scheme. To make this possible, the tLNode class contains two embedded objects, “detach” and “sedTrans,” that perform the detachment and transport capacity calculations, respectively, at a specific point on the landscape. The classes from which these objects are derived may be changed at compile-time (in the present version, for example, one can alternately use the tSedTransPwrLaw or tSedTransWilcock classes to compute sediment transport capacity at a given node). While it would be convenient to have the transport-function option available at run time instead of compile time, the need for a branch operation at every sub-iteration for every node would impose a significant performance burden.
The CHILD code also includes several generic utility classes, including a class that handles input files (tInputFiles), a class that keeps track of simulation time (tRunTimer), and a collection of container classes (tArray, tMatrix, tList, tPtrList, and tMeshList). The linked-list classes in particular are extensively used throughout the code. The tMeshList class is used to store mesh nodes and directed edges. It is inherited from tList, and it divides a list into two parts: an “active” portion containing nodes and edges in the interior of the mesh, and a “boundary” portion containing boundary nodes or “no flow” edges (edges connected to at least one closed boundary node). Data on the linked lists are accessed using a separate “iterator” class that can move up or down along a list to retrieving data items. Because of the extensive use of iterators, the syntax of loops in the CHILD code may look unusual to those accustomed to more traditional programming style. A typical example of loop syntax is:
tMeshList<tLNode> nodeList = meshPtr->getNodeList();
tMeshListIter<tLNode> nodIter( nodeList );
tLNode *cn;
for(cn=nodIter.FirstP();nodIter.IsActive();cn=nodIter.NextP())
{ ... }
In this example, the loop sweeps through the “active” portion of the list of nodes from top to bottom. At each step, the position of the iterator on the list is updated through the call to nodIter.NextP(), which returns a pointer to the mesh node that is stored at the current position on the list.
Summary of CHILD classes and files organized by functional category
|
FUNCTION / CATEGORY |
CLASS(ES) |
FILE(S) |
NOTES |
|
Initialization and main loop |
- |
main.cpp |
|
|
Mesh handling |
tMesh tNode tEdge tTriangle tListInputData - |
tMesh.h/.cpp meshElements.h/.cpp “ “ tListInputData.h/.cpp globalFns.h/.cpp |
-> master mesh class
-> reads mesh input files -> geometry functions |
|
Landscape-specific node data and methods |
tNode : tLNode tLayer tChannel tMeander tSurface tRegolith tBedrock |
tLNode.h/.cpp “ “ “ “ “ “ |
-> represents one node -> represents one layer -> embedded in tLNode “ “ “ “ |
|
Output |
tOutput tOutput : tLOutput |
tOutput.h/.cpp “ |
-> generic mesh output -> CHILD-specific output |
|
Storms and rainfall |
tStorm |
tStorm.h/.cpp |
|
|
Runoff, flow routing, and hydraulic geometry |
tStreamNet tInlet |
tStreamNet.h/.cpp “ |
(node-specific data stored in tLNode and tChannel) |
|
Channel and hillslope erosion, transport, and deposition |
tErosion tBedErodePwrLaw tSedTransPwrLaw tSedTransWilcock tEquilibCheck |
erosion.h/.cpp “ “ “ “ |
-> master erosion class -> bedrock erosion class -> sed transport class -> alternate transpt. class -> not presently used |
|
Stream meandering |
tStreamMeander tReach - |
tStreamMeander.h/.cpp tReach.h/.cpp meander.f |
-> handles mesh interface -> constructs 1D reaches -> 1D model (FORTRAN) |
|
Layer handling: intialization, updating, interpolation, age and exposure age tracking |
tLayer tNode : tLNode tMesh |
tLNode.h/.cpp “ tMesh.h/.cpp |
-> one layer -> tLNode has layer fns -> layer input done in tMesh |
|
Floodplain overbank deposition |
tFloodplain |
tFloodplain.h/.cpp |
|
|
Eolian deposition |
tEolian |
tEolian.h/.cpp |
|
|
Tectonics and baselevel change |
tUplift |
tUplift.h/.cpp |
|
|
General simulation utilities |
tInputFile tRunTimer |
tInputFile.h/.cpp tRunTimer.h/.cpp |
-> manages main input file -> tracks/updates run time |
|
Container utilities |
tArray tMatrix tList tListNode tListIter tPtrList tPtrListNode tPtrListIter tList : tMeshList tListIter:tMeshListIter |
tArray.h/.cpp tMatrix.h/.cpp tList.h/.cpp “ “ tPtrList.h/.cpp “ “ tMeshList.h/.cpp “ |
-> 1D arrays -> 2D arrays -> linked lists -> element on list -> list iterator -> list of pointers
-> list of mesh elems |
|
Miscellaneous math functions |
- - Predicates |
mathUtil.h/.cpp globalFns.h/.cpp predicates.h/.cpp |
-> includes rand # gen
-> public domain code by J.R.Shewchuk, Carnegie Mellon Univ. |
|
Error handling |
- |
errors.h/.cpp |
|
|
General header data: global inclusions, declarations, and definitions |
- |
Classes.h Definitions.h Inclusions.h |
|
Chain of Events in Response to Node Movement
CHILD’s dynamic remeshing capabilities are rather complex. To illustrate how dynamic remeshing works, this section outlines the sequence of function calls in response to addition of a single node to the mesh.
The calling function is assumed to “pre-move” the nodes by setting their (newx, newy) values. It then calls MoveNodes, which initiates the sequence of function calls shown below. Here “g” denotes a global function, <> denotes a virtual function that may be overridden, and () denotes a conditional call (i.e., one which only happens if a certain condition is met).


This is the legacy version of PostIT
This version offers limited functionality
Go to https://postit.korfdegidts.nl/legacy/organisation-name to view your
organisations page
For the full version of PostIT, please use one of the browsers shown below and enable
JavaScript
How do i enable JavaScript?


Many readers have made a new year’s resolution to read more diversely by making a concerted effort to pick up more books by non-white authors, thereby being more inclusive, discovering different voices, viewpoints and ideas, and learning about unfamiliar experiences and cultures. We think that the longlist for the inaugural Jhalak Prize will prove an excellent place to start.
The new prize, co-founded by authors Sunny Singh and Nikesh Shukla and run in conjunction with Media Diversified and with support from the Authors’ Club and an anonymous benefactor, aims to champion British BAME writers who have been “often ignored, overlooked and erased.” It encompasses all genres, as well as traditionally- and self-published authors.
The Jhalak Prize shortlist will be announced on 6 February 2017. The winner, who wins a prize of £1,000, will be announced during the Bare Lit Festival in March 2017. The Prize will be judged by Sunny Singh, YA author Catherine Johnson, author and poet Alex Wheatle MBE, poet and broadcaster Musa Okwonga and author Yvette Edwards.
Chasing The Stars, by Malorie Blackman
“Olivia and her twin brother Aidan are heading alone back to Earth following the virus that wiped out the rest of their crew, and their family, in its entirety. Nathan is part of a community heading in the opposite direction. But on their journey, Nathan’s ship is attacked and most of the community killed. Only a few survive. Their lives unexpectedly collided, Nathan and Olivia are instantly attracted to each other, deeply, head-over-heels - like nothing they have ever experienced. But not everyone is pleased. Surrounded by rumours, deception, even murder, is it possible to live out a happy ever after?”
Malorie Blackman used to be the Children’s Laureate and her books are very popular, so this YA sci-fi title is bound to be a strong contender.
Harmless Like You, by Rowan Hisayo Buchanan
“‘Harmless Like You’ is set across New York, Berlin and Connecticut, following the stories of Yuki Oyama, a Japanese girl fighting to make it as an artist, and Yuki’s son Jay who, as an adult in the present day, is forced to confront his mother who abandoned him when he was only two years old.”
The Guardian says this is an “at times harrowing” novel, “which examines inherited identity.”
Nina Is Not OK, by Shappi Khorsandi
“Nina does not have a drinking problem. She likes a drink, sure. But what 17-year-old doesn’t? Nina’s mum isn’t so sure. But she’s busy with her new husband and five-year-old Katie. And Nina’s almost an adult after all. And if Nina sometimes wakes up with little memory of what happened the night before, then her friends are all too happy to fill in the blanks. Nina’s drunken exploits are the stuff of college legend. But then one dark Sunday morning, even her friends can’t help piece together Saturday night. All Nina feels is a deep sense of shame, that something very bad has happened to her.”
Comedian Shappi Khorsandi has withdrawn from the longlist, but we still think her book looks well worth a read.
Orangeboy, by Patrice Lawrence
“Not cool enough, not clever enough, not street enough for anyone to notice me. I was the kid people looked straight through. Not any more. Not since Mr Orange.
“Sixteen-year-old Marlon has made his mum a promise - he’ll never follow his big brother, Andre, down the wrong path. So far, it’s been easy, but when a date ends in tragedy, Marlon finds himself hunted. They’re after the mysterious Mr Orange, and they’re going to use Marlon to get to him. Marlon’s out of choices - can he become the person he never wanted to be, to protect everyone he loves?”
Orangeboy was shortlisted for the Costa Book Awards, Children’s Book category. The Costa judges described it as “a gripping topical thriller by a fresh new voice in children’s fiction.”
Augustown, by Kei Miller
“Ma Taffy may be blind but she sees everything. So when her great-nephew Kaia comes home from school in tears, what she senses sends a deep fear through her. While they wait for his mama to come home from work, Ma Taffy recalls the story of the flying preacherman and a great thing that did not happen.
“A poor suburban sprawl in the Jamaican heartland, Augustown is a place where many things that should happen don’t, and plenty of things that shouldn’t happen do. For the story of Kaia leads back to another momentous day in Jamaican history, the birth of the Rastafari and the desire for a better life. ‘Augustown’ is a novel about inequality and aspiration, memory and myth, and the connections between people which can transcend these things but not always change them.”
According to The Guardian, “The social divisions of Jamaican society are explored through vivid vignettes in this atmospheric first novel … The idea of flight, spiritual, intellectual and physical, runs through the novel like a river.”
The Girl of Ink & Stars, by Kiran Millwood Hargrave
“When Isabella’s friend disappears, she volunteers to guide the search party. As a mapmaker’s daughter, she’s equipped with elaborate ink maps and knowledge of the stars, eager to navigate the island’s forgotten heart. But beneath the mountains a legendary fire demon awakens, and her journey is fraught with danger.”
This novel for young teens incorporates myths, magic and monsters.
A Rising Man, by Abir Mukherjee
“Captain Sam Wyndham, former Scotland Yard detective, is a new arrival to Calcutta. Desperately seeking a fresh start after his experiences during the Great War, Wyndham has been recruited to head up a new post in the police force. But with barely a moment to acclimatise to his new life or to deal with the ghosts which still haunt him, Wyndham is caught up in a murder investigation that will take him into the dark underbelly of the British Raj.
“A senior official has been murdered, and a note left in his mouth warns the British to quit India: or else. With rising political dissent and the stability of the Raj under threat, Wyndham and his two new colleagues – arrogant Inspector Digby and British-educated, but Indian-born Sergeant Banerjee, one of the few Indians to be recruited into the new CID – embark on an investigation that will take them from the luxurious parlours of wealthy British traders to the seedy opium dens of the city.”
The Daily Telegraph selected A Rising Man as one of its Books of 2016, describing it as “a lip-smacking and highly entertaining mystery, set in a Calcutta so convincingly evoked that readers will find sweat bursting from their foreheads.”
Speak Gigantular, by Irenosen Okojie
“A startling debut short story collection from one of Britain’s rising literary stars. These stories are captivating, erotic, enigmatic and disturbing. Irenosen Okojie’s gift is in her understated humour, her light touch, her razor-sharp assessment of the best and worst of humankind, and her unflinching gaze into the darkest corners of the human experience.
“In these stories Okojie creates worlds where lovelorn aliens abduct innocent coffee shop waitresses, where the London Underground is inhabited by the ghosts of errant Londoners caught between here and the hereafter, where insensitive men cheat on their mistresses and can only muster enough interest to fall for one-dimensional poster girls and where brave young women attempt to be erotically empowered at their own peril. Sexy, serious and at times downright disturbing, this brilliant collection sizzles with originality.”
According to The Guardian, “inner demons surface with surprising results in these explorations of alienation and mental deterioration.”
Black and British: a forgotten history, by David Olusoga
“David Olusoga’s ‘Black and British’ is a rich and revealing exploration of the extraordinarily long relationship between the British Isles and the people of Africa. Drawing on new genetic and genealogical research, original records, expert testimony and contemporary interviews, Black and British reaches back to Roman Britain, the medieval imagination and Shakespeare’s Othello. Unflinching, confronting taboos and revealing hitherto unknown scandals, Olusoga describes how black and white Britons have been intimately entwined for centuries.”
David Olusoga is a Bafta-award winning broadcaster and historian, and this book was tied in with a major BBC TV series. The Guardian described Black and British: a forgotten history as a “radical reappraisal of the parameters of history and the relationship between Britain and Africa.”
In the Bonesetter’s Waiting-room: travels through Indian medicine, by Aarathi Prasad
“India defies definition, and the story of medicine in India is similarly rich and complex: shaped by unique challenges and opportunities, uniting cutting-edge technological developments with ancient cultural traditions, fuelled by political changes which transformed the lives of millions and moulded by the energy of forceful individuals. Here, Aarathi Prasad investigates how Indian medicine came to be the way it is. Her travels will take her to bonesetter clinics in Jaipur and Hyderabad and the waiting-rooms of Bollywood’s best plastic surgeons, and introduce her to traditional healers as well as the world-beating heart surgeon who is revolutionising treatment of the poor around the globe.”
This Radio 4 Book of the Week looks both back at the past of Indian medicine, and forward to the challenges it will face in the future.
The Bone Readers, by Jacob Ross
“When Michael (Digger) Digson is recruited into DS Chilman’s new plainclothes squad in the small Caribbean island of Camaho he brings his own mission to discover who amongst a renegade police squad killed his mother in a political demonstration.
“Sent to London to train in forensics, Digger becomes enmeshed in Chilman’s obsession with a cold case, the disappearance of a young man whose mother is sure has been murdered. But along with his new skill in forensics, Digger makes rich use of the cultural knowledge he has gained from the Fire Baptist grandmother who brought him up, another kind of reader of bones.
“And when the enigmatic Miss K. Stanislaus joins him on the case, Digger finds that his science is more than outmatched by her observational skills. Together, they find themselves dragged into a world of secrets, disappearances and danger that demands every ounce of their brains, persistence and courage to survive.”
The first in a new crime series, according to The Guardian, “The Bone Readers is a page-turner, but its insights and language are equally testament to a literary novel of impressive depth and acuity.”
Another Day in the Death of America, by Gary Younge
“On Saturday 23 November 2013 ten children were shot dead. The youngest was nine; the oldest was nineteen. They fell in suburbs, hamlets and ghettos. None made the national news. It was just another day in the death of America, where on average seven children and teens are killed by guns daily. Younge picked this day at random, searched for their families and tells their stories. What emerges is a sobering, searing, portrait of youth and guns in contemporary America.”
Another Radio 4 Book of the Week, A Day in the Death of America is described by the Financial Times as “a book that feels both timely and utterly, hopelessly timeless.”


Pre
order
now
Days
Hours
Minutes
Seconds
The electric engine ensures the existence of our future.
Why would we otherwise bring the world together, if there is no world tomorrow?
Ransom Eli Olds
Whats your color gonna be?
Mars
Tellus
Space
Milky way
It’s not just a car. It’s an expression of you and your style. Therefore we created accessories that can help you show the world just how cool you are. Take the car straight from work to adventure.
All you need will fit in the bags. And for good’s sake, don’t forget your coffee.


EXAMPLES
Lifecycle
1) Description
The Lifecycle example is used to illustrate the different lifecycle states of the sample
and the instance.
- The SampleState applies to an individual sample and is either READ or NOT_READ,
depending on whether the sample has been accessed from this reader before.
- The ViewState applies to an individual instance (possibly containing of 1 or
more samples)
and is either NEW or NOT_NEW, depending on whether a sample belonging to the same
instance
has been accessed from this reader before.
- The InstanceState applies to an individual instance (possibly containing of 1 or
more samples) and is either
- ALIVE
- NOT_ALIVE_DISPOSED
- NOT_ALIVE_NO_WRITERS
depending on whether the
Lifecycle publisher has still registered the instance, has disposed it or has
unregistered it.
The autodispose_unregistered_instances flag of the Lifecycle publisher determines whether an
invocation of unregister_instance on this publisher will cause the instance to become disposed.
2) Design
It consists of 4 units:
- CheckStatus: provides return status checking
- DDSEntitiesManager: implements a class providing operations to setup DCPS entities (creation, deletion)
- LifecyclePublisher: implements the publisher's main (uses DDSEntitiesManager)
- LifecycleSubscriber: implements the subscriber's main (uses DDSEntitiesManager)
3) Scenario
The Publisher and the Subscriber processes communicate using the following topic:
struct Msg
{
long userID; // User ID
string message; // content;
string writerStates; // the different state of the writer
};
The writerStates field contains the different states of the writer :
- "SAMPLE_SENT -> INSTANCE_DISPOSED -> DATAWRITER_DELETED"
- "SAMPLE_SENT -> INSTANCE_UNREGISTERED -> DATAWRITER_DELETED"
- "SAMPLE_SENT -> DATAWRITER_DELETED"
usage : LifecyclePublisher [autodispose_flag] [writer_action]
autodispose_flag = false | true
writer_action = dispose | unregister | stoppub
|
The LifecyclePublisher : Depending on the user's choice as the second parameter passed on command line (dispose | unregister | stoppub),
it will either:
- Case 1 : second parameter passed on command line "dispose"
- publish the Msg Sample.
- Dispose the instance.
- Delete the DataWriter.
- Stop the Subscriber.
- Case 2 : second parameter passed on command line "unregister"
- publish the Msg Sample.
- Unregister the instance.
- Delete the DataWriter.
- Stop the Subscriber.
- Case 3 : second parameter passed on command line "stoppub"
- publish the Msg Sample.
- Delete the DataWriter.
- Stop the Subscriber.
For any of those actions, it will output on its console:
- "SAMPLE SENT"
- "INSTANCE DISPOSED"
- "INSTANCE UNREGISTERED"
- "DATAWRITER DELETED"
- "STOPPING SUBSCRIBER"
|
The LifecycleSubscriber :
- Reads the (same unique) Msg Topic Sample.
- Display the Sample's information:
- The 2 fields of Msg Topic : message and writerStates
- The States :
- The "sample_state", possible values are:
- "NOT_READ_SAMPLE_STATE"
- "READ_SAMPLE_STATE"
- The "view_state", possible values are:
- "NEW_VIEW_STATE"
- "NOT_NEW_VIEW_STATE"
- The "instance_state", possible values are
- "ALIVE_INSTANCE_STATE"
- "NOT_ALIVE_DISPOSED_INSTANCE_STATE"
- "NOT_ALIVE_NO_WRITERS"
|
Running of examples in Standalone Mode
Running the examples in a Posix environment
Environment Setup
Let's call OpenSplice_install_dir the OpenSplice installation directory.
The OpenSplice environment variables must be set in order for the examples to build/run correctly.
To do this, open a terminal and source the "OpenSplice_install_dir/release.com" script supplied with the distribution.
C and C++ Executables
Building the examples is described on the Summary page
Two executables and a library are generated in the standalone directory when the example is built:
For C++
- sacpp_lifecycle_pub
- sacpp_lifecycle_sub
- libsacpp_lifecycle_types.so
For C
- sac_lifecycle_pub
- sac_lifecycle_sub
- libsac_lifecycle_types.so
Java executables
Building the examples is described on the Summary page
Three jars are generated in the java\standalone or java5 directory when the example is built:
For Java
- saj_lifecycle_sub.jar
- saj_lifecycle_pub.jar
- saj_lifecycle_types.jar
For Java5
- java5_Lifecycle_sub.jar
- java5_Lifecycle_pub.jar
ISO C++ 2 Executables
Building the examples is described on the Summary page
Two executables are generated in the isocpp2 directory when the example is built:
Running the example
Ensure that the environment for OpenSplice is set up correctly as described above for each new terminal used.
It is recommended that you run the subscriber and publisher in separate terminals to avoid mixing the output
Running in single process (heap memory) configuration : the application starts OpenSplice middleware
- OpenSplice is deployed in this mode by default.
- The OpenSplice daemon should not be started manually. Instead the OpenSplice middleware and optional services are implicitly started by the single process applications as required
- Open 2 terminals. Set up the environment and go to the example directory as described above
Running in multiple process shared memory configuration
To enable deployment in this mode, an OpenSplice configuration file must be selected that has shared memory support e.g. one of the ospl_shmem xml configuration files found in the OpenSplice_install_dir/etc/config directory.
- Open 2 terminals. In each terminal:
- Setup the environment and go to the example directory as described above
- Set the required configuration file e.g. OSPL_URI=file://$OSPL_HOME/etc/config/ospl_shmem_ddsi.xml
- Start the OpenSplice daemon. You can do this by typing ospl start
Starting the subscriber and publisher
- In the first terminal start the subscriber by running either
- sac_lifecycle_sub for C
- sacpp_lifecycle_sub for C++
- java -jar saj_lifecycle_sub.jar for Java
- java -jar sub/java5_Lifecycle_sub.jar for Java5
- subscriber for ISO C++ 2
- In the second terminal start the publisher by running either
- sac_lifecycle_pub [autodispose_flag] [writer_action] for C
- sacpp_lifecycle_pub [autodispose_flag] [writer_action] for C++
- java -jar saj_lifecycle_pub.jar [autodispose_flag] [writer_action] for Java
- java -jar pub/java5_Lifecycle_pub.jar [autodispose_flag] [writer_action] for Java5
- publisher [autodispose_flag] [writer_action] for ISO C++ 2
usage : LifecycleDataPublisher [autodispose_flag] [writer_action]
Where
. autodispose_flag = false | true
. writer_action = dispose | unregister | stoppub
Running C/C++/C#/Java examples on Windows
Environment Setup
Let's call OpenSplice_install_dir the OpenSplice installation directory.
The OpenSplice environment variables must be set in order for the examples to run correctly.
To do this open an OpenSplice Command Prompt which will set up the environment variables for OpenSplice automatically. The OpenSplice Command Prompt can be selected from the start menu. Alternatively, open a windows Command Prompt and execute the "OpenSplice_install_dir\release.bat" batch script supplied with the distribution.
C/C++/C# Executables
Building the examples is described on the Summary page
Two executables are generated in the standalone directory when the example is built:
For C
- sac_lifecycle_sub.exe
- sac_lifecycle_pub.exe
For C++
- sacpp_lifecycle_sub.exe
- sacpp_lifecycle_pub.exe
For C#
- sacs_lifecycle_sub.exe
- sacs_lifecycle_pub.exe
Java Executables
Building the examples is described on the Summary page
Three jars are generated in the java\standalone or java5 directory when the example is built:
For Java
- saj_lifecycle_sub.jar
- saj_lifecycle_pub.jar
- saj_lifecycle_types.jar
For Java5
- java5_Lifecycle_sub.jar
- java5_Lifecycle_pub.jar
ISO C++ 2 Executables
Building the examples is described on the Summary page
Two executables are generated in the isocpp2 directory when the example is built:
Running the C/C++/C#/Java Examples
Ensure that the environment for OpenSplice is set up correctly as described above for each new command prompt used.
The following steps describe how to run the examples:
Running in single process (heap memory) configuration : the application starts OpenSplice middleware
- OpenSplice is deployed in this mode by default.
- The OpenSplice daemon should not be started manually. Instead the OpenSplice middleware and optional services are implicitly started by the single process applications as required
- Open 2 OpenSplice Command Prompts and go to the example directory as described above
Running in multiple process shared memory configuration
To enable deployment in this mode, an OpenSplice configuration file must be selected that has shared memory support e.g. one of the ospl_shmem xml configuration files found in the OpenSplice_install_dir\etc\config directory.
- Open 2 OpenSplice Command Prompts. In each window:
- Go to the example directory as described above
- Set the required configuraton file e.g. set OSPL_URI=file://%OSPL_HOME%\etc\config\ospl_shmem_ddsi.xml
- Start the OpenSplice daemon. You can do this by typing ospl start
Starting the subscriber and publisher
- In the first terminal start the subscriber by running either
- sac_lifecycle_sub for C
- sacpp_lifecycle_sub for C++
- sacs_lifecycle_sub for C#
- java -jar saj_lifecycle_sub.jar for Java
- java -jar sub/java5_Lifecycle_sub.jar for Java5
- subscriber for ISO C++ 2
- In the second terminal start the publisher by running either
- sac_lifecycle_pub [autodispose_flag] [writer_action] for C
- sacpp_lifecycle_pub [autodispose_flag] [writer_action] for C++
- sacs_lifecycle_pub [autodispose_flag] [writer_action] for C#
- java -jar saj_lifecycle_pub.jar [autodispose_flag] [writer_action] for Java
- java -jar pub/java5_Lifecycle_pub.jar [autodispose_flag] [writer_action] for Java5
- publisher [autodispose_flag] [writer_action] for ISO C++ 2
usage : LifecycleDataPublisher [autodispose_flag] [writer_action]
Where
. autodispose_flag = false | true
. writer_action = dispose | unregister | stoppub


+++
title = "SuperEdge"
linkTitle = "SuperEdge"
+++
{{< blocks/cover image_anchor="top" height="" color="white" >}}
{{< /blocks/cover >}}
{{% blocks/lead color="primary" %}}
SuperEdge is an open-source container management system for edge computing. It extends native Kubernetes to the edge in a non-intrusive way.
{{% /blocks/lead %}}
{{< blocks/section color="gray-dark" >}}
Key Features
{{% blocks/feature icon="fas fa-cloud" title="Cloud Native" %}}
Supports all native Kubernetes APIs and resources.
{{% /blocks/feature %}}
{{% blocks/feature icon="fas fa-cogs" title="Edge Autonomy" %}}
L3 edge autonomy for unstable network between cloud and edge hosts.
{{% /blocks/feature %}}
{{% blocks/feature icon="fas fa-bell" title="Distributed Health Check" url="/docs/reference/edge-health/" %}}
Build-in edge-side health monitoring for more accurate health-check to maintain edge autonomy.
{{% /blocks/feature %}}
{{% blocks/feature icon="fas fa-object-group" title="ServiceGroup" url="/docs/components/servicegroup/" %}}
Provides new workload unit to orchestrate container application in a closed-looped network by region. Canary deployment is supported.
{{% /blocks/feature %}}
{{% blocks/feature icon="fas fa-exchange-alt" title="Network Tunneling" url="/docs/components/tunnel/" %}}
Tunnel between kube-apiserver on the cloud and kubelet at the edge.
{{% /blocks/feature %}}
{{% blocks/feature icon="fas fa-tools" title="Edgeadm Installer" url="/docs/installation/how-to-bootstrap-an-edge-kubernetes-cluster/" %}}
Provides edgeadm to bootstrap an edge Kubernetes cluster.
{{% /blocks/feature %}}
{{< /blocks/section >}}
{{< blocks/section >}}
{{% blocks/feature icon="fas fa-comments" title="Join community forum!" %}}
Visit [SuperEdge Forum](https://groups.google.com/g/superedge) for announcement and technical Discussions.
{{% /blocks/feature %}}
{{% blocks/feature icon="fab fa-github" title="Contributions are welcome!" %}}
Create a [Pull Request](https://github.com/superedge/superedge/pulls) on GitHub to get started.
New users are always welcome!
{{% /blocks/feature %}}
{{% blocks/feature icon="fab fa-slack" title="Join us on Slack!" %}}
Join [SuperEdge Slack Community](https://join.slack.com/t/superedge-workspace/shared_invite/zt-qclaoruf-pj8iKImmJnaJpfrUJBNleg)
for live conversation and quick questions.
{{% /blocks/feature %}}
{{< /blocks/section >}}
{{< blocks/section background-color="#60A1E3">}}
Created By
Co-Launching Members
{{< /blocks/section >}}


CLIENT: Standard Goods, a lifestyle boutique specializing in product made in North America located in Capitol Hill, Seattle, WA.
ROLE: Information Architect, UX Designer, and Researcher.
TOOLS: Omnigraffle, Optimal Card Sort, Pen & Paper
PROJECT SCOPE: Redesign the desktop e-commerce experience.
DURATION: 2 Week Sprint


Node image generation module based on sharp and inspired by Drupal's image styles.
npm install imagecache-sharp
import presets from './presets';
import ImageCache from 'imagecache-sharp';
const imagecache = new ImageCache(presets);
imagecache.render('./in.png', 'preset_one', (err, sharpInstance) => {
if (err) {
throw err;
}
// Save the image
sharpInstance.toFile('out.png', (err, info) => {
// ...
});
// Get a buffer, stream it etc
sharpInstance.toBuffer((err, data, info) => {
// ...
});
})
The render callback returns a sharp
instance which can be used in various ways for outputting the final image. For a list of options see sharp's documentation.
{
preset_one: {
presetname: 'preset_one',
actions: [
{
action: 'scale_and_crop',
config: {
width: 100,
height: 300
}
},
{
action: 'define_canvas',
config: {
color: '#333333',
width: 400,
height: 400,
xpos: 'center',
ypos: 'center'
}
}
]
},
preset_two: {
presetname: 'preset_two',
actions: [
{
action: 'scale_and_crop',
config: {
width: 70,
height: 70,
}
}
]
}
}
Blurs the image.
Action name: blur
.
Configuration:
1
.Defines a new canvas and overlays the current image.
Action name: define_canvas
.
Configuration:
4
.Loads an image and overlays it on the current image.
Action name: file
.
Configuration:
north
, northeast
, east
, southeast
, south
, southwest
, west
, northwest
, center
and centre
. Defaults to center
.gravity
. Defaults to false
.false
.Flips the image on a given axis.
Action name: flip
.
Configuration:
y
.Apply a gamma correction to the image.
Action name: gamma
.
Configuration:
2.2
.Convert to 8-bit greyscale, 256 shades of grey.
Action name: greyscale
.
Produce the "negative" of the image.
Action name: negate
.
Enhance output image contrast by stretching its luminance to cover the full dynamic range.
Action name: normalize
.
Rotates the image based on the EXIF data or at a specified angle.
Action name: rotate
.
Configuration:
auto
which uses EXIF.Scales the image ignoring the aspect ratio.
Action name: scale
.
Configuration:
Scales and crops the image mantaining the aspect ratio.
Action name: scale_and_crop
.
Configuration:
north
, northeast
, east
, southeast
, south
, southwest
, west
, northwest
, center
and centre
. Defaults to center
.Sharpen the image.
Action name: sharpen
.
Configuration:
1
.1.0
.2.0
.Generated using TypeDoc


HTML5
- New elements (tags)
- article, header, footer, section
- command, detail, summary, nav
- These define the structure of an HTML document.
- HTML5 has new features including the ability to:
- Work offline
- Display video
- Draw on an HTML Canvas: Animation
- Drag and drop
HTML5
New elements (tags)
article, header, footer, section
command, detail, summary, nav
They define the structure of an HTML document.
HTML5 has new features including the ability to:
Work offline
Display video
Draw on an HTML Canvas: Animation
Drag and drop


Preparation time
less than 30 mins
Cooking time
30 mins to 1 hour
Serves
Serves 4
This simple chilli is a one-pot wonder, serve with rice for a filling meal on a budget.
Peel and chop the onion then peel and finely grate the garlic. Heat the oil in a heavy-based casserole dish over a medium-high heat, add the onions and garlic and fry for 5 minutes until soft.
Add the beef to the pan and fry for 5 minutes until browned. Add the chilli seasoning mix and a little of the stock, fry for 1 minute then add the tomato purée and and fry for a further minute. Add the and chopped tomatoes and stock and stir to combine, then add the ketchup. Simmer gently uncovered for 30 minutes, stirring occasionally.
Meanwhile bring a large pan of salted water to the boil, add the rice and cook for 25 minutes or according to the packet instructions.
Add the kidney beans to the chilli and cook for a further 2 minutes, until heated through. Season with salt and pepper and serve with the rice.


PING-PONG!
Welcome to
PING-PONG
! Enter a number, and see what happens! Numbers divisible by three will show "
ping
", numbers divisible by five will show "
pong
", and numbers divisible by 15 will show "
ping-pong
".
Input your number here:
Submit Your Number!
Here are your results for
:


class EventTrigger
once: (type, fn) ->
fn.once = true
@addEventListener(type, fn)
addEventListener: (type, fn) ->
(@events[type] ||= []).push(fn)
removeEventListener: (type, fn) ->
if group = @events[type]
if (index = group.indexOf(fn)) > -1
group.splice(index, 1)
triggerEvent: (type, a, b, c) ->
if group = @events[type]
for fn, index in group by -1
group.splice(index, 1) if fn.once
fn.call(@, a, b, c)
if @[method = 'on' + type]
return @[method](a, b, c)
dispatchEvent: (element, type, detail, bubbles, cancelable) ->
return unless @scope
(detail ||= {}).engine = @
element.dispatchEvent new CustomEvent(type, {detail,bubbles,cancelable})


IPL 2018 featured teams comprising of newly selected players. The selection process at the auction has improved vastly over the 10 years of IPL and this resulted in IPL 2018 being arguably the most closely fought season. However over the course of the tournament, it was evident that not all the teams were well balanced ultimately costing them places in the playoffs. This brings us to the possibility of building that all elusive perfect T20 team. Can we quantify the ...
This article aims to answer the above questions in an attempt to discover the formula to win a T20 competition. But how much can we rely on past numbers alone ? Beauty of sports lies in its uncertainity. On any day, any given player can completely overcome all the odds of performing and win the game for his team. That is the reason we all watch sports and the resulting adrenaline rush. Nevertheless it will be interesting to see how far can past numbers tell us the present story and predict the future outcomes.
Can we put together a team which will maximise the chances of winning ? If so what type of players should constitute the batting and bowling units ? How many and what type of allrounders should be included ? Let us the try to answer these questions by studying the batting and bowling metrics of the T20 league champions from across the world.
We begin by looking at the batting chart of IPL 2018. The horizontal axis of this chart shows the average of the batsman whereas the vertical axis shows the strike-rate of the batsman. Using this chart, we can categorize the batsmen into roughly four types.
We can perform a similar analysis for bowlers by looking at the bowling chart of IPL 2018. The horizontal axis of this chart shows the economy rate of the bowler whereas the vertical axis shows the strike-rate of the bowler. Using this chart, we can categorize the bowlers into roughly four types.
Given a chance, all the teams would like to have their batting lineups filled with Ideals and no teams would want to have duds. But while it is likely any player could be an Ideal during his/her purple patch, it is very unlikely that the entire lineup ends up being Ideal during a season. This warrants us to have a team with combinations of Accumulators, Strikers and Ideals. But how many of these different players does a team need ? Too many Accumulators in the top order often results in sub 200 score even with good starts whereas a team filled with Strikers will invariably have scores either around the 200 mark or have batting collapses with scores around the 140 runs mark. Similarly for bowling, the question is how many of each kind of these bowlers does a team need in order to increase its chances of winning ?. So how many Accumulators and Strikers does a team really need ? A look at the batting and bowling metrics of few of the T20 league champions during the 2018 season provides an insight for this elusive winning combination.
Based on this, we can deduce that a winning T20 team will need __ Strikers, __ Accumulators and hope that one of the batsman ends up being an Ideal. Similarly for bowlers, we can deduce that a winning T20 team will need __ Strikers, __ Containers and hope that one of the bowlers ends up being an Ideal. Such winning combinations are clearly missing in the batting and bowling charts of the bottom ranked teams as shown in the following charts.
Explore the interactive graph below to see the batting and bowling metrics of your team. You can analyze what your favourite team needs in order to have a better shot at next year's title.
| Top order aggressors | |||
|---|---|---|---|
| Batsman | Runs | Strike Rate | League |
| Arun Karthik | 319 | 158 | TNPL |
| Anirudha | 184 | 140 | TNPL |
| Shahrukh Khan | 293 | 140 | TNPL |
| Kaushik Gandhi | 239 | 150 | TNPL |
| Hari Nishanth | 250 | 150 | TNPL |
| Abhishek Reddy | 163 | 145 | KPL |
| UM Patel | 201 | 153 | SMAT |
| Middle order accumulators | |||
|---|---|---|---|
| Batsman | Runs | Strike Rate | League |
| S Dinesh | 190 | 138 | TNPL |
| N Jagadeesan | 348 | 130 | TNPL |
| Suresh Kumar | 218 | 132 | TNPL |
| Pavan Deshpande | 196 | 143 | KPL |
| Shoaib Manager | 157 | 141 | KPL |
| Chipli | 192 | 138 | KPL |
| KH Devdhar | 411 | 137 | SMAT |
| B Vivek Singh | 286 | 142 | SMAT |
| Death overs hitters | |||
|---|---|---|---|
| Batsman | Runs | Strike Rate | League |
| J Kousik | 167 | 148 | TNPL |
| Sathish | 220 | 193 | TNPL |
| R Vivek | 262 | 208 | TNPL |
| Powerplay strikers | |||
|---|---|---|---|
| Bowler | Wickets | Economy Rate | League |
| S Ajith Ram | 11 | 5.9 | TNPL |
| AA Sheth | 14 | 7.0 | SMAT |
| DG Pathania | 11 | 7.2 | SMAT |
| K Vignesh | 11 | 7.3 | SMAT |
| Middle order containers | |||
|---|---|---|---|
| Bowler | Wickets | Economy Rate | League |
| Chakravathi | 9 | 4.7 | TNPL |
| Rajkumar | 10 | 7.3 | TNPL |
| S Manigandan | 7 | 5.4 | TNPL |
| Mahesh Patel | 12 | 6.0 | KPL |
| Anand Doddamani | 8 | 5.9 | KPL |
| LI Meriwala | 13 | 8.0 | SMAT |
| S Bhati | 12 | 7.0 | SMAT |
| Death overs strikers | |||
|---|---|---|---|
| Bowler | Wickets | Economy Rate | League |
| Abhishek Tanwar | 14 | 9.0 | TNPL |
| Athisayaraj Davidson | 12 | 8.9 | TNPL |
| Vyshak V | 11 | 9.3 | KPL |
| RD Thakur | 11 | 8.3 | SMAT |
| T Natarajan | 11 | 4.7 | TNPL |
Note: Mathematical equations are avoided in this article. Contact the author for more details regarding the underlying mathematical models and the complete list of players with numbers and other information.


dojox.gfx: A Sample tooltip
Tooltip + Button
Canvas renderer doesn't implement event handling.
Button
Hover trigger / persists
Canvas renderer doesn't implement event handling.
MultiTip trigger 1
I do nothing
Trigger two
show this way
some text
Parent Attached Tooltip
Name:
Pass:
Canvas renderer doesn't implement event handling. (shared tooltip)


All the different ways and reasons your papers get cited in the scientific literature
29 Feb 2020I found this research paper on evolution very inspiring. In a way.
The well known scientific proverb says:
Don’t judge a book by its cover. Judge it by how often it’s cited!
Citing has become one of the most critical determinants of the quality of scientific pursuit. Originally citation metrics, a sub-field of bibliometrics, was applied to scientific magazines and was supposed to help librarians decide whether a given journal is worth subscribing to or not. But I will not write about this issue today! Of course, publishing houses circumvented this problem, for example, by selling subscriptions in bundles of several titles, where some are important in their field, and others are instead just recycling paper covered in paint. These days citometry has also affected individual researchers.
It has become important how often we release papers, as it is said in scientific jargon for getting published. And how often other researchers cite these papers. Such an approach has its advantages, and it also has severe drawbacks, and ways of hacking this system have been developed. But today it is not about that either!
In such a system, these citations count as points. Just like credits for taking classes by undergrad students. When cited, you get one point added to, e.g. your Hirsch index. In some countries, e.g. my homeland, Poland, it’s crucial for one’s career progress! But are all citations equal, like souls are equal in the eyes of the Creator? I distinguish several ways to be cited:
-
The ” founder effect” citation - you’ve discovered a previously unknown phenomenon of nature or the human mind. This discovery became the foundation of the citing party’s research. She devoted half of the introduction to discussing your results. Later she presents her findings in a critical comparison with yours. Kudos! But you get only one point to your Hirsch index.
-
“The method (wo)man” - you’ve come up with a new and better approach to the problem. The citing party uses your research method all the way in their work — still one point.
-
The “I need that number” citation - your paper provided a fine detail to the citing party work, e.g. she estimated how many insects are there in the world. And you happened to calculate all the flies sometime before. All of them. All.
-
The “it’s fresh stuff” citation - the citing party wants to show that he is in the avant-garde of research in his field, not an intellectual hermit. So he must first quote a couple of fairly recent papers that approached a similar topic. If you have published a paper in the last three years and its title in 30% consists of keywords relevant to the author, you can be sure that your article will be cited. Not necessarily read, though.
-
The “I also wear shoes” citation - the author wants to show that her research method is not chosen because the cosmic super-consciousness directly transmitted it to her brain, but because it is a widely accepted standard in her field. And you just published something relatively recently and used the same methods. Yup, a citation is coming! For example, We’ve used laboratory mice to study how mice choose cheese, which is the standard in mice research (Felis et al., 2019). I also have the impression that being named something easy to remember, like “John Smith” rather than, for example, “Aditya Govindamadipurusham” helps here a bit.
-
The “vacuum cleaner” citation - the citing party must demonstrate that he has read all the relevant literature on the subject, e.g. to his PhD advertiser.  It is enough that the title of your paper has at least two keywords relevant to the citing party.
-
Cited by mistake - some well-known physicist has the same surname as you, and the citation managing software suggested the wrong paper (yup, I know a case where a friend was cited by mistake in an unrelated field of research).
-
The ” sorry, but NO!” citation - the citing party was researching the same stuff but some time later. And he found you made a mistake. But you were the first one who got published! So it is he who has to exercise his writing skills to avoid saying that you can’t do science! But the points are still counting.
-
The “CitePal” system - the citing party is a good pal of yours. You’re citing each other’s work and some other amigos you work with. Just like that, regardless of the relevance of cited work. It’s called a citation farm and it’s a foul play. But don’t worry. Universities in many countries still don’t show a red card for that.
-
Anti-citation - you have been exposed as a fraud.  Have you considered filing a lawsuit?
I published the first version of this piece in Polish in now discontinued blog series run by “Obywatele Nauki”.