HTML Made Special
HTML is one of the most widespread and interoperable data formats available. It is extremely versatile and flexible, and if you have access to a computer, you have a access to a browser with which to run it. Combined with JavaScript, CSS, SVG, and the rest of the Web platform, it can be used as a very powerful format for all aspects of digital publishing.
This generality comes at a cost, however. When your goal is the interchange of specialised information within a given domain, the full generality of HTML can get in the way. Your applications should not have to sift through some vague information soup in order to extract the data that they require, and equally they need an obvious way of encoding their data in such a way that other applications will reliably understand it.
That is the traditional purview of domain-specific data formats. These are often relatively simple (at least compared to the fullness of HTML) data formats, typically encoded in XML or JSON, with predictable rules that (one hopes) enable the interoperable interchange of information.
Domain-specific data formats are, however, not a panacea. They require conversion to an output format (usually HTML, sometimes PDF) in order to be consumed, which is often a lossy operation. This can make it harder to users to interact with them; it also means that round-tripping them to and from user-friendly formats is an error-prone process. Not being directly published on the Web, their content tends to be less discoverable.
“Vernacular HTML” is the growing practice of creating domain-specific data formats using the HTML platform. Its goal is to enable interoperable, specialised data interchange while retaining as much of HTML’s full power as is sensible for the given domain. It is not a technology so much as an incipient body of good practices.
Bodies of good practices are suspicious things. Why not do and advocate through example rather than talk about doing? In some cases, though, it is worth sitting down and writing up a few tips and tricks acquired through experience that might not be immediately obvious from just looking at what others are doing.
HTML already has several extensibility mechanisms, ranging from well-known ones such as
class
and data-*
to less obvious parts like rel
. It
also has (sadly, several) ways of overlaying additional semantics atop its markup:
Microdata,
RDFa, and Microformats. Its elements and attributes can at times
have non-obvious meanings, a fact made worse by the occasionally cryptic language in which
they are described in the specification. Additionally, HTML’s processing rules make it
possible to mint your own elements and attributes and expect a reliable DOM to come out at
the other end. With all of these options it is no surprise that people could find creating
their own vernacular daunting.
The HTML specification does contain some notes about how to use this or that extensibility feature, but it is worth noting that standard authors can at times suffer from self-important notions of right and wrong. Not that their advice should be ignored wholesale, but it needs to be appraised through the sieve of your detailed knowledge of the specific problem you are solving.
Our approach here is of a decidedly pragmatic bent. We simply wish to exchange good ideas and good examples; never-ending debates about the significance of semantic meaning are very much out of scope.
Much of the time, if you sit down and start typing out examples, you will quickly get a good feel for the kind of markup you want for your specific use case. Modulo some syntactical variation, the overall shape of it is likely to be obvious. What may not be so obvious are the bits that can trip you farther down the line. As a result, many of the practices listed here are actually bad practices, thing you should probably not be doing. I say “probably” because the philosophy at play here is that, ultimately, you know what you’re doing (if not, no amount of advice will save you). You should have no qualms about ignoring a red flag found here; all we’re saying is that it is likely a good idea to think about it.
The guidelines below commonly make use of examples drawn from XML vocabularies. That is because the problems one is likely to encounter in the creation XML and HTML languages have a fair amount of overlap, and the XML examples tend to be more outrageously wrong. Don’t let that lead you to thinking that using HTML makes you safe from such mistakes — if the problem is listed here, someone smart has hit that problem before.
Vernacular HTML is a practice that existed long before it was given a name — as well it should be! Here is a short list of some examples (with varying qualities of documentation). If you wish to expand it, please simply file a pull request.
data-ng-*
attributes, and a few other options) to
add interactivity to HTML.
link
and meta
values.


instance methods (only getters: immutable class)
use this factory interface to create/destroy instances


Free to use and open-source
Beautiful and mobile responsive
Built with Bootstrap 5, SASS and PUG.js
Chart.js integration to display responsive charts
Seven pre built pages including login, user profile and print friendly invoice page
Data tables with sort, search and paginate functions


Alice's Adventures in Wonderland
by Lewis Carroll
CHAPTER III
A Caucus-Race and a Long Tale
They were indeed a queer-looking party that assembled on the bank--the birds with draggled feathers, the animals with their fur clinging close to them, and all dripping wet, cross, and uncomfortable.
The first question of course was, how to get dry again: they had a consultation about this, and after a few minutes it seemed quite natural to Alice to find herself talking familiarly with them, as if she had known them all her life. Indeed, she had quite a long argument with the Lory, who at last turned sulky, and would only say, 'I am older than you, and must know better'; and this Alice would not allow without knowing how old it was, and, as the Lory positively refused to tell its age, there was no more to be said.
At last the Mouse, who seemed to be a person of authority among them, called out, 'Sit down, all of you, and listen to me! I'll soon make you dry enough!' They all sat down at once, in a large ring, with the Mouse in the middle. Alice kept her eyes anxiously fixed on it, for she felt sure she would catch a bad cold if she did not get dry very soon.
'Ahem!' said the Mouse with an important air, 'are you all ready? This is the driest thing I know. Silence all round, if you please! "William the Conqueror, whose cause was favoured by the pope, was soon submitted to by the English, who wanted leaders, and had been of late much accustomed to usurpation and conquest. Edwin and Morcar, the earls of Mercia and Northumbria--"'
'Ugh!' said the Lory, with a shiver.
'I beg your pardon!' said the Mouse, frowning, but very politely: 'Did you speak?'
'Not I!' said the Lory hastily.
'I thought you did,' said the Mouse. '--I proceed. "Edwin and Morcar, the earls of Mercia and Northumbria, declared for him: and even Stigand, the patriotic archbishop of Canterbury, found it advisable--"'
'Found what?' said the Duck.
'Found it,' the Mouse replied rather crossly: 'of course you know what "it" means.'
'I know what "it" means well enough, when I find a thing,' said the Duck: 'it's generally a frog or a worm. The question is, what did the archbishop find?'
The Mouse did not notice this question, but hurriedly went on, '"--found it advisable to go with Edgar Atheling to meet William and offer him the crown. William's conduct at first was moderate. But the insolence of his Normans--" How are you getting on now, my dear?' it continued, turning to Alice as it spoke.
'As wet as ever,' said Alice in a melancholy tone: 'it doesn't seem to dry me at all.'
'In that case,' said the Dodo solemnly, rising to its feet, 'I move that the meeting adjourn, for the immediate adoption of more energetic remedies--'
'Speak English!' said the Eaglet. 'I don't know the meaning of half those long words, and, what's more, I don't believe you do either!' And the Eaglet bent down its head to hide a smile: some of the other birds tittered audibly.
'What I was going to say,' said the Dodo in an offended tone, 'was, that the best thing to get us dry would be a Caucus-race.'
'What is a Caucus-race?' said Alice; not that she wanted much to know, but the Dodo had paused as if it thought that somebody ought to speak, and no one else seemed inclined to say anything.
'Why,' said the Dodo, 'the best way to explain it is to do it.' (And, as you might like to try the thing yourself, some winter day, I will tell you how the Dodo managed it.)
First it marked out a race-course, in a sort of circle, ('the exact shape doesn't matter,' it said,) and then all the party were placed along the course, here and there. There was no 'One, two, three, and away,' but they began running when they liked, and left off when they liked, so that it was not easy to know when the race was over. However, when they had been running half an hour or so, and were quite dry again, the Dodo suddenly called out 'The race is over!' and they all crowded round it, panting, and asking, 'But who has won?'
This question the Dodo could not answer without a great deal of thought, and it sat for a long time with one finger pressed upon its forehead (the position in which you usually see Shakespeare, in the pictures of him), while the rest waited in silence. At last the Dodo said, 'everybody has won, and all must have prizes.'
'But who is to give the prizes?' quite a chorus of voices asked.
'Why, she, of course,' said the Dodo, pointing to Alice with one finger; and the whole party at once crowded round her, calling out in a confused way, 'Prizes! Prizes!'
Alice had no idea what to do, and in despair she put her hand in her pocket, and pulled out a box of comfits, (luckily the salt water had not got into it), and handed them round as prizes. There was exactly one a-piece all round.
'But she must have a prize herself, you know,' said the Mouse.
'Of course,' the Dodo replied very gravely. 'What else have you got in your pocket?' he went on, turning to Alice.
'Only a thimble,' said Alice sadly.
'Hand it over here,' said the Dodo.
Then they all crowded round her once more, while the Dodo solemnly presented the thimble, saying 'We beg your acceptance of this elegant thimble'; and, when it had finished this short speech, they all cheered.


import os
from abc import ABC, abstractmethod
from anadroid.Config import get_general_config
[docs]class AbstractBuilder(ABC):
"""
An abstract class that defines the API for building apps using supported build systems.
Attributes:
android_home_dir (str): The path of the local Android home directory (value of $ANDROID_HOME).
proj (`AndroidProject`): The project to build.
device (`Device`): The targeted device.
resources_dir (str): The pyanadroid resources directory.
instrumenter (`AbstractInstrumenter`): The instrumentation tool used.
config: Build configurations.
"""
def __init__(self, proj, device, resources_dir, instrumenter):
"""
Initializes a new instance of the AbstractBuilder class.
Args:
proj (`AndroidProject`): The project to build.
device (`Device`): The targeted device.
resources_dir (str): The pyanadroid resources directory.
instrumenter (`AbstractInstrumenter`): The instrumentation tool used.
"""
super().__init__()
self.android_home_dir = self.__get_android_home()
self.proj = proj
self.resources_dir = resources_dir
self.instrumenter = instrumenter
self.device = device
self.__get_device_info()
self.config = get_general_config("build")
@staticmethod
def __get_android_home():
"""
Gets the value of the environment variable ANDROID_HOME.
Returns:
android_home (str): Path to the Android SDK installation folder.
Raises:
Exception: If ANDROID_HOME is not set.
"""
android_home = os.environ.get('ANDROID_HOME')
if android_home is None or android_home == "":
raise Exception("ANDROID_HOME not set")
return android_home
def __get_device_info(self):
"""
Placeholder method for retrieving device information.
Subclasses should implement this method to fetch device-related details.
"""
pass
[docs] @abstractmethod
def build_apk(self):
"""
Abstract method for building the main APK of the app.
Subclasses must provide an implementation for building the APK.
"""
pass
[docs] @abstractmethod
def build_tests_apk(self):
"""
Abstract method for building the test APKs of the app.
Subclasses must provide an implementation for building test APKs.
"""
pass
[docs] @abstractmethod
def build(self):
"""
Abstract method for the complete build process of the app.
Subclasses must provide an implementation for the full build process.
"""
pass
[docs] def get_config(self, key, default=None):
"""
Gets a configuration value identified by the given key.
If no configuration is found, returns the specified default value.
Args:
key: The configuration key.
default: The default value to return if the key is not found.
Returns:
value (str): The value of the configuration key, or the default value.
"""
return self.config.get(key, default)


Why recycle your Electronic devices?
Hydra learns your business. By analyzing your sales data, Hydra optimizes your sales process and show you where you should be spending your resources.
what types of electronics can be Recycled
Hydra learns your business. By analyzing your sales data, Hydra optimizes your sales process and show you where you should be spending your resources.
How does the pickup service work?
Hydra learns your business. By analyzing your sales data, Hydra optimizes your sales process and show you where you should be spending your resources.


Language::Farnsworth::Output - Wrapper class for making output simpler
This class is just a wrapper for some code to convert the data into a format more usable for perl. Eventually all the code will be spun off into the Language::Farnsworth::Value subclasses so that the code can be used for serialization and loading.
use Language::Farnsworth; my $hubert = Language::Farnsworth->new(); my $result = $hubert->runString("10 km -> miles"); # $result here is an object of Language::Farnsworth::Output my $result = $hubert->runFile("file.frns"); print $result;
This has only one method that a user should be aware of, tostring
; you can call this directly on the object, e.g. $result->tostring()
Ryan Voots<EMAIL_ADDRESS>Copyright (C) 2010 by Ryan Voots
This library is free software; It is licensed exclusively under the Artistic License version 2.0 only.


{% extends 'django_openstack/dash/base.html' %}
{% block sidebar %}
{% with current_sidebar="userlist" %}
{{block.super}}
{% endwith %}
{% endblock %}
{% block page_header %}
{% url dash_user_list request.user.tenant_id as refresh_link %}
{# to make searchable false, just remove it from the include statement #}
{% include "django_openstack/common/_page_header.html" with title="Users" refresh_link=refresh_link searchable="true" %}
{% endblock page_header %}
{% block dash_main %}
{% include 'django_openstack/dash/containers/_userlist.html' %}
{% endblock %}


CompletableFuture is a representation of a
single asynchronous action. It is also a
framework for composing these actions to define complex asynchronous behaviours.
- Since JDK8
- Part of java.util.concurrent
- Uses ForkJoinPool
Fn Flow is a framework for composing
distributed asynchronous actions, based on CompletableFuture.


public interface AsyncDatastore
Create, read, update and delete entities from an AsyncBucket
. It is similar to AsyncRepository
but less verbose or more ready to use, but also add support for ViewQuery
and N1qlQuery
.
In order to abstract developers from doing basic CRUD operations, the following design has been made:
classname::id
.class
attribute is also stored within the document Here is an example of a document for a class: model.Beer
:
{
"model.Beer::678": {
"name": "IPA",
"id": 678,
"class": "model.Beer"
}
}
In order to mark a class field as document ID, you must:
id
, orId
Auto-increment ID are supported by annotating the field with GeneratedValue
and declare the field as Long
. Then whenever you make a call to insert(Object)
or upsert(Object)
a new ID will be generated if need it.
| Modifier and Type | Interface and Description |
|---|---|
static interface |
AsyncDatastore.AsyncCommand
Provides advanced options for couchbase operation.
|
static interface |
AsyncDatastore.AsyncRemoveCommand
Provides advanced options for couchbase operation.
|
static class |
AsyncDatastore.AsyncViewQueryResult<T>
Result of query(ViewQuery) contains a list of entities plus totalRows in the view.
|
| Modifier and Type | Method and Description |
|---|---|
rx.Observable<Boolean> |
exists(Class<?> entityClass, Object id)
Check whether a entity with the given ID does exist in the bucket.
|
<T> rx.Observable<T> |
get(Class<T> entityClass, Object id)
Get an entity/document by ID.
|
<T> rx.Observable<T> |
getAndLock(Class<T> entityClass, Object id, int lockTime)
Retrieve and lock a entity by its unique ID.
|
<T> rx.Observable<T> |
getAndTouch(Class<T> entityClass, Object id, int expiry)
Retrieve and touch an entity by its unique ID.
|
<T> rx.Observable<T> |
getFromReplica(Class<T> entityClass, Object id, com.couchbase.client.java.ReplicaMode mode)
Get an entity/document by ID.
|
AsyncDatastore.AsyncCommand |
insert() |
default <T> rx.Observable<T> |
insert(T entity)
Insert an entity.
|
<T> rx.Observable<List<T>> |
query(com.couchbase.client.java.query.N1qlQuery query)
Run a N1qlQuery query.
|
default <T> rx.Observable<List<T>> |
query(com.couchbase.client.java.query.Statement statement)
Run a N1qlQuery.simple(Statement) query.
|
<T> rx.Observable<AsyncDatastore.AsyncViewQueryResult<T>> |
query(com.couchbase.client.java.view.ViewQuery query)
Run a ViewQuery query.
|
AsyncDatastore.AsyncRemoveCommand |
remove()
Removes an entity from the Server.
|
default rx.Observable<Long> |
remove(Class<?> entityClass, Object id)
Removes an entity from the Server.
|
default rx.Observable<Long> |
remove(Object entity)
Removes an entity from the Server.
|
AsyncDatastore.AsyncCommand |
replace()
Replace an entity if it does exist and watch for durability constraints.
|
default <T> rx.Observable<T> |
replace(T entity)
Replace an entity if it does exist and watch for durability constraints.
|
AsyncDatastore.AsyncCommand |
upsert() |
default <T> rx.Observable<T> |
upsert(T entity)
Insert or overwrite an entity.
|
<T> rx.Observable<T> get(Class<T> entityClass, Object id)
N1Q.qualifyId(Class, Object)
.
T
- Entity type.
entityClass
- Entity class.
id
- Entity id.
<T> rx.Observable<T> getFromReplica(Class<T> entityClass, Object id, com.couchbase.client.java.ReplicaMode mode)
N1Q.qualifyId(Class, Object)
.
T
- Entity type.
entityClass
- Entity class.
id
- Entity id.
mode
- Replica mode.
<T> rx.Observable<T> getAndLock(Class<T> entityClass, Object id, int lockTime)
Observable
completes without an item emitted (empty). This method works similar to get(Class, Object)
, but in addition it (write) locks the entity for the given lock time interval. Note that this lock time is hard capped to 30 seconds, even if provided with a higher value and is not configurable. The entity will unlock afterwards automatically. Detecting an already locked entity is done by checking for TemporaryLockFailureException
. Note that this exception can also be raised in other conditions, always when the error is transient and retrying may help.
T
- Entity type.
entityClass
- Entity class.
id
- id the unique ID of the entity.
lockTime
- the time to write lock the entity (max. 30 seconds).
Observable
eventually containing the found JsonDocument
.
<T> rx.Observable<T> getAndTouch(Class<T> entityClass, Object id, int expiry)
Observable
completes without an item emitted (empty). This method works similar to get(Class, Object)
, but in addition it touches the entity, which will reset its configured expiration time to the value provided.
T
- Entity type.
entityClass
- Entity class.
id
- id the unique ID of the entity.
expiry
- the new expiration time for the entity (in seconds).
Observable
eventually containing the found JsonDocument
.
rx.Observable<Boolean> exists(Class<?> entityClass, Object id)
entityClass
- Entity class.
id
- Entity id.
AsyncDatastore.AsyncCommand upsert()
default <T> rx.Observable<T> upsert(T entity)
GeneratedValue
this method will generate a new ID and insert the entity.
T
- Entity type.
entity
- Entity to insert or overwrite.
AsyncDatastore.AsyncCommand insert()
default <T> rx.Observable<T> insert(T entity)
GeneratedValue
this method will generate a new ID and insert the entity.
T
- Entity type.
entity
- Entity to insert.
AsyncDatastore.AsyncCommand replace()
default <T> rx.Observable<T> replace(T entity)
AsyncBucket.replace(Document)
, but afterwards watches the server states if the given durability constraints are met. If this is the case, a new document is returned which contains the original properties, but has the refreshed CAS value set.
T
- Entity type.
entity
- An entity to replace.
AsyncDatastore.AsyncRemoveCommand remove()
default rx.Observable<Long> remove(Object entity)
entity
- Entity to remove.
default rx.Observable<Long> remove(Class<?> entityClass, Object id)
entityClass
- Entity class to remove.
id
- Entity id.
default <T> rx.Observable<List<T>> query(com.couchbase.client.java.query.Statement statement)
N1qlQuery.simple(Statement)
query.
T
- Entity type.
statement
- Statement.
N1Q.from(Class)
<T> rx.Observable<List<T>> query(com.couchbase.client.java.query.N1qlQuery query)
N1qlQuery
query.
T
- Entity type.
query
- Query.
N1Q.from(Class)
<T> rx.Observable<AsyncDatastore.AsyncViewQueryResult<T>> query(com.couchbase.client.java.view.ViewQuery query)
ViewQuery
query.
T
- Entity type.
query
- View query.
Copyright © 2019. All rights reserved.


Concurrent Programming
Table of Contents
- 1. Lect 2 (24 August): Basic Mechanics for Processes and Threads
- 2. Lect 3 (29 August): Atomicity
- 3. Lect 4 (31 August): Atomicity Continued
- 4. Lect 4 (31 August): Memory Model
- 5. Lect 5 (7 September): Memory Model continued
- 5.1. TODO Visibility
- 5.2. TODO TSO (Total store order)
- 5.3. Special instructions/ FENCE
- 5.4. Compiler optimization
- 5.5. Vocabulary
- 5.6. A data race free (DRF) program behaves sequentially
- 5.7. What happens if data race
- 5.8. Race v/s data race
- 5.9. atomic provide order and
- 5.10. Order: defined control flow
- 5.11. TODO Ordered by happens-before
- 6. Lect 6: Publishing
- 7. Lect 7: Patterns for concurrent programming
- 8. Lect 8: Patterns for concurrent data structures
- 9. Lect 9: Patterns for thread safe data structures
- 10. Lect 10: Case study: Swing Package
- 11. Lect 11: Patterns for concurrent data structures 4: Deadlocks
- 12. Lect 12: Deadlocks (contd)
- 13. Lect 13: Java synchronized, wait, notify(got late)
- 14. Lect 14: Reader Writer problem (contd)
- 15. Lect 15: Cancellation
- 16. Lect 16: Cancellation (contd)
- 17. Lect 17: Split Binary Semaphore
- 18. Mid Exam 1 Notes:
- 19. Lect 18: Thread Pools
- 20. Lect 19: Executors & Futures
- 21. Lect 20: C++ Move, futures,
fork/join
- 22. Lect 21: case study: Concurrency in Android, Lock implementation
- 23. Lect 22: TTAS
- 24. Lect 23: Spin Lock Implementations, hybrid Locks
- 25. Lect 24: Mid 1 Review
- 26. Linearizability and correctness
- 27. Reasoning about Linearizability
- 28. Composing higher constructs using primitive
- 29. Parallel Programming
- 30. OpenMP (cont)
- 31. Research Work: ACES4
- 32. Performance Models
- 33. Go
- 34. Actors
- 35. MPI
- 36. Vector Algorithms
- 37. Final Review
- 38. Deadlocks
- 39. Livelock
- 40. Starvation
- 41. Invariant
1 Lect 2 (24 August): Basic Mechanics for Processes and Threads
- Unit of execution – common word for process or thread
- Threads: light weight process
1.1 Process
- has its own heap and stack (address space)
- IPC: requires sys call, hence slow
- created in UNIX using
fork
– everything same except return code
1.2 Thread
- share address space; shared heap
pthreads
: POSIX threads- IPC don't require sys call
1.2.1 PThreads
See slides for more Pthreads APIs, I'm listing some details about some APIs:
int pthread_join(pthread_t thread, void **value_ptr);
will suspend execution of the thread which calls it until target thread terminates. Useful when main thread waits for spawned threads to complete their execution before continuing. Here we can collect returned valued from thread invalue_ptr
.void pthread_exit(void *retval);
This will exit the thread which calls it (which callspthread_exit
) Main thread will exit, but spawned threads will continue. This is useful when main thread is used only to spawn new threads and does no other work.int pthread_detach(pthread_t thread);
The pthreaddetach() function marks the thread identified by thread as detached. When a detached thread terminates, its resources are automatically released back to the system without the need for another thread to join with the terminated thread.- use
pthread_exit
to exit from thread and return value instead of directly usingreturn val
so that proper destructor are called.
detached
vsjoin
Create a detached thread using
pthread_attr_setdetachstate
when we don't want to join it. A detached thread, after terminating, returns all of its resources, where a joinable thread doesn't return resources until it is joined. If a joinable thread is not joined, it's resources are not released until the process it terminated.- Todos
1.2.2 Java: java.lang.Thread
- threads can be set as Daemon
- JVM waits for non daemon threads before shutting down
2 Lect 3 (29 August): Atomicity
2.1 Immutable: Java BigInteger is immutable
2.2 Stateless method
everything which is created is deleted/cleared after return Thread safe
2.3 AtomicLong: Java provided atomic DS
- Gives methods such as increment
- C++ added atomic DS in C++ 11.
- utilizes hardware to provide atomicity
2.3.1 TODO Memory synchronization
2.4 Lock
- Package
java.util.lock
- Interface ReenterantLock
- Exceptions in critical section
use
unlock
infinally
l.lock() try //critical section finally l.unlock()
- Note, we need to lock
lastNumber
returnlastFactor
, we return what we checked [slide 25]
2.4.1 TODO slide 24, return statement
2.5 Pthread Mutexes
- pthreadmutex_[lock,trylock,unlock]
tryLock
returns true/falsereenterantLock
orpthread_mutex_recursive
same thread can lock the same lock- Java -
reenterantLock
is default; C,C++ says otherwise
- Java -
- No garbage collector:
pthread_mutex_destroy
2.6 Java Intrinsic Locks (monitor locks)
- used with
synchronized
keyword - compiler gives support for proper use
this
is default object for lockingsynchronized
keyword is not inherited in sub classes- Java: intrinsic lock can also be on class object, refer SO (slide 47)
2.6.1 DONE was in earlier version, considered as mistake
- many still use
- every object has lock - overhead
- some methods are missing/unavailable in such method of locking
lockinterruptibility
,tryLock
…
- SO says
synchronized
is for easy cases,locks
give more flexibility and responsibility.
2.6.2 How monitors work intuition
AtomicIntegers can be implemented using synchronized
keyword.
class AtomicInt { private int value; synchronized public int increment() { // here we are having lock on `this` return AtomicInt(this.value++); // since atomic types are immutable, we are passing // new AtomicInt } }
meanwhile in some other part of the universe
AtomicIntegers i = new AtomicInteger(0);
t1 calls i.increment()
t2 calls i.increment()
where `i` is shared, while t1
and t2
are different objects, i
is shared
and this is used for locking in the intrinsic lock (monitor lock) in
synchronized public int increment() {
Thus atomicity is maintained.
3 Lect 4 (31 August): Atomicity Continued
3.1 template for atomic type
++
is overloaded- implemented by runtime
- often utilized using hw instruction
- if not available, it uses lock
- in c++,
is_lock_free
indicates if lock is used
3.2 mutex (locks)
3.2.1 lock_guard
- TODO Implements RAII (Resource allocation is initialization)
manager
object: allocated in constructor, deallocates in destructor{ manage_obj man // calls constructor, allocates resource (file open, mutex lock) //do your stuff... } // man goes out of scope, destructor is called
mutex
RAII - explained in slide "Cached version"
4 Lect 4 (31 August): Memory Model
5 Lect 5 (7 September): Memory Model continued
5.1 TODO Visibility
5.2 TODO TSO (Total store order)
5.3 Special instructions/ FENCE
- sides of the FENCE are not mixed
- eg: ARM calls fence as
sync
- eg: ARM calls fence as
- compiler takes care of it
- add FENCE only when required
5.4 Compiler optimization
- eg: dead code elimination -> spin locks
5.4.1 when to optimize?
- communication needed with compiler
5.5 Vocabulary
5.5.1 Conflicting operation:
- different threads
- access same location
- at least one write
5.5.2 Data race:
conflicting operations are not ordered
5.6 A data race free (DRF) program behaves sequentially
5.7 What happens if data race
5.8 Race v/s data race
- some mean race, as un wanted behavior due to schduler
5.9 atomic provide order and
5.10 Order: defined control flow
5.11 TODO Ordered by happens-before
6 Lect 6: Publishing
6.1 Publishing (problems with Publishing data)
- ensure happens before relation between construction and use of object
- wrapper for implementing multithreading
- do not trush the function
- block pointers
6.1.1 Java double checking locking
- partially created instance can trigger
instance == null
- constructor may not be atomic
- can be fixed by making instance
volatile
- can this be fixed by synchronizing
constructor
6.2 unsafe publication - escape
6.2.1 Construction
- Java:
this
cannot escape during construction - use
private
constructor, wraper to get new object
6.3 Immutability
final
is special in Java wrt to concurrencycall_once
is corresponding stuff in C++
7 Lect 7: Patterns for concurrent programming
7.1 Fully synchronized object
- one single lock
- no public fields
- finite
- consistent
- publish object without data race
7.1.1 Not scalable
7.1.2 Easy to implement
- good when concurrency level is low
7.1.3 Publishing
- if instance is
volatile
in java then it's construction is safe - publishing is about constructing
7.1.4 Re using sequential code
- modify source code - add lock
- subclass - add lock
- adapter, proxy, lock then call method
- iterator is not thread safe
- user has to manually do it
why not synchronized
iter.hasNext(); nextItem = iter.next(); //two methods
- throws exception
ConcurrentModification
- this is not guaranteed
7.2 Finer grained approach
- maybe too small granularity
- identify stateless
- does not rely on mutable object
- slide 56, why make a copy of
b
- maybe read > 1 in
compute
- maybe read > 1 in
8 Lect 8: Patterns for concurrent data structures
8.1 Hand-over-hand locking
- lock only one element of the data structure
- in example in slides: lock means, to delete predecessor we need lock
- what about inserting new node (my question)
- in example in slides: lock means, to delete predecessor we need lock
8.2 Optimistic synchronization
- let things happen, then check if something went wrong
- better if low contention
- Atomic commit
- check if anything changed
- if no, then edit/commit
- dont use optimistic sync if irreversible side effects
9 Lect 9: Patterns for thread safe data structures
- slide 49:
Node next
should bevolatile
, one thread locks it but other traverses without locking.item
andkey
final.
9.1 Copy on write
- relevant when we need to update multiple field in the same object
10 Lect 10: Case study: Swing Package
10.1 Threads:
- main thread
- event queue for GUI
10.2 event listener
- create button
- create listener
- install listener
10.3 Swing not thread safe
- event dispatch thread cannot do long computation - GUI freeze
listenerList
is copy-on-write- what happens if event is removed from
listenerList
- handle events even after removing listener
10.4 Assignment 1: Thread safe queue
- C++, template - any class can be put in
- use exception - inherit from standard exception
default
compiler will generate the functiondelete
cannot be called- copy constructor
=
operator
lock_guard
auto release when goes out of scope- even if exception happens
shared_pointer
auto deleted after all reference are exhausted
11 Lect 11: Patterns for concurrent data structures 4: Deadlocks
11.1 Design problem: queue
- cannot be solved just by making all methods
synchronized
empty
is shared, two threads in differentsynchronized
methods can access the same variable.
11.2 TODO Automated tests
- how to test data races?
- create threads, add to queue
- make threads to add certain intervals
- time to make thread v/s work done in thread
11.3 Deadlocks
- when thread hold multiple locks - think about deadlocks
11.3.1 Avoiding deadlocks
- associate lock with serial number
- cannot lock before locking other instance
- acquire lower number lock than higher number lock.
- orderings to acquire lock:
- ids in object
- system identity hash code
11.3.2 Deadlock suspesion
- design code without deadlocks
12 Lect 12: Deadlocks (contd)
12.1 Let them happen, then deal with it
- hard to detect deadlock accurately in distributed concurrent programs
- if there suspicion that there is deadlock, consider as there is deadlock
synchronized
keyword doesn't allow totry_lock
try_lock
returns false if could not acquire lock else lock.- try to get lock, if not acquired then release own lock
- 0, try again immediately
- constant delay
- random delay
- exponential back off
12.2 Thread priority
- 10 priority levels in Java, maybe mapped to lesser number of OS thread priority
- thread priority may not be very useful
- give daemon thread low priority
12.3 Conditional Synchrnozation
12.3.1 Design by Contract
13 Lect 13: Java synchronized, wait, notify(got late)
13.1 wait
- obj reacquires the lock after coming from wait state.
- check and wait must be in a while loop
13.2 Safety and Liveness
- safety is correctness
- doing nothing can also be correct
- ensure Liveness
notify
v/snotifyAll
notify
may be efficientnotifyAll
may be easier to prove correct
13.3 waiting in C++
condition_variable
13.4 Readers-Writers Problem
concurrent read allowed
nr > 0 || nw == 1
14 Lect 14: Reader Writer problem (contd)
- instead of just mutual exclusion, multiple readers allowed, only one writer allowed.
invariant
nr >= 0 ^ nw >= 0 ^ (nw == 0 v (nw == 1 and nr == 0))
condition
in javaawait
readers
lock
14.1 Bounded Buffer
invariant
0 <= i ^ 0 <= j ^ 0 < i - j <= N
14.2 TODO unique_lock
v/s lock_guard
15 Lect 15: Cancellation
15.1 TODO Solve last problem of last slides
15.2 Cancellation: terminate thread externally
15.2.1 Do cleanup
- release locks
- free memory (if not garbage collection; or delete references)
- free resources
15.2.2 Unrestricted asynchronous cancellation
- stop thread - it stops sometime soon
- Java stop deprecated - it may not cleanup
- difficult to stop program in safe manner -see slides
15.2.3 Polling for flag
- set flag
- thread polls and stops when see flag set
- after self cleaning
15.2.4 Deferred cancellation
- request cancellation anytime but will occur at specific points
- where threads checks for it
- predefined cancellation point
- Implementation
- Java
Java.lang.Thread.interrupt()
- throw
InterruptedException
- if the thread is blocked, sleeping, waiting
run
method not declared to throwInterruptedException
- catch exception and interrupt thread
Thread.currentThread.interrupt()
- or wrap into
RuntimeException
RuntimeException
doesn't need to be declared (unchecked exception)
- catch exception and interrupt thread
- catching clears interrupt flag
- can poll for interrupt -
interrupt()
,isInterrupted
- Advantages
- language provided
- works even after when blocked
- Interrupts and memory model
- call on
interrupt()
happens before detection- no data race
- check before something difficult to stop
- empirical test
- call on
- Problems
synchronized
doesn't allow interrupt- Blocked on IO doesn't interrupt
- socket have timed waiting blocking
- Java
16 Lect 16: Cancellation (contd)
16.1 Interrupts and IO
- Sockets have timeout
- poll when timed out
16.2 Resource revocation (Java)
- forcefully close resource
16.2.1 Java.nio
close()
provided in Java.nio- no interrupt on write
16.3 C++ thread cancellation
- no support
- use Boost
- can be implemented using
Java.socket
like timeout- Refer: C++ concurrency in action: Practical Multithreading
16.4 Timed Waiting
16.4.1 Java
if (B,T) s // B: if condition is true // T: wait for T timeout // execute s
16.4.2 C++
wait_for(lock, duration); wait_until(lock, time_point);
- slide 15: what happens after we go into wait until and then done is true
17 Lect 17: Split Binary Semaphore
- singaling on semaphores are sequencial
17.1 Passing the baton
- only one thread does (slide 59)
18 Mid Exam 1 Notes:
18.1 Java memory model allows assignments to be reordered.
//thread 0 int x = ... Boolean done = true; //thread 1 if (done) { //do something with x }
Here declare x
as volatile
This is also the reason for problem in double checking idiom. Due to assignment
re-ordering, the constructed object can reflect as non NULL
before construction
is finished.
18.2 Deadlocks
If a thread acquires >= 2 locks, think of deadlock. Two ways of dealing with deadlocks:
- Avoidance: order them so that without first locking 'A', should not lock
'B'. In java, we can use
System.identityHashCode
to get unique value from totally ordered set. - Dealing with deadlock: use
tryLock
, which uses timeout to tell locking failed. Then re-try, with:- certain timeout
- exponential back off
- random delay
- 0 delay
18.3 Safe publication:
- mark variable as
static
- mark as
volatile
- refer from concurrent data structure, such as
ConcurrentQueue
etc. - keep
atomic
reference.
18.4 wait
, notify
obj.wait()
only releases one lock, if it is nested inside multiple locks, this will release only 1 (outer ones are still acquired).
18.5 Passing the baton:
- #guards = conditions to be satisfied
- guards are conditions, thus multiple invariant expression can form a single
guard.
Ex: in reader/writer,
nr == 0 ^ nw == 0
denotes safe for writer. - be careful of the initial state of semaphores
18.5.1 How multiple readers access is implemented
The SIGNAL
is executed after startReading
as well as endReading
. Thus
after a reading thread awakens, it can signal other reading thread.
- which in turn can cause starvation for writing thread
- in
startRead
, check if no writer and no writer pending.
- in
18.6 Callable
v/s Runnable
A Runnable, does not return a result and cannot throw a checked exception.
18.7 ReentrantLock
v/s synchronized
ReentrantLock
provides timed lock waits, interruptible lock waits, non-block-structured locks, multiple condition variables and lock pollingReentrantLock
can give conditional locking.
18.8 getAndSet()
getAndSet()
creates a lot more traffic on message bus thanget()
. Thus it is better to test byget()
before spinning ongetAndSet()
.getAndSet()
invalidates the cache, thus substantial performance penalty.
18.9 lock_guard
v/s unique_guard
lock_guard
automatically releases lock on reaching closing brace. Takes care of exception.unique_guard
: same aslock_guard
, but can be unlocked and locked again.
18.10 safety and *liveness~
- safety says nothing bad happens
- liveness something good will eventually happen
19 Lect 18: Thread Pools
19.1 Overhead of creating threads, and cleaning them
- 2 options:
- Thread Pool
- Futures
19.2 web Server
19.2.1 TODO check socket
doc in java and c++
19.2.2 socket construction
// version 1 Socket s = new Socket(IP_add, port); //blocking! //version 2 Socket s = new Socket(); s.inetSocket(ip, port, timeout); //added `timeout`
19.2.3 Server construction
19.2.4 Producer Consumer Paradigm
- N threads
- one server socket which creates job in bounded buffer
- N consumer/worker threads
- Need to clean resources etc
- may use
java.util.ExecutorService
- may use
20 Lect 19: Executors & Futures
20.1 TODO Java Executors Doc
Java lambda automagically turns into runnable
or callable
depending on
if value is returned
20.2 Asynchronous Computations
20.2.1 Future
- why? joining may not be easy. If executor, it is not possible
- methods:
- check: isDone()
- wait
- get(timeout) : blocking
- cancel()
- task should be written in a way which respects
interrupt
flag.
- task should be written in a way which respects
- C++ futures
<future>
std::future()
unique futurestd::shared_future()
less efficient- valid
- how to create
std::async
- takes same kind of arguments as thread (lambdas, parameters etc)
- may create new thread or not!
- can pass parameter to tell run in another thread
std::launch::async
orstd::launch::defered
- can pass parameter to tell run in another thread
packaged_task
- wrapper around (
stored task
andshared thread
)
- wrapper around (
20.3 misc
Lambda, runnable, callable are all closure.
21 Lect 20: C++ Move, futures, fork/join
21.1 Lvalues and Rvalues
- Lvalues are memory location
21.1.1 C++ refs
int x = 44; int& y = x; int&z = 44; //this won't compile
21.1.2 C++ rvalue references
21.2 futures
21.3 fork/join tasks
typical use case: divide and conquer
21.3.1 Work steal
- if thread's queue is empty, steal it from other thread's queue
21.3.2 using
- override
compute()
22 Lect 21: case study: Concurrency in Android, Lock implementation
22.1 Andriod app case study
LinkedBlockingQueue
: blocks if queue empty- Saves the thread somewhere so that it can interrupted if needed.
- since executor class is used, we don't know which thread computes what
- efforts made to make thread cancel at safe point
22.2 Lock Implementation
22.2.1 Spin Lock Implementation
- if want lock, get lock or:
- block (suspend)
- spinning (busy waiting)
- can be better than suspending on multi processor
- blocking needs context switch
- can be better than suspending on multi processor
22.2.2 TODO Doubts
- why not built in optimization Prof: These are directly mapped to hw instructions. We want these to be fast.
- how to stop thread without context switch
Prof:
park
java - Do spin locks utilize processor/ will they drain battery Prof: Yes, and hence use only for short amount of time.
23 Lect 22: TTAS
23.1 Backoff has disadvantage
23.2 waiting queue
23.2.1 advantages:
- fair
23.3 misc
- atomic reference to array of int
- array of atomic int
atomicInt
are mutable- safe
- atomicIntArray
- safe to add new integers: java docs
23.4 CLHLock
- uses virtual linked list
23.5 MCS Queue Lock
- check
java.util.ConcurrentLinkedQueue
source code
23.6 AtomicInt
Binary representation lock
- use bits to denote lock
- rest of the bits to represent tail position index
24 Lect 23: Spin Lock Implementations, hybrid Locks
24.1 Timeout
missed inital part, was fixing fiber lamp! :D
24.2 Hybrid Locks
24.3 Fat Locks
- stored in hashtables
24.4 Thin Locks
- fast path if no contention
- convert to fat lock if contention
- header contatains bits which indicate if there is a lock. If there is need for fat lock, the bits points to fat lock.
25 Lect 24: Mid 1 Review
25.1 TODO Can there be a deadlock without a conflict?
No!
25.2 Conflicts and deadlock
resolve conflict by
- happens before
- mark as
volatile
26 Linearizability and correctness
26.1 Linearizability
- what is it for a data structure to be correct to be serial
- when not locks
26.1.1 Objects are linearlizable
27 Reasoning about Linearizability
27.1 Linearizability Proof
- Linearization order is order lock released
27.2 Sequential Consistency
- not composible
- re-ordering can cause cycles
27.3 Wait Free
- Every contending thread is guaranteed to complete its method call within a bounded
number of its own time steps.
- have helper thread to substitute for the thread
- so that even if the thread fails, it can take over
27.4 Lock Free
- Lock-freedom allows individual threads to starve but guarantees system-wide throughput
- Some contending threads are guaranteed to complete their method call within a bounded number of steps
- The difference between Wait free and lock free is, in wait free operations every process is guaranteed to succeed in finite amount of steps
27.5 Obstruction free
In absence of contention, a thread is guaranteed to complete its method within a bounded number of steps
27.6 DONE Safe
- if a read call that doesn't overlap a write call returns the value written by the most recent write call
- otherwise, if a read call overlaps with a write call then it can return any value within register's allowed range of values
27.7 DONE Regular
- safe
- if read overlaps ith write, then read value can be between i and (i - 1) write
27.8 TODO Linearizable
27.9 Foundation of Concurrency
- SRSW
28 Composing higher constructs using primitive
28.1 Safe MRSW from SRSW
- get idea, skipped slides
28.2 Mututal exclution can not be used to get wait free
- once in critical section, it can go away
- not all wait free are practical
28.2.1 Example, 2 thread FIFO
- spinning on pre conditions
- works because only 1 thread each on enqueue and dequeue
- what happens if multiple dequeuers
- proved by contradiction
28.2.2 Consensus Number
28.2.3 Read modify write
28.3 ABA problem (Problem in CAS):
- we get value of variable
- then check if value is still olf, if yes change to
- what if someone changes to old value
28.4 Lock free
- cannot have lock free
29 Parallel Programming
- subset of concurrent programming
- OpenMP: memory parallelism - compiler directives
29.1 OpenMP
- add to program, compiler takes care of it. If compiler doesn't understand it then it ignores
- Fork-join Parallelism
- need not create actual thread, might be thread pool
example:
#include "omp.h" ... #pragma omp parallel for for (i = 0; i < 1000; i++) { //some big computation }
- works only (better?) on structured/blocked code
- because there is implicit barrier at end of block
29.1.1 SPMD (Single program, multiple data):
Get thread id then do different work based on id
int ID = omp_get_thread_num();
- barrier at end of openMP block implicitly
29.1.2 Work sharing
- divides work for threads automatically
- in SPMD this was done manually
- args
schedule(static [,chunk])
: preditibleschedule(dynamic [,chunk])
: unpredictable, highly variableschedule(guided [,chunk])
schedule(runtime)
- instead of shared variable like
sum
, havesum[]
and have each thread its own space to store.
29.2 OpenMP: variables in block
- most variables are shared
- local variables are not shared
29.2.1 TODO Types
lastprivate
firstprivate
30 OpenMP (cont)
30.1 Reduction
- don't accumulate!
- operator
- associative
- commutative
- form:
reduction(op : list)
- based on operator the var are initialized
+
0*
1
- slide 60: by applying reduction clause, we get final result in
res
- each thread is doing some accumulation
- without the reduction clause.
res
is shared, so accessing it needs to be synchronized
30.2 Critical Section
#pragma omp critical { //call the critical sections }
30.3 False Sharing
- incorrect update of cache.
- array: values next to each other, updating one, updates the whole cache line which contains other elements
30.4 Atomic
- special case of critical section
30.5 Barriers
#pragma omp barrier
: explicit- wait until all threads arrive
- implicit barrier at end of block
- lot of barriers by default
nowait()
30.6 Ordered:
sequencial ordering
- if operation is not associative/commutative
30.7 Flush
- memory synchronization
- creates consistent view of memory
- write everything to memory before flush, read everything after flush from memory
30.8 Environment Variable
- setting options at runtime (after compiling, during execution)
30.9 Problems with openMP
- when to flush
- memory not symmetric, some memory close to some processor
30.10 Tree based reduction
- divide and conquer
- serial to parallel
30.11 Floating point is not associative
- programmer needs to take care of it
31 Research Work: ACES4
- Between the compiler and the runtime system, significant opportunities exist for error checking as well as static and dynamic analyses to improve performance
- asynchronous task delegation
- MADNESS DAG
- any issues or bug fixes needed in code
32 Performance Models
32.1 Metrics
- Elapsed time
- TODO: how good is this, multi processors real time
- Java:
System.nanoTime
- C++:
chrono
package
- Price/Performance
- Speedup
- Efficiency
- Energy Efficiency
32.2 Models
32.2.1 Simple Analytical model
T(1) = T_{serial} + T_{parallelizable}(1)
32.3 Amdahl's Law
- Effect of serial part to overall performance.
- or serial part limits the overall performance
32.4 Message Passing
- UE: unit of execution
- Memory Sharing needs locks
- You cannot receive a message before it is sent
32.4.1 CSP (Communicating Sequential Processes)
- CAR Hoare paper 1978
- S0 || S1 … Sn
- x ! S1 –|
- y ? S0 –| Blocking
33 Go
33.1 Bg
- type inference
33.2 Concurrency
- share memory by communicating
- goroutine:
- lightweight
- channels:
- first class, can be passed around
34 Actors
- works well when regular flow of data
34.1 Actors inside
- local data
- mailbox (message queueu)
- Loop - handle messages
34.2 Difference with OOP
- actors do not share memory
- can't send references
- send deep copy
- many frameworks try to optimize this
- send ref if safe
- immutable messages are safe
- enforcing encapsulation may not be guaranteed
- many frameworks try to optimize this
- sending message is synchronous in OOP
34.3 MPI
- portable message passing format
34.4 TODO SPMD
35 MPI
35.1 MPI_type
- constant
35.2 MPI_send
blocks until buff is copied into system
- similar to
MPI_recv
35.3 SPMD
same code, based on id decide who process what part
35.4 Asychrony
- send and recv return immediately, we'll need to handle using
MPI_Wait
36 Vector Algorithms
36.1 Regular datastructures (homogeneous array)
- instead of having array of structs, have stucts of array
- better performance due to locality
36.2 Kernel Parallelism
- Cuda and OpenCl
36.3 Vector parallelism (SIMD)
36.3.1 Challenges:
- change problem- change code
- special register - small number of vector registers
- may have to swap to memory
36.3.2 How to use vector units
- Language constructs
- Compiler vectorization
- typically loops
- pass flag to see vector report
- some code may make look un-vectorizable
- vector instruction sets
- Example: SSE 4.2
36.4 OpenCl
- portable way to use all CPUs, GPUs etc
37 Final Review
37.1 Instructions
- 6 pages notes
- 10am to 12, 14th December
37.2 Preparation
- Homework
- Definitions
- Previous Exams
38 Deadlocks
- When threads holds multiple locks, think about deadlocks!
- Eg:
synchronized
method invokes othersynchronized
method associated with a different monitor lock.
- Eg:
38.1 Solutions
- Resource ordering
- can use
System.identityHashCode
- can use
- Deadlock suspicion
- lock with timeout
- not available with
monitor
-> usereentrant
- not available with
- lock with timeout
39 Livelock
- narrow passage example: passage wide enough to allow only 1 person, two people
coming in opposite direction. Both move sideway to allow other to pass.
- Solution: random backoff
40 Starvation
denial of resource
41 Invariant
conditions that are needed to be true at certain points.
41.1 Pre-condition
ways to check
- Optimistic: do everything then check
- Balking
- Guarded Suspension: suspend until preconditions not true
- Timed Waiting: wait for certain time then balk
- atomic await
<await B {S}>
wait tillB
becomestrue
then atomically executeS
- Implement
- Test a condition and suspend thread if not true
- release lock before suspending
- awaken, re acquire lock before proceeding
Every
Object
in Java has 2 Queues: wait set and lock set<await B {S}> => synchronized (obj) { while (!B) { obj.wait(); } S; }
wait
gives safetynotify
gives liveness
- Condition Variables
- Java:
cv = ReentrantLock.newCondition()
- each condition variable has it's own wait set.
Comparison with
monitor
cv await
signal
signalAll
for specific condition monitor wait
notify
notifyAll
for specific monitor lock
- C++:
std::condition_variable c;
c
: takes inmutex
(needed for release and reacquire mechanism)- optionally takes in condition (guard) else we need to manually loop on
!B
(condition)
- Java:
- Reader Writer lock: more expensive than mutex
- only situation when write less and lock for small time
- Implement


3 overrides of MySelf
System.Management.Automation (3)
engine\remoting\client\clientremotesession.cs (1)
569
internal override RemotingDestination
MySelf
{ get; }
engine\remoting\server\serverremotesession.cs (1)
263
internal override RemotingDestination
MySelf
utils\CryptoUtils.cs (1)
1137
internal override RemotingDestination
MySelf


First Post
Published: Oct 2, 2016
This is the first page
Published: Jan 1, 0001
MAC Blog Files
fitmath.github.io is a static website built using Hugo by Jonathan Goldfarb.
Go here to get hugo.
This repository hosts the files used to generate the blog portion of fitmath.github.io; cloning [the main repository]() is the best way to go about editing these files.
Getting Started To get started, clone this repository using git, e.g. from the folder into which you would like FITMath.github.io to appear, run


Kol Dokta
Streamlining the delivery of affordable healthcare via an interactive voice response based system in Sierra Leone.
This research was conducted while I was working as the Research and Developer lead at iDT Labs. For further information about this project please email<EMAIL_ADDRESS>Background
Sierra Leone has one of the poorest healthcare systems in the world, as highlighted by the following facts:
However, efforts for improving healthcare have not resulted in a long-term, permanent improvement, with the general global efforts in the field primarily focused towards “disease specific funding”.
Instead, investments need to be made in improving the healthcare infrastructure and in streamlining the delivery of healthcare in the country.
A Possible Solution
Sierra Leone has a mobile penetration rate of 44%. One possible solution for improving access to healthcare is of introducing a nation-wide mobile based healthcare intervention system.
The Value Proposition
Streamlining affordable and quality medical services for the common Sierra Leonean via a mobile based healthcare platform.
The Human Centered Design Approach Undertaken
Interviews were conducted with common people and medical care practitioners in Freetown to better understand their challenges and the feasiblity of a mobile based healthcare intervention system.
The design research aimed to find insights on the following thematic areas.
Key Insights From The Design Research
Output From The Design Research
Based on the results from the design research, the following two tools were constructed:
-
The Evidence Planning Toolkit. Highlighting the replacements, enhancements and potential hazards of the mobile based healthcare delivery platform.
-
The Business Model Canvas - Charting out the various facets of the business model for Kol Dokta.
Distribution Channels
The following is how the distribution channels of Kol Dokta were envisioned.
The Next Steps
A working prototype for Kol Dokta was developed on the Asterisk open source communication framework. The prototype was initially available in Krio, which is the most popular regional language in Sierra Leone for running the pilot of the project in Freetown over a period of six months in 2015.


Toggle navigation
Manage.me
User
Settings
Log Out
Dashboard
Help Docs
Contact Us
User Query
Account
Query
Query
User ID
User Name
Email ID
Subject
Issue Description
Log Request
Canel
You request has successfully reached us,
we will get back to you on this as soon as possible.
Oh snap!
an unexpected error occoured.


Hello, my name is Porche' Wooten. I am a multi-talented hardworking young lady. I have taken numerous steps to establish a life where I could challenge my creativity in many different aspects.
I have started my own business, Their Designs! Their Designs was created in honor of my daughter Paidyn. Right before her birth I began to design her clothes. As time progressed, I started making baby clothes for other people. After several sales, I began to explore my other talents. I introduced shoe customization, custom T-Shirts, hair, and a plethora of other designs.
(view pictures)Wanting more not only for my business, but also my clients. I enrolled in CodeCrew Code School, where I am studying to be a full stack developer. I specialize in both frontend and backend aspects of software development, (view projects).


Gift Voucher payable in advance by bank transfer: we send it by post to the delivery address.
Allow 10 days for the administrative procedure.
Bank transfer:
Name: Aéro Para Club de Spa
Bank account : BE64 7320 3842 1852
Communication: see above.
If you have any question,
don't hesitate to contact us by mail at<EMAIL_ADDRESS>or by phone at +32 (0)470 64 68 28
Thank you
The introductory flight team of the RAPCS asbl


Toggle navigation
Caffeine Meter
Home
(current)
Drink
Coca-Cola
Pepsi
Sprite
Sunkist
Dr Pepper
Monster Engery
Mountain Zevia
Search
caffine total
0 mg
300 mg


We're sorry but this app doesn't work properly without JavaScript enabled. Please enable it to continue.


Link to the problem description
Initial number of doors:
Initialize
Play 1000 Switching
Play 1000 Staying
Switched
Stayed
Won
Lost
P(Win)
Switch
Stay


getfood
cities
Chennai
Banglore
Mumbai
search
Aryaas
cart
0
Idly(5)
price: ₹ 35
Order Now!!
Plain Dosa(1)
price: ₹ 40
Order Now!!
Puri(2)
price: ₹ 30
Order Now!!
Masaldosa(1)
price: ₹ 45
Order Now!!
pongal(1)
price: ₹ 35
Order Now!!
vadaai(2)
price: ₹ 30
Order Now!!


When you shop at Look@Me you get the guarantee all your purchases are of the highest quality.
This new design has just come into stock and if you want to get it for yourself today you can, get it quick before another design comes out and you have to buy that one instead.
PRICE: £100


{% extends "base.html" %} {% block title %}
Medieval catalogues > UNIVERSITY AND COLLEGE LIBRARIES OF CAMBRIDGE > Pembroke College > List of philosophy books, 15th cent.
{% endif %}7 identified entries found.
All data was derived from the List of Identifications by Professor Richard Sharpe.
{% if not printing %}
A key to codes used in the List is available (opens in new tab).{% endif %}


Done by: Team Map MakerZZ
Eric Teo Zhi Han (1001526), Jordan Sim (1001510), Justin Tan (1001488), Lam Teng Foong (1001487)
Please do take a look at the github repository for this project: https://github.com/coffeebenzene/MakingMapsProject-2017
The code is mostly in the index.html file (which is the source of this page). The .csv files of indexes are in the finaldata folder.
Different people have varying definitions of the ideal neighbourhood to live in. With over 55 planning areas in Singapore, it might prove difficult for some people, especially immigrants, to find a suitable neighbourhood to call home. This project aims to tackle the problem of how to recommend the best place for a particular person to live in based on his or her preferences using on data, both spatial and non-spatial, that is can be found on the internet. The end product of this project is an interactive dashboard that allows the users to discover desirable neighbourhoods in Singapore that they would enjoy living in.
As there might be numerous factors that people might consider when choosing a neighbourhood to live in, this project would focus on five key factors – crime, education, food, green spaces and healthcare, all of which have data readily available online.
| Factor | Source | S/N | Link |
|---|---|---|---|
| General Information | data.gov.sg | I1 | https://data.gov.sg/dataset/planning-area-census2010 |
| Crime | data.gov.sg | C1 | https://data.gov.sg/dataset/five-preventable-crime-cases-recorded-by-npcs |
| data.gov.sg | C2 | https://data.gov.sg/dataset/singapore-police-force-npc-boundary | |
| Food | Hungrygowhere.com | F1 | http://www.hungrygowhere.com |
| Education | data.gov.sg | E1 | https://data.gov.sg/dataset/list-of-school-addresses |
| kiasuparents.com | E2 | https://www.kiasuparents.com/kiasu/article/2016-p1-registration-oversubscription-risk/ | |
| salary.sg | E3 | http://www.salary.sg/2016/secondary-school-ranking-based-on-cut-off-for-2016-intake/ | |
| Green Spaces | Singapore OSM Layers from Lab 1 | G1 | NIL |
| Education | data.gov.sg | H1 | https://data.gov.sg/dataset/chas-clinics |
| SingHealth | H2 | https://polyclinic.singhealth.com.sg/AboutUs/OurPolyclinics/Pages/home.aspx | |
| hospitals.sg | H3 | http://www.hospitals.sg/hospitals |
Taking inspiration from the Human Development Index (HDI), the interactive dashboard would compute a Living Desirability Index (LDI) based on the factors that the user has deemed as important. 15 planning areas were omitted as certain areas are not residential and have less than 100 in population.
The final product is as shown below. It was coded in Javascript using the Leaflet library. The IVs were pre-calculated beforehand and based on the user’s input, the applet recalculates the LDI based on the specified weights, normalises it, and updates the map accordingly.
The final product is by no means an all-encompassing tool for one to decide which area to live in. There are many other factors such as transportation, housing prices which were not factored into this project that are also key in determining a good place to live in. Ultimately, users must do further research on the areas that have high rankings and make their own conclusions. In the future, more factors can be added to dashboard after extensive data gathering and factors can be further refined as (food factor can be specified to local hawker fare or restaurants). Perhaps a more robust but complex way of geospatial analysis is to set a radius around hexagons to determine the proximity and occurrences/density of the 5 factors in this radius. The relationship between adjacent hexagons could be then studied, which would provide greater “resolution” compared to analysing the planning areas.
In conclusion, the final interactive dashboard from this project is able to serve as a preliminary tool for users to narrow in on planning areas they might enjoy living in. However, more extensive data mining and analysis would be required to increase its accuracy and usefulness beyond just a broad proxy of the liveability of a particular location in Singapore.
Use the sliders to adjust the weights for the various indices of the LDI.
Can't think of a weighting? Try the presets at the bottom left to start off with!


Is it tiled?
Is it tiled?
Enter the address of the city you want to check
Address:
e.g., Vancouver, BC, Canada
Padding (km):
e.g., 1
Please have patience. Depending on the size of the region, this may take a while.


Welcome
WELCOME!! My name is RENA pronounced "rEnA." You havent stumbled onto anything
special here, just another blog. To tell you the truth before today I never spent much time paying attention to blogs,
so have patience.
.....This blog is so that I can keep current with my coding knowledge. I am a software developer. I just
decided to start over with my studies from scratch. So please feel free to go with me on this learning trip
DISCLAMER: I am just writting along here.Thank you


Mr.Chan Fung Manager of Land Bank, Kincheng Branch. 6,Min Shen Rd,Kicheng Chen, Kinmen Hsien, Fukien.Taiwan R.O.C. I am Mr.Chan Fung, Bank Manager of Land Bank,Kincheng branch, Fukien,Taiwan. R.O.C.I have urgent and very confidential business proposition for you. On June 6, 1999, a British Oil consultant/contractor with the Chinese Solid Minerals Corporation, Mr. Smith Lawrence made a numbered time (Fixed) Deposit for twelve calendar months, valued at US$30,000,000.00 (Thirty Million Dollars) in my branch. Upon maturity, I sent a routine notification to his forwarding address but got no reply. After a month, we sent a reminder and finally we discovered from his contract employers, the Chinese Solid Minerals Corporation that Mr. Smith Lawrence died from an automobile accident. On further investigation, I found out that he died without making a WILL, and all attempts to trace his next of kin was fruitless. I therefore made further investigation and discovered that Mr. Smith Lawrence did not declare any kin or relations in all his official documents, including his Bank Deposit paperwork in my Bank. This sum of US$30,000,000.00 is still sitting in my Bank and the interest is being rolled over with the principal sum at the end of each year. No one will ever come forward to claim it. According to Laws of Republic of China, at the expiration of 5 (five) years, the money will revert to the ownership of the Chinese Government if nobody applies to claim the fund. Consequently, my proposal is that I will like you as a foreigner to stand in as the next of kin to Mr. Smith Lawrence so that the fruits of this old man's labor will not get into the hands of some corrupt government officials. This is simple, I will like you to provide immediately your full names and address so that the attorney will prepare the necessary documents and affidavits that will put you in place as the next of kin. We shall employ the services of an attorney for drafting and notarization of the WILL and to obtain the necessary documents and letter of probate/administration in your favor for the transfer. A bank account in any part of the world that you will provide will then facilitate the transfer of this money to you as the beneficiary/next of kin. The money will be paid into your account for us to share in the ratio of 90% for me and 10% for you. There is no risk at all as all the paperwork for this transaction will be done by the attorney and my position as the Branch Manager guarantees the successful execution of this transaction. If you are interested, please reply immediately via this email address immediately. Upon your response, I shall then provide you with more details and relevant documents that will help you understand the transaction. Please send me your confidential telephone and fax numbers for easy communication. Please observe utmost confidentiality, and rest assured that this transaction would be most profitable for both of us because I shall require your assistance to invest my share in your country. Awaiting your urgent reply. Thanks and regards, Mr.Chan Fung.


--- layout: javascript title: Show/hide current: show-hide --- {% include example.html component="show-hide" size="s" %}
Option to allow you to add text to the toggle button. The following attribute can be added to the toggle button data-button-string="filter options"
Option to allow you to switch user focus to an element. The following attribute can be added to the toggle button data-focus-id="das-show-hide-example-focus-id"
- the value should match the ID of an element on the page.


3 references to Begin
System.Management.Automation (3)
engine\lang\scriptblock.cs (3)
1124
public void Begin(bool expectInput) =>
Begin
(expectInput, commandRuntime: (ICommandRuntime)null);
1142
Begin
(expectInput, crt);
1158
Begin
(command.MyInvocation.ExpectingInput, command.commandRuntime);


Main page
sf.net project page
Download
Tutorial
Getting Support
Report a Bug
Suggest new ideas
About


---
sort_order: 40
tei_id: rdx_b5h9g.p.idp10211408
annotation_count: 0
images:
small-thumbnail: https://readux.library.emory.edu/books/emory:b5h9g/pages/emory:pcjkf/mini-thumbnail/
json: https://readux.library.emory.edu/books/emory:b5h9g/pages/emory:pcjkf/info/
full: https://readux.library.emory.edu/books/emory:b5h9g/pages/emory:pcjkf/fs/
page: https://readux.library.emory.edu/books/emory:b5h9g/pages/emory:pcjkf/single-page/
thumbnail: https://readux.library.emory.edu/books/emory:b5h9g/pages/emory:pcjkf/thumbnail/
title: Page 40
number: 40
---
{% raw %}32{% endraw %}
{% raw %}JACOB HODGES,{% endraw %}
{% raw %}could eat nothing that day. I did not{% endraw %}
{% raw %}eat a mouthful.{% endraw %}
{% raw %}" I recollected at that time, that a mini¬{% endraw %}
{% raw %}ster had told me whenever I had a chap{% endraw %}
{% raw %}ter read, to have the fifty-first psalm. 1{% endraw %}
{% raw %}could not see any body to get to read it,{% endraw %}
{% raw %}and how to find it I did not know. The{% endraw %}
{% raw %}Sunday following, before the keeper un¬{% endraw %}
{% raw %}locked the door, I rose up, and I went to{% endraw %}
{% raw %}prayer, and I prayed: '0 Lord, thou{% endraw %}
{% raw %}knowest I am ignorant; brought up in{% endraw %}
{% raw %}ignorance. Thou knowest my bringing{% endraw %}
{% raw %}up. Nothing is too hard for thee to do.{% endraw %}
{% raw %}May it please thee, O Lord, to show me{% endraw %}
{% raw %}that chapter, that I may read it with un¬{% endraw %}
{% raw %}derstanding. I rose up from prayer, and{% endraw %}
{% raw %}went to my Bible and took it up. I began{% endraw %}
{% raw %}at the first psalm, and turned over and{% endraw %}
{% raw %}counted every psalm, and it appeared to{% endraw %}
{% raw %}me that God was with me, and I counted{% endraw %}
{% raw %}right to the fifty-first psalm. I could read{% endraw %}
{% raw %}a little, and I began to spell—H-a-v-e{% endraw %}
{% raw %}tn-e-r-c-y, &c. I looked over tne psalm,{% endraw %}
{% raw %}and spelled it and read it, and then out{% endraw %}
{% raw %}the Bible down ard fell upon my Knees;{% endraw %}


{% if is_impersonate %}
You are currently impersonating {{ impersonating }}.
Click here to stop impersonating.
You are not currently impersonating anyone.


First Come First Serve
In FCFS Scheduling,
• The process which arrives first in the ready queue is firstly assigned the CPU.
• In case of a tie, process with smaller process id is executed first.
• It is always non-preemptive in nature.
Advantages:
• It is simple and easy to understand.
• It can be easily implemented using queue data structure.
• It does not lead to starvation.
Disadvantages:
• It does not consider the priority or burst time of the processes.
• It suffers from convoy effect.
Convoy Effect:
• Consider processes with higher burst time arrived before the processes with smaller burst time.
• Then, smaller processes have to wait for a long time for longer processes to release the CPU.
First Come First Serve is the full form of FCFS. It is the easiest and most simple CPU scheduling algorithm. In this type of algorithm, the process which requests the CPU gets the CPU allocation first. This scheduling method can be managed with a FIFO queue.
As the process enters the ready queue, its PCB (Process Control Block) is linked with the tail of the queue. So, when CPU becomes free, it should be assigned to the process at the beginning of the queue.
Characteristics of FCFS method:
• It offers non-preemptive and pre-emptive scheduling algorithm.
• Jobs are always executed on a first-come, first-serve basis
• It is easy to implement and use.
• However, this method is poor in performance, and the general wait time is quite high.


{% extends 'index.html' %} {% block content %}
Build your first machine learning model in ten minutes. No code or experience required.
You can train the below two machine learning models with Tanoshi.
Finds an object in the input image and classify it to one of the classes from the list of possible labels provided in a dataset!
Let's StartDetects the emotion or sentiment of a text and classify them to positive , negative or neutral !
Let's Start


Collection
Maintained schools and academies inspections and outcomes: official statistics
Official statistics on the inspections and outcomes of maintained schools and academies in England.


Career Path
We care for your future!
This website is developed under GirlScript's The Uplift Project.


pixi-viewport
A highly configurable viewport/2D camera designed to work with pixi.js.
Features include dragging, pinch-to-zoom, mouse wheel zooming, decelerated dragging, follow target, snap to point, snap to zoom, clamping, bouncing on edges, and move on mouse edges. See live example to try out all of these features.
All features are configurable and removable, so set up the viewport to be exactly what you need.
Migration from pixi-viewport v3 to v4
Viewport needs to be imported or required as follows:
import { Viewport } from 'pixi-viewport'
// or
const Viewport = require('pixi-viewport').Viewport
Plugins have been moved to their own object:
// viewport.pausePlugin('drag')
viewport.plugins.pause('drag')
// viewport.resumePlugin('drag')
viewport.plugins.resume('drag')
// viewport.removePlugin('drag')
viewport.plugins.remove('drag')
// viewport.userPlugin('name', plugin, index)
viewport.plugins.add('name', plugin, index)
Simple Example
import * as PIXI from 'pixi.js'
import { Viewport } from 'pixi-viewport'
const app = new PIXI.Application()
document.body.appendChild(app.view)
// create viewport
const viewport = new Viewport({
screenWidth: window.innerWidth,
screenHeight: window.innerHeight,
worldWidth: 1000,
worldHeight: 1000,
interaction: app.renderer.plugins.interaction // the interaction module is important for wheel to work properly when renderer.view is placed or scaled
})
// add the viewport to the stage
app.stage.addChild(viewport)
// activate plugins
viewport
.drag()
.pinch()
.wheel()
.decelerate()
// add a red box
const sprite = viewport.addChild(new PIXI.Sprite(PIXI.Texture.WHITE))
sprite.tint = 0xff0000
sprite.width = sprite.height = 100
sprite.position.set(100, 100)
Using commonjs:
const PIXI = require('pixi.js')
const Viewport = require('pixi-viewport').Viewport
// same code as above...
Live Example
https://davidfig.github.io/pixi-viewport/
API Documentation
https://davidfig.github.io/pixi-viewport/jsdoc/
Installation
yarn add pixi-viewport
or
npm i pixi-viewport
or grab the latest release and use it:
<script src="/directory-to-file/pixi.js"></script>
<script src="/directory-to-file/pixi-viewport.js"></script>
<!-- or <script type="module" src="/directory-to-file/pixi-viewport.es.js"></script> -->
<script>
const Viewport = new Viewport.Viewport(options)
</script>
Build Examples
I've included a bunch of build examples in the docs/builds directory, including: browserify, rollup, standalone (e.g., cdn), standalone (pixi.js v4), and typescript. You can see the live demos at https://davidfig.github.io/pixi-viewport/builds/.
Tests
- Clone repository
- yarn install
- yarn test (for Mocha test code)
- yarn coverage (for Instanbul coverage)
Other Libraries
If you liked pixi-viewport, please try my other open source libraries:
- pixi-scrollbox - pixi.js scrollbox: a masked box that can scroll vertically or horizontally with scrollbars (uses pixi-viewport)
- pixi-ease - pixi.js animation library using easing functions
- intersects - a simple collection of 2d collision/intersects functions. Supports points, circles, lines, axis-aligned boxes, and polygons
license
MIT License
(c) 2019 YOPEY YOPEY LLC by David Figatner


Source:
GitHub
Gist Examples
Story Gist
Package Gist


Gloo Synchronous and Asynchronous Demo
This demo shows Gloo transparently channeling ingress trafic to a NATS Streaming server. In this demo, we will show you how you can combine Gloo and NATS Streaming to get the best of both worlds, providing performance transparently to your front end application. Gloo integrates directly with NATS Streaming, translating the HTTP protol to the NATS Streaming protocol.
In this demo, we have a few components:
- This website! - Simulates an app that shows analytics
- Cassandra - the data store for our analytics
- Analytics - sub system that that saves analytics requests. More on that next.
The analytics - two approaches:
Approach 1: A microservice that acceptes the analytics request and sends it to Cassandra.
Approach 2: The request get to NATS Streaming. A microservice subscribes to messgages from NATS Streaming, and writes them to Cassandra.
Gloo makes using the two approaches the same for the front end code, and enables you to smoothtly transition form one approach to another.


The Dispersion of the Nonlinear Optical Susceptibility
of Some Wurtzite and Zinc-Blende Semiconductors.
by
Frederick George Parsons
: A Dissertation Presented to the Faculty of the Graduate School of Yale University in Candidacy for the Degree of Doctor of Philosophy
1971
REET ITT Tn ee RT
Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.


CPE Automation Supplement
CPE Automation Supplement@
Use this guide to configure the uCPE after running the CPE Automation.
Currently, this guide only include how to configure additional interface.
1. Create additional interface using the script@
1.1 add_additional_bridge.bash@
Using shell script to automatically configure the interface is recommended. If you prefer manual steps, you can jump to next section.
The shell script takes one parameter: “interface_name”. Find out where your additional interface is connected to first. In my example, it is connected to enp2s0. If your physical interface is already connection, you will be able to find out which interface is connected by using this shell command on the uCPE.
ip a |grep “state UP”
You should see output like this:
Then issue the command on the uCPE:
sudo ./add_additional_bridge.bash enp2s0
The script will perform the following:
Once script finishes, you can go to section “Configure IPs“ to continue configuration
1.2 Manually configure VM interface@
Note
Skip over this section if you already run the script to setup the bridge and interface
Make sure you know the physical interface name you want to configure your interface on. If the interface is already physically connected, you can find the interface by issuing:
ip a |grep “state UP”
In our example, we use “enp2s0”
Find the bridge interface you want to create on the physical interface. Bridge interface will be used by the VM also. Since the br0 already used by CPE automation to create the first interface on the VM, so in this example we will use br1.
The two files look like this:
ifcfg-enp2s0
DEVICE=enp2s0
ONBOOT=yes
TYPE=Ethernet
NM_CONTROLLED=no
BRIDGE=br1
ifcfg-br1
DEVICE=br1
TYPE=Bridge
BOOTPROTO=none
ONBOOT=yes
STP=off
NM_CONTROLLED=no
DELAY=0
Restart the network:
sudo systemctl restart network
Attach the bridge to your vm:
sudo virsh attach-interface --domain nfgateway --type bridge --source br1 --model virtio --config --live
1.3 Configure IPs@
You should be able to login to the VM to configure the IP on the new interface. Please note, the first additional interface created is “eth1”, and the next one will be “eth2” and so on.
When you login to the VM, the interface should look like this:
The interface on the VM will default to be DHCP. If you want to setup a static IP, you can use “nmtui” tool or setup a static interface script file.


Principal Num Payments Payment Gravity (Largest Payments Toward ...) top bottom Rounding Precision 0.01 0.10 1 10 Generate Payments Clear


Splitters provide additional options for making Balthisar Tidy’s document window work according to your tastes. We’ve taken steps to mentioning them in this reference work because they’re not an obvious feature, because the splitters are impossible to see. You your mouse cursor will change shape when it passes over one of the splitters.
When the cursor changes to this shape, you can resize the panels to the left and right of the splitter.
When the cursor appears as such, you can resize the panels above and below the splitter.


Texas Chainsaw 3D
Texas Chainsaw 3D is a movie starring Alexandra Daddario, Tania Raymonde, and Scott Eastwood. A young woman travels to Texas to collect an inheritance; little does she know that an encounter with a chainsaw-wielding killer is part...


--- layout: not_found title: 404 Error | Sorry, this page does not exist. permalink: /404.html --- {% include switch.html %}


abstract val carpenterDisabled: Boolean
If true, deserialization calls using this context will not fallback to using the Class Carpenter to attempt to construct classes present in the schema but not on the current classpath.
The default is false.


To run this project, use a local Web server. For example:
python3 -m http.server
Then, open your Web browser to http://localhost:8000


Enter examples1.main as the "Source folder:", UMLHelloWorld1 as the "Name", and check the public static void main(String[] args). Select the Finish button.
We'll next define the path to the dicon configuration file. The path may be directly entered in the program, but it is a better practice to define it as a static final variable.
Right click on the main.UMLHelloWorld1 and select New - Attribute.
Enter configure_path as the "Name", java.lang.String, enter "examples1/dicon/Greeting.dicon" as the Default value, select private as the "Visibility of Attribute", check static and final as Modifiers, and uncheck Use accessors.
Select the OK button.
We'll now enter codes to the main method.
Double click on "main.UMLHelloWorld1" and select the UMLHelloWorld1.java. Enter the codes to the main method. Be sure to also add "import".
Now for the final file - dicon configuration file. We'll create the file in the dicon folder.
Right click on examples1 under the "src". Select New - Folder in the context menu.
Enter dicon as the "Folder name". Select the Finish button.
Right click on the examples1.dicon folder we just created. Select New - Other....
Expand Kijimuna - Dicon File and select the Next > button.
Enter Greeting.dicon as the file name and select the Finish button.
Select the examples1.dicon and select the Greeting.dicon tab.
Enter the codes as follows:


|
Français Video, links, etc
Home
|
Thursday, June 19, 2014
|
||
|
A workshop led by Ric Goldman Contradancing! You’ve seen how fun, easy, and accessible this is. With just a few minutes of introduction you’re swept up on the floor and enjoying a room of great folk, great music, and great energy. You’ve picked it up on the fly. You’ve got the basics, but now what about the next step? Curious how to make dance movements flow? Or how to interact better with your partner and the others in your dance set? Wanna experience that moment of “ah ha!” when everything “clicks” together? Well now’s your chance. We’ll use this workshop to explore this and more. You’ll come out of it more self-assured on the floor while enjoying everything about contradance even more. Join us for this special 2-hour session with caller Ric Goldman (California-based, but currently in Montreal), who wowed newcomers and experienced dancers alike at our May 4 event with a rather unique combination of dances and moves. No doubt he will have more goodies to share. Live music House of Friendship 7 pm - 9 pm $5 |


--- layout: structure--pattern title: NPEU Element Patterns project_base_url: styleguide ---
Our mission is to conduct methodologically rigorous research to provide evidence to improve the care provided to women, babies and families during pregnancy, childbirth, the newborn period and early childhood as well as promoting the effective use of resources by perinatal health services
This is an initial paragraph
This is another paragraph


Ryan Day Has Strong Message For Ohio State Fans Before Kickoff
by Chris RosvoglouTwo of the best teams in college football will battle this afternoon, when Ohio State hosts Penn State with the Big Ten East on the line. With kickoff approaching fairly soon, head coach Ryan Day shared a message to the fans that will be in attendance.
Day had large shoes to fill this season as the head coach of the Buckeyes. Replacing a legendary coach like Urban Meyer isn’t an easy task by any means.
Ohio State is a few wins away from solidifying its spot in the College Football Playoff. But first, the Big Ten powerhouse has to defend home field today against Penn State.
In order to ensure that Penn State’s offense will have trouble communicating at the line of scrimmage, Day fired up the fans before the game.

He wasn’t done pumping up the fans at St. John Arena, as he also said “Every time their offense touches the football, it has to be louder than the Horseshoe has been.”
That’s quite the message from the head coach of the Buckeyes.
Home-field advantage has played a major role in this rivalry over the past few seasons. Ohio State has won the last three rivalry games at home.
We’ll find out soon enough if the crowd at Ohio Stadium can disrupt Penn State this afternoon.


--- layout: default ---
Chicago's weekly event to build, share, and learn about civic tech.
{% for post in site.posts limit:1 %} {% endfor %}Come join a group of passionate folks working at the intersection of open government, cities, and technology. This is an evening of civic tech hacking, learning, and hanging.
The Open Gov Hack Night, organized by civic tech group Open City, is for those who want to:
There's always food, too!
This video from The Grid on Gaper's Block will give you a sense of what to expect.
That's ok! We encourage non-technical folks to pair up and learn from our community's designers and developers. Often times, the best civic projects come from teams with a diverse background.
Remember, there's more to making a great app than just coding.
6pm every Tuesday
1871 (in the IMSA room)
222 W Merchandise Mart Plz #1212
Every week, we send out an email and update this site to preview the next hack night.
Email list RSS feedBetween hack nights, we use the internets for coordinating and collaborating on civic technology projects in Chicago.
Our primary mode of online communication is the chihacknight Google Group.
On Twitter, we use the #chihacknight hashtag
On IRC, we use the #chihacknight channel on irc.freenode.net
| Breakout group | Facilitator(s) | Description | Mailing list |
|---|---|---|---|
| Orientation / Civic Hacking 101 | Christopher Whitaker | New to civic hacking? Don't even know what that means? Every week, Christopher leads quick workshop to get you up to speed. Or you can watch it online. | chihacknight |
| New Coders | René M. Paccha and Demond Drummer | New to programming but want to learn? If you want to plug in to a technical project, but don't know how you can help, start here. | chihacknight |
| Transportation | Steven Vance | Sub-topics include public transit, bicycling and urban planning. | chihacknight |
| Education | Josh Kalov and Elnaz Moshfeghian | This group is focuses mainly on Chicago Public Schools. | cps-school-admissions |
| Environment | Scott Beslow | Sub-topics include recycling, water and air quality. | chihacknight |
| City Data and Vacant Buildings | Gene Leynes and Tom Schenk from the City of Chicago | If you have questions on data published by the City, this is for you. | Contact Gene Leynes to get on the list |
| Social Service Delivery | Sharla Chamberlain from the Mayor's Innovation Delivery Team | The goal of the group is to develop tools to improve the delivery of social services provided by the City of Chicago. | chihacknight |
| Modelling Pension Reform in Illinois | Denis Roarty | Explore ways to use data and models to help pensioners and tax payers understand how reform proposals will impact them and each other. | modelling-pension-reform-in-illinois |
Want to start your own topic? Mention it at the next hack night and we’ll get you set up! Please note that becoming a facilitator will require committing to coming to hack nights on a regular basis and/or finding a backup to come when you can’t.
The Open Gov Hack Night is organized by Open City, documented by the Smart Chicago Collaborative, and hosted at 1871.
Our awesome sponsors provide food every week.
Hack nights anchor and grow volunteer civic hacking communities while avoiding 'hackathon fatigue'. To learn how to organize one in your city, see the Code for America blog.
Friends have forked the hack night in many cities:


WordPress plugin to allow sharing of posts pages and more
Get
Add a timepicker to any of your fields in twitter bootstrap
Modified Zend Framework version 1.11.12


You simply won't want to choose other mouse. And with 100 hours of playtime.


WITNESS LIST Appropriations Committee January 22, 2001-12:00A Budget On: Hamilton, Billy (Deputy Comptroller)