After discussing the principles of “teal organizations” as described by French author Frederic Laloux, I wanted to dive a bit deeper into one of these 3 pillars: the practice of wholeness. Indeed, there is no single definition of wholeness, let alone a set of instructions that can be applied to all and to all organizations. So I went to see Dimitri and Marie-Pierre, both leaders of organizations that want to be as living and evolutive as possible, and who practice wholeness on a daily basis, to discuss the topic. In this article, I share with you the lessons I learned.
Why practice wholeness in an organization? What are the conditions to test it in a safe way? What are the difficulties? What rituals can be used to practice wholeness with your team? These are some of the questions I had the opportunity to discuss with Dimitri, founder of Scholanova, and Marie-Pierre, co-founder of Ze.game and France Apprenante. To know more about my inspirers, go to the bottom of the article.
Defining “wholeness”
Frederic Laloux defines “wholeness” as being fully oneself in the workplace and letting go of the masks – which I tend to agree on. But could we go further?
Under the word “wholeness”, Dimitri puts the principle of non-duality, that is to say, the fact that all beings on our planet are connected to each other, like the leaves of a tree: each one is unique and nonsingular at the same time, and none could live without the others. This is what carries him through his daily life, even if Dimitri admits that he would not necessarily use this definition in an organization.
For Marie-Pierre, the principle of “wholeness” underlies the ability to be aligned head-heart-guts, to express what we think, what we feel, our aspirations, and our proposals inside the organization. This implies having the confidence that you can test, learn, and make mistakes, without being punished for them. This is actually one of the critical elements a well-functioning team must possess according to Google’s Aristote project: “Psychological safety, meaning the ability to express oneself and take risks without being rebuked by a leader.”
As you see, the notion of wholeness can unfold many ideas and principles according to the person you talk to. If you want to implement wholeness as a core value of your organization, the first piece of advice I would give you is to take the time to collectively define what you mean by wholeness.
Objectives and conditions to wholeness
Marie-Pierre shared the trigger for adopting wholeness rituals in her organizations: “Over the years, we have realized that when relationships are nurtured, projects roll on. This is what we call the “relationship-first” principle. On the contrary, when emotions are not processed, collaboration is affected.” The first step consists of identifying the personal issues of the participants in a project – our fears, emotions, and stakes – to provide transparency, then applying the rules set collectively. “A manager is all the more inspiring when he is human, when he shows his emotions.”
Marie-Pierre continues: “wholeness requires defining and implementing a security framework that allows progress, experiments, and mistakes.” Ideally, this framework should be co-created with all the members of the group to reflect their sensibilities and needs to share who they are and take risks. This is actually the main objective of Ze.game, the serious game that Marie-Pierre co-founded in order to help organizations and groups of people develop soft skills. Ze.game is the result of the question ”What mechanisms help individuals learn to learn?” and aims at helping people to become the hero of their own life.
For Dimitri, the idea behind the principle of wholeness is to reach some kind of flow between imperfect human beings. But how can we reach these types of magical moments? “Two conditions are necessary to reach the flow: first, to have already lived it or to believe it can happen. And second, be aware that all that prevents me from reaching the flow is my ego”.
How can we bring awareness to the pitfalls of ego? Individually, one can work on themselves to be aware of their weaknesses and how they interact with other people. As a group, defining what wholeness is for us and why it is important allows us to perceive the group in a more human way, in order to live better with each other and to obtain better results. The collective and the people unfold.
Examples of rituals that foster wholeness
Both Marie-Pierre and Dimitri shared many different rituals that can be used and adapted to the context of the organization:
Group practices
According to William Shultz’s theory “The Human Element”, for a group to function well, people need to feel included and competent, and the group needs to create a safe framework for people to open up and share their flaws, needs, or potential sources of stress. These practices can participate in creating this kind of space:
- defining a covenant pact (that can be updated in the course of a project) so that everyone feels good about being part of a team – including confidentiality so that everyone can open up about their fears and weaknesses in complete serenity
- a systematic inclusion at the beginning of a meeting – for instance, each member can share what they are afraid of and what they need
- a personal introspection (shared with the team) that allows each person to clarify what he or she benefits from being there and what he or she wants to progress on in order to flourish: what I dream of, what are my resources to achieve this dream, what I am afraid of, what I need to progress on
- a moment of listening or free exchange without agenda (for example at coffee time)
- share & care lunches: a weekly moment to share with the group your challenges and successes of the last few weeks and the weeks to come, on a personal and professional level
- a two-day workshop including business reflections and strategic work on the organization, but also personal listening, bodywork, meditation…
- regular feedback sessions, to learn how to give and receive feedback, to be able to read one’s emotions and express them without violence.
Training and practices
Everyone’s capacity to connect to each other and the world can be developed through practice and training: listening skills, emotional life, mental models, intuition, creativity, body intelligence, … This can take the form of online or external training, mutual aid circles (such as co-development) or themed evenings (meditation, non-violent communication, …).
Deeper individual work
Of course, practicing wholeness in the workplace requires deeper individual work as well, in order to feel at ease with one’s feelings and human traits. One must choose the right path for him or her. For instance, Dimitri recommends approaches inspired by the non-dualistic paths of the great traditions such as Advaita Vedanta or Kashmir Shaivism.
“Welcome the totality of your experience, without interpretation, judgment, comparison, or conclusion. Just stay with the facts. Let them unfold.” Francis Lucille
Difficulties and limits to wholeness practices
All seems to go well in the best of worlds, yet wholeness can sometimes be hard to achieve seamlessly. The need to be profitable can put obstacles in the way of organizations. Likewise, we are not equal in the way we conceive and implement wholeness, and time can be the key to earning the trust of a group of people. As Dimitri says, “you don’t grow a plant by pulling at the leaves”. It’s easy to blame others, but usually, the limiting factor is yourself.
In the end, I’m convinced of one thing: wholeness is the key to the future of work because a company must be the place where everyone can develop, both personally and professionally.
Dimitri Dagot is an innovative explorer who’s been through many work changes: entrepreneurship, teaching innovation, leadership… In 2014, he created the Schola Nova school, a Social and Solidarity Economy project that aims to integrate young people into the workforce in a positive and hopeful way through work-study programs. During his experiences, he has had the opportunity to test different modes of organization. He is inspired by Peter Senge’s learning organization and Oto Scharmer’s Theory U.
Marie-Pierre Dequier is the co-founder of Ze.game, a serious game that helps transform organizations through developing collaborators’ soft skills: communication, collaboration, critical thinking, creativity, and mind-body alignment. She also co-founded France Apprenante, a collective of players in the fields of support, education, learning, innovation, digital, and training who want to better support the transformation of territories and companies. She is very inspired by Frederic Laloux’s writings. What motivates her is to give everyone the means to emancipate themselves from limiting beliefs.
Header photo by Erol Ahmed on Unsplash


jquery-ui.multiselect.widget testing
testing
navigation
Basic
Init multi-select
Init single-select
No value attribute
Disabled options
Option classes
Show original select
Hide checkboxes
Display-text
Select update
Destroy
Update Widget & Events
Filter
Basic behavior
Min. items
Bulk-actions
Optgroups
Basic behavior
Disabled groups
Single-selects
Mixed groups
Dis/enabling
Keyboad actions


by David Su
Here are some audio examples of the Fibonacci stretch algorithm in action. This notebook and its associated code are also available on GitHub.
Fibonacci Stretch is a method of time-stretching an existing audio track such that its rhythmic pulses become expanded or contracted along the Fibonacci sequence, using Euclidean rhythms as the basis for modification. Inspiration came initially from Vijay Iyer's article on Fibonacci numbers and musical rhythm as well as his trio's renditions of "Mystic Brew" and "Human Nature".
%matplotlib inline
import pardir; pardir.pardir() # Allow imports from parent directory
from fibonaccistretch import fibonacci_stretch_track
And let's also define some variables for convenience:
tresillo_rhythm = [1,0,0,1,0,0,1,0]
For our first example we'll stretch Michael Jackson's "Human Nature", off of his 1982 album Thriller.
We're using the tresillo rhythm as the original_rhythm
and a stretch_factor
of 1, which means [1,0,0,1,0,0,1,0]
(with pulse lengths [3,3,2]
) will get expanded to [1,0,0,0,0,1,0,0,0,0,1,0,0]
(with pulse lengths [5,5,3]
), as each pulse length is scaled along Fibonacci sequence by an index of +1:
# "Human Nature" stretched by a factor of 1 using default parameters
fibonacci_stretch_track("data/humannature_90s.mp3",
original_rhythm=tresillo_rhythm,
stretch_factor=1,
tempo=93.0)
With a stretch_factor
of 2, the tresillo rhythm [1,0,0,1,0,0,1,0]
(with pulse lengths [3,3,2]
) is expanded to [1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0]
(with pulse lengths [8,8,5]
):
# "Human Nature" stretched by a factor of 2
fibonacci_stretch_track("data/humannature_30s.mp3",
original_rhythm=tresillo_rhythm,
stretch_factor=2,
tempo=93.0,
overlay_clicks=True)
# "Chan Chan" stretched by a factor of -1
fibonacci_stretch_track("data/chanchan_30s.mp3",
original_rhythm=tresillo_rhythm,
stretch_factor=-1,
tempo=78.5)
(Note that although we do end up with a perceptible difference (the song now sounds like it's in 7/8), it should actually sound like it's in 5/8, since [1 0 0 1 0 0 1 0]
is getting compressed to [1 0 1 0 1]
. This is an implementation detail with the Euclidean stretch method that needs to be fixed.)
In order to get musically meaningful results we generally want to supply parameters that make musical sense with our input audio (although it can certainly be interesting to try with parameters that don't!). One of the parameters that makes the most difference in results is the rhythm sequence used to represent each measure.
Here's Chance the Rapper's verse from DJ Khaled's "I'm the One", with a custom original_rhythm
that matches the bassline of the song:
# "I'm the One" stretched by a factor of 1
fibonacci_stretch_track("data/imtheone_cropped_chance_60s.mp3",
original_rhythm=[1,0,0,0,0,1,0,0],
stretch_factor=1,
tempo=162)
We can define both a custom target rhythm as well. In addition, neither original_rhythm
nor target_rhythm
have to be Fibonacci rhythms for the stretch algorithm to work (although with this implementation they do both have to have the same number of pulses).
Let's try that out with the same verse, going from an original rhythm with 8 steps (i.e. in 4/4 meter) to a target rhythm with 10 steps (i.e. in 5/4 meter):
# "I'm the One" in 5/4
fibonacci_stretch_track("data/imtheone_cropped_chance_60s.mp3",
original_rhythm=[1,0,0,0,0,1,0,0],
target_rhythm=[1,0,0,0,0,1,0,0,0,0],
tempo=162,
overlay_clicks=True)
fibonacci_stretch_track("data/holdup_30s.mp3",
original_rhythm=[1,0,1,0,0,1,0,1],
target_rhythm=[1,0,0,1,0,1],
tempo=82)
As another example, we can give a swing feel to the first movement of Mozart's "Eine kleine Nachtmusik" (K. 525), as performed by A Far Cry:
# "Eine kleine Nachtmusik" with a swing feel
fibonacci_stretch_track("data/einekleinenachtmusik_30s.mp3",
original_rhythm=[1,0,1,1],
target_rhythm=[1,0,0,1,0,1],
tempo=130)
It works pretty decently until around 0:09
, at which point the assumption of a metronomically consistent tempo breaks down. (This is one of the biggest weaknesses with the current implementation, and is something I definitely hope to work on in the future.)
Let's also hear what "Chan Chan" sounds like in 5/4:
# "Chan Chan" in 5/4
fibonacci_stretch_track("data/chanchan_30s.mp3",
original_rhythm=[1,0,0,1,0,0,0,0],
target_rhythm=[1,0,0,0,0,1,0,0,0,0], # Also interesting to try with [1,0,1]
tempo=78.5)
We can also work with source audio in other meters. For example, Frank Ocean's "Pink + White" is in 6/8. Here I've stretched it into 4/4 using the rhythm of the bassline, but you can uncomment the other supplied parameters (or supply your own!) to hear how they sound as well:
# "Pink + White" stretched by a factor of 1
fibonacci_stretch_track("data/pinkandwhite_30s.mp3",
beats_per_measure=6,
tempo=160,
# 6/8 to 4/4 using bassline rhythm
original_rhythm=[1,1,1,1,0,0],
target_rhythm=[1,1,1,0,1,0,0,0],
# 6/8 to 4/4 using half notes
# original_rhythm=[1,0,0,1,0,0],
# target_rhythm=[1,0,0,0,1,0,0,0],
# 6/8 to 10/8 (5/4) using Fibonacci stretch factor of 1
# original_rhythm=[1,0,0,1,0,0],
# stretch_factor=1,
overlay_clicks=True)
Download the Fibonacci stretch code from GitHub and play around with it yourself!


Velocity has a number of external jar dependencies. However, not all of these are needed every time. This document should help you do decide which jars must also be present if you want to integrate Velocity into your application.
All of these jars must be present when building Apache Velocity. The build process downloads all of them automatically from the Internet.
| jar name | Required | Explanation |
|---|---|---|
| commons-collections | Yes | Needed for all parts of Velocity |
| commons-lang | Yes | Needed for all parts of Velocity |
| commons-logging | No | Must be present if log system is configured to use CommonsLogLogChute . Otherwise, it is not needed. |
| oro | Yes | Must be present if you have Velocity configured to automatically escape references . Otherwise, it is not needed. |
| log4j | No | Must be present if log4j Logging has been selected. Not needed if any other logging style has been selected. |
| logkit (or avalon-logkit) | No | Must be present if Avalon Logging has been selected. Not needed if any other logging style has been selected. |
| servletapi | No | Only needed when the VelocityServlet or ServletLogChute are used. Should normally be supplied by the servlet container. VelocityServlet is deprecated and should be replaced with VelocityViewServlet from the velocity-tools distribution. |
| jdom | No | Only required for the deprecated Anakia tool / ant task |
| werken-xpath | No | Only required for the deprecated Anakia tool / ant task |
| antlr | No | Only required for the deprecated Anakia tool / ant task |
| ant | No | Only needed for compilation. |
| junit | No | Only needed for running the tests during compilation. |
| hsqldb | No | Only needed for running the tests during compilation. |
The most common case is the integration of the Velocity runtime into your application. In this case, you must add commons-collections and commons-lang to your application (and optional Oro or commons-logging if required). If you already have one or more of these libraries in your application, you should check if you need to update their versions.
The auto-generated dependency report lists all mandatory dependencies as compile and all optional dependencies as provided , though it fails to properly reflect the optional nature of the Oro and Commons-Logging dependencies.


Former president Mary McAleese complains about Irish Catholic newspaper
by Connla YoungFormer president of Ireland Mary McAleese has written to the Papal Nuncio and Archbishop Eamon Martin over an article in the Irish Catholic newspaper.
The former president has also written to Archbishop of Dublin Diarmuid Martin and the owner of the Irish Catholic newspaper, Garry O’Sullivan.
It is understood Ms McAleese penned the letters after she was challenged over her interpretation of writings by Pope John Paul II during an address at Trinity College in Dublin, where she is chancellor.
Ms McAleese, who has come into conflict with the Catholic church in the past, has been critical of the Irish Catholic.
Subscribe to our most read headlines in the evening newsletter
Editor Michael Kelly referred to Mrs McAleese's letter this week on Twitter after it emerged Sean Quinn had written to the Papal Nuncio to complain about his parish priest.
Mr Kelly, who is originally from Omagh, said: “Given that our former president Mrs McAleese has been writing to the Papal Nuncio trying to get me in trouble this is interesting”.
Speaking to the Irish News, Mr Kelly said he was disappointed that the former president had contacted the paper’s owner directly.
“No-one wants to get a call from the proprietor to say the former president has been in touch,” he said.
He said the intervention has had a “chilling effect” but added that he felt that both he and his paper have been “vindicated”.


Use the buttons at the bottom to turn segment types on & off.
Parsing Error
{{e}}
Parsed EDI
{{$index}}
{{el.content}}
Click a row to zoom
Element Separator: {{ediOut.elementSeparator}}
Segment Terminator: {{ediOut.segmentTerminatorDesc}}
Rows: {{ediOut.segments.length}}
This tool is provided AS IS without any warranty. Check out the author at http://brian-glick.com. Parsing is done in your browser so the file size limitations will be related to your computer. Nothing is sent to the server.


Dot Matrix Tool
Left mouse button to draw. Right mouse button (or ctrl+left) to erase.
Generate
Clear
Width
4
6
8
16
24
32
Height
8
16
24
32
Byte Order
Row Major
Column Major
Endian
Big Endian (MSB)
Little Endian (LSB)


When using FreeMarket, you may include up to 4 URLs for images. While your item is listed in the NXT blockchain, the images are not, and therefore they must be uploaded to some location on the internet, and then that location, in the form of a URL, may be included in your listing.
 There is a variety of services on the internet that will anonymously host images for you. You will need to do your own due diligence to determine which service you trust. Some of these services are listed below, but their inclusion here is not an endorsement. Remember, only you can preserve your own privacy.
Only use services you are confident you can trust. If you do not know what you are doing, then do not include images in your listing
Images should be 200 pixels by 200 pixels. Images with other dimensions will be resized to 200x200 for display.


{% load staticfiles %}
Username: {{producer_username}}
Full Name: {{full_name}}
Email: {{email}}
Phone: {{phone}}
Biography: {{bio}}
Skills: {{skills}}


Update From AFCON Camp, As Sundowns Striker Withdrawn
by Soccer LadumaMamelodi Sundowns’ Keletso Makgalwa has replaced one of his teammates in the U23 Africa Cup Of Nations camp.
David Notoane’s side are currently in Egypt, where they are gearing up for their opening group stage encounter against Zambia at the Al Salam Stadium on Saturday.
Read more: 7 Players Suspended On Soweto Derby Weekend
However, Phakamani Mahlambi is one of the players withdrawn due to injury, with Makgalwa coming in as a replacement.
“Captain of the South African Under-23 Men’ National Team, Tercious Malepe, has arrived in Cairo to join his compatriots in camp to prepare for the U-23 Africa Cup of Nations,” the South African Football Association said on their official website.
“The Chippa United player was accompanied by goalkeeper Mondli Mpoto and forward Keletso Makgalwa, bringing to 15 the number of players in coach David Notoane’s camp in Egypt.”
“Makgalwa replaces the injured Phakamani Mahlambi of Mamelodi Sundowns,” the association added.
Download The Soccer Laduma Social Media App & Earn Airtime for Selfies!


Expenses
Budget
Set-up or update your budget here.
Salary
(yearly)
Rent
(monthly)
Utilities
(monthly)
Insurance
(monthly)
Phone
(monthly)
Desired Savings
(monthly)
Travel
(monthly)
Leftover Annual Budget
Bi-Weekly Budget
Category
Shopping
Dining
Entertainment
Groceries
Alcohol
Health
Pet
Gift
How much was spent?
Shopping
Dining
Entertainment
Groceries
Alcohol
Health
Pet(s)
Gift(s)
Shopping
Dining
Entertainment
Groceries
Alcohol
Health
Pet
Gift(s)


Check out the latest episode on Soundcloud!
Check out one of our previous shows!
This week we got to have a heart-to-heart with Miriam Rivera, Co-Founder and Managing Partner of Ulu Ventures, an early stage venture fund in Silicon Valley. Miriam has worked at all stages of new ventures, from formation to Fortune 500 public company, Google Inc.
This week, Venture Vignettes host Riana Shah sat down with Stephanie Lampkin, CEO of Blendoor. Hear how her experiences working in Silicon Valley tech companies led her to create and build Blendoor, a software designed to mitigate unconscious bias in the hiring process by tracking recruits based demographics in the hiring pipeline and identifying where and how bias happens.
This week on Venture Vignettes, host Riana Shah speaks with Justin Davis on how to transition into investment from a radically different industry. Justin Davis was formerly a professional basketball player who played in Europe and for the NBA. Now, he’s a portfolio manager at REDF, a venture philanthropy organization, where he oversees investments and is a part of the impact lending team, helping identify and support new lending opportunities.
Riana Shah is an Innovation Strategy Consultant at Brightidea for Fortune 500 companies and a Venture Capital Fellow at Pear VC. She is also the Co-Founder of the GT Capital Labs, an innovation center that runs an investment fund for entrepreneurs in low-income communities in India, and the Founder and CEO of Independent Thought and Social Action International (ITSA), an education reform venture that works with school districts to implement critical thinking and youth-led social entrepreneurship in curricula. ITSA has worked with 20,000 students and teachers across 19 cities and 11 countries, and has received funding from the Davis Projects for Peace Prize, the Eugene Lang Foundation, and Google. Riana's social entrepreneurship work has been featured in the Huffington Post, the Women of Influence Magazine, and Google's Generation In Project. She has spoken at the United Nations, the U.S. State Department, and at the International Forum on Child Welfare.
Riana has served as a Principal for the Impact Investing firm, Impact Experience, and a Tech Consultant for the Advisory Board Company. She has also led projects for the impact investing firm, Village Capital, for the D.C. Public School System, and has served on the Community Advisory Board at the Whitney Museum of American Art. Currently she serves on the board of Summer Search, a nonprofit that helps low-income students with high-potential to break systemic barriers of racism and become leaders in their community.
Riana holds a B.A. in Sociology, Anthropology, and Educational Studies from Swarthmore College.


API¶
Bonfig¶
An alternative, more beautiful way to build configs!
-
class
bonfig.
Bonfig
(*args, frozen=True, **kwargs)¶ Base class for all Bonfigs.
Parameters: - frozen : bool, optional
Freeze Bonfig just after initialisation - by calling
Bonfig.freeze()
.- *args
Positional arguments, passed to
Bonfig.load()
.- **kwargs
Keyword arguments, passed to
Bonfig.load()
.
Notes
Instances of this class shouldn’t be created directly, instead it should be subclassed (see examples).
Ideally do overwrite or call __init__ directly, instead use the provided load hook for initialising things like data stores.
Attributes: - __fields__ : set
a set containing all the classes Field attributes.
- __store_attrs__ : set
a set containing the names of each store attribute for that class
Methods
freeze
()Freeze Bonfig stores. load
(*args, **kwargs)Hook called during initialisation for loading store attributes. -
freeze
()¶ Freeze Bonfig stores.
Works by creating a copy of each store as dict, then converting to an MappingProxyType.
Notes
In order to ‘freeze’ your store, it each container needs to implement both __getitem__() and keys() as a minimum.
-
load
(*args, **kwargs)¶ Hook called during initialisation for loading store attributes.
Is basically __init__, but called at the right time such that locking works and that fields can be initialised.
Parameters: - *args
args from __init__
- **kwargs
kwargs from __init__
Notes
As load is called before Field`s are initialised, values can be overwritten by fields unless `Field.val=None.
-
class
bonfig.
Store
(_name=None)¶ Placeholder class, allowing structure of store to be created in Bonfig.
Upon initialisation should be overwritten with an container object that supports __getitem__ using
Bonfig.load()
.Any Fields ultimately belonging to a Store will look in the container that the Store object is overwritten with during
Bonfig.load()
.Examples
>>> class Config(Bonfig): ... a = Store('my store') ... b = Store() ... ... f1 = a.Field() ... f2 = b.Field() >>> Config.a.name 'my store' >>> Config.b.name 'b' >>> Config.a.Field functools.partial(<class 'bonfig.fields.Field'>, _store=<Store: my store>) >>> Config.b.Section functools.partial(<class 'bonfig.fields.Section'>, _store=<Store: b>)
Attributes: name
: str, optionalName of store.
-
is_with_proxy
¶ Check if self is an original Store or a proxy of another from a with statement.
-
name
¶ Name of store.
For any Fields that ultimately belong to this store will have this value as
Field.store_attr
.
Fields¶
NOTE¶
You will notice in the Field and Section parameters for __init__ which start with ‘_’, these arguments are not intended to be set directly. Instead these classes should be accessed by either parent Stores or Sections, and these arguments will be implicitly set.
Attributes¶
- fields : FieldDict
- A global dict -like object that stores all of the field classes. This dict is used to provide stores and sections with access to field classes, as such, add to this global dict to make custom fields available in that context. (By default includes Field, IntField, FloatField, BoolField and DatetimeField.
-
class
bonfig.fields.
Section
(name=None, *, _supsection=None, _store=None)¶ Convenience class for building up multi-level Bonfigs s.
Any Field s created from Section.Field implicitly have the Field.section attribute set to that Section.
Parameters: - name : str, optional
name of Section. Default behaviour is to take the name of the class attribute Section was set to (using __set_name__).
- _supsection : Section, optional
Section that owns this section. Rather than setting directly, this should be done by creating this Section instance using supsection.Section.
- _store : Store
Store that section belongs to.
Examples
>>> class Config(Bonfig): ... s = Store() ... ... A = s.Section() ... Af = A.Field('A - f') ... ... B = A.Section('B within A') ... Bf = B.Field('B - f') ... ... def load(self): ... self.s = {} >>> >>> c = Config() >>> c.A.keys ['sec_A'] >>> c.B.keys ['A', 'B within A'] >>> c.Af 'A - f' >>> Config.Af.keys ['A', 'Af'] >>> Config.Bf.keys ['A', 'B within A', 'Bf'] >>> c.s {'A': { 'Af': 'A - f', 'B within A': { 'Bf': 'B - f' } } }
Attributes: is_with_proxy
Check if self is an original Section or a proxy of another from a with statement.
keys
Keys used to look get to this section of the store
name
Name of Section.
-
classmethod
_from_with
(with_owner)¶ Internal method for creating a ‘proxy’ of a Section object for use in with blocks.
-
is_with_proxy
¶ Check if self is an original Section or a proxy of another from a with statement.
-
keys
¶ Keys used to look get to this section of the store
-
name
¶ Name of Section.
-
class
bonfig.fields.
Field
(val=None, default=None, name=None, *, _store=None, _section=None)¶ Class representing a parameter from your configuration. This object encapsulates how this parameter is serialised and deserialsed as well as how and where it’s fetched from.
Parameters: - val : object, optional
value that will be inserted into store upon initialisation. (Note if set to None, no value will be added to the store rather that a value equal to None.)
- default : object, optional
Fallback value for this parameter if not found in store. If set to None then AttributeError will be raised.
- name : str, optional
Key that is used to get value of Field as stored in store. Default behaviour is to take the name of the class attribute Field was set to (using __set_name__).
- _store : Store
store that this Field belongs to/ looks into. Shouldn’t really be set directly, instead use Store.Field to create Field instances.
- _section : Section, optional
section that this Field belongs to. The section provides a set of ‘pre-keys’ that are looked up before name in store in order to fetch the Field ‘s value. Rather than setting directly, Section.Field should be used.
Notes
The __add__ method of Field objects is also implemented for convenience, however, note that as the Store and Section of a field is derived from the Store or Section that ultimately made it, this could lead to unexpected behaviour if this is used between stores and sections e.g.
Works:
>>> from bonfig import Bonfig, Store >>> class Config(Bonfig): ... s = Store() ... FIRST_NAME = s.Field("Garry") ... FULL_NAME = FIRST_NAME + 'Lineker' ... >>> c = Config() >>> c.FIRST_NAME "Garry" >>> c.FULL_NAME "GarryLineker"
Also works:
>>> from bonfig import Bonfig, Store >>> class Config(Bonfig): ... s = Store() ... FIRST_NAME = s.Field("Garry") ... LAST_NAME = s.Field("Lineker") ... FULL_NAME = FIRST_NAME + LAST_NAME ... >>> c = Config() >>> c.FULL_NAME "GarryLineker"
Examples
>>> class Config(Bonfig): ... s = Store() ... ... f1 = s.Field('first field') ... f2 = s.Field() ... f3 = s.Field(default='f3 not found') ... f4 = s.Field('fourth field', name='field1') ... ... def load(self): ... self.s = {} >>> c = Config() >>> c.f1 'first field' >>> c.f2 KeyError: 'f2' >>> c.f3 'f3 not found' >>> c.f4 'forth field' >>> c.s {'f1': 'first field', 'field1': 'fourth field'}
Attributes: keys
Keys used to look up value within store.
store_attr
Name of Bonfig instance attribute that values are looked up in.
-
_get_store
(bonfig)¶ Get store attribute from bonfig.
-
_get_value
(store)¶ Hook to allow you to control how the value is looked up in the data Store.
-
_initialise
(bonfig)¶ Initialise Field.
This method is called during initialisation, and sets the value found within store at self.keys to self.val, unless self.val is None, in which case, nothing happens!
Notes
This process takes place just after
Bonfig.load()
and for each Field. As such any values set fromBonfig.load
are liable to be overwritten by initialise unless self.val=None.
-
_post_get
(val)¶ Apply function to values after they are fetched from data Store
-
_pre_set
(val)¶ Apply function to values before they are inserted into data Store
-
keys
¶ Keys used to look up value within store.
-
store_attr
¶ Name of Bonfig instance attribute that values are looked up in.
-
bonfig.fields.
make_sub_field
(name, bases, post_get=None, pre_set=None, doc=None)¶ Factory function for producing Field-like classes.
Parameters: - name : str
Name of new field class
- post_get : func
Function to apply to values just after they are fetched from the data
Store
.- pre_set : func
Function to apply to values just before they are inserted into the data
Store
.- bases : cls
Class for the newly created class to subclass (defaults to
Field
).- doc : str, optional
docstring :)
Returns: - cls : cls
New Field subclass.
-
class
bonfig.fields.
FieldDict
(bases, *args, **kwargs)¶ Subclass of dict for storing field classes.
Methods
add
(field_cls)Add a field_cls class to a field_cls dict. clear
()copy
()fromkeys
($type, iterable[, value])Create a new dictionary with keys from iterable and values set to value. get
($self, key[, default])Return the value for key if key is in the dictionary, else default. items
()keys
()make_quick
(name[, post_get, pre_set, …])Factory function for producing Field -like classes. pop
(k[,d])If key is not found, d is returned if given, otherwise KeyError is raised popitem
()2-tuple; but raise KeyError if D is empty. setdefault
($self, key[, default])Insert key with a value of default if key is not in the dictionary. update
([E, ]**F)If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k] values
()-
add
(field_cls)¶ Add a field_cls class to a field_cls dict. This method implicitly uses field_cls.__name__ as the key.
Parameters: - field_cls : cls
A Field subclass that you want to be added to the dict
Returns: - field_cls : cls
Returns the same field_cls instance back. This allows the method to be used as a class decorator!
Examples
>>> @fields.add >>> class ListField(Field): ... ... def __init__(self, val=None, default=None, name=None, *, _store=None, _section=None, sep=', '): ... super().__init__(val, default=default, name=name, _store=_store, _section=_section) ... self.sep = sep ... ... def post_get(self, val): ... return val.split(self.sep) ... ... def pre_set(self, val): ... return self.sep.join(val)
-
make_quick
(name, post_get=None, pre_set=None, doc_preamble=None)¶ Factory function for producing Field -like classes.
Parameters: - name : str
Name of new class
- post_get : func, optional
Function to apply to values just after they are fetched from the data Store.
- pre_set : func, optional
Function to apply to values just before they are inserted into the data Store.
- bases : cls
Class for the newly created class to subclass (defaults to
Field
).- doc_preamble : str, optional
docstring to prepend to Field docstring!
Returns: - cls : cls
New Field subclass.
Examples
>>> IntField = fields.make_quick('IntField', int, str)
-
-
class
bonfig.fields.
IntField
(val=None, default=None, name=None, *, _store=None, _section=None)¶ Field that serialises and de-serialises values as integers.
Values are stored as strings within store
Parameters: - val, default, name, fmt, _store, _section : object
See baseclass
Field
See also
Field
- Parent class
Examples
>>> class Config(Bonfig): ... s = Store() ... days = s.IntField(365) ... >>> c = Config() >>> c.days 365 >>> c.s {'days': '365'}
Attributes: keys
Keys used to look up value within store.
store_attr
Name of Bonfig instance attribute that values are looked up in.
-
_post_get
(val)¶ Apply function to values after they are fetched from data Store
-
_pre_set
(val)¶ Apply function to values before they are inserted into data Store
-
class
bonfig.fields.
BoolField
(val=None, default=None, name=None, *, _store=None, _section=None)¶ Field that serialises and de-serialises values as Booleans.
Values are stored as strings within store
Parameters: - val, default, name, fmt, _store, _section : object
See baseclass
Field
See also
Field
- Parent class
Examples
>>> class Config(Bonfig): ... s = Store() ... do = s.BoolField(True) ... >>> c = Config() >>> c.do True >>> c.s {'do': 'True'}
Attributes: keys
Keys used to look up value within store.
store_attr
Name of Bonfig instance attribute that values are looked up in.
-
_post_get
(val)¶ Apply function to values after they are fetched from data Store
-
_pre_set
(val)¶ Apply function to values before they are inserted into data Store
-
class
bonfig.fields.
FloatField
(val=None, default=None, name=None, *, _store=None, _section=None)¶ Field that serialises and de-serialises values as floats.
Values are stored as strings within store
Parameters: - val, default, name, fmt, _store, _section : object
See baseclass
Field
See also
Field
- Parent class
Examples
>>> class Config(Bonfig): ... s = Store() ... pi = s.FloatField(3.14159) ... >>> c = Config() >>> c.pi 3.14159 >>> c.s {'pi': '3.14159'}
Attributes: keys
Keys used to look up value within store.
store_attr
Name of Bonfig instance attribute that values are looked up in.
-
_post_get
(val)¶ Apply function to values after they are fetched from data Store
-
_pre_set
(val)¶ Apply function to values before they are inserted into data Store
-
class
bonfig.fields.
DatetimeField
(val=None, default=None, name=None, fmt=None, *, _store=None, _section=None)¶ Field that serialises and de-serialises fields that are datetime strings!
Values are stored as strings within store
Parameters: - val : str, datetime.datetime
Either str or datetime, if str will be automatically converted to datetime.
- default, name, fmt, _store, _section : object
See
Field
See also
Field
- Parent class
Examples
>>> class Config(Bonfig): ... s = Store() ... when = s.DatetimeField('25/12/1995', fmt='%d/%m/%Y') ... >>> c = Config() >>> c.when datetime.datetime(1995, 12, 25, 0, 0) >>> c.s {'when': '25/12/1995'}
Attributes: keys
Keys used to look up value within store.
store_attr
Name of Bonfig instance attribute that values are looked up in.
-
_post_get
(val)¶ Apply function to values after they are fetched from data Store
-
_pre_set
(val)¶ Apply function to values before they are inserted into data Store
-
class
bonfig.fields.
PathField
(val=None, default=None, name=None, *, _store=None, _section=None)¶ Field that serialises and de-serialises fields that are pathlib.Path objects.
Values are stored as strings within store.
Parameters: - val : str, pathlib.Path
Either str or pathlib.Path, if str, will be automatically converted to pathlib.Path.
- default, name, fmt, _store, _section : object
See
Field
See also
Field
- Parent class
Examples
>>> class Config(Bonfig): ... s = Store() ... base = s.PathField('') # '' required as None is not a valid Path ... file = base / 'important.txt' ... >>> c = Config() >>> c.base Path('.') >>> c.file Path('important.txt') >>> c.s
Attributes: keys
Keys used to look up value within store.
store_attr
Name of Bonfig instance attribute that values are looked up in.
-
_post_get
(val)¶ Apply function to values after they are fetched from data Store
-
_pre_set
(val)¶ Apply function to values before they are inserted into data Store


 %}
{% with meeting_number=meeting.meeting_number %}
| {% trans "Great" %} | {% trans "Pretty well" %} | {% trans "Okay" %} | {% trans "Not so good" %} | {% trans "Awful" %} |
{% trans "Please take a minute to reflect on your dashboard. Your feedback will help us identify themes and topics for our upcoming community calls." %}
{% if is_last_meeting %}{% blocktrans %}From your dashboard, you can fill out the end of learning circle survey and view feedback from learning circle participants.{% endblocktrans %}
{% else %} {% with send_reminder_at=study_group.next_meeting.send_reminder_at %}{% blocktrans %}From your dashboard, you can also send a recap message to participants and edit the reminder for the next meeting, which is scheduled to send {{ send_reminder_at }}.{% endblocktrans %}
{% endwith %} {% endif %}
{% trans "Go to my dashboard" %}.
{% trans "Cheers" %},
P2PU
{% endlocaltime %} {% endblock %}


GTA bracing for first major snowfall of the season
by Sean Davidson, Multi-Platform Writer, CTV News TorontoThe Greater Toronto Area is forecast to be hit with the first major snowfall of the season.
Environment Canada issued an updated weather warning, which included the City of Toronto, ahead of the snow on Monday.
The weather agency said Hamilton is likely to be hardest hit, with 25cm of snow forecast. The Niagara region could also see 25cm of snow accumulate.
Full list of school bus cancellations for Nov. 11
Toronto is forecast to receive between 10cm and 15cm of snow. Mississauga, Brampton, Markham, Vaughan, Milton, Caledon, Richmond Hill, Pickering, Oshawa are also under a weather advisory.
"This snowfall is due to a developing low pressure system which will track south of the lower Great Lakes on today," Environment Canada said Monday morning.
The snow is expected to fall heaviest during the afternoon commute and through the evening. Drivers are being warned of hazardous conditions that could deteriorate rapidly.
School buses have already been cancelled in Niagara and Halton regions. The schools remain open.
Air travellers are being advised to check on the status of their flights before heading out the airport.


Basically, I break down complicated big things into smaller chunks, solve each small chunks, then meld them back together into cooler processed big things.
The 'Things' don't matter due to the experience that got me to where I am at. I went from making 2D drawings and paintings to 3D buildings, only to realize how wasteful and inefficient the whole process plus the end product in solving a problem. I realized that the design process and thinking that I've been doing can be utilized in a much better way.
Now, I make things digitally.
How I make things
- 1. Identify Problem Space
Focusing on a specific Problem Space at a time, rather than multiple spaces, produces a clear solution that will guarantee success for a percentage of the target audience.
- 2. Validate Assumptions
All Ideas get diluted by assumptions the longer the process goes. Having a fixed schedule of when to get feedback prevents Assumption Backlogs.
- 3. Investigate Variables
Acknowledging differences is just part of the iteration process.
Design Stack
Sketch
Figma
Invision
Framer
Axure
Photoshop
Illustrator
InDesign
Front-End Stack
HTML
CSS
SASS
JavaScript
JQuery
Wordpress
Shopify
Bootstrap
Bulma
Git
When not I'm designing or learning new things, you can find me exploring museums or enjoying baked goods at local coffee shops.


Two Britons Traveled the World in Tandem Biking for 218 Days and 22 Hours
Two British doctors have set a new Guinness record, cycling over 28,000 km in 218 days and 22 hours, according to UPI.
The Guinness Book of Records notes that Lloyd Collier and Louis Paul Snellgrove have improved the previous achievement for the fastest round-the-world tandem bike tour for men by 9 days.
Collier and Snellgrove, who work as doctors in Australia, took over from Adelaide on 7th August. and completed their journey on May 16th, 2019. They crossed Australia, Asia, Europe and North America to raise funds for spinal and brain research.
"Life is far too short. Working as an Emergency doctor I’ve witnessed first-hand accidents and illnesses cutting short the lives of many people. Growing up I was inspired by the olden day adventurers who explored the unknown corners of the earth not knowing if they would every return, risking all in the pursuit of knowledge," said Louis.
Lloyd explained: "The entire journey was littered with mechanical failures and makeshift repairs. Cycling through India in particular, we became incredibly inventive in fixing mechanical components in non-conventional ways."


3.1 Programming Control Flow
- Control flow (or flow control) is a well defined sequence of conditional statements, loops and statements which directs the R script (or code in generalised sense) to execute one thing or the other based on the conditions written in the program.
3.1.1 if-else Conditional Statements
We use if-else conditional statements when we want the R program to branch out in different directions based on a logical condition.
The following example compares the mean of two stocks and assigns a variable with the greater mean.
data_stocks = read.csv("data/us_stocks.csv")
# remove NAs from the data
data_stocks = na.omit(data_stocks)
m_msft = mean(data_stocks$MSFT)
m_aapl = mean(data_stocks$AAPL)
if (m_msft > m_aapl) {
g_mean = m_msft
message("Msft mean is higher")
} else {
g_mean = m_aapl
message("Aapl mean is higher")
}
g_mean #print greater mean
[1] 207.7967
The if-else also works as a function call, the if-else call in the example above can be reduced to one line as follows.
Note that the curly brackets in case of just one statement are optional. They are required in case of a block operation. Its easy to just use them to avoid confusion.
R also has a function \(\mathtt{ifelse}\) which does the same operation as in example above. See \(\mathtt{help(ifelse)}\) for more details
function (test, yes, no)
NULL
[1] 207.7967
3.1.2 Loops
Loops are the common feature in almost all the programming languages.
R provides three basic loops using \(\mathtt{for}\), \(\mathtt{while}\) and \(\mathtt{repeat}\).
# construct the loop
j = 0
for (i in 1:15) {
j = j + i #add i to j
print(j) #print the sequential sum
}
[1] 1
[1] 3
[1] 6
[1] 10
[1] 15
[1] 21
[1] 28
[1] 36
[1] 45
[1] 55
[1] 66
[1] 78
[1] 91
[1] 105
[1] 120
3.1.3 \(\mathtt{while}\) loop
- \(\mathtt{while}\) loop evaluates an expression or a function while a condition is TRUE. Lets repeat the above example using \(\mathtt{while}\) loop
# intialise j and i
j = 0
i = 1
# one can also use i<=15
while (i < 16) {
j = j + i
i = i + 1
print(j)
}
[1] 1
[1] 3
[1] 6
[1] 10
[1] 15
[1] 21
[1] 28
[1] 36
[1] 45
[1] 55
[1] 66
[1] 78
[1] 91
[1] 105
[1] 120
3.1.4 \(\mathtt{repeat}\) loop
- \(\mathtt{repeat}\) repeats the same expression till it is broken due to a condition.
[1] 1
[1] 3
[1] 6
[1] 10
[1] 15
[1] 21
[1] 28
[1] 36
[1] 45
[1] 55
[1] 66
[1] 78
[1] 91
[1] 105
[1] 120
Together all these three loops can be used for iterative operations. The loops come handy when you have to iterate medium to large data by row or column.6
Using simple loops can be resource intensive for large datasets or operations. There are other approaches such as using iterative functions like \(\mathtt{lapply, sapply}\) etc or parallel computing methods to get better results in such cases.↩


Sweet Free Stuff
///////////////////////////////////////////
Free Arrowhead Brand 100% Mountain Spring Water .5L 6pk at Fred Meyer
Posted: 11 Jan 2016 08:00 AM PST
http://feedproxy.google.com/&edburner&utm_medium=email
Load the coupon to your shoppers card today only (1/11) and use by 1/31.
Free Arrowhead Brand 100% Mountain Spring Water .5L 6pk at Fred Meyer
The post Free Arrowhead Brand 100% Mountain Spring Water .5L 6pk at Fred
Meyer appeared first on SweetFreeStuff.com.
///////////////////////////////////////////
Free Subscription to Plane & Pilot Magazine
Posted: 11 Jan 2016 06:56 AM PST
http://feedproxy.google.com/&edburner&utm_medium=email
Free Subscription to Plane Pilot Magazine
The post Free Subscription to Plane Pilot Magazine appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Atkins Quick Start Kit (Includes FREE Bar and $5 off Coupon)
Posted: 11 Jan 2016 05:58 AM PST
http://feedproxy.google.com/&edburner&utm_medium=email
Sign up for a free Atkins quick-start kit and receive a $5 off coupon and
one FREE bar! Free Atkins Quick Start Kit (Includes FREE Bar and $5 off
Coupon)
The post Free Atkins Quick Start Kit (Includes FREE Bar and $5 off Coupon)
appeared first on SweetFreeStuff.com.
CommentsLove it by LisaCan’t wait to try! by JENNIFER BURRELLI want to try
this. by maureenThank you! I got my quick start kit. by AizeI like it by
Bahjet Yousif


---
layout: default
title: Civil Year 1
---
{% capture currentmonth %}{{'now' | date: '%m'}}{% endcapture %}{% capture february %}{{'February' | date: '%m'}}{% endcapture %}{% capture july %}{{'July' | date: '%m'}}{% endcapture %}
{% if currentmonth >= february and currentmonth <= july %}
{% assign source = site.data.civil.year1.Data_2019-2020_Term2.files %}
{% include query-week.html %}
{% include query-subject.html subject='Term 2 - Structural Analysis 1' %}
{% include query-subject.html subject='Term 2 - Flat Area' %}
{% include query-subject.html subject='Term 2 - Engineering Mathematics 2' %}
{% include query-subject.html subject='Term 2 - Civil Drawing' %}
{% include query-subject.html subject='Term 2 - Electromechanical Installations and Equipment Engineering' %}
{% include query-subject.html subject='Term 2 - Engineering Geology' %}
{% else %}
{% assign source = site.data.civil.year1.Data_2019-2020_Term1.files %}
{% include query-week.html %}
{% include query-subject.html subject='Term 1 - Structural Analysis 1' %}
{% include query-subject.html subject='Term 1 - Flat Area' %}
{% include query-subject.html subject='Term 1 - Properties and Testing of Materials 1' %}
{% include query-subject.html subject='Term 1 - Engineering Mathematics 2' %}
{% include query-subject.html subject='Term 1 - Architectural Construction' %}
{% include query-subject.html subject='Term 1 - Engineer and Environment' %}
{% endif %}


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object coins.IrRoot coins.HirRoot
HirRoot class is used to access HIR information and information prepared by other classes such as Sym, Flow, etc. This gives a trigger for accessing intermediate representation information such as the root of HIR tree, root of symbol table, and so on. HirRoot inherits ioRoot, symRoot, etc. from IrRoot. All HIR objects contain a reference to the HirRoot object from which intermediate representation information and methods can be quickly accessed. The HirRoot object contains a reference to IoRoot and SymRoot. Thus, every HIR objects can access information and methods of SymRoot, Sym and IoRoot. Coding rules in HirRoot Methods begin with lower case letter. Constants (final static int, etc.) are spelled in upper case letters. Indentation is 2 characters. Formal parameters begin with p. Local variables begin with l. Methods and variables are named so that meaning is easily guessed. Short names less than 3 characters are not used except for very local purpose. Protected or private fields starts with character f. Public fields of xxxRoot class might not start with character f.
| Field Summary | |
HIR |
hir
hir: HIR instance used to invoke HIR methods in such way as hirRoot.hir.assignStmt(variableNode, expressionNode). |
HirModify |
hirModify
hirModify: Used to modify HIR trees. |
HirRoot |
hirRoot
Record the HirRoot instance so that it can be refered from others. |
SubpDefinition |
hirSubpDefinition
hirSubpDefinition: Root of HIR tree representing current subprogram definition. |
MachineParam |
machineParam
Reference to MachineParam copied from ioRoot |
SourceLanguage |
sourceLanguage
Reference to SourceLanguage copied from SymRoot. |
Sym |
sym
sym is an instance of Sym class used to access Sym methods such as creation of Sym instance, etc. |
| Fields inherited from class coins.IrRoot |
fHirRoot, fInitiateIrCount, ioRoot, ir, irRoot, programRoot, symRoot |
| Constructor Summary | |
HirRoot(SymRoot pSymRoot)
Constructor of the HirRoot class. |
| Method Summary | |
void |
attachFlowRoot(FlowRoot pFlowRoot)
attachFlowRoot: Attach FLowRoot information when it become available. |
java.util.Iterator |
emptyIterator()
|
FlowRoot |
getFlowRoot()
getFlowRoot: Get FlowRoot to access Flow information from HIR. |
SubpDefinition |
getSubpDefinition()
getSubpDefinition: Get the subprogram definiton under current processing. |
void |
linkSubpDefinition(SubpDefinition pSubpDefinition)
linkSubpDefinition: Record the subprogram definition under current processing. |
| Methods inherited from class coins.IrRoot |
getHirRoot |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
public final HirRoot hirRoot
public final HIR hir
public final Sym sym
public final HirModify hirModify
public SubpDefinition hirSubpDefinition
public final SourceLanguage sourceLanguage
public final MachineParam machineParam
| Constructor Detail |
public HirRoot(SymRoot pSymRoot)
| Method Detail |
public FlowRoot getFlowRoot()
public void attachFlowRoot(FlowRoot pFlowRoot)
public void linkSubpDefinition(SubpDefinition pSubpDefinition)
public SubpDefinition getSubpDefinition()
public java.util.Iterator emptyIterator()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


--> -->
REU Data Visualization
Home
Select dataset:
Dataset1
Dataset2
Dataset3
Dataset4
Dataset5
Select graph type:
Forced bubles
Graph2
Graph3
Select graph type:
Level 1
Level 2
Level 3
Level 4
Level 5
This is a completely basic popup, no options set.
Basic Popup
REU Project © Summer 2013


The pyglet.graphics module draws the OpenGL primitive objects by a mode denoted by the constants
See the OpenGL Programming Guide for a description of each of mode.
Each primitive is made up of one or more vertices. Each vertex is specified with either 2, 3 or 4 components (for 2D, 3D, or non-homogeneous coordinates). The data type of each component can be either int or float.
Use pyglet.graphics.draw to draw a primitive. The following example draws two points at coordinates (10, 15) and (30, 35):
pyglet.graphics.draw(2, pyglet.gl.GL_POINTS,
('v2i', (10, 15, 30, 35))
)
The first and second arguments to the function give the number of vertices to draw and the primitive mode, respectively. The third argument is a "data item", and gives the actual vertex data.
Because vertex data can be supplied in several forms, a "format string" is required. In this case, the format string is "v2i", meaning the vertex position data has two components (2D) and int type.
The following example has the same effect as the previous one, but uses floating point data and 3 components per vertex:
pyglet.graphics.draw(2, pyglet.gl.GL_POINTS,
('v3f', (10.0, 15.0, 0.0, 30.0, 35.0, 0.0))
)
Vertices can also be drawn out of order and more than once by using the pyglet.graphics.draw_indexed function. This requires a list of integers giving the indices into the vertex data. The following example draws the same two points as above, but indexes the vertices (sequentially):
pyglet.graphics.draw_indexed(2, pyglet.gl.GL_POINTS,
[0, 1, 2, 3],
('v2i', (10, 15, 30, 35))
)
This second example is more typical; two adjacent triangles are drawn, and the shared vertices are reused with indexing:
pyglet.graphics.draw_indexed(4, pyglet.gl.GL_TRIANGLES,
[0, 1, 2, 0, 2, 3],
('v2i', (100, 100,
150, 100,
150, 150,
100, 150))
)
Note that the first argument gives the number of vertices in the data, not the number of indices (which is implicit on the length of the index list given in the third argument).


Plan for this week
Past two weeks:
How do we implement a tiny functional language?
Interpreter: how do we evaluate a program given its AST?
Operational semantics: formalizing the interpreter
Parser: how do we convert strings to ASTs?
This week: adding types
How do we check statically if our programs “make sense”?
Type system: formalizing the intuition about which expressions have which types
Type inference: computing the type of an expression
Reminder: Nano2
::= n | x -- numbers, vars
e | e1 + e2 -- arithmetic
| \x -> e -- abstraction
| e1 e2 -- application
| let x = e1 in e2 -- let binding
QUIZ
Which one of these Nano2 programs is well-typed?
(A) (\x -> x) + 1
(B) 1 2
(C) let f = \x -> x + 1 in f (\y -> y)
(D) \x -> \y -> x y
(E) \x -> x x
Answer: D. A adds a function; B applies a number; C defines f
to take an Int
and then passes in a function;
E requires a type T
that is equal to T -> T
, which doesn’t exit.
Type system for Nano2
A type system defines what types an expression can have
To define a type system we need to define:
- the syntax of types: what do types look like?
- the static semantics of our language (i.e. the typing rules): assign types to expressions
Type system: take 1
Syntax of types:
T ::= Int -- integers
| T1 -> T2 -- function types
Now we want to define a typing relation e :: T
(e
has type T
)
We define this relation inductively through a set of typing rules:
T-Num] n :: Int
[
e1 :: Int e2 :: Int -- premises
T-Add] ----------------------
[+ e2 :: Int -- conclusion
e1
T-Var] x :: ??? [
What is the type of a variable?
We have to remember what type of expression it was bound to!
Type Environment
An expression has a type in a given type environment (also called context), which maps all its free variables to their types
G = x1:T1, x2:T2, ..., xn:Tn
Our typing relation should include the context G
:
G |- e :: T
(e
has type T
in context G
)
Typing rules: take 2
T-Num] G |- n :: Int
[
G |- e1 :: Int G |- e2 :: Int
T-Add] -------------------------------
[G |- e1 + e2 :: Int
T-Var] G |- x :: T if x:T in G
[
G, x:T1 |- e :: T2
T-Abs] ------------------------
[G |- \x -> e :: T1 -> T2
G |- e1 :: T1 -> T2 G |- e2 :: T1
T-App] -----------------------------------
[G |- e1 e2 :: T2
G |- e1 :: T1 G, x:T1 |- e2 :: T2
T-Let] ------------------------------------
[G |- let x = e1 in e2 :: T2
An expression e
has type T
in G
if we can derive G |- e :: T
using these rules
An expression e
is well-typed in G
if we can derive G |- e :: T
for some type T
- and ill-typed otherwise
Examples
Example 1:
Let’s derive: [] |- (\x -> x) 2 :: Int
T-Var] -------------------
[:Int] |- x :: Int
[xT-Abs] ------------------- -------------- [T-Num]
[|- \x -> x :: Int -> Int [] |- 2 :: Int
[] T-App] -----------------------------------------------
[|- (\x -> x) 2 :: Int []
But we cannot derive: [] |- 1 2 :: T
for any type T
- Why?
T-App
only applies when LHS has a function type, but there’s no rule to derive a function type for1
Example 2:
Let’s derive: [] |- let x = 1 in x + 2 :: Int
T-Var]----------------- -----------------[T-Num]
[:Int |- x :: Int x:Int |- 2 :: Int
xT-Num] -------------- ------------------------------------[T-Add]
[|- 1 :: Int x:Int |- x + 2 :: Int
[] T-Let] -----------------------------------------------
[|- let x = 1 in x + 2 :: Int []
But we cannot derive: [] |- let x = \y -> y in x + 2 :: T
for any type T
The [T-Var]
rule above will fail to derive x :: Int
Example 3:
We cannot derive: [] |- (\x -> x x) :: T
for any type T
We cannot find any type T
to fill in for x
, because it has to be equal to T -> T
A note about typing rules
According to these rules, an expression can have zero, one, or many types
- examples?
1 2
has no types; 1
has one type (Int
)
\x -> x
has many types:
- we can derive
[] |- \x -> x :: Int -> Int
- or
[] |- \x -> x :: (Int -> Int) -> (Int -> Int)
- or
T -> T
for any concreteT
We would like every well-typed expression to have a single most general type!
- most general type = allows most uses
- infer type once and reuse later
QUIZ
Is this program well-typed according to your intuition and according to our rules?
let id = \x -> x in
let y = id 5 in
id (\z -> z + y)
(A) Me: okay, rules: okay
(B) Me: okay, rules: nope
(C) Me: nope, rules: okay
(D) Me: nope, rules: nope
Answer: B
Double identity
let id = \x -> x in
let y = id 5 in
id (\z -> z + y)
Intuitively this program looks okay, but our type system rejects it:
- in the first application,
id
needs to have typeInt -> Int
- in the second application,
id
needs to have type(Int -> Int) -> (Int -> Int)
- the type system forces us to pick just one type for each variable, such as
id
:(
What can we do?
Polymorphic types
Intuitively, we can describe the type of id
like this:
- it’s a function type where
- the argument type can be any type
T
- the return type is then also
T
We formalize this intuition as a polymorphic type: forall a . a -> a
where
a
is a (bound) type variablealso called a type scheme
Haskell also has polymorphic types, but you don’t usually write
forall a.
We can instantiate this scheme into different types by replacing a
in the body with some type, e.g.
- instantiating with
Int
yieldsInt -> Int
- instantiating with
Int -> Int
yields(Int -> Int) -> Int -> Int
- etc.
Inference with polymorphic types
With polymorphic types, we can derive e :: Int -> Int
where e
is
let id = \x -> x in
let y = id 5 in
id (\z -> z + y)
At a high level, inference works as follows:
When we have to pick a type
T
forx
, we pick a fresh type variablea
So the type of
\x -> x
comes out asa -> a
We can generalize this type to
forall a . a -> a
When we apply
id
the first time, we instantiate this polymorphic type withInt
When we apply
id
the second time, we instantiate this polymorphic type withInt -> Int
Let’s formalize this intuition as a type system!
Type system: take 3
Syntax of types
-- Mono-types
T ::= Int -- integers
| T1 -> T2 -- function types
| a -- NEW: type variable
-- NEW: Poly-types (type schemes)
S ::= T -- mono-type
| forall a . S -- polymorphic type
where a ∈ TVar, T ∈ Type, S ∈ Poly
Type Environment
The type environment now maps variables to poly-types: G : Var -> Poly
- example,
G = [z: Int, id: forall a . a -> a]
Type Substitutions
We need a mechanism for replacing all type variables in a type with another type
A type substitution is a finite map from type variables to types: U : TVar -> Type
- example:
U1 = [a / Int, b / (c -> c)]
To apply a substitution U
to a type T
means replace all type vars in T
with whatever they are mapped to in U
- example 1:
U1 (a -> a) = Int -> Int
- example 2:
U1 Int = Int
QUIZ
What is the result of the following substitution application?
/ Int, b / c -> c] (b -> d -> b) [a
(A) c -> d -> c
(B) (c -> c) -> d -> (c -> c)
(C) Error: no mapping for type variable d
(D) Error: type variable a
is unused
Answer: B
Typing rules
We need to change the typing rules so that:
- Variables (and their definitions) can have polymorphic types
T-Var] G |- x :: S if x:S in G
[
G |- e1 :: S G, x:S |- e2 :: T
T-Let] ------------------------------------
[G |- let x = e1 in e2 :: T
- We can instantiate a type scheme into a type
G |- e :: forall a . S
T-Inst] ----------------------
[G |- e :: [a / T] S
- We can generalize a type with free type variables into a type scheme
G |- e :: S
T-Gen] ---------------------- if not (a in FTV(G))
[G |- e :: forall a . S
The rest of the rules are the same:
T-Num] G |- n :: Int
[
G |- e1 :: Int G |- e2 :: Int
T-Add] -------------------------------
[G |- e1 + e2 :: Int
G, x:T1 |- e :: T2
T-Abs] ------------------------
[G |- \x -> e :: T1 -> T2
G |- e1 :: T1 -> T2 G |- e2 :: T1
T-App] -----------------------------------
[G |- e1 e2 :: T2
Examples
Example 1
Let’s derive: [] |- \x -> x :: forall a . a -> a
T-Var] ---------------
[:a] |- x :: a
[xT-Abs] -----------------------
[|- \x -> x :: a -> a
[] T-Gen] ----------------------------------- not (a in FTV([]))
[|- \x -> x :: forall a . a -> a []
Can we derive: [x:a] |- x :: forall a . a
?
No! The side condition of [T-Gen]
is violated because a
is present in the context!
Example 2
Let’s derive: G1 |- id 5 :: Int
where G1 = [id : (forall a . a -> a)]
:
T-Var]-------------------------
[G1 |- id :: forall a.a -> a
T-Inst]------------------------ --------------[T-Num]
[G1 |- id :: Int -> Int G1 |- 5 :: Int
T-App] ---------------------------------------
[G1 |- id 5 :: Int
Example 3
Finally, we can derive:
let id = \x -> x in
(let y = id 5 in
id (\z -> z + y)) :: Int -> Int
easyT-Var]-------------------------- ------------------ [Add]
[G2 |- id::forall a.a -> a G3 |- z + y :: Int
T-Inst]------------------------------ -------------------------[T-Abs]
[G2 |- id::(Int->Int)->Int->Int G2 |- \z -> z+y :: Int->Int
| |
2 | |
example ----------------- ----------------------------------[T-App]
G1 |- id 5 :: Int G2 |- id (\z -> z+y) :: Int -> Int
T-Let] ------------------------------------------------------
[G1 |- let y = id 5 in ... :: Int -> Int
|
1 |
example T-Abs] -------------------------------- |
[|- \x -> x :: forall a.a -> a |
[] T-Let] -------------------------------------------------------------
[|- let id = \x -> x in ... :: Int -> Int []
where
G1 = [id : (forall a . a -> a)]
G2 = [y : Int, id : (forall a . a -> a)]
G3 = [z : Int, y : Int, id : (forall a . a -> a)]
Type inference algorithm
Our ultimate goal is to implement a Haskell function infer
which
- given a context
G
and an expressione
- returns a type
T
such thatG |- e :: T
- or reports a type error if
e
is ill-typed inG
Representing types
First, let’s define a Haskell datatype to represent Nano2 types:
data Type
= TInt -- Int
| Type :=> Type -- T1 -> T2
| TVar TVar -- a, b, c
data Poly = Mono Type
| Forall TVar Poly
type TVar = String
type TEnv = [(Id, Poly)] -- type environment
type Subst = [(TVar, Type)] -- type substitution
Inference: main idea
Let’s implement infer
like this:
Depending on what kind of expression
e
is, find a typing rule that applies to itIf the rule has premises, recursively call
infer
to obtain the types of sub-expressionsCombine the types of sub-expression according to the conclusion of the rule
If no rule applies, report a type error
-- | This is not the final version!!!
infer :: TypeEnv -> Expr -> Type
ENum _) = TInt
infer _ (EVar var) = lookup var tEnv
infer tEnv (EAdd e1 e2) =
infer tEnv (if t1 == TInt && t2 == TInt
then return TInt
else throw "type error: + expects Int operands"
where
= infer tEnv e1
t1 = infer tEnv e2
t2 ...
This doesn’t quite work (for other cases). Why?
Inference: tricky bits
The trouble is that our typing rules are nondeterministic!
- When building derivations, sometimes we had to guess how to proceed
Problem 1: Guessing a type
-- oh, now we know!
T-Var]----------------
[:?] |- x: Int [x:?] |- 1 :: Int
[xT-Add]----------------------------
[:?] |- x + 1 :: ?? -- what should "?" be?
[xT-Abs]------------------------------
[|- (\x -> x + 1) :: ? -> ?? []
So, if we want to implement
ELam x e) = tX :=> tBody
infer tEnv (where
= extendTEnv x tX tEnv
tEnv' = ??? -- what do we put here?
tX = infer tEnv' e
tBody ...
Problem 2: Guessing when to generalize
In the derivation for
let id = \x -> x in
(let y = id 5 in
id (\z -> z + y)) :: Int -> Int
we had to guess that the type of id
should be generalized into forall a . a -> a
Let’s deal with problem 1 first
Constraint-based type inference
-- oh, now we know!
T-Var]----------------
[:?] |- x: Int [x:?] |- 1 :: Int
[xT-Add]----------------------------
[:?] |- x + 1 :: ?? -- what should "?" be?
[xT-Abs]------------------------------
[|- (\x -> x + 1) :: ? -> ?? []
Main idea:
Whenever you need to “guess” a type, don’t.
just return a fresh type variable
fresh = not used anywhere else in the program
Whenever a rule imposes a constraint on a type (i.e. says it should have certain form):
try to find the right substitution for the free type vars to satisfy the constraint
this step is called unification
Example
Let’s infer the type of \x -> x + 1
:
-- TEnv Expression Step Subst Inferred type
1 [] \x -> x + 1 [T-Abs] []
2 [x:a0] x + 1 [T-Add]
3 x [T-Var] a0
4 x + 1 unify a0 Int [a0/Int]
5 [x:Int] 1 [T-Num] Int
6 x + 1 unify Int Int
7 x + 1 Int
8 [] \x -> x + 1 Int -> Int
Infer the type of
(\x -> x + 1)
in[]
(apply[T-Abs]
)For the type of
x
, pick fresh type variable (say,a0
); infer the type ofx + 1
in[x:a0]
(apply[T-Add]
)Infer the type of
x
in[x:a0]
(apply[T-Var]
); result:a0
[T-Add]
imposes a constraint: its LHS must be of typeInt
, so unifya0
andInt
and update the current substitution to[a0 / Int]
Apply the current substitution
[a0/Int]
to the type environment[x:a0]
to get[x:Int]
. Infer the type of1
in[x:Int]
(apply[T-Num]
); result:Int
[T-Add]
imposes a constraint: its RHS must be of typeInt
, so unifyInt
andInt
; current substitution doesn’t changeBy conclusion of
[T-Add]
: returnInt
as the inferred typeBy conclusion of
[T-Lam]
: returnInt -> Int
as the inferred type
Unification
The unification problem: given two types T1
and T2
,
find a type substitution U
such that U T1 = U T2
.
Such a substitution is called a unifier of T1
and T2
Examples:
The unifier of:
and Int is [a / Int]
a
-> a and Int -> Int is [a / Int]
a
-> Int and Int -> b is [a / Int, b / Int]
a
Int and Int is []
and a is []
a
Int and Int -> Int cannot unify!
Int and a -> a cannot unify!
and a -> a cannot unify! a
QUIZ
What is the unifier of the following two types?
1. a -> Int -> Int
2. b -> c
(A) Cannot unify
(B) [a / Int, b / Int -> Int, c / Int]
(C) [a / Int, b / Int, c / Int -> Int]
(D) [b / a, c / Int -> Int]
(E) [a / b, c / Int -> Int]
(C), (D) and (E) are all unifiers!
But somehow (D) and (E) are better than (C)
they make the least commitment required to make these types equal
this is called the most general unifier
Infer: take 2
Let’s add constraint-based typing to infer
!
-- | Now has to keep track of current substitution!
infer :: Subst -> TypeEnv -> Expr -> (Subst, Type)
ENum _) = (sub, TInt)
infer sub _ (EVar var) = (sub, lookup var tEnv)
infer sub tEnv (
-- Lambda case: simply generate fresh type variable!
ELam x e) = (sub1, tX' :=> tBody)
infer sub tEnv (where
= extendTEnv x tX tEnv
tEnv' = freshTV -- we'll get to this
tX = infer sub tEnv' e
(sub1, tBody) = apply sub1 tX
tX'
-- Add case: recursively infer types of operands
-- and enforce constraint that they are both Int
EAdd e1 e2) = (sub4, TInt)
infer sub tEnv (where
= infer sub tEnv e1 -- 1. infer type of e1
(sub1, t1) = unify sub1 t1 Int -- 2. enforce constraint: t1 is Int
sub2 = apply sub2 tEnv -- 3. apply substitution to context
tEnv' = infer sub2 tEnv' e2 -- 4. infer type of e2 in new ctx
(sub3, t2) = unify sub3 t2 Int -- 5. enforce constraint: t2 is Int sub4
Why are all these steps necessary? Can’t we just return (sub, TInt)
?
QUIZ
Which of these programs will type-check if we skip step 3?
EAdd e1 e2) = (sub4, TInt)
infer sub tEnv (where
= infer sub tEnv e1 -- 1. infer type of e1
(sub1, t1) = unify sub1 t1 Int -- 2. enforce constraint: t1 is Int
sub2 = apply sub2 tEnv -- 3. apply substitution to context
tEnv' = infer sub2 tEnv' e2 -- 4. infer type of e2 in new ctx
(sub3, t2) = unify sub3 t2 Int -- 5. enforce constraint: t2 is Int sub4
(A) 1 2 + 3
(B) 1 + 2 3
(C) (\x -> x) + 1
(D) 1 + (\x -> x)
(E) \x -> x + x 5
Answer: E. A fails in step 1 (LHS is ill-typed); B fails in step 4 (RHS is ill-typed);
C fails in step 2 (LHS is not Int
); D fails in step 5 (RHS is not Int
);
finally, E fails because LHS and RHS by themselves are fine, but not together!
Fresh type variables
-- | Now has to keep track of current substitution!
infer :: Subst -> TypeEnv -> Expr -> (Subst, Type)
-- Lambda case: simply generate fresh type variable!
ELam x e) = tX :=> tBody
infer tEnv (where
= extendTEnv x tX tEnv
tEnv' = freshTV -- how do we do this?
tX = infer tEnv' e tBody
Intended behavior:
- First time we call
freshTV
it returnsa0
- Second time it returns
a1
- Third time it returns
a2
- .. and so on
Can we do that in Haskell?
No, Haskell is pure. Have to thread the counter through :(
Polymorphism: the final frontier
Back to double identity:
let id = \x -> x in -- Must generalize the type of id
let y = id 5 in -- Instantiate with Int
id (\z -> z + y) -- Instantiate with (Int -> Int)
When should we to generalize a type like
a -> a
into a polymorphic type likeforall a . a -> a
?When should we instantiate a polymorphic type like
forall a . a -> a
and with what?
Generalization and instantiation:
Whenever we infer a type for a let-defined variable, generalize it!
- it’s safe to do so, even when not strictly necessary
Whenever we see a variable with a polymorphic type, instantiate it
with what type?
well, what do we use when we don’t know what type to use?
fresh type variables!
Example
Let’s infer the type of let id = \x -> x in id 5
:
-- TEnv Expression Step Subst Type
1 [] let id=\x->x in id 5 [T-Let] []
2 \x->x [T-Abs]
3 [x:a0] x [T-Var] a0
4 \x->x a0 -> a0
5 [] let id=\x->x in id 5 generalize a0
6 tEnv id 5 [T-App]
7 id [T-Var]
8 id instantiate a1 -> a1
9 5 [T-Num] Int
10 id 5 unify (a1->a1)
Int->a2) [a1/Int,a2/Int]
(10 id 5 Int
11 [] let id=\x->x in id 5 Int
Here tEnv = [id : forall a0.a0->a0]
Infer: take 3
Let’s add polymorphism to infer
!
infer :: Subst -> TypeEnv -> Expr -> (Subst, Type)
-- Variable case: add instantiation!
EVar var) = (sub, t)
infer sub tEnv (where
= instantiate (lookup var tEnv)
t
-- Let case: add generalization!
ELet x e1 e2) = infer sub1 tEnv2 e2
infer sub tEnv (where
= infer sub tEnv e1 -- 1. infer type of e1
(sub1, t1) = apply sub1 tEnv -- 2. apply substitution to context
tEnv1 = generalize tEnv1 t1 -- 3. generalize
s1 = extendTEnv x s1 tEnv1 -- 4. add x to context tEnv2
Note: this version still doesn’t properly handle
- generating fresh type variables
- recursive definitions
You’ll have to do that in the homework!
What we learned this week
Type system: a set of rules about which expressions have which types
Type environment (or context): a mapping of variables to their types
Polymorphic type: a type parameterized with type variables that can be instantiated with any concrete type
Type substitution: a mapping of type variables to types; you can apply a substitution to a type by replacing all its variables with their values in the substitution
Unifier of two types: a substitution that makes them equal; unification is the process of finding a unifier
Type inference: an algorithm to determine the type of an expression
Constraint-based type inference: a type inference technique that uses fresh type variables and unification
Generalization: turning a mono-type with free type variables into a polymorphic type (by binding its variables with a forall
)
Instantiation: turning a polymorphic type into a mono-type by substituting type variables in its body with some types
That’s all folks


Home
Contact
About
This is a site to search for interesting projects.
Github
provides to push the source code to work online and get help from the
blog
.
Search Phrase:
Languages:
All
C
C#
JavaScript
Ruby
Use Stars?
Use Stars?
Hide
This is where the results will end up eventually.


Behind the Scenes
Northern Fame Bookstore (NFB) is best known for being the favourite Malaysian local retail and distributor for all kinds of books, established since 1993. We serve walk-in customers in our shop located at Bukit Jalil, Malaysia. We provide books based on a wide variety of genres our customers preferred. Customers may purchase books in bulks and bundles or just one at a time. Feel free to drop by our outlet to shop for books to your heart's content. We have also put up this website to serve our customers better, especially for those who are not able to drop by our shop physically. Fret not as this website has been built to let everyone drop by our store and shop virtually. It would be wonderful for you to do us a favour. Have a look around at our virtual bookshelf on the home page and happy reading!
Location
| Location: |
53, Jln Jalil Perkasa 7, Bukit Jalil, 57000, Kuala Lumpur, Malaysia. |
Northern Fame Bookstore (NFB)
NFB sees itself to be the leader in providing A-class services and products to its customers through the use of technology, in this market. Northern Fame Bookstore (NFB) is best known for being the favourite Malaysian local retail and distributor for all kinds of books. They do serve walk-in customers as well in their shop located at Bukit Jalil, Malaysia.
Nothern Fame Bookstore © Copyright 2016 Jason Khor


| DOSE: |
2 hits |
oral |
Unknown |
(blotter / tab) |
There is a lot of RCs being passed off as LSD these days, an unfortunate trend that is likely to continue. I have no problems with RCs per se but dosing people unknowingly is just wrong in so many ways... it's easy to misjudge a dose, etc.
In early 2008 I obtained what I'm very certain is Bromo Dragonfly circulating on plain, purple blotter paper. It was given to me as LSD. At the time I was told that this 'acid' took 4 hours to kick in, which of course should have set off some alarm bells. I tested it twice (reported below) and on both occasions the come up was actually nearly 6 hours. This is far too long for a DOx substance or any other research chemical I am aware of that can fit on blotter. Hence my guess is that this was Bromo Dragonfly.
-Dose:
I took two hits at about 9pm one summer night in a natural setting. They had a strong and distinct chemical taste very reminiscent of other 2C's (I've tried 2CI on numerous occasions.)
-Come up:
Come-up took about 5-6 hours. To put this into perspective, I had dosed the same time SWIM took acid, and by the time I was only just starting to peak, SWIM was already down from the peak into the plateau.
-The effects:
A very stable high, with no waves of ups and downs like tryptamines or 2CI. It was either on, or off. Compared to 2CI (the only other RC I've tried) I found the high heads and tails more pleasant, with no real body load to speak of. I went for lots of long walks and had no problems eating.
Vivid audio hallucinations, I heard drums turning into childrens' voices and ocean waves. Incredible visuals. The real world turned into a mosaic-like grid. Trees were bursting apart into fractals. I went to find an outhouse.. the walls turned completely invisible as if I were looking right through them.. and so forth.
Special effects aside, the mental trip was remarkably pleasant. I felt centered and and empathetic, deeply connected to those around me. CEVs were crystal clear, vibrant and lush, although not organic like LSD is for me--but I still spent hours with my eyes closed listening to the rain. I had gone into this trip thinking it was acid, so I had no set/setting problems.
Come-down:
One word: gradual. When I was falling asleep ~26 hours later I was still getting moving visual artifacts. The mental trip actually subsided long before the visuals. I slept great and woke with little after-effects to speak of other than a pleasant groggy afterglow.
Second test run (low dose):
I took another half tab a year later to see what effects it had. Visuals were very subdued but it still took 6 hours to kick in and another 11 hours after that until I was able to sleep. It was somewhat like being on a gram of p. cubensis (but less euphoric)--for 17 hours.
Conclusion:
I'm fairly certain this is Bromo Dragonfly for the reasons mentioned in the outset. This is a powerful one, not to be underestimated. But I clearly need to find the right dose. Underdosing will still keep me up forever, with mild trippy thought patterns. Also because of the ridiculously long comeup time it would be easy to take too much. SWIM took more than I did and ended up feeling nauseated for several hours and hallucinating for over a day.
I don't think I can go as far with this one as I can with acid, and because of the length, it strikes me as more of a dreamy, weekend adventure, put my feet up and relax psychedelic.
Although unexpected I was not disappointed with my trip. Trying it once was fine. I am concerned about the growing prevalence of 'counterfeit LSD' that's out there, combined with the naivety of people who think LSD takes '4 hours' to kick in. If one ever eats a strong tasting blotter, it would be wise to wait a few hours before deciding to up the dose. Or follow the old adage 'If it's bitter, it's a spitter'.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Instead of remembering SQL, you can easily add a link to the Tables page to look up dependency information.
The pages in the Technology Explorer for DB2 are defined in XML profiles.
Each page has it's own XML profile stored within the web server.
The file displayed to the right is the XML definition for the Tables page.
The XML file controls the SQL to run, how the columns are displayed, cross reference links, and actions.
It even controls detailed information on the page itself, searching rules, how many rows to display, and much more.
Goal:
Add a reference within the Table page's XML table definition file. You can use the modified file displayed to the right as an example.
Steps to complete:
- Open the following file in any plaintext editor:
- <PathToTE>/tableDefinitions/tablecat.xml
- Add a new column to be displayed within the display_columns element.
The changes are outlined in the file to the right.
Refer to the legend below.
- Do this by:
- Copying the 'col' element below
- Changing the value of the 'name' attribute to 'Dependencies'
- Add a new reference
- Do this by:
- Copying the reference element with the attribute 'name' of the value 'indexes'
- Change the value of the element 'c_title' and the attribute 'name' to 'Dependencies'
- Change the value of the element 'refvalue' to 'SYSCAT.TABDEP' (case is sensitive).
- Change the foreign column names to match the corresponding names in the 'tabdep' table
- 'bschema' for the first 'ref' element
- 'bname' for the second 'ref' element
- Save the file
- Leave the editor open
The changes are indicated with the following:
- Indicated text has been removed
- Indicated text has been edited
- Indicated text has been added
- Indicated text is the source of a copy


Plugin Information |
|---|
View Block Build Final Project on the plugin site for more information. |
Block build when upstream/downstream project is building. Optional final projects may be given.
Summary
This plug-in allows a project to block when upstream or downstream projects are building. Jenkins already provides this functionality built-in, but it blocks on the entire pipeline. This plug-in allows an optional final project to be specified. This allows the project to block on part of the pipeline instead of the entire pipeline.
When configuring a project, the following options are available when this plugin is installed:
Example
For a detailed example on how to use this plugin, please visit GitHub README.md.
Requirements
Jenkins
Jenkins version 1.625.3 or newer is required.
Version history
Version 1.0 (2017-01-21)
- Initial release


| Top |
GObject ╰── GInitiallyUnowned ╰── GtkCellRenderer ╰── GtkCellRendererText ├── GtkCellRendererAccel ├── GtkCellRendererCombo ╰── GtkCellRendererSpin
A GtkCellRendererText renders a given text in its cell, using the font, color and style information provided by its properties. The text will be ellipsized if it is too long and the “ellipsize” property allows it.
If the “mode” is GTK_CELL_RENDERER_MODE_EDITABLE
,
the GtkCellRendererText allows to edit its text using an entry.
GtkCellRenderer *
gtk_cell_renderer_text_new (void
);
Creates a new GtkCellRendererText. Adjust how text is drawn using
object properties. Object properties can be
set globally (with g_object_set()
). Also, with GtkTreeViewColumn,
you can bind a property to a value in a GtkTreeModel. For example,
you can bind the “text” property on the cell renderer to a string
value in the model, thus rendering a different string in each row
of the GtkTreeView
void gtk_cell_renderer_text_set_fixed_height_from_font (GtkCellRendererText *renderer
,gint number_of_rows
);
Sets the height of a renderer to explicitly be determined by the “font” and
“y_pad” property set on it. Further changes in these properties do not
affect the height, so they must be accompanied by a subsequent call to this
function. Using this function is unflexible, and should really only be used
if calculating the size of a cell is too slow (ie, a massive number of cells
displayed). If number_of_rows
is -1, then the fixed height is unset, and
the height is determined by the properties again.
“align-set”
property“align-set” gboolean
Whether this tag affects the alignment mode.
Flags: Read / Write
Default value: FALSE
“alignment”
property“alignment” PangoAlignment
Specifies how to align the lines of text with respect to each other.
Note that this property describes how to align the lines of text in case there are several of them. The "xalign" property of GtkCellRenderer, on the other hand, sets the horizontal alignment of the whole text.
Flags: Read / Write
Default value: PANGO_ALIGN_LEFT
Since: 2.10
“attributes”
property“attributes” PangoAttrList *
A list of style attributes to apply to the text of the renderer.
Flags: Read / Write
“background”
property“background” gchar *
Background color as a string.
Flags: Write
Default value: NULL
“background-gdk”
property“background-gdk” GdkColor *
Background color as a GdkColor
GtkCellRendererText:background-gdk
has been deprecated since version 3.4 and should not be used in newly-written code.
Use “background-rgba” instead.
Flags: Read / Write
“background-rgba”
property“background-rgba” GdkRGBA *
Background color as a GdkRGBA
Flags: Read / Write
Since: 3.0
“background-set”
property“background-set” gboolean
Whether this tag affects the background color.
Flags: Read / Write
Default value: FALSE
“editable”
property“editable” gboolean
Whether the text can be modified by the user.
Flags: Read / Write
Default value: FALSE
“editable-set”
property“editable-set” gboolean
Whether this tag affects text editability.
Flags: Read / Write
Default value: FALSE
“ellipsize”
property“ellipsize” PangoEllipsizeMode
Specifies the preferred place to ellipsize the string, if the cell renderer
does not have enough room to display the entire string. Setting it to
PANGO_ELLIPSIZE_NONE
turns off ellipsizing. See the wrap-width property
for another way of making the text fit into a given width.
Flags: Read / Write
Default value: PANGO_ELLIPSIZE_NONE
Since: 2.6
“ellipsize-set”
property“ellipsize-set” gboolean
Whether this tag affects the ellipsize mode.
Flags: Read / Write
Default value: FALSE
“family”
property“family” gchar *
Name of the font family, e.g. Sans, Helvetica, Times, Monospace.
Flags: Read / Write
Default value: NULL
“family-set”
property“family-set” gboolean
Whether this tag affects the font family.
Flags: Read / Write
Default value: FALSE
“font”
property“font” gchar *
Font description as a string, e.g. "Sans Italic 12".
Flags: Read / Write
Default value: NULL
“font-desc”
property“font-desc” PangoFontDescription *
Font description as a PangoFontDescription struct.
Flags: Read / Write
“foreground”
property“foreground” gchar *
Foreground color as a string.
Flags: Write
Default value: NULL
“foreground-gdk”
property“foreground-gdk” GdkColor *
Foreground color as a GdkColor
GtkCellRendererText:foreground-gdk
has been deprecated since version 3.4 and should not be used in newly-written code.
Use “foreground-rgba” instead.
Flags: Read / Write
“foreground-rgba”
property“foreground-rgba” GdkRGBA *
Foreground color as a GdkRGBA
Flags: Read / Write
Since: 3.0
“foreground-set”
property“foreground-set” gboolean
Whether this tag affects the foreground color.
Flags: Read / Write
Default value: FALSE
“language”
property“language” gchar *
The language this text is in, as an ISO code. Pango can use this as a hint when rendering the text. If you don't understand this parameter, you probably don't need it.
Flags: Read / Write
Default value: NULL
“language-set”
property“language-set” gboolean
Whether this tag affects the language the text is rendered as.
Flags: Read / Write
Default value: FALSE
“max-width-chars”
property“max-width-chars” gint
The desired maximum width of the cell, in characters. If this property is set to -1, the width will be calculated automatically.
For cell renderers that ellipsize or wrap text; this property controls the maximum reported width of the cell. The cell should not receive any greater allocation unless it is set to expand in its GtkCellLayout and all of the cell's siblings have received their natural width.
Flags: Read / Write
Allowed values: >= -1
Default value: -1
Since: 3.0
“placeholder-text”
property“placeholder-text” gchar *
The text that will be displayed in the GtkCellRenderer if
“editable” is TRUE
and the cell is empty.
Since 3.6
Flags: Read / Write
Default value: NULL
“rise”
property“rise” gint
Offset of text above the baseline (below the baseline if rise is negative).
Flags: Read / Write
Allowed values: >= -2147483647
Default value: 0
“rise-set”
property“rise-set” gboolean
Whether this tag affects the rise.
Flags: Read / Write
Default value: FALSE
“scale”
property“scale” gdouble
Font scaling factor.
Flags: Read / Write
Allowed values: >= 0
Default value: 1
“scale-set”
property“scale-set” gboolean
Whether this tag scales the font size by a factor.
Flags: Read / Write
Default value: FALSE
“single-paragraph-mode”
property“single-paragraph-mode” gboolean
Whether to keep all text in a single paragraph.
Flags: Read / Write
Default value: FALSE
“size”
property“size” gint
Font size.
Flags: Read / Write
Allowed values: >= 0
Default value: 0
“size-points”
property“size-points” gdouble
Font size in points.
Flags: Read / Write
Allowed values: >= 0
Default value: 0
“size-set”
property“size-set” gboolean
Whether this tag affects the font size.
Flags: Read / Write
Default value: FALSE
“stretch”
property“stretch” PangoStretch
Font stretch.
Flags: Read / Write
Default value: PANGO_STRETCH_NORMAL
“stretch-set”
property“stretch-set” gboolean
Whether this tag affects the font stretch.
Flags: Read / Write
Default value: FALSE
“strikethrough”
property“strikethrough” gboolean
Whether to strike through the text.
Flags: Read / Write
Default value: FALSE
“strikethrough-set”
property“strikethrough-set” gboolean
Whether this tag affects strikethrough.
Flags: Read / Write
Default value: FALSE
“style”
property“style” PangoStyle
Font style.
Flags: Read / Write
Default value: PANGO_STYLE_NORMAL
“style-set”
property“style-set” gboolean
Whether this tag affects the font style.
Flags: Read / Write
Default value: FALSE
“underline”
property“underline” PangoUnderline
Style of underline for this text.
Flags: Read / Write
Default value: PANGO_UNDERLINE_NONE
“underline-set”
property“underline-set” gboolean
Whether this tag affects underlining.
Flags: Read / Write
Default value: FALSE
“variant”
property“variant” PangoVariant
Font variant.
Flags: Read / Write
Default value: PANGO_VARIANT_NORMAL
“variant-set”
property“variant-set” gboolean
Whether this tag affects the font variant.
Flags: Read / Write
Default value: FALSE
“weight”
property“weight” gint
Font weight.
Flags: Read / Write
Allowed values: >= 0
Default value: 400
“weight-set”
property“weight-set” gboolean
Whether this tag affects the font weight.
Flags: Read / Write
Default value: FALSE
“width-chars”
property“width-chars” gint
The desired width of the cell, in characters. If this property is set to -1, the width will be calculated automatically, otherwise the cell will request either 3 characters or the property value, whichever is greater.
Flags: Read / Write
Allowed values: >= -1
Default value: -1
Since: 2.6
“wrap-mode”
property“wrap-mode” PangoWrapMode
Specifies how to break the string into multiple lines, if the cell renderer does not have enough room to display the entire string. This property has no effect unless the wrap-width property is set.
Flags: Read / Write
Default value: PANGO_WRAP_CHAR
Since: 2.8
“wrap-width”
property“wrap-width” gint
Specifies the minimum width at which the text is wrapped. The wrap-mode property can be used to influence at what character positions the line breaks can be placed. Setting wrap-width to -1 turns wrapping off.
Flags: Read / Write
Allowed values: >= -1
Default value: -1
Since: 2.8
“edited”
signalvoid user_function (GtkCellRendererText *renderer, gchar *path, gchar *new_text, gpointer user_data)
This signal is emitted after renderer
has been edited.
It is the responsibility of the application to update the model
and store new_text
at the position indicated by path
.
renderer |
the object which received the signal |
|
path |
the path identifying the edited cell |
|
new_text |
the new text |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last


My recent working regarding about this webpage
I used: HTML, CSS, JavaScrip tand Bootstrap
Images and Texts modified to make objects float to the right or left view
I used: HTML and CSS
Animal Shelter demo link
I used: HTML, and CSS
Job Experiences
~Computer Programming
I want to continue my life with importance and impact in our current
High-Technology Generation. I believe using my skills and talents to help
and build apps/tools/web-sites to make life easier and at the same time impact
the high-end economic side and become a successful programmer.


Toggle navigation
Hello-Books
Catalog
Solomon Nsumei
Profile
Logout
Profile
Name:
Solomon Nsumei
Email:
<EMAIL_ADDRESS>Username:
solnsumei
Membership Type:
Gold
Edit profile
Books Borrowed Not Returned
Borrow history
Book
Borrow Date
Due Date
Action
Yellow Cassava
13-Jun-2017
27-Jul-2017
Return book
Agile Processed
09-May-2017
27-Jun-2017
Return book
Microsoft Exchange Server
10-Jun-2017
29-Jul-2017
Return book
Es6 For Beginners
13-July-2017
07-Aug-2017
Return book
×
Please Confirm
Do you want to return this book?


--- layout: centered intro: type: image url: "img/hacker-society.png" ---
We meet Tuesday in Glennan at 5:30pm for weekly technical talks. You should sign up for our mailing list .
Hacker Society consists of a weekly "lecture series" where members and outside hackers present on a topic of interest. We have a history of having in-depth talks on a wide variety of subjects. Checkout some of our past talks (note: infrequently updated). For an up-to-date list, see the archives of our mailing list which you should subscribe to. You can and should give a talk at hacker society. Sign up now. You should also take a minute to read, On the nature of Hacking by Steve Johnson.
In addition, we host the school hackathon (hackCWRU), tech conference (link-state), send club members to hackathons and conferences such as the Grace Hopper Celebration (all expenses paid). We also hang out outside of class to help each other with side projects and classwork. Yes, this means we also host the boring albeit useful things like class advising help and coding-interview prep workshops.
We pride ourselves on welcoming new members from all disciplines (you don't even need to know how to code, we promise).
To get started, sign up for our mailing list. We send out an newsletter/email thing at the beginning of the week with all the details of that week's events. Join the list because that's where it's happening!


Simple and additional colors
To use simple and additional colors you must add special prefix to color name.
Example: bg-*
- for background, fg-*
- for text color. In table below specified all prefixes.
| Target |
Class |
| background |
bg-* |
| text color |
fg-* |
| border |
bd-* |
| outline |
ol-* |
| background |
bg-* |
| active |
bg-*-active, fg-*-active, bd-*-active, ol-*-active |
| hover |
bg-*-hover, fg-*-hover, bd-*-hover, ol-*-hover |
| focus |
bg-*-focus, fg-*-focus, bd-*-focus, ol-*-focus |
| ribbed background |
ribbed-* |
| opacity background |
op-* |
| before |
before-bg-*, before-fg-* |
| after |
after-bg-*, after-fg-* |


 A travesty.
Dawn Treader, in her words, is “not like the book at all, but still a good movie.”