The mission of the XHTML2 Working Group is to fulfill the promise of XML for
applying XHTML to a wide variety of platforms with proper attention paid to
internationalization, accessibility, device-independence, usability and
document structuring. The group will provide an essential piece for supporting
rich Web content that combines XHTML with other W3C work on areas such as math,
scalable vector graphics, synchronized multimedia, and forms, in cooperation
with other Working Groups.
(Skip to main content)
2010-12-17: The XHTML2 Working Group is closed.
2010-12-17: XHTML
Modularization for RelaxNG is out.
2009-07-02: XHTML 2 Working Group Expected to Stop Work End of 2009, W3C to
Increase Resources on HTML 5. Today the Director announces that when the XHTML
2 Working Group charter expires as scheduled at the end of 2009, the charter
will not be renewed. By doing so, and by increasing resources in the HTML
Working Group, W3C hopes to accelerate the progress of HTML 5 and clarify W3C's
position regarding the future of HTML.
2009-01-28: XHTML Media
Types - Second Edition published. Many people want to use XHTML to author
their Web pages, but are confused about the best ways to deliver those pages in
such a way that they will be processed correctly by various user agents. This
Note contains suggestions about how to format XHTML to ensure it is maximally
portable, and how to deliver XHTML to various user agents - even those that do
not yet support XHTML natively. This document is intended to be used by
document authors who want to use XHTML today, but want to be confident that
their XHTML content is going to work in the greatest number of environments. News item.
2009-01-16: CURIE Syntax 1.0 is a
W3C Candidate Recommendation.This document defines a generic, abbreviated
syntax for expressing URIs. See the ongoing CURIE implementation report for progress
during the CR phase. News
item.
2008-10-16: RDFa is a
Recommendation. This specification allows publishers to express structured data
on the Web within XHTML. This allows tools to read it, enabling a new world of
user functionality, allowing users to transfer structured data between
applications and web sites, and allowing browsing applications to improve the
user experience. For those looking for an introduction to the use of RDFa and
some real-world examples, please consult the updated RDFa
Primer.
2008-10-08: XHTML
Modularization 1.1 is a W3C Recommendation. The main change in this version
is addition of support for XML Schema. The XHTML2 WG will now use this to add
schema support to its markup languages that use XHTML Modularization. News item.
2008-09-04: The Semantic Web Deployment Working Group
and the XHTML2 Working Group have published the Proposed
Recommendation of RDFa in XHTML: Syntax
and Processing. See also the RDFa
Implementation Report.
2008-07-29: XHTML Basic 1.1
is a recommendation. With this, there is now a full convergence in mobile
markup languages, including those developed by the Open Mobile Alliance
(OMA).
2008-06-20: The Semantic Web Deployment Working Group
and the XHTML2 Working Group have published a Candidate
Recommendation of RDFa in XHTML: Syntax
and Processing. Web documents contain significant amounts of structured
data, which is largely unavailable to tools and applications. When publishers
can express this data more completely, and when tools can read it, a new world
of user functionality becomes available, letting users transfer structured data
between applications and web sites, and allowing browsing applications to
improve the user experience. RDFa is a specification for attributes to be used
with languages such as HTML and XHTML to express structured data.
2008-06-12: The XHTML2 Working
Group published two Proposed Recommendations today: XHTML
Modularization 1.1 and XHTML Basic 1.1. The former
provides a means for subsetting and extending XHTML, a feature needed for
extending XHTML's reach onto emerging platforms. This specification is intended
for use by language designers as they construct new XHTML Family Markup
Languages. This second version of this specification includes several minor
updates to provide clarifications and address errors found in the first
version. It also provides an implementation using XML Schemas. This version of
XHTML Basic, which uses the Modularization approach, has been brought into
alignment with the widely deployed XHTML Mobile Profile from the Open Mobile
Alliance (OMA).
2008-05-26: The XHTML2 Working
Group has released a Last Call Working Draft of XHTML Access
Module. This document is intended to help make XHTML-family markup
languages more effective at supporting the needs of the accessibility community
by providing a generic mechanism for defining the relationship between document
components and well-known accessibility taxonomies.
2008-05-06: The XHTML2 Working
Group has released a Last Call Working Draft of CURIE Syntax 1.0 that
defines a syntax for expressing URIs in a generic, abbreviated syntax.
2008-04-07: The XHTML2 Working Group has released
a second Last Call Working Draft of XHTML Role Attribute
Module. With the role
attribute, authors can annotate XML
languages with machine-readable semantic information about the purpose of
elements. Use cases include accessibility, device adaptation, server-side
processing and complex data description. The attribute can be integrated into
any markup language based on XHTML Modularization.
2008-01-07: The XHTML2 Working
Group has published the First Public Working Draft of XHTML Access Module. This
document is intended to help make XHTML-family markup languages more effective
at supporting the needs of the accessibility community. It does so by providing
a generic mechanism for defining the relationship between document components
and well-known accessibility taxonomies.
(Past News)
HTML is the lingua franca for publishing hypertext on the World
Wide Web. It is a non-proprietary format based upon SGML, and can be created
and processed by a wide range of tools, from simple plain text editors - you
type it in from scratch - to sophisticated WYSIWYG authoring tools. HTML
uses tags such as <h1>
and </h1>
to
structure text into headings, paragraphs, lists, hypertext links etc. Here is a
10-minute guide for newcomers to HTML. W3C's statement of
direction for HTML is given on the HTML Activity
Statement. See also the page on our work on the next
generation of Web forms, and the section on Web
history.
The Extensible HyperText Markup Language (XHTML™) is a family of current
and future document types and modules that reproduce, subset, and extend HTML,
reformulated in XML rather than SGML. XHTML Family
document types are all XML-based, and ultimately are designed to work in
conjunction with XML-based user agents. XHTML is the successor of HTML, and a
series of specifications has been developed for
XHTML. See also: HTML and XHTML Frequently Answered
Questions
W3C produces what are known as "Recommendations". These are
specifications, developed by W3C working groups, and then reviewed by Members
of the Consortium. A W3C Recommendation indicates that consensus has been
reached among the Consortium Members that a specification is appropriate for
widespread use.
In general, XHTML specifications include implementations of their
requirements in various syntaxes (e.g., XML DTD, XML Schema, RelaxNG). These
implementations are normative, and are meant to be used either as building
blocks for new markup languages (e.g., XHTML Modularization) or as complete
markup language implementations (e.g., XHTML 1.1).
While a normative part of the W3C Recommendation in which they are
presented, these implementations are also code containing potential errors or
omissions. When such errors are discovered, it is sometimes important that they
be addressed very quickly to ensure that technologies relying on the
implementations work as expected (e.g., validators and content authoring
systems). The W3C process allows for the publication and frequent updating of
errata, but unfortunately this process does not enable implementations to be
quickly updated. As a result, the XHTML 2 Working Group has adopted the
following concerning the production and evolution of its implementations:
- All implementations will adhere to the naming convention(s) and evolution
rules as defined in XHTML Modularization. These names include both Formal
Public Identifiers and System Identifiers. These conventions require that
the System Identifier must include a revision number. This revision number
is ONLY incremented when a revision is not backward compatible.
- Each applicable Recommendation will include fixed, unchanging versions of
those implementations within the formal dated location for the
Recommendation (/TR/YYYY/REC-whatever-YYYYmmdd/...).
- The Working Group will also provide a version of that implementation in
the working group's space on the W3C server (/MarkUp), uncoupled from a
specific dated version of the associated Recommendation. In the beginning
this uncoupled version will be *identical* to the version from the
associated Recommendation.
- If the Working Group identifies a problem with an implementation, and it
is possible to solve the problem in a way that is 100 percent backward
compatible, then the version in the group's space will be updated in place
and an announcement will be sent to the XHTML 2 public email list.
The XHTML 2 Working Group states that the term "backward compatible" should
be used only when:
- The external interface to the module cannot change in any way that would
break another module or markup language, either within or outside of the
W3C.
- The content model cannot change in any way that would cause a previously
valid document to become invalid.
If either of the above constraints would be violated by a change, the
working group will either 1) not make the change, or 2) revise the applicable
module. In the latter case, the working group will also change the associated
identifiers.
XHTML 1.0 | HTML
4.01 | XHTML basic | Modularization of XHTML | XHTML 1.1 | XML Events
XHTML 1.0 was the W3C's first Recommendation for XHTML, following on from earlier work on HTML 4.01, HTML 4.0, HTML 3.2 and HTML
2.0. With a wealth of features, XHTML 1.0 is a reformulation of HTML 4.01 in
XML, and combines the strength of HTML 4 with the power of XML.
XHTML 1.0 was the first major change to HTML since HTML 4.0 was released in
1997. It brings the rigor of XML to Web pages and is the keystone in W3C's work
to create standards that provide richer Web pages on an ever increasing range
of browser platforms including cell phones, televisions, cars, wallet sized
wireless communicators, kiosks, and desktops.
XHTML 1.0 was the first step: it reformulates HTML as an XML application.
This makes it easier to process and easier to maintain. XHTML 1.0 borrows
elements and attributes from W3C's earlier work on HTML 4, and can be
interpreted by existing browsers, by following a few simple guidelines. This allows you to start using
XHTML now!
You can roll over your old HTML documents into XHTML using an Open Source HTML Tidy utility. This tool also cleans up markup errors,
removes clutter and prettifies the markup making it easier to maintain.
XHTML 1.0 is specified in three "flavors". You specify which of these
variants you are using by inserting a line at the beginning of the document.
For example, the HTML for this document starts with a line which says that it
is using XHTML 1.0 Strict. Thus, if you want to validate the document, the tool
used knows which variant you are using. Each variant has its own DTD - Document
Type Definition - which sets out the rules and regulations for using HTML in a
succinct and definitive manner.
XHTML 1.0 Strict - Use this when
you want really clean structural mark-up, free of any markup associated
with layout. Use this together with W3C's Cascading Style Sheet language
(CSS) to get the font, color, and layout
effects you want.
XHTML 1.0 Transitional -
Many people writing Web pages for the general public to access might want
to use this flavor of XHTML 1.0. The idea is to take advantage of XHTML
features including style sheets but nonetheless to make small adjustments
to your markup for the benefit of those viewing your pages with older
browsers which can't understand style sheets. These include using the
body
element with bgcolor
, text
and
link
attributes.
XHTML 1.0 Frameset - Use this
when you want to use Frames to partition the browser window into two or
more frames.
The complete XHTML 1.0 specification is available
in English in several formats, including HTML, PostScript and PDF. See also the list of translations produced by
volunteers.
HTML 4.01 is a revision of the HTML 4.0
Recommendation first released on 18th December 1997. The revision fixes minor
errors that have been found since then. The XHTML 1.0 spec relies on HTML 4.01
for the meanings of XHTML elements and attributes. This allowed us to reduce
the size of the XHTML 1.0 spec very considerably.
XHTML Basic is the second Recommendation in a series of XHTML
specifications.
The XHTML Basic document type includes the minimal set of modules required
to be an XHTML Host Language document type, and in addition it includes images,
forms, basic tables, and object support. It is designed for Web clients that do
not support the full set of XHTML features; for example, Web clients such as
mobile phones, PDAs, pagers,
and settop boxes. The document type is rich enough for content authoring.
XHTML Basic is designed as a common base that may be extended. For example,
an event module that is more generic than the traditional HTML 4 event system
could be added or it could be extended by additional modules from XHTML
Modularization such as the Scripting Module. The goal of XHTML Basic is to
serve as a common language supported by various kinds of user agents.
The document type definition is implemented using XHTML modules as defined
in "Modularization of
XHTML".
The complete XHTML Basic specification is
available in English in several formats, including HTML, plain text, PostScript
and PDF. See also the list of
translations produced by volunteers.
XHTML Modularization is the third Recommendation in a series of
XHTML specifications.
This Recommendation does not specify a markup language but an abstract
modularization of XHTML and an implementation of the abstraction using XML
Document Type Definitions (DTDs) and (in version 1.1) XML Schemas. This
modularization provides a means for subsetting and extending XHTML, a feature
needed for extending XHTML's reach onto emerging platforms.
Modularization of XHTML makes it easier to combine with markup tags for
things like vector graphics, multimedia, math, electronic commerce and more.
Content providers will find it easier to produce content for a wide range of
platforms, with better assurances as to how the content is rendered, and that
the content is valid.
The modular design reflects the realization that a one-size-fits-all
approach no longer works in a world where browsers vary enormously in their
capabilities. A browser in a cellphone can't offer the same experience as a top
of the range multimedia desktop machine. The cellphone doesn't even have the
memory to load the page designed for the desktop browser.
See also XHTML
Modularization for RelaxNG and an overview of
XHTML Modularization.
This Recommendation defines a new XHTML document type that is based upon the
module framework and modules defined in Modularization of XHTML. The purpose of
this document type is to serve as the basis for future extended XHTML 'family'
document types, and to provide a consistent, forward-looking document type
cleanly separated from the deprecated, legacy functionality of HTML 4 that was
brought forward into the XHTML 1.0 document types.
This document type is essentially a reformulation of XHTML 1.0 Strict using
XHTML Modules. This means that many facilities available in other XHTML Family
document types (e.g., XHTML Frames) are not available in this document type.
These other facilities are available through modules defined in Modularization
of XHTML, and document authors are free to define document types based upon
XHTML 1.1 that use these facilities (see Modularization of XHTML for
information on creating new document types).
The first step was to reformulate HTML 4 in XML,
resulting in XHTML 1.0. By following the HTML Compatibility
Guidelines set forth in Appendix C of the XHTML 1.0 specification, XHTML
1.0 documents could be compatible with existing HTML user agents.
The next step is to modularize the elements and attributes into convenient
collections for use in documents that combine XHTML with other tag sets. The
modules are defined in Modularization of
XHTML. XHTML Basic is an example of fairly
minimal build of these modules and is targeted at mobile applications.
XHTML 1.1 is an example of a larger build of the
modules, avoiding many of the presentation features. While XHTML 1.1 looks very
similar to XHTML 1.0 Strict, it is designed to serve as the basis for future
extended XHTML Family document types, and its modular design makes it easier to
add other modules as needed or integrate itself into other markup languages. XHTML 1.1
plus MathML 2.0 document type is an example of such XHTML Family document
type.
Note. This specification was renamed from
"XHTML Events".
The XML Events module defined in this specification provides XML languages
with the ability to uniformly integrate event listeners and associated event
handlers with Document Object Model (DOM) Level 2 event interfaces. The
result is to provide an interoperable way of associating behaviors with
document-level markup.
- HTML
4.0
- First released as a W3C Recommendation on 18 December 1997. A second
release was issued on 24 April 1998 with changes limited to editorial
corrections. This specification has now been superseded by HTML 4.01.
- HTML 3.2
- W3C's first Recommendation for HTML which represented the consensus on
HTML features for 1996. HTML 3.2 added widely-deployed features such as
tables, applets, text-flow around images, superscripts and subscripts,
while providing backwards compatibility with the existing HTML 2.0 Standard.
- HTML 2.0
- HTML 2.0 (RFC 1866) was developed by the
IETF's HTML Working
Group, which closed in 1996. It set the standard for core HTML features
based upon current practice in 1994. Note that with the release of RFC 2854, RFC 1866
has been obsoleted and its current status is
HISTORIC.
ISO/IEC 15445:2000 is
a subset of HTML 4, standardized by ISO/IEC. It takes a more rigorous stance
for instance, an h3
element can't occur after an h1
element unless there is an intervening h2
element. Roger Price and
David Abrahamson have written a user's guide to ISO
HTML.
The current editors' drafts of all specifications are linked to from a
separate drafts page.
If you have any comments on any of our specifications we would like to hear
from you via email. Please send your comments to<EMAIL_ADDRESS>(archive). Don't
forget to include XHTML in the subject line.
XHTML 2.0 is a markup language intended for rich, portable web-based
applications. While the ancestry of XHTML 2.0 comes from HTML 4, XHTML 1.0, and
XHTML 1.1, it is not intended to be 100% backwards compatible with its
earlier versions. Application developers familiar with its earlier ancestors
will be comfortable working with XHTML 2.0.
XHTML 2.0 is a member of the XHTML Family of markup languages. It is an
XHTML Host Language as defined in Modularization of XHTML. As such, it is made
up of a set of XHTML Modules that together describe the elements and attributes
of the language, and their content model. XHTML 2.0 updates many of the modules
defined in Modularization of XHTML, and includes the updated versions of all
those modules and their semantics.
XHTML 2.0 essentially consists of a packaging of several parts currently
independently proceeding to recommendation:
plus the necessary text and hyperlinking modules, which you will find in the
XHTML2 draft.
The most recent editor's draft can always be
found on the XHTML2 WG's drafts page.
An XHTML+MathML+SVG profile is a profile that combines XHTML 1.1, MathML 2.0
and SVG 1.1 together. This profile enables mixing XHTML, MathML and SVG in the
same document using XML namespaces mechanism, while allowing validation of such
a mixed-namespace document.
This specification is a joint work with the SVG Working Group, with the help
from the Math WG.
XFrames is an XML application for composing documents together, replacing
HTML Frames. XFrames is not a part of XHTML per se, that allows
similar functionality to HTML Frames, with fewer usability problems,
principally by making the content of the frameset visible in its URI.
The HLink module defined in this specification provides XHTML Family
Members with the ability to specify which attributes of elements represent
Hyperlinks, and how those hyperlinks should be traversed, and extends XLink
use to a wider class of languages than those restricted to the syntactic
style allowed by XLink.
This document summarizes the best current practice for using various
Internet media types for serving various XHTML Family documents. In summary,
'application/xhtml+xml' SHOULD be used for XHTML Family
documents, and the use of 'text/html' SHOULD be limited to
HTML-compatible XHTML 1.0
documents. 'application/xml' and 'text/xml' MAY also be
used, but whenever appropriate, 'application/xhtml+xml'
SHOULD be used rather than those generic XML media types.
This document describes non-normative XML Schemas for XHTML 1.0.
These Schemas are still work in progress, and this document does not
change the normative definition of XHTML 1.0.
This describes the timeline for deliverables of the XHTML2 working group.
It used to be a W3C NOTE but has now been moved to the MarkUp area for easier
maintenance.
You may also be interested in the following slides on XHTML:
- XHTML: The
Extensible Hypertext Markup Language by Dave Raggett, at W3C LA event
in Stockholm, 24 March 1999.
- W3C HTML
Activity by Dave Raggett, as part of WWW8 W3C Track, 12 May 1999
- W3C
Work on XHTML by Dave Raggett, at XML '99, 6
December 1999. The presentation describes the work being done by W3C on
XHTML.
- The XHTML Family (in ???/Japanese) by Masayasu Ishikawa, at SFC Open Research Forum 2001, 21
September 2001.
- XForms, XHTML and
Device Independence by Steven Pemberton, at W3C.DE-Arbeitstreffen:
Cross Media Publishing, 11 April 2002.
- XHTML Family by
Masayasu Ishikawa, as part of WWW2002 W3C Track, 9 May 2002. Slides
are available in XHTML
or HTML
(XHTML version needs XHTML+MathML+SVG+Ruby support).
- XHTML 2.0 (in ???/Japanese) by Masayasu Ishikawa, at SFC Open Research Forum 2002, 22
November 2002.
- XHTML
2.0 and XForms by Steven Pemberton, as part of WWW2003 W3C Track, 21 May
2003.
- W3C's
Horizontal Activities Usage: XHTML Family Case Study by Steven
Pemberton, WWW2003 W3C Track, 23 May 2003.
- XHTML
and XForms by Steven Pemberton, at Zomersessie van NGI Limburg: XHTML2 en XForms, state of the art
en stage-ervaringen bij het W3C, 3 July 2003.
- XHTML2
and XForms by Steven Pemberton, organized by the German and Austrian
Office, 19 April 2005.
- The Semantic
Browser: Improving the User Experience by Mark Birbeck and Steven
Pemberton, WWW2005 W3C Track, 13 May 2005.
- Metadata
in XHTML2 by Steven Pemberton, at News Standards Summit 2005, 24
May 2005.
- XHTML2:
Accessible, Usable, Device Independent and Semantic by Steven Pemberton
and Mark Birbeck, at XTech 2005
Conference, 26 May 2005.
Here are some rough guidelines for HTML authors. If you use these, you are
more likely to end up with pages that are easy to maintain, look acceptable to
users regardless of the browser they are using, and can be accessed by the many
Web users with disabilities. Meanwhile W3C have produced some more formal
guidelines for authors. Have a look at the detailed Web Content Accessibility Guidelines
1.0.
- A question of style sheets. For most people the look of
a document - the color, the font, the margins - are as important as the
textual content of the document itself. But make no mistake! HTML is not
designed to be used to control these aspects of document layout. What you
should do is to use HTML to mark up headings, paragraphs, lists, hypertext
links, and other structural parts of your document, and then add a style
sheet to specify layout separately, just as you might do in a conventional
Desk Top Publishing Package. That way, not only is there a better chance of
all browsers displaying your document properly, but also, if you want to
change such things as the font or color, it's really simple to do so. See
the Touch of style.
FONT
tag considered harmful! Many filters
from word-processing packages, and also some HTML authoring tools, generate
HTML code which is completely contrary to the design goals of the language.
What they do is to look at a document almost purely from the point of view
of layout, and then mimic that layout in HTML by doing tricks with
FONT
, BR
and
(non-breaking spaces). HTML documents are supposed to be structured around
items such as paragraphs, headings and lists. Yet some of these documents
barely have a paragraph tag in sight!
The problem comes when the content of pages needs to be updated, or
given a new layout, or re-cast in XML (which is now to be the new mark-up
language). With proper use of HTML, such operations are not difficult, but
with a muddle of non-structural tags it's quite a different matter;
maintenance tasks become impractical. To correct pages suffering from
injudicious use of FONT
, try the HTML Tidy
program, which will do its best to put things right and generate better
and more manageable HTML.
- Make your pages readable by those with disabilities. The
Web is a tremendously useful tool for the visually impaired or blind user,
but bear in mind that these users rely on speech synthesizers or Braille
readers to render the text. Sloppy mark-up, or mark-up which doesn't have
the layout defined in a separate style sheet, is hard for such software to
deal with. Wherever possible, use a style sheet for the presentational
aspects of your pages, using HTML purely for structural mark-up.
Also, remember to include descriptions with each image, and try to avoid
server-side image maps. For tables, you should include a summary of the
table's structure, and remember to associate table data with relevant
headers. This will give non-visual browsers a chance to help orient people
as they move from one cell to the next. For forms, remember to include
labels for form fields.
Do look at the accessibility guidelines
for a more detailed account of how to make your Web pages really accessible.
To further promote the reliability and fidelity of communications on the
Web, W3C has introduced the W3C Markup
Validation Service at http://validator.w3.org/
.
Content providers can use this service to validate their Web pages against
the HTML and XHTML Recommendations, thereby ensuring the maximum possible
audience for their Web pages. It also supports XHTML Family document types such
as XHTML+MathML and XHTML+MathML+SVG, and
also other markup vocabularies such as SVG.
Software developers who write HTML and XHTML editing tools can ensure
interoperability with other Web software by verifying that the output of their
tool complies with the W3C Recommendations for HTML and XHTML.
HTML Tidy is a stand-alone tool for checking and pretty-printing HTML that
is in many cases able to fix up mark-up errors, and also offers a means to
convert existing HTML content into well-formed XML, for delivery as XHTML. HTML
Tidy was originally written by Dave
Raggett, and it is now maintained as an open source project at SourceForge by a
group of volunteers.
There is an archived public
mailing list<EMAIL_ADDRESS>Please send bug reports / suggestions on HTML
Tidy to this mailing list.
Changes to HTML necessitate obtaining a consensus from a broad range of
organizations. If you have a great idea, it will take time to convince others!
Here are some of the places where discussion on HTML takes place:
-<EMAIL_ADDRESS>(RSS
feed)
- New! This is the public mailing list where the XHTML2
Working Group will conduct its work per its charter.
-<EMAIL_ADDRESS>(RSS
feed)
- Note: The purpose of this list may change in March
2007. A technical discussion list. If you have a proposal for a change to
HTML/XHTML, you might start a discussion here to see what other
developers think of it.
-<EMAIL_ADDRESS>(RSS
feed)
- Note: The purpose of this list may change in March
2007. This is a list to report errors / send review comments on
HTML/XHTML specifications. This is NOT a discussion list. Anyone
may send comments without subscription, although you'll be requested to give explicit
approval to include your message in our publicly-readable mailing list
archive at your first post. To subscribe, send subscription request
to<EMAIL_ADDRESS>For more information, see how to subscribe.
-<EMAIL_ADDRESS>(RSS
feed)
- This is a mailing list for people working on translations of W3C
specifications such as the HTML/XHTML
Recommendations. To subscribe, send an email to
<EMAIL_ADDRESS>with the word "subscribe" in the subject
line; (include the word "unsubscribe" if you want to unsubscribe.) The archive
for the list is accessible online.
- comp.infosystems.www.authoring.html
- A USENET newsgroup where HTML authoring issues are discussed. "How To"
questions should be addressed here. Note that many issues related to
forms and CGI, image maps, transparent gifs, etc. are covered in the WWW FAQ.
- IETF MHTML WG (closed)
- Developed RFC
2557 - "MIME Encapsulation of Aggregate Documents, such as HTML
(MHTML). J. Palme et al. March 1989.
- IETF HTML Working Group
(closed)
- The HTML working group of the IETF,
closed in 1996.
- Web Conferences
- The next international conference dedicated to the Web is WWW2007, to be held in Banff, Canada. The
last was WWW2006 in Edinburgh,
Scotland.
- XML
- XML is the universal format for structured documents and data on the
Web. It allows you to define your own mark-up formats when HTML is not a
good fit. XML is being used increasingly for data; for instance, W3C's
metadata format RDF.
- Style Sheets
- W3C's Cascading Style Sheets language
(CSS) provides a simple means
to style HTML pages, allowing you to control visual and aural
characteristics; for instance, fonts, margins, line-spacing, borders,
colors, layers and more. W3C is also working on a new style sheet
language written in XML called XSL, which provides a
means to transform XML documents into HTML.
- Document Object Model
- Provides ways for scripts to manipulate HTML using a set of methods and
data types defined independently of particular programming languages or
computer platforms. It forms the basis for dynamic effects in Web pages,
but can also be exploited in HTML editors and other tools by extensions
for manipulating HTML content.
- Internationalization
- HTML 4 provides a number of features for use with a wide variety of
languages and writing systems. For instance, mixed language text, and
right-to-left and mixed direction text. HTML 4 is formally based upon
Unicode, but allows you to store and transmit documents in a variety of
character encodings. Further work is envisaged for handling vertical text
and phonetic annotations for Kanji (Ruby).
- Access for People with
Disabilities
- HTML 4 includes many features for improved access by people with
disabilities. W3C's Web Accessibility Initiative is working on providing
effective guidelines for making your pages accessible to all, not just
those using graphical browsers.
- XForms
- Forms are a very widely used feature in web pages. W3C is working on
the design of the next generation of web forms with a view to separating
the presentation, data and logic, as a means to allowing the same forms
to be used with widely differing presentations.
- Mathematics
- Work on representing mathematics on the Web has focused on ways to
handle the presentation of mathematical expressions and also the intended
meaning. The MathML language is an
application of XML, which, while not suited to hand-editing, is easy to
process by machine.
Skip to main
content | news
| specs
(XHTML, HTML4, ...) | public drafts | test suites | tutorials | slides | guidelines | validation | articles | translations | charter | participants | join | roadmap | XForms | forums | HTML Tidy | related work | HTML 4.0/3.2/2.0 | historical


package-related.Rmd
Don’t know if something is installed? Want your code to install packages when run if they’re absent? usePackage
is here to help!
usePackage("dichromat")
#> Package dichromat not found, installing...
#> Installing package into 'C:/Users/azetner/AppData/Local/Temp/RtmpCWYyUE/temp_libpath626469d7490'
#> (as 'lib' is unspecified)
#> package 'dichromat' successfully unpacked and MD5 sums checked
#>
#> The downloaded binary packages are in
#> C:\Users\azetner\AppData\Local\Temp\RtmpmoSYZW\downloaded_packages
#> Loading Package dichromat...
#> Loading required package: dichromat
Combine usePackage()
with the purrr
package to attempt to attach and (install if unavailable) multiple packages. Walk doesn’t return an output, only the secondary effects. In this case, an attached package from each of those in the character vector.
purrr::walk(c("DT", "dplyr", "lubridate", "readr", "ggplot2", "ggridges", "viridis", "hrbrthemes", "forcats", "tidyr"), ~ usePackage(.x))
#> Loading Package DT...
#> Loading required package: DT
#> Loading Package dplyr...
#> Loading required package: dplyr
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
#> Loading Package lubridate...
#> Loading required package: lubridate
#>
#> Attaching package: 'lubridate'
#> The following objects are masked from 'package:base':
#>
#> date, intersect, setdiff, union
#> Loading Package readr...
#> Loading required package: readr
#> Loading Package ggplot2...
#> Loading required package: ggplot2
#> Package ggridges not found, installing...
#> Installing package into 'C:/Users/azetner/AppData/Local/Temp/RtmpCWYyUE/temp_libpath626469d7490'
#> (as 'lib' is unspecified)
#> also installing the dependencies 'rex', 'covr', 'ggplot2movies', 'vdiffr'
#> package 'rex' successfully unpacked and MD5 sums checked
#> package 'covr' successfully unpacked and MD5 sums checked
#> package 'ggplot2movies' successfully unpacked and MD5 sums checked
#> package 'vdiffr' successfully unpacked and MD5 sums checked
#> package 'ggridges' successfully unpacked and MD5 sums checked
#>
#> The downloaded binary packages are in
#> C:\Users\azetner\AppData\Local\Temp\RtmpmoSYZW\downloaded_packages
#> Loading Package ggridges...
#> Loading required package: ggridges
#> Loading Package viridis...
#> Loading required package: viridis
#> Loading required package: viridisLite
#> Package hrbrthemes not found, installing...
#> Installing package into 'C:/Users/azetner/AppData/Local/Temp/RtmpCWYyUE/temp_libpath626469d7490'
#> (as 'lib' is unspecified)
#> also installing the dependencies 'extrafontdb', 'Rttf2pt1', 'extrafont', 'gdtools', 'hunspell', 'gcookbook', 'svglite'
#> package 'extrafontdb' successfully unpacked and MD5 sums checked
#> package 'Rttf2pt1' successfully unpacked and MD5 sums checked
#> package 'extrafont' successfully unpacked and MD5 sums checked
#> package 'gdtools' successfully unpacked and MD5 sums checked
#> package 'hunspell' successfully unpacked and MD5 sums checked
#> package 'gcookbook' successfully unpacked and MD5 sums checked
#> package 'svglite' successfully unpacked and MD5 sums checked
#> package 'hrbrthemes' successfully unpacked and MD5 sums checked
#>
#> The downloaded binary packages are in
#> C:\Users\azetner\AppData\Local\Temp\RtmpmoSYZW\downloaded_packages
#> Loading Package hrbrthemes...
#> Loading required package: hrbrthemes
#> NOTE: Either Arial Narrow or Roboto Condensed fonts are required to use these themes.
#> Please use hrbrthemes::import_roboto_condensed() to install Roboto Condensed and
#> if Arial Narrow is not on your system, please see https://bit.ly/arialnarrow
#> Loading Package forcats...
#> Loading required package: forcats
#> Loading Package tidyr...
#> Loading required package: tidyr
Tired of quoting and typing in multiple library statements? No more!
Don’t bother with quotes.


An extensive WordPress e-Commerce site dedicated to the metal polishing enthusiast. My responsibilities include design, development, performance optimization, SEO, child-theme development, content writing, and more. I'm also responsible for creating and editing multimedia content for this company's various social media outlets, including Instagram and YouTube.
VISIT SITEA WordPress e-Commerce site for vehicle modification enthusiasts. My responsibilities for this site included design, development, performance optimization, and SEO.
VISIT SITEThis was a class project for a workflow development course. I was responsible for designing, developing, and deploying this entire site.
VISIT SITEA custom-built WordPress website for medical professionals. I was responsible for the development of this site and it's custom WordPress theme, as well as performance optimization and SEO.
VISIT SITEThis is a service oriented WordPress site for an automotive repair company. My responsibilities included design and overall development, performance optimization, and SEO of the site.
VISIT SITEThis site was a class project in which I explored the comprehensiveness of the WordPress CMS. I was responsible for the entire design, development, and deployment of the site.
VISIT SITEThis is another hefty WordPress e-Commerce site. My responsibilities included design, development, product creation, content writing, performance optimization, and SEO of the entire site.
VISIT SITEA WordPress blog site dedicated to saltwater fish aficianados. My responsibilities included development, performance optimization, and SEO.
VISIT SITEThis was a class project in which I explored a variety of emerging web trends. The site includes links to an array of different projects that I completed throughout the course that display a wide range of techniques. I was responsible for design, development, performance optimization, and SEO of the entire site.
VISIT SITE


{% extends 'base_without_nav.html' %} {% block content %}
Are you sure you want to delete {{ object.title }}?
Deleting this issue will also delete all of its subissues.


micropython
– access and control MicroPython internals¶
Functions¶
- micropython.const(expr)¶
Used to declare that the expression is a constant so that the compiler can optimise it. The use of this function should be as follows:
from micropython import const CONST_X = const(123) CONST_Y = const(2 * CONST_X + 1)
Constants declared this way are still accessible as global variables from outside the module they are declared in. On the other hand, if a constant begins with an underscore then it is hidden, it is not available as a global variable, and does not take up any memory during execution.
This
const
function is recognised directly by the MicroPython parser and is provided as part of themicropython
module mainly so that scripts can be written which run under both CPython and MicroPython, by following the above pattern.
- micropython.opt_level([level])¶
If level is given then this function sets the optimisation level for subsequent compilation of scripts, and returns
None
. Otherwise it returns the current optimisation level.The optimisation level controls the following compilation features:
Assertions: at level 0 assertion statements are enabled and compiled into the bytecode; at levels 1 and higher assertions are not compiled.
Built-in
__debug__
variable: at level 0 this variable expands toTrue
; at levels 1 and higher it expands toFalse
.Source-code line numbers: at levels 0, 1 and 2 source-code line number are stored along with the bytecode so that exceptions can report the line number they occurred at; at levels 3 and higher line numbers are not stored.
The default optimisation level is usually level 0.
- micropython.alloc_emergency_exception_buf(size)¶
Allocate size bytes of RAM for the emergency exception buffer (a good size is around 100 bytes). The buffer is used to create exceptions in cases when normal RAM allocation would fail (eg within an interrupt handler) and therefore give useful traceback information in these situations.
A good way to use this function is to put it at the start of your main script (eg
boot.py
ormain.py
) and then the emergency exception buffer will be active for all the code following it.
- micropython.mem_info([verbose])¶
Print information about currently used memory. If the verbose argument is given then extra information is printed.
The information that is printed is implementation dependent, but currently includes the amount of stack and heap used. In verbose mode it prints out the entire heap indicating which blocks are used and which are free.
- micropython.qstr_info([verbose])¶
Print information about currently interned strings. If the verbose argument is given then extra information is printed.
The information that is printed is implementation dependent, but currently includes the number of interned strings and the amount of RAM they use. In verbose mode it prints out the names of all RAM-interned strings.
- micropython.stack_use()¶
Return an integer representing the current amount of stack that is being used. The absolute value of this is not particularly useful, rather it should be used to compute differences in stack usage at different points.
- micropython.heap_lock()¶
- micropython.heap_unlock()¶
- micropython.heap_locked()¶
Lock or unlock the heap. When locked no memory allocation can occur and a
MemoryError
will be raised if any heap allocation is attempted.heap_locked()
returns a true value if the heap is currently locked.These functions can be nested, ie
heap_lock()
can be called multiple times in a row and the lock-depth will increase, and thenheap_unlock()
must be called the same number of times to make the heap available again.Both
heap_unlock()
andheap_locked()
return the current lock depth (after unlocking for the former) as a non-negative integer, with 0 meaning the heap is not locked.If the REPL becomes active with the heap locked then it will be forcefully unlocked.
Note:
heap_locked()
is not enabled on most ports by default, requiresMICROPY_PY_MICROPYTHON_HEAP_LOCKED
.
- micropython.kbd_intr(chr)¶
Set the character that will raise a
KeyboardInterrupt
exception. By default this is set to 3 during script execution, corresponding to Ctrl-C. Passing -1 to this function will disable capture of Ctrl-C, and passing 3 will restore it.This function can be used to prevent the capturing of Ctrl-C on the incoming stream of characters that is usually used for the REPL, in case that stream is used for other purposes.
- micropython.schedule(func, arg)¶
Schedule the function func to be executed “very soon”. The function is passed the value arg as its single argument. “Very soon” means that the MicroPython runtime will do its best to execute the function at the earliest possible time, given that it is also trying to be efficient, and that the following conditions hold:
A scheduled function will never preempt another scheduled function.
Scheduled functions are always executed “between opcodes” which means that all fundamental Python operations (such as appending to a list) are guaranteed to be atomic.
A given port may define “critical regions” within which scheduled functions will never be executed. Functions may be scheduled within a critical region but they will not be executed until that region is exited. An example of a critical region is a preempting interrupt handler (an IRQ).
A use for this function is to schedule a callback from a preempting IRQ. Such an IRQ puts restrictions on the code that runs in the IRQ (for example the heap may be locked) and scheduling a function to call later will lift those restrictions.
Note: If
schedule()
is called from a preempting IRQ, when memory allocation is not allowed and the callback to be passed toschedule()
is a bound method, passing this directly will fail. This is because creating a reference to a bound method causes memory allocation. A solution is to create a reference to the method in the class constructor and to pass that reference toschedule()
. This is discussed in detail here reference documentation under “Creation of Python objects”.There is a finite queue to hold the scheduled functions and
schedule()
will raise aRuntimeError
if the queue is full.


--- layout: default title: About ---
Around age thirteen I installed linux for the first time (Slackware IIRC), and I have been a passionate supporter of Linux and Open Source Software ever since. I also lucked out by having a mother on faculty at UK, and she gave over her credentials. This gave me access to several UNIX-based systems, and I dove in head first to newsgroups, IRC, MUDs, and all those other pre-web Internet curiosities. Like most nerdy kids my age, I bought a modem and started calling every BBS in my area code. I even met networking legend Scott Morris and got to see his legendary BBS setup. This was the phase of my life where I was reading 2600 and The Anarchist Cookbook, and I assumed I was on the path to becoming an uber-l33t hacker. That phase passed, but I am still fascinated by DEF CON presentations, and I hope to make it in person one day.
My first "real" technology job was fixing computers at Kentucky Trade Computers while attending the University of Kentucky. After receiving my BS in Computer Science, I started doing C# and PHP web development for a local company. It became apparent quickly that they needed someone besides the CEO to run the infrastructure, so I earned my CCNA and MCSE. I realized that I was enamored with networking and I focused my career on becoming a full-fledged Network Engineer. Since then, I have worked in Healthcare, Manufacturing, Big Law, and I am currently a Solutions Architect at a regional CSP/MSP/VAR. I earned my CCIE Data Center in March 2017.
I've adopted this sticker I found on reddit as a personal logo, and I want to make sure I give credit to /u/redskyguy since he is the creator. It's awesome and goofy, and I feel like it sums up the life of a network engineer pretty well. If you like it as much as I do, you can buy the stickers here.
My hope for this blog is to document some of the interesting problems I've come across, as well as contribute back to the wider community. Thanks for reading.


TickMyDay
Home
(current)
My todos
(current)
Sign out
Todo list title
Tryout mongodb
Complete backend design
Something new


Port of my emacs universal keybindings script from Hammerspoon to Karabiner.
C-x prefix keys
| C-x C-b |
Switch tabs in browsers using QuickTabs. (conf Cmd+B to activate QuickTabs here chrome://extensions/shortcuts) |
| C-x C-d | Open dev console (web browsers only) |
| C-x C-c | Quit current application. |
| C-x C-f | Open file in most apps, browsers switch to focus location bar instead. |
| C-x C-h | Select all |
| C-x C-k | Close tab or window |
| C-x C-r | Reload (browsers only) |
| C-x C-s | Save |
| C-x C-u | Undo |
Control keys (*supports set mark)
| C-a | *Start of line |
| C-b | *Back character |
| C-d | Delete forward |
| C-e | *End of line |
| C-f | *Forward character |
| C-g | Escape also cancels mark |
| C-h | Backspace |
| C-n | *Down arrow |
| C-p | *Up arrow |
| C-r | Find |
| C-v | *Page down |
| C-y | Paste (will passthrough to terminals) |
| C-/ | Undo |
| C-space | Set mark |
Option keys
| M-b | Move word backward |
| M-d | Delete forward word |
| M-f | Move word forward |
| M-n | New empty tab or file |
| M-t | New tab (browsers only) |
| M-v | Page up |
| M-w | Copy selection |
| M-y | Paste |
| M-delete, M-backspace | Undo |


Yes, you can bring your Thanksgiving turkey on an airplane
You'll have to check the gravy, though
by Lauren M. Johnson, CNN(CNN) - Taking a plane to your family's Thanksgiving dinner? Don't worry -- you can contribute as much as you can carry.
From the turkey and casseroles to the mashed potatoes, here's a helpful guide detailing the TSA-approved items you can bring on board or pack below.
Can I take my turkey or ham?
Yes! You can give it one last flight, and it can even go in your carry on. However, it might be smart to go ahead and carve the bird or slice the ham into a storage container ahead of time. It might avoid an awkward conversation with TSA.
I'm bringing the baked goods! Do I have to drive?
Nope! If baking a pie or cookies or getting the dinner rolls was your job, all of that is acceptable on the plane. All of the delicious sugary goodness is allowed right in your carry-on. Again, it's a good idea to put it in an air tight container so it makes it to the dessert table.
What about green bean casserole?
All of you casserole, stuffing, and vegetable side dish people — you too are allowed in the main cabin. It may not look as good as it did when you took it out of the oven, but it is allowed on board.
What if I want to make my potatoes fresh?
If you want to delay mashing until you get to your destination, pack the potatoes! Raw potatoes are allowed to fly in your carry on. Once they're mashed, the TSA reminds "they're not exactly what one would define as a solid"
What can't go in my carry-on?
The runnier Thanksgiving items are welcome on the plane, but they'll have to ride below deck.
Gravy, cranberry sauce, and even wine are permitted in your checked luggage.
Go with the overall rule that if it involves more liquid than solid it needs to be checked.
So, what's NOT allowed?
It's probably best to leave your carving set at home.
No matter where you put your holiday goodies, again, TSA recommends storing the items in tightly sealed plastic containers. Nothing is worse than thinking ahead, making it to your destination, and the gravy is in your suitcase.


SNOBOL4ERROR(1) | CSNOBOL4B 2.2 | December 5, 2020
NAME
snobol4error – SNOBOL4 error codes
SYNOPSIS
SNOBOL4 &ERRTYPE and &ERRTEXT values.
Errors not marked (fatal) or (fatal-) cannot be caught/ignored
by setting &ERRLIMIT. Errors marked (fatal-) can be caught
by SETEXIT by setting both &ERRLIMIT and &FATALLIMIT,
but cannot be CONTINUEd (extension added in CSNOBOL4 2.1.6).
-
1
-
“Illegal data type”
-
2
-
“Error in arithmetic operation”
-
3
-
“Erroneous array or table reference”
-
4
-
“Null string in illegal context”
-
5
-
“Undefined function or operation”
-
6
-
“Erroneous prototype”
-
7
-
“Unknown keyword”
-
8
-
“Variable not present where required”
-
9
-
“Entry point of function not label”
-
10
-
“Illegal argument to primitive function”
-
11
-
“Reading error”
-
12
-
“Illegal i/o unit”
-
13
-
“Limit on defined data types exceeded”
-
14
-
“Negative number in illegal context”
-
15
-
“String overflow”
-
16
-
“Overflow during pattern matching” (fatal).
-
-
See the -P option in snobol4cmd(1).
-
17
-
“Error in SNOBOL4 system” (fatal).
-
-
Various internal errors.
-
18
-
“Return from level zero” (fatal).
-
19
-
“Failure during goto evaluation” (fatal-).
-
20
-
“Insufficient storage to continue” (fatal).
-
-
See the -d option in snobol4cmd(1).
-
21
-
“Stack overflow” (fatal).
-
-
See the -S option in snobol4cmd(1).
-
22
-
“Limit on statement execution exceeded” (fatal).
-
23
-
“Object exceeds size limit” (fatal).
-
24
-
“Undefined or erroneous goto” (fatal-).
-
25
-
“Incorrect number of arguments” (fatal-).
-
26
-
“Limit on compilation errors exceeded” (fatal).
-
27
-
“Erroneous END statement” (fatal).
-
28
-
“Execution of statement with compilation error” (fatal).
Last error in standard SNOBOL4.
-
29
-
“Erroneous INCLUDE statement” (fatal).
-
30
-
“Cannot open INCLUDE file” (fatal).
-
31
-
“Erroneous LINE statement” (fatal).
-
32
-
“Missing END statement” (fatal).
-
33
-
“Output error”
-
34
-
“User interrupt”
-
-
Interrupt character (SIGINT) was recieved.
-
35
-
“Not in a SETEXIT handler” (fatal-).
-
-
Attempt to branch to CONTINUE, SCONTINUE, or ABORT
when no unhandled error condition present
-
36
-
“Error in BLOCKS” (fatal).
-
-
Internal error.
-
37
-
“Too many warnings in BLOCKS” (fatal).
-
38
-
“Mystery error in BLOCKS” (fatal).
-
-
Undocumented internal error.
-
39
-
“Cannot CONTINUE from FATAL error” (fatal).
-
-
Attempt to branch to CONTINUE or SCONTINUE
after a fatal- error condition.
SEE ALSO
snobol4(1).


Thesis and Senior Exhibition on display in the Jewett Gallery Wellesley, MA May 6 - 27, 2022
In this body of work, spiritual unity across human and plant consciousness is illustrated by the theme of transformation. As described by African cosmology, all aspects of life have their own consciousness guided by forces of nature. Photosynthetic growth and the evolution of the figures, are metaphors for spiritual alignment, healing, and Black transgender liberation. Through herbalism and ethnobotanical practices we are able to access healing and communicate with the natural world. As the inflorescence of the plants grows, the figures intensely gaze at the budding genitalia as their own transformation takes place. Their gaze then becomes a growing sense of anticipation for the future, alluding to the experience of second puberty. An example of the figures’ transformation is the hand in Nicotiana that has fingers branching off in a pattern similar to the growth structure of Nicotiana species. These paintings are moments in time leading up to a final culmination where the figure and plant physically become one, this endpoint represents spiritual unity with the natural world and becoming one with God. Black people exist under imposed structures of gender that were not part of our ways of thinking prior to colonization and enslavement. Even the scientific language we use to describe and understand our environment is impacted by these structures. In this work, the process of liberation through transformation includes expanding gender and sex beyond the antiquated association with biology. The figures are intentionally placed in monoculture settings to reference the reality of labor that clouds our historical relationship to the land. Black and brown populations have been forced to work the fields and practice unsustainable western agricultural practices in the name of efficiency and consumerism. We have been traumatized and brutalized through our relationships with the natural world but the sacredness of these relationships shall be restored.


The Who are first honoured as London unveils Music Walk of Fame
LONDON, Nov 20 — British rock band The Who became the first act to receive a paving stone on the Music Walk of Fame in London yesterday, in the unveiling of a new cultural attraction that echoes the starry sidewalks of Hollywood Boulevard.
Following the presentation of the Walk’s founding stone, The Who’s two surviving members Roger Daltrey and Pete Townshend posed by their own plaque, depicting a music record, laid out in London’s buzzing Camden district.
The Music Walk of Fame will honour artists and others working in the industry in a series of unveilings between the Roundhouse and the Koko performance venues in the north London district that is popular with musicians.
“Camden has always been vital to London’s thriving music scene and is, as we all know, a world-renowned hub for the arts,” The Who said in a statement.
“As Londoners, it’s very surreal to be immortalised in stone on Camden High Street, and it’s quite something to know that people can pop by and see us anytime, albeit virtually.”
Up to 20 stones will be laid out each year, organisers have said, and inductees, chosen by a panel, will be honoured in several categories: icon, innovator, inspiration, industry, unsung hero and artist of the year.
A dedicated app will allow visitors to learn more about the history of the music industry. — Reuters


Inherits contract.
◆ claimpay()
| void daccustodian::claimpay |
( |
name |
claimer, |
|
|
uint64_t |
payid |
|
) |
| |
This action is to claim pay as a custodian.
Assertions:
- The claimer account performing the action is authorised to do so.
- The payid is for a valid pay record in the pending pay table.
- The claimer account is the same as the intended destination account for the pay record.
- Parameters
-
| claimer | - The account id for the claiming account. |
| payid | - The id for the pay record to claim from the pending pay table. |
Post Condition:
The quantity owed to the custodian as referred to by the pay record is transferred to the claimer and then the pay record is removed from the pending pay table.
◆ firecand()
| void daccustodian::firecand |
( |
name |
cand, |
|
|
bool |
lockupStake |
|
) |
| |
This action is used to remove a candidate from being a candidate for custodian elections.
Assertions:
- The action is authorised by the mid level permission the auth account for the contract.
- The candidate is already a nominated candidate.
- Parameters
-
| cand | - The account id for the candidate nominating. |
| lockupStake | - if true the stake will be locked up for a time period as set by the contract config - lockup_release_time_delay |
Post Condition:
The candidate should still be present in the candidates table and be set to inactive. If the lockupstake
parameter is true the stake will be locked until the time delay has passed. If not the candidate will be able to unstake their tokens immediately using the unstake action to have them returned.
◆ firecust()
| void daccustodian::firecust |
( |
name |
cust | ) |
|
This action is used to remove a custodian.
Assertions:
- The action is authorised by the mid level of the auth account (currently elected custodian board).
- The
cust
account is currently an elected custodian. - Parameters
-
| cand | - The account id for the candidate nominating. |
Post Condition:
The custodian will be removed from the active custodians and should still be present in the candidates table but will be set to inactive. Their staked tokens will be locked up for the time delay added from the moment this action was called so they will not able to unstake until that time has passed. A replacement custodian will selected from the candidates to fill the missing place (based on vote ranking) then the auths for the controlling dac auth account will be set for the custodian board.
◆ newperiod()
| void daccustodian::newperiod |
( |
string |
message | ) |
|
This action is to be run to end and begin each period in the DAC life cycle. It performs multiple tasks for the DAC including:
- Allocate custodians from the candidates tables based on those with most votes at the moment this action is run. – This action removes and selects a full set of custodians each time it is successfully run selected from the candidates with the most votes weight. If there are not enough eligible candidates to satisfy the DAC config numbers the action adds the highest voted candidates as custodians as long their votes weight is greater than 0. At this time the held stake for the departing custodians is set to have a time delayed lockup to prevent the funds releasing too soon after each custodian has been in office.
- Distribute pay for the existing custodians based on the configs into the pendingpay table so it can be claimed by individual candidates. – The pay is distributed as determined by the median pay of the currently elected custodians. Therefore all elected custodians receive the same pay amount.
- Set the DAC auths for the intended controlling accounts based on the configs thresholds with the newly elected custodians. This action asserts unless the following conditions have been met:
- The action cannot be called multiple times within the period since the last time it was previously run successfully. This minimum time between allowed calls is configured by the period length parameter in contract configs.
- To run for the first time a minimum threshold of voter engragement must be satisfied. This is configured by the
initial_vote_quorum_percent
field in the contract config with the percentage calculated from the amount of registered votes cast by voters against the max supply of tokens for DAC's primary currency.
- After the initial vote quorum percent has been reached subsequent calls to this action will require a minimum of
vote_quorum_percent
to vote for the votes to be considered sufficient to trigger a new period with new custodians. - Parameters
-
| message | - a string that be used to log a message in the chain history logs. It serves no function in the contract logic. |
◆ nominatecand()
| void daccustodian::nominatecand |
( |
name |
cand, |
|
|
asset |
requestedpay |
|
) |
| |
This action is used to nominate a candidate for custodian elections. It must be authorised by the candidate and the candidate must be an active member of the dac, having agreed to the latest constitution. The candidate must have transferred a quantity of tokens (determined by a config setting - lockupasset
) to the contract for staking before this action is executed. This could have been from a recent transfer with the contract name in the memo or from a previous time when this account had nominated, as long as the candidate had never unstake
d those tokens.
Assertions:
- The account performing the action is authorised.
- The candidate is not already a nominated candidate.
- The requested pay amount is not more than the config max amount
- The requested pay symbol type is the same from config max amount ( The contract supports only one token symbol for payment)
- The candidate is currently a member or has agreed to the latest constitution.
- The candidate has transferred sufficient funds for staking if they are a new candidate.
- The candidate has enough staked if they are re-nominating as a candidate and the required stake has changed since they last nominated.
- Parameters
-
| cand | - The account id for the candidate nominating. |
| requestedpay | - The amount of pay the candidate would like to receive if they are elected as a custodian. This amount must not exceed the maximum allowed amount of the contract config parameter (requested_pay_max ) and the symbol must also match. |
Post Condition:
The candidate should be present in the candidates table and be set to active. If they are a returning candidate they should be set to active again. The locked_tokens
value should reflect the total of the tokens they have transferred to the contract for staking. The number of active candidates in the contract will incremented.
◆ resigncust()
| void daccustodian::resigncust |
( |
name |
cust | ) |
|
This action is used to resign as a custodian.
Assertions:
- The
cust
account performing the action is authorised to do so.
- The
cust
account is currently an elected custodian. - Parameters
-
| cust | - The account id for the candidate nominating. |
Post Condition:
The custodian will be removed from the active custodians and should still be present in the candidates table but will be set to inactive. Their staked tokens will be locked up for the time delay added from the moment this action was called so they will not able to unstake until that time has passed. A replacement custodian will selected from the candidates to fill the missing place (based on vote ranking) then the auths for the controlling dac auth account will be set for the custodian board.
◆ transfer()
| void daccustodian::transfer |
( |
name |
from, |
|
|
name |
to, |
|
|
asset |
quantity, |
|
|
string |
memo |
|
) |
| |
Action to listen to from the associated token contract to ensure registering should be allowed.
- Parameters
-
| from | The account to observe as the source of funds for a transfer |
| to | The account to observe as the destination of funds for a transfer |
| quantity | |
| memo | A string to attach to a transaction. For staking this string should match the name of the running contract eg "dacelections". Otherwise it will be regarded only as a generic transfer to the account. This action is intended only to observe transfers that are run by the associated token contract for the purpose of tracking the moving weights of votes if either the from or to in the transfer have active votes. It is not included in the ABI to prevent it from being called from outside the chain. |
◆ unstake()
| void daccustodian::unstake |
( |
name |
cand | ) |
|
This action is used to unstake a candidates tokens and have them transferred to their account.
Assertions:
- The candidate was a nominated candidate at some point in the passed.
- The candidate is not already a nominated candidate.
- The tokens held under candidate's account are not currently locked in a time delay.
- Parameters
-
| cand | - The account id for the candidate nominating. |
Post Condition:
The candidate should still be present in the candidates table and should be still set to inactive. The candidates tokens will be transferred back to their account and their locked_tokens
value will be reduced to 0.
◆ updatebio()
| void daccustodian::updatebio |
( |
name |
cand, |
|
|
string |
bio |
|
) |
| |
This action is used to update the bio for a candidate.
Assertions:
- The
cand
account performing the action is authorised to do so.
- The string in the bio field is less than 256 characters.
- Parameters
-
| cand | - The account id for the candidate nominating. |
| bio | - A string of bio data that will be passed through the contract. |
Post Condition:
Nothing from this action is stored on the blockchain. It is only intended to ensure authentication of changing the bio which will be stored off chain.
◆ updatereqpay()
| void daccustodian::updatereqpay |
( |
name |
cand, |
|
|
asset |
requestedpay |
|
) |
| |
This action is used to update the requested pay for a candidate.
Assertions:
- The
cand
account performing the action is authorised to do so.
- The candidate is currently registered as a candidate.
- The requestedpay is not more than the requested pay amount.
- Parameters
-
| cand | - The account id for the candidate nominating. |
| requestedpay | - A string representing the asset they would like to be paid as custodian. |
Post Condition:
The requested pay for the candidate should be updated to the new asset.
◆ votecust()
| void daccustodian::votecust |
( |
name |
voter, |
|
|
vector< name > |
newvotes |
|
) |
| |
This action is to facilitate voting for candidates to become custodians of the DAC. Each member will be able to vote a configurable number of custodians set by the contract configuration. When a voter calls this action either a new vote will be recorded or the existing vote for that voter will be modified. If an empty array of candidates is passed to the action an existing vote for that voter will be removed.
Assertions:
- The voter account performing the action is authorised to do so.
- The voter account performing has agreed to the latest member terms for the DAC.
- The number of candidates in the newvotes vector is not greater than the number of allowed votes per voter as set by the contract config.
- Ensure there are no duplicate candidates in the voting vector.
- Ensure all the candidates in the vector are registered and active candidates.
- Parameters
-
| voter | - The account id for the voter account. |
| newvotes | - A vector of account ids for the candidate that the voter is voting for. |
Post Condition:
An active vote record for the voter will have been created or modified to reflect the newvotes. Each of the candidates will have their total_votes amount updated to reflect the delta in voter's token balance. Eg. If a voter has 1000 tokens and votes for 5 candidates, each of those candidates will have their total_votes value increased by 1000. Then if they change their votes to now vote 2 different candidates while keeping the other 3 the same there would be a change of -1000 for 2 old candidates +1000 for 2 new candidates and the other 3 will remain unchanged.
◆ withdrawcand()
| void daccustodian::withdrawcand |
( |
name |
cand | ) |
|
This action is used to withdraw a candidate from being active for custodian elections.
Assertions:
- The account performing the action is authorised.
- The candidate is already a nominated candidate.
- Parameters
-
| cand | - The account id for the candidate nominating. |
Post Condition:
The candidate should still be present in the candidates table and be set to inactive. If the were recently an elected custodian there may be a time delay on when they can unstake their tokens from the contract. If not they will be able to unstake their tokens immediately using the unstake action.
The documentation for this class was generated from the following files:
- daccustodian.hpp
- config.cpp
- external_observable_actions.cpp
- newperiod_components.cpp
- pay_handling.cpp
- privatehelpers.cpp
- registering.cpp
- update_member_details.cpp
- voting.cpp


- saveVibeEvent(Vibe, String, SocSit, Bitmap, Double, Double) - Method in class com.example.vybe.AddEdit.AddEditController
-
This method saves the Vibe Event using all user inputs from
editText fields
- SearchProfilesActivity - Class in com.example.vybe
-
SearchProfilesActivity enables the user to search for other participants/users of the Vybe app
- SearchProfilesActivity() - Constructor for class com.example.vybe.SearchProfilesActivity
-
- sendFollowRequest(User) - Method in class com.example.vybe.RequestController
-
- setDateTime(Date) - Method in class com.example.vybe.Models.VibeEvent
-
This sets the date and time in which a VibeEvent occurred
- SetDateTime() - Method in class com.example.vybe.VibeEventTest
-
- setDefaultSocSit(SocSit) - Method in class com.example.vybe.AddEdit.SocSitFieldFragment
-
Set the default Social Situation.
- setEmail(String) - Method in class com.example.vybe.Models.User
-
This sets the email for the user
- SetEmail() - Method in class com.example.vybe.UserTest
-
- SetFollowerList() - Method in class com.example.vybe.UserTest
-
- setFollowers(ArrayList<String>) - Method in class com.example.vybe.Models.User
-
This sets the list of users following this user
- setFollowing(ArrayList<String>) - Method in class com.example.vybe.Models.User
-
This sets the list of users this user follows
- SetFollowingList() - Method in class com.example.vybe.UserTest
-
- setID(String) - Method in class com.example.vybe.Models.VibeEvent
-
This sets the unique ID for the VibeEvent
- SetId() - Method in class com.example.vybe.VibeEventTest
-
- setImage(Bitmap) - Method in class com.example.vybe.AddEdit.AddEditVibeEventActivity
-
- setImage(Bitmap) - Method in class com.example.vybe.AddEdit.ImageFieldFragment
-
Set the image view to display image on the fragment
- setImage(String) - Method in class com.example.vybe.Models.VibeEvent
-
This sets the path to the image for the VibeEvent
- SetImage() - Method in class com.example.vybe.VibeEventTest
-
- setLatitude(Double) - Method in class com.example.vybe.Models.VibeEvent
-
This sets the latitude of a user's current location
- SetLatitude() - Method in class com.example.vybe.VibeEventTest
-
- setLocation(double, double) - Method in class com.example.vybe.AddEdit.AddEditVibeEventActivity
-
- setLongitude(Double) - Method in class com.example.vybe.Models.VibeEvent
-
This sets the longitude of a user's current location
- SetLongitude() - Method in class com.example.vybe.VibeEventTest
-
- setOnItemClickLister(ProfileAdapter.OnItemClickListener) - Method in class com.example.vybe.ProfileAdapter
-
- setOnMyVibeEventsUpdatedListener(VibeEventListController.OnMyVibeEventsUpdatedListener) - Static method in class com.example.vybe.VibeEventListController
-
- setOnSocialVibeEventsUpdatedListener(VibeEventListController.OnSocialVibeEventsUpdatedListener) - Static method in class com.example.vybe.VibeEventListController
-
- setOwner(String) - Method in class com.example.vybe.Models.VibeEvent
-
This sets the owner of a vibe event
- setReason(String) - Method in class com.example.vybe.AddEdit.AddEditVibeEventActivity
-
- setReason(String) - Method in class com.example.vybe.Models.VibeEvent
-
This sets the textual reasoning behind a VibeEvent
- SetReason() - Method in class com.example.vybe.VibeEventTest
-
- setRequestClickListener(ProfileAdapter.OnRequestClickListener) - Method in class com.example.vybe.ProfileAdapter
-
- setRequests(ArrayList<String>) - Method in class com.example.vybe.Models.User
-
This sets the list of users that have sent a request to follow this user
- SetRequestsList() - Method in class com.example.vybe.UserTest
-
- SetSocialSituation() - Method in class com.example.vybe.VibeEventTest
-
- setSocSit(SocSit) - Method in class com.example.vybe.AddEdit.AddEditVibeEventActivity
-
- setSocSit(String) - Method in class com.example.vybe.Models.VibeEvent
-
This sets the social situation of the VibeEvent
- setToCurrentLocation() - Method in class com.example.vybe.MapFragment
-
sets the camera to the user's current location
- setToLocation(LatLng) - Method in class com.example.vybe.MapFragment
-
sets the camera around a location
- setUserID(String) - Method in class com.example.vybe.Models.User
-
This sets the Firebase user ID for the user
- setUsername(String) - Method in class com.example.vybe.Models.User
-
This sets the username for the user
- SetUsername() - Method in class com.example.vybe.UserTest
-
- setVibe(Vibe) - Method in class com.example.vybe.AddEdit.AddEditVibeEventActivity
-
- setVibe(String) - Method in class com.example.vybe.Models.VibeEvent
-
This sets the vibe of a VibeEvent
- SetVibe() - Method in class com.example.vybe.VibeEventTest
-
- showMap() - Method in class com.example.vybe.MapFragment
-
- SignOut() - Method in class com.example.vybe.MyVibesActivityTest
-
- SignOut() - Method in class com.example.vybe.SocialActivityTest
-
- SocialActivity - Class in com.example.vybe
-
SocialActivity displays the screen for a user to view a list of their followers' vibe events
- SocialActivity() - Constructor for class com.example.vybe.SocialActivity
-
- SocialActivityTest - Class in com.example.vybe
-
This tests for a user being able to send a follow request to another user and accepting a
request
Tests for requirements of Mood Following and Sharing
- SocialActivityTest() - Constructor for class com.example.vybe.SocialActivityTest
-
- SocSit - Enum in com.example.vybe.Models
-
Enum representing a social situation and various functionality relating
to a user's selection for said social situation
- SocSitFieldFragment - Class in com.example.vybe.AddEdit
-
This fragment represents a custom spinner to allow a user to select
a social situation to add to a Vibe Event
- SocSitFieldFragment() - Constructor for class com.example.vybe.AddEdit.SocSitFieldFragment
-
- stringValues() - Static method in enum com.example.vybe.Models.SocSit
-
Get a String ArrayList of all the SocSit enums
- SwipeItemTouchHelper - Class in com.example.vybe
-
SwipeItemTouchHelper includes the Edit and Delete swipe functionality for a MyVibesAdapter item.
- SwipeItemTouchHelper(Context, int, int, MyVibesAdapter, String) - Constructor for class com.example.vybe.SwipeItemTouchHelper
-
- SwipeView - Class in com.example.vybe.Helpers
-
- SwipeView() - Constructor for class com.example.vybe.Helpers.SwipeView
-


Introduction to tmux
Here is a short divergence from server-side tools to one that helps your daily terminal experience. It is a terminal multiplexer called tmux.
What does a terminal multiplexer do? It allows your one terminal session to become many terminal sessions that look like this.
Powered by keyboard shortcuts
We're working in the terminal here. So everything will be activated by keyboard shortcuts.
Tmux does have one problem though. The default keyboard shortcuts SUCK. If you're familiar with screen
, it used a ctrl-A
based activation sequence. Tmux uses ctrl-b
which is fine, but not what I was used to.
Further more, the keys to create new panes and adjust them were not intuitive. So for usability I followed the guide in the Pragmatic Programmers tmux - Productive Mouse Free Development.
Their example .tmux.conf
file is available in the book's Source Code section.
The Common Shortcuts
Remember - these are the common shortcuts of a modified tmux configuration. But this configuration is loaded on to the classes VM, so I encourage you to be in tmux throughout the day's work.
Creating panes
ctrl-a + |
(that is a pipe) splits the pane horizontallyctrl-a + -
splits the pane vertically
ctrl-a + h
Move the cursor to the pane to the rightctrl-a + j
Move the cursor to the pane abovectrl-a + k
Move the cursor to the pane belowctrl-a + l
Move the cursor to the pane to the left
ctrl-a + H
Make the pane larger to the rightctrl-a + J
Make the pane larger abovectrl-a + K
Make the pane larger downctrl-a + L
Make the pane larger to the left
ctrl-a + }
Moves the current content rightctrl-a + {
Moves the current content left
Further Reading
Workout
We are going to complete the following actions
- tmux is already installed on our Deployments VM. So
vagrant up
in thedeployments
folder of this project's Git repo. - Start up
tmux
. You won't notice much difference at first. - Make the panes in the tmux session look like the picture above. Two panes on the left half, two panes on the right half. The left half split "unevenly".
- That's it!


Police arrest suspect in killing of student in Kaduna
by The Eagle OnlineKaduna State Police Command has confirmed the arrest of a suspect in the killing of a student, Hassan Abdullah of Government Secondary Rigachikun, in Igabi Local Government Area, Kaduna State.
The incident occurred in the school premises on Thursday at about 11 am when the suspect, Sani Umar, who is not a student of the school, accosted Abdullahi and allegedly stabbed him with a knife.
The command’s Public Relations Officer, DSP Yakubu Sabo, told the News Agency of Nigeria on Friday in Kaduna that the victim died on the way to hospital.
Sabo said Umar had been arrested and is undergoing investigation.
According to him, the matter was transferred to the Criminal Investigation Department to unravel the circumstances that led to the incident.
The police spokesman assured that the suspect would be prosecuted after the investigation.
Previous Post
NAF confirms helicopter crash in Enugu
Next Post
192 footballers for FIFA Beach Soccer World Cup


apache_beam.internal.gcp.json_value module¶
JSON conversion utility functions.
-
apache_beam.internal.gcp.json_value.
get_typed_value_descriptor
(obj)[source]¶ For internal use only; no backwards-compatibility guarantees.
Converts a basic type into a @type/value dictionary.
Parameters: obj – A basestring, bool, int, or float to be converted. Returns: A dictionary containing the keys @type
andvalue
with the value for the@type
of appropriate type.Raises: TypeError
– if the Python object has a type that is not supported.
-
apache_beam.internal.gcp.json_value.
to_json_value
(obj, with_type=False)[source]¶ For internal use only; no backwards-compatibility guarantees.
Converts Python objects into extra_types.JsonValue objects.
Parameters: - obj – Python object to be converted. Can be
None
. - with_type – If true then the basic types (
string
,int
,float
,bool
) will be wrapped in@type:value
dictionaries. Otherwise the straight value is encoded into aJsonValue
.
Returns: A
JsonValue
object usingJsonValue
,JsonArray
andJsonObject
types for the corresponding values, lists, or dictionaries.Raises: TypeError
– if the Python object contains a type that is not supported.The types supported are
str
,bool
,list
,tuple
,dict
, andNone
. The Dataflow API requires JsonValue(s) in many places, and it is quite convenient to be able to specify these hierarchical objects using Python syntax.- obj – Python object to be converted. Can be
-
apache_beam.internal.gcp.json_value.
from_json_value
(v)[source]¶ For internal use only; no backwards-compatibility guarantees.
Converts
extra_types.JsonValue
objects into Python objects.Parameters: v – JsonValue
object to be converted.Returns: A Python object structured as values, lists, and dictionaries corresponding to JsonValue
,JsonArray
andJsonObject
types.Raises: TypeError
– if theJsonValue
object contains a type that is not supported.The types supported are
str
,bool
,list
,dict
, andNone
. The Dataflow API returns JsonValue(s) in many places and it is quite convenient to be able to convert these hierarchical objects to much simpler Python objects.


?EX
HERB.
HORT.
REG.
HEW,
Pianta:
Cubcnscs
WrigMian¾
New
York
Botanical
Garden
Coll.
C.
WRIGHT,
in
Cuba
Orientali.
prope
lbDM2b4
I860.
1604264
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


Rectangle Event
This example adds a user-editable rectangle to the map.
When the user changes the bounds of the rectangle,
an info window pops up displaying the new bounds.
Rectangle moved.
New north-east corner: {{ne.lat()}}, {{ne.lng()}}
New south-west corner: {{sw.lat()}}, {{sw.lng()}}


Kevin van Zonneveld
on 2008-12-10 16:47:36
@ Paulo Ricardo F. Santos: Indeed, let's save us some wasted bytes there. changed.
Paulo Ricardo F. Santos
on 2008-12-04 15:03:54
@ Kevin: Hmm, now I see that there's no need to send null if charlist is undefined, rtrim() itself should avoid any problems. ;)


We came together as a diverse group of coding wannabes ... bringing a variety of talent from the music, business, education and service industries. All here for the same goal => to be full stack developers. After six months of full-time learning, lots of coffee, chocolate, donuts, deep breaths and happy hours ... we have arrived!
So watch out technology world. We bring experience in HTML, CSS, JavaScript, Ionic, MongoDB, Express, AngularJS, and Node.js. We support each other through teamwork and leadership and will bring those skills to help you succeed.
We are Cohort 11!


BC
Universal Blockchain Library.
Welcome to BC
In its simpliest form blockchain is a technology in which a data structure, called a block, contains a payload and a reference to the previous block - linking the blocks together in a chain. When a block is created it is broadcast to a network of computers which compute if the block meets a specific criteria such as; the timestamp must be in the past, the hash must fall within a range or match a pattern, the creator must be in an allowed list and must not be in a dissallowed list and their signature must verify, the previous hash and the entire chain must be valid and intact.
Modifying the contents of a block will change its hash value, and therefore any references to it must be modified and re-mined, which requires a lot of work but gives blockchains the properties of immutability and indelibility as older blocks are secured by the work which follows. For a more indepth description read Blockchain in 4 Steps.
The goal of BC is to define an open standard of common structures for processing, transporting, and storing encrypted data in a blockchain.
Get BC
Graphical User Interface - built with Fyne
- Android - APK
- iOS - coming soon!
- Linux - ARM (v5, v6, v7, v8) or Intel/AMD (32bit, 64bit)
- Mac OS X - Intel/AMD (64bit)
- Windows - Intel/AMD (32bit, 64bit)
Command Line Interface
- Linux - ARM (v5, v6, v7, v8) or Intel/AMD (32bit, 64bit)
- Mac OS X - Intel/AMD (64bit)
- Windows - Intel/AMD (32bit, 64bit)
BC is made available by Aletheia Ware under the Terms of Service and Privacy Policy.
BC is an open-source project released under the Apache 2.0 License and hosted on Github.


Methods awesome_list and diff_awesome_lists use Gihub API v3, which has limited (50 times per hour) number of request if not authenticated.
awesome_list()
Fetch and parse an Awesome List README.md file
diff_awesome_lists()
Compare two awesome lists
as_mardkown_url_list()
Transform string to a markdown url list
github_readme_url()
Get link to raw README.md file
github_repo_info()
Get basic information about Github repo
github_topics()
Get Github Topics for given username and repo
github_repo_basic_info()
Get basic info about Github repo
github_extract_user_repo()
Extract user name and repo name from a Github repo URL
is_github()
Check, if URL is a Github link