A fellow agile trainer recently told me that many of his customers are fleeing scrum to get away from the zealots. I sighed and nodded in agreement—all too familiar with those agile enthusiasts who repeat the "agile isn't a silver bullet" mantra—and then proceed to recommend it for everything.
Most would agree that not everything must be agile, but when you ask for examples of what the agile methodology isn't good for, you get blank stares. To figure out when you should and shouldn't use agile, you need to understand how products evolve in the market, determine where your product fits on that continuum, and reexamine agile in that light.
Products tend to evolve through four maturity phases. Each has unique characteristics and should be treated differently. They include:
Of these phases, the novelty and utility phases are the most interesting. What makes the novelty phase interesting is obvious—startups make fortunes in this area. However, the utility phase is also fascinating if you're the one providing the utility. Products in the utility phase tend to be high-volume, low-profit systems. Entire industries are built on them. Electricity started out as a novelty and today is a well-established utility with industries such as television, radio, and computing built on top of it. Cars are going through this phase: with the rise of Uber, Lyft, and self-driving cars, the market is facing the prospect of cars becoming utilities. Someone is going to make billions when they figure out how to exploit the new markets built on top of this change.
One characteristic of the novelty phase is the rapid change and uncertainty. This doesn't exist for the utility phase—customers will be reluctant to consume your utility if rapid change and uncertainty is another price they have to pay.
Once you understand where a product is in its evolution, the appropriate use of agile should become clear. Agile is nothing more than a method of reducing the cost of change and uncertainty.
This is reinforced by the fourth point in the Agile Manifesto: "responding to change over following a plan." In fact, while many have read the Agile Manifesto, few have read the twelve Agile Principles associated with it. Many of the principles reinforce the point that agile is about embracing change and lowering cost. If you think agile is all about standups, short iterations, retrospectives, story cards, and so on, then you've missed the point. You're not alone: many practitioners have been misguided because agile is often taught as a set of behaviors, with little reference to the goal beyond vague mentions of side-effects like improved time to market, customer satisfaction, and lower startup costs. It's like teaching people the moves of chess and not teaching them about checkmate. In this light, scrum, Extreme Programming (XP), Kanban, and other methodologies are tools you use after you've already decided on an agile approach.
So when should you choose agile? When you understand both agile and product evolution, the answer is simple: the newer the product and its market, the better fit with agile.
Agile works best in environments with the expectation of change, when you need to optimize for uncertainty. Products in the novelty phase definitely benefit. However, what if you pretty much do know everything up front? What if there is little change and uncertainty in your environment? One agile mantra is to "fail fast." Do you really want to fail fast if you're building a nuclear reactor? Of course not. Nuclear reactors are one attempt to implement the utility of electricity.
Agile isn't scrum, XP, or Kanban. Agile is merely a way of reducing the cost of uncertainty and change. If your project is close to the novelty phase of its market evolution, you'll have a lot of uncertainty and change. In this situation, agile (reducing the cost of change) is a great choice. But if your product falls into the stability and commodity phases, consider switching to a lean methodology (minimum viable feature set with rapid development, reducing the cost of waste). Finally, if your products are commodities that are perhaps evolving into utilities, consider techniques such as Six Sigma (reducing the cost of inconsistency). Why? Because they focus on reliability and reproducibility. Optimizing to lower the cost of change and uncertainty doesn't make sense when you already have little change or uncertainty.Many agile practitioners object at this point. They insist that you can simultaneously optimize for change, uncertainty, reliability, and reproducibility. For those people, here's a thought experiment. Imagine you've decided to create a tool to allow job applicants and companies to rate recruiters. Using crowdsourcing, you can start to identify the best recruiters for your needs. Put five excellent, independent agile teams on this project and you'll have five different products at the end. Reproducibility simply isn't something agile was designed for.
Don't get me wrong: I'm a huge fan of agile. I've happily embraced it for years, and I enjoy working in agile environments. But it's time we end the tyranny of agile and recognize that it's merely another tool in the toolbox. Agile is a great hammer, but not everything is a nail.
Note: I originally published this article on TechBecon.
Please leave a comment below!
If you'd like top-notch consulting or training, email me and let's discuss how I can help you. Read my hire me page to learn more about my background.
Copyright © 2018-2023 by Curtis “Ovid” Poe.


Class which represents the core of the OpenGL application.
More...
#include <GLApplication.hpp>
|
| | GLApplication (Camera *camera, GLWindowManager *manager, GLAudioManager *a_manager, UI *ui) |
| | Parameterized constructor. More...
|
| |
| | GLApplication (Camera *camera, GLWindowManager *manager, GLAudioManager *a_manager, UI *ui, std::string title, int width, int height, bool fullScreen) |
| | Detailed parameterized constructor. More...
|
| |
|
| GLApplication (GLApplication const &)=delete |
| | Copy constructor.
|
| |
|
GLApplication & | operator= (const GLApplication &)=delete |
| | Affectation/Copy assignment operator.
|
| |
|
virtual | ~GLApplication ()=default |
| | Default destructor.
|
| |
|
void | loadScene (const std::string sceneFilePath) |
| | Loads a new scene based on a json scene file path.
|
| |
|
void | initialize () |
| | Initialize the GLApplication.
|
| |
|
void | exit () |
| | Exits the GL application by changing the current state.
|
| |
|
void | run () |
| | Runs the GL application by changing the current state and starting the GL application main loop.
|
| |
|
void | pause () |
| | Pause the GL application by changing the current state.
|
| |
| State | getState () const |
| | Returns the current state of the GL application (ready, running, paused, exited). More...
|
| |
| void | setState (State newState) |
| | Setter for the state of the application. More...
|
| |
| GLWindowManager * | getWindowManager () const |
| | Returns the window manager (pointer) of the GL application. More...
|
| |
| UI * | getUI () const |
| | Returns the UI (pointer) of the GL application. More...
|
| |
| Camera * | getCamera () |
| | Returns the camera (pointer) of the GL application. More...
|
| |
| void | setScene (std::shared_ptr< Scene > scene) |
| | Sets the scene of the GL application. More...
|
| |
| Scene * | getScene () |
| | Returns the scene (pointer) of the GL application. More...
|
| |
| GLAudioManager * | getAudioManager () |
| | Returns the audio manager (pointer) of the application. More...
|
| |
|
|
virtual void | loop () |
| | The GL application loop (run until the user asks to quit).
|
| |
Class which represents the core of the OpenGL application.
◆ GLApplication() [1/2]
Parameterized constructor.
- Parameters
-
| camera | : The camera which will be used by the application. |
| manager | : The window manager which will be used by the application. |
| scene | : The scene which will be displayed by the application. |
◆ GLApplication() [2/2]
Detailed parameterized constructor.
- Parameters
-
| camera | : The camera which will be used by the application. |
| manager | : The window manager which will be used by the application. |
| scene | : The scene which will be displayed by the application. |
| title | : The GL application title (string). |
| width | : The GL application width value. |
| height | : The GL application height value. |
| fullScreen | : A boolean to determine if the GL application window is in full screen mode. |
◆ getAudioManager()
Returns the audio manager (pointer) of the application.
- Returns
- A pointer to the audio manager of the application.
◆ getCamera()
| Camera* engine::GLApplication::getCamera |
( |
| ) |
|
|
inline |
Returns the camera (pointer) of the GL application.
- Returns
- A pointer to the camera of the GL application.
◆ getInstance()
Returns the current GL application instance.
- Returns
- The instance of the current application.
◆ getScene()
| Scene* engine::GLApplication::getScene |
( |
| ) |
|
|
inline |
Returns the scene (pointer) of the GL application.
- Returns
- A pointer to the scene of the GL application.
◆ getState()
| State engine::GLApplication::getState |
( |
| ) |
const |
|
inline |
Returns the current state of the GL application (ready, running, paused, exited).
- Returns
- The current state of the GL application (ready, running, paused, exited).
◆ getUI()
| UI* engine::GLApplication::getUI |
( |
| ) |
const |
|
inline |
Returns the UI (pointer) of the GL application.
- Returns
- A pointer to the UI of the GL application.
◆ getWindowManager()
Returns the window manager (pointer) of the GL application.
- Returns
- A pointer to the window manager of the GL application.
◆ setScene()
| void engine::GLApplication::setScene |
( |
std::shared_ptr< Scene > |
scene | ) |
|
|
inline |
Sets the scene of the GL application.
- Parameters
-
| camera | : The scene to be set as the GL application scene. |
◆ setState()
| void engine::GLApplication::setState |
( |
State |
newState | ) |
|
Setter for the state of the application.
- Parameters
-
| newState | : The state that we want to set the application to |
◆ m_audioManager
A unique pointer to the audio manager of the application.
◆ m_camera
| std::shared_ptr<Camera> engine::GLApplication::m_camera |
|
protected |
A shared pointer to the camera used by the application and shared with the renderer.
◆ m_scene
| std::shared_ptr<Scene> engine::GLApplication::m_scene |
|
protected |
A unique pointer to the scene (collection of graphical objects to display).
◆ m_UI
| std::unique_ptr<UI> engine::GLApplication::m_UI |
|
protected |
A unique pointer to the UI of the application.
◆ m_windowManager
A unique pointer to the window manager of the application.
The documentation for this class was generated from the following file:
- /home/vincent/Documents/Github/contemplative-game/engine/include/engine/GLApplication.hpp


Group constructors are used to subset and superset existing groups. These constructors construct new groups from existing groups. These are local operations, and distinct groups may be defined on different processes; a process may also define a group that does not include itself. Consistent definitions are required when groups are used as arguments in communicator-building functions. MPI does not provide a mechanism to build a group from scratch, but only from other, previously defined groups. The base group, upon which all other groups are defined, is the group associated with the initial communicator MPI_COMM_WORLD (accessible through the function MPI_COMM_GROUP).
[] Rationale.
In what follows, there is no group duplication function analogous to
MPI_COMM_DUP, defined later in this chapter. There is no need for
a group duplicator. A group, once created, can have several references to it
by making copies of the handle. The following constructors address the need
for subsets and supersets of existing groups.
( End of rationale.)
[] Advice
to implementors.
Each group constructor behaves as if it returned a new group object.
When this new group is a copy of an existing group, then
one can avoid creating such new objects, using
a reference-count mechanism.
( End of advice to implementors.)
MPI_COMM_GROUP(comm, group)
[ IN comm] communicator (handle)
[ OUT group] group corresponding to comm (handle)
int MPI_Comm_group(MPI_Comm comm, MPI_Group *group)
MPI_COMM_GROUP(COMM, GROUP, IERROR)
INTEGER COMM, GROUP, IERROR
MPI_COMM_GROUP returns in group a handle to the group of comm.
MPI_GROUP_UNION(group1, group2, newgroup)
[ IN group1] first group (handle)
[ IN group2] second group (handle)
[ OUT newgroup] union group (handle)
int MPI_Group_union(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)
MPI_GROUP_UNION(GROUP1, GROUP2, NEWGROUP, IERROR)
INTEGER GROUP1, GROUP2, NEWGROUP, IERROR
MPI_GROUP_INTERSECTION(group1, group2, newgroup)
[ IN group1] first group (handle)
[ IN group2] second group (handle)
[ OUT newgroup] intersection group (handle)
int MPI_Group_intersection(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)
MPI_GROUP_INTERSECTION(GROUP1, GROUP2, NEWGROUP, IERROR)
INTEGER GROUP1, GROUP2, NEWGROUP, IERROR
MPI_GROUP_DIFFERENCE(group1, group2, newgroup)
[ IN group1] first group (handle)
[ IN group2] second group (handle)
[ OUT newgroup] difference group (handle)
int MPI_Group_difference(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)
MPI_GROUP_DIFFERENCE(GROUP1, GROUP2, NEWGROUP, IERROR)
INTEGER GROUP1, GROUP2, NEWGROUP, IERROR
The set-like operations are defined as follows:
The new group can be empty, that is, equal to MPI_GROUP_EMPTY.
MPI_GROUP_INCL(group, n, ranks, newgroup)
[ IN group] group (handle)
[ IN n] number of elements in array ranks (and size of newgroup) (integer)
[ IN ranks] ranks of processes in group to appear in newgroup (array of integers)
[ OUT newgroup] new group derived from above, in the order defined by ranks (handle)
int MPI_Group_incl(MPI_Group group, int n, int *ranks, MPI_Group *newgroup)
MPI_GROUP_INCL(GROUP, N, RANKS, NEWGROUP, IERROR)
INTEGER GROUP, N, RANKS(*), NEWGROUP, IERROR
The function MPI_GROUP_INCL creates a group newgroup that consists of the n processes in group with ranks rank[0], , rank[n-1]; the process with rank i in newgroup is the process with rank ranks[i] in group. Each of the n elements of ranks must be a valid rank in group and all elements must be distinct, or else the program is erroneous. If n~=~0, then newgroup is MPI_GROUP_EMPTY. This function can, for instance, be used to reorder the elements of a group. See also MPI_GROUP_COMPARE.
MPI_GROUP_EXCL(group, n, ranks, newgroup)
[ IN group] group (handle)
[ IN n] number of elements in array ranks (integer)
[ IN ranks] array of integer ranks in group not to appear in newgroup
[ OUT newgroup] new group derived from above, preserving the order defined by group (handle)
int MPI_Group_excl(MPI_Group group, int n, int *ranks, MPI_Group *newgroup)
MPI_GROUP_EXCL(GROUP, N, RANKS, NEWGROUP, IERROR)
INTEGER GROUP, N, RANKS(*), NEWGROUP, IERROR
The function MPI_GROUP_EXCL creates a group of processes newgroup that is obtained by deleting from group those processes with ranks ranks[0] , ranks[n-1]. The ordering of processes in newgroup is identical to the ordering in group. Each of the n elements of ranks must be a valid rank in group and all elements must be distinct; otherwise, the program is erroneous. If n~=~0, then newgroup is identical to group.
MPI_GROUP_RANGE_INCL(group, n, ranges, newgroup)
[ IN group] group (handle)
[ IN n] number of triplets in array ranges (integer)
[ IN ranges] an array of integer triplets, of the
form (first rank, last rank, stride) indicating ranks in
group of processes to be included in newgroup
[ OUT newgroup] new group derived from above, in the
order defined by ranges (handle)
int MPI_Group_range_incl(MPI_Group group, int n, int ranges[][3], MPI_Group *newgroup)
MPI_GROUP_RANGE_INCL(GROUP, N, RANGES, NEWGROUP, IERROR)
INTEGER GROUP, N, RANGES(3,*), NEWGROUP, IERROR
If ranges consist of the triplets
then newgroup consists of the sequence of processes in group with ranks
Each computed rank must be a valid rank in group and all computed ranks must be distinct, or else the program is erroneous. Note that we may have firsti > lasti, and stridei may be negative, but cannot be zero.
The functionality of this routine is specified to be equivalent to expanding the array of ranges to an array of the included ranks and passing the resulting array of ranks and other arguments to MPI_GROUP_INCL. A call to MPI_GROUP_INCL is equivalent to a call to MPI_GROUP_RANGE_INCL with each rank i in ranks replaced by the triplet (i,i,1) in the argument ranges.
MPI_GROUP_RANGE_EXCL(group, n, ranges, newgroup)
[ IN group] group (handle)
[ IN n] number of elements in array ranks (integer)
[ IN ranges] a one-dimensional
array of integer triplets of the
form (first rank, last rank, stride), indicating the ranks in
group of processes to be excluded
from the output group newgroup.
[ OUT newgroup] new group derived from above, preserving the
order in group (handle)
int MPI_Group_range_excl(MPI_Group group, int n, int ranges[][3], MPI_Group *newgroup)
MPI_GROUP_RANGE_EXCL(GROUP, N, RANGES, NEWGROUP, IERROR)
INTEGER GROUP, N, RANGES(3,*), NEWGROUP, IERROR
Each computed rank must be a valid rank in group and all computed ranks must be distinct, or else the program is erroneous.
The functionality of this routine is specified to be equivalent to expanding the array of ranges to an array of the excluded ranks and passing the resulting array of ranks and other arguments to MPI_GROUP_EXCL. A call to MPI_GROUP_EXCL is equivalent to a call to MPI_GROUP_RANGE_EXCL with each rank i in ranks replaced by the triplet (i,i,1) in the argument ranges.
[] Advice to users.
The range operations do not explicitly enumerate ranks, and therefore
are more scalable if implemented efficiently. Hence, we recommend MPI programmers
to use them whenenever possible, as high-quality implementations will
take advantage of this fact.
( End of advice to users.)
[] Advice
to implementors.
The range operations should be implemented, if possible, without
enumerating the group members,
in order to obtain better scalability (time and space).
( End of advice to implementors.)


Frequently asked questions
- When is the official release?
- April 4th. The extension mostly works right now, but we're still tweaking things.
- Who's behind Unpaywall?
- We're Impactstory, a nonprofit working to supercharge science by making it more open, reusable, and web-native. We're supported by grants from the National Science Foundation and the Alfred P. Sloan Foundation
- Why did you make it?
- Millions of researchers are currently uploading their own fulltext PDFs to preprint servers and institutional repositories worldwide, making them free for anyone to read. But we hated that there was no easy way to find them, especially not one integrated into our reading workflows. So we made one! Eventually, we hope tools like Unpaywall will nurture the transition to fully open access scholarly publishing, by closing the gap between readers and freely-available fulltext.
- Can Unpaywall tell me whether an article is "Green" or "Gold" OA?
- Indeed we can. Click the green Unpaywall extension icon in
your browser toolbar and choose "options." Once there, tick "Color-code tab for Green and Gold OA."
Thenceforth, you'll enjoy a veritable rainbow of OA colorfully goodness as you browse different articles:
-
Blue tab for articles available on the current page, but lacking license information (often that's because you're browsing from behind the paywall). (example)
- How often does Unpaywall find full text?
- About 25% of the time, although it varies a lot based on the age and field of the article. The reason it's not 100% is because unfortunately not all authors upload their fulltext PDFs online—although the number is growing every day. There's actually been a bunch of research on this recently, and we're planning a blog post breaking it down—stay tuned.
- How's this different from Sci-Hub?
- Like Unpaywall, Sci-Hub finds fulltext PDFs for paywalled articles. The main difference is where those PDFs come from: Unpaywall finds PDFs legally uploaded by the authors themselves, while Sci-Hub uses PDFs that are obtained by other means, including automated web scraping of publisher sites. Sci-Hub's method delivers more comprehensive results, but is not super legal. So while we're not against Sci-Hub, we think Unpaywall offers a more sustainable approach by working within copyright law and supporting the growing open access movement.
- The OA Button and Unpaywall are similar. But the OA Button is a more mature project (it's been working since 2013) with great features Unpaywall lacks. The OA Button works on articles without DOIs, and it helps you email a request for fulltext to the author if none is available. It'll also help you find open datasets. Unpaywall is more of a one-trick pony, and largely built because folks wanted a demo for the open oaDOI API. The great thing is, both are open-source and free, so you can install both, or fork 'em and make your own better extension!
- How do you find all these fulltext articles?
- We gather information from thousands of different legal, open-access repositories with the help many awesome open data sources, especially the DOAJ, Crossref, DataCite, and BASE. In turn, we make all this data open for reuse via the oaDOI API: a free, fast, and very scalable way to leverage our infrastructure to build your own projects.
- What's your privacy policy?
- The extension doesn't store or ask for any personal information from you, so when you use Unpaywall we don't know who you are. The extension doesn't track your browsing history, and it doesn't send any content from any page you visit to our servers, with one exception: when a page has a DOI (a short identifier used by scholarly articles), we send that DOI to our server (using an encrypted HTTPS connection) to find any free versions. We will log requests to our servers (which include the DOI and the IP address the request came from) in order to monitor and improve service. But those logs aren't connected to your identity. Furthermore, the extension won't send or use any kind of browser fingerprinting technology to identify your computer.
- I found a bug
- Sorry about that! Unfortunately this is pretty common, especially where publishers don't follow standard practices for article display (as they often do not). For instance, we don't work for articles missing DOIs. The good news is that it's still early days for this project and it's under very active development. When you find an error, drop us an email and we'll get it fixed for you.


WITNESS LIST Tax Reform & Public School Finance, Select Committee May 6, 1997-8:00A HB 4 On: Anderson, David (Tx Education Agency), Austin Barton, Karey (Comptroller), Austin Comer, Teresa (Comptroller), Austin Prestridge, Jerry (Tx Bus Assn, Inc.), Dale Reissig, Mike (Comptroller), Austin Registering, but not testifying: For: Campbell, Eileen M. (Marathon Oil Company), Houston Hyde, Richard (Pan Energy Corp.), Houston Robersson, Dan R. (ARCO Pipeline Company), Austin Robersson, Dan R. (ARCO/ARCO Permian), Austin Stout, Bob (Development Corp.), Woodlands Stout, Bob (Mitchell Energy), Woodlands Against: Allison, Richard M. (Panhandle Trailways), Amarillo Isaacs, Randy (Greyhound Lines, Inc.), Dallas Isaacs, Randy (Tx Bus Assn, Inc.), Dallas HJR 4 For: Clayton, Bill (Ntl Vehicle Leasing Asn), Austin On: Anderson, David (Tx Education Agency), Austin Cates, Phil (Ntl Vehicle Leasing Asn), Austin Thompson, Jerry (Ntl Vehicle Leasing Asn), Austin


{% extends "lepidoptera/hostplant_substrate.html" %} {% load i18n %} {% block title %}{{ subject }} - Host plants{% endblock %} {% block meta_description %}Information about {{ subject }} (host plant species){% endblock %} {% block h2_title %} {{ subject.html_str }} {% include "lepidoptera/_entity_type_badge.html" with taxon_type_name="Host plant species" %} {% endblock %} {% block additional_details %}
{% trans "From genus" %}: {{ subject.genus }}
Information in this section was automatically retrieved from Wikipedia/Wikidata and is not endorsed by the Flemish Entomological Society.
[[ wikipediaAbstract ]] Read more at Wikipedia
Vernacular names: [[ vernacularNamesAsStr ]]
IUCN conservation status:
More details about [[ speciesName ]] at: GBIF Wikipedia iNaturalist


Signup
Email...
sfit email address.
Name...
Password
Atleast 6 characters.
SIGNUP
Sign in
A verification e-mail will be sent to you


{% extends 'base.html' %}
{% block content %}
Click on a row to see detailed information about that intron. The splice sites are marked with vertical bars and the putative branch point sequence is in between the ellipses.
| Taxonomic Name | Gene Name | Sequence |
|---|---|---|
| {{ row.1 }} | {{ row.2 }} | {{ row.3|safe }} |


Minowani's Writings
on what the Buddha taught
Home >> Nine Successive Cessations
Aṅguttara Nikāya
Navakanipātapāḷi
Paṭhamapaṇṇāsakaṃ
Sattāvāsavaggo
Anupubbanirodhasuttaṃ
AN9.31
'These are nine, almsmen, successive cessations.
Which nine?
- First radiance, while engaged in, perception of lust has ceased.
- Second radiance, while engaged in, thoughts and thinking have ceased.
- Third radiance, while engaged in, delight has ceased.
- Forth radiance, while engaged in, breathing in and breathing out have ceased.
- Base for boundless-sky, while engaged in, perception of form has ceased.
- Base for boundless-cognition, while engaged in, perception of the base for boundless-sky has ceased.
- Base for possessionlessness, while engaged in, perception of the base for boundless-cognition has ceased.
- Base for neither-perception-nor-non-perception, while engaged in, perception of the base for possessionlessness has ceased.
- Cessation of perceptions and feelings, while engaged in, and perceptions and feelings have ceased.
These now, almsmen, are nine successive cessations.'


F = rdir(NAME) returns a cell array of file names matching NAME.
NAME may be a cell array of strings, and may contain cascading
pathnames separated by '/' (or '\') followed by a filename. Wildcards
(*) may be used both in the final filename, as in DIR, but also in the
intermediate pathnames. For example, F=rdir('mydir*/*.m') returns all
the M-Files contained in each directory that begins with 'mydir'.
File number indexing: Brackets [] may be used in the file or directory
names for convenient number indexing. If the input string is in the form
'PP[RANGE]SS', all files or directories matching 'PP0000nSS' will be
returned, where 'PP' and 'SS' are prefix and suffix substrings, and n
is an index lying in the range RANGE (paded with 5 zeros by default).
RANGE is a vector, that can be in the form [N1 N2 N3..], or START:END,
or START:STEP:END, or any other MATLAB valid syntax.
Use 'PP[RANGE,NZ]SS') to specify the number of zeros to pad the index
string (NZ=5 by default). For example, 'B[1:4,2].v*' gives
{'B01.v*','B02.v*','B03.v*','B04.v*'}.
Use 'PP[RANGE,NZ.NP]SS' to specify the number of digits NP after the
decimal point (NP=0 by default). For example, 'dt=[1:0.5:2,2.3]s' gives
{'dt=1.000s','dt=1.500s','dt=2.000s'}.
If the input string has more than one bracket pair [], rdir is
called recursively for each pair. For example, 'B[1:4,2]_[1 2,1]'
gives {'B01_1','B01_2','B02_1','B02_2','B03_1','B03_2','B04_1','B04_2'}
rdir file_name or rdir('file_name') displays the result.
F = rdir(NAME,'fileonly') only returns file names.
F = rdir(NAME,'dironly') only returns directory names, but does not
list their content.
F = rdir(NAME,'filedir') returns both files and directories (as DIR),
by default.
(Note that, when options 'dironly' or 'filedir' are used, the
fictitious directories '.' (current) and '..' (parent) are not
returned, contrarily to DIR).
Examples
F = rdir('set*/B[1:8,2].v*') returns the file names matching
'B01.v*' to 'B08.*' in each directory matching 'set*'.
F = rdir('set[1 2 3]*/*/B01.vec') returns the file name 'B01.vec',
if present, in all the subdirectories of each directory matching
'set1*', 'set2*', 'set3*'.
F = rdir('Myfiles_dt=[1:0.5:2,5.2]s.*') returns the file names
'Myfiles_dt=01.00s.*', 'Myfiles_dt=01.50s.*', 'Myfiles_dt=02.00s.*'
See Also
DIR, lsw, cdw.


# amdefine
A module that can be used to implement AMD’s define() in Node. This allows you to code to the AMD API and have the module work in node programs without requiring those other programs to use AMD.
## Usage
1) Update your package.json to indicate amdefine as a dependency:
Then run npm install to get amdefine into your project.
2) At the top of each module that uses define(), place this code:
`javascript
if (typeof define !== 'function') { var define = require('amdefine')(module) }
`
Only use these snippets when loading amdefine. If you preserve the basic structure, with the braces, it will be stripped out when using the [RequireJS optimizer](#optimizer).
You can add spaces, line breaks and even require amdefine with a local path, but keep the rest of the structure to get the stripping behavior.
As you may know, because if statements in JavaScript don’t have their own scope, the var declaration in the above snippet is made whether the if expression is truthy or not. If RequireJS is loaded then the declaration is superfluous because define is already already declared in the same scope in RequireJS. Fortunately JavaScript handles multiple var declarations of the same variable in the same scope gracefully.
If you want to deliver amdefine.js with your code rather than specifying it as a dependency with npm, then just download the latest release and refer to it using a relative path:
[Latest Version](https://github.com/jrburke/amdefine/raw/latest/amdefine.js)
### amdefine/intercept
Consider this very experimental.
Instead of pasting the piece of text for the amdefine setup of a define variable in each module you create or consume, you can use amdefine/intercept instead. It will automatically insert the above snippet in each .js file loaded by Node.
Warning: you should only use this if you are creating an application that is consuming AMD style defined()’d modules that are distributed via npm and want to run that code in Node.
For library code where you are not sure if it will be used by others in Node or in the browser, then explicitly depending on amdefine and placing the code snippet above is suggested path, instead of using amdefine/intercept. The intercept module affects all .js files loaded in the Node app, and it is inconsiderate to modify global state like that unless you are also controlling the top level app.
#### Why distribute AMD-style modules via npm?
npm has a lot of weaknesses for front-end use (installed layout is not great, should have better support for the `baseUrl + moduleID + ‘.js’ style of loading, single file JS installs), but some people want a JS package manager and are willing to live with those constraints. If that is you, but still want to author in AMD style modules to get dynamic require([]), better direct source usage and powerful loader plugin support in the browser, then this tool can help.
#### amdefine/intercept usage
Just require it in your top level app module (for example index.js, server.js):
`javascript
require('amdefine/intercept');
`
The module does not return a value, so no need to assign the result to a local variable.
Then just require() code as you normally would with Node’s require(). Any .js loaded after the intercept require will have the amdefine check injected in the .js source as it is loaded. It does not modify the source on disk, just prepends some content to the text of the module as it is loaded by Node.
#### How amdefine/intercept works
It overrides the Module._extensions[‘.js’] in Node to automatically prepend the amdefine snippet above. So, it will affect any .js file loaded by your app.
## define() usage
It is best if you use the anonymous forms of define() in your module:
```javascript define(function (require) {
var dependency = require(‘dependency’);
});¶
## RequireJS optimizer integration. <a name=”optimizer”></name>
Version 1.0.3 of the [RequireJS optimizer](http://requirejs.org/docs/optimization.html) will have support for stripping the if (typeof define !== ‘function’) check mentioned above, so you can include this snippet for code that runs in the browser, but avoid taking the cost of the if() statement once the code is optimized for deployment.
## Node 0.4 Support
If you want to support Node 0.4, then add require as the second parameter to amdefine:
`javascript
//Only if you want Node 0.4. If using 0.5 or later, use the above snippet.
if (typeof define !== 'function') { var define = require('amdefine')(module, require) }
`
## Limitations
### Synchronous vs Asynchronous
amdefine creates a define() function that is callable by your code. It will execute and trace dependencies and call the factory function synchronously, to keep the behavior in line with Node’s synchronous dependency tracing.
The exception: calling AMD’s callback-style require() from inside a factory function. The require callback is called on process.nextTick():
```javascript define(function (require) {
- require([‘a’], function(a) {
- //’a’ is loaded synchronously, but //this callback is called on process.nextTick().
});
});¶
### Loader Plugins
Loader plugins are supported as long as they call their load() callbacks synchronously. So ones that do network requests will not work. However plugins like [text](http://requirejs.org/docs/api.html#text) can load text files locally.
The plugin API’s load.fromText() is not supported in amdefine, so this means transpiler plugins like the [CoffeeScript loader plugin](https://github.com/jrburke/require-cs) will not work. This may be fixable, but it is a bit complex, and I do not have enough node-fu to figure it out yet. See the source for amdefine.js if you want to get an idea of the issues involved.
## Tests
To run the tests, cd to tests and run:
`
node all.js
node all-intercept.js
`
## License
New BSD and MIT. Check the LICENSE file for all the details.


Welcome! My name is David Mathews and this is my first ever, trial run at launching my own webpage. I am currently taking IT 161 at Seattle Central College and in my second quarter of classes. And although it’s still early in the process, it is my hope that one day I will be able to put some of my newly acquired knowledge to good use with a career in the IT industry.
Originally from Olympia, Washington, I moved to Seattle almost a year ago next month. In that time, I’ve had many ups and downs trying to get acclimated to a new environment, but ultimately its been a great experience and I’m happy with the decision I’ve made to come here!
Some of the things I’m looking forward to this summer are backpacking in the Olympics, camping, playing guitar with friends, and possibly taking a road trip to Illinois to see family!


that's jazz (a night with a russian big band)
does a work song speak in a new kind of coal here at the harmonic end of the train car some furrowed hymnal barely forgotten ; over the din of history and the bustling rim snaps off a quarter dig the spokes keep comin' on down to the river light blue in the clouds of barely-made-out faces blowin' big cheeks full of: I know where I'm goin' but I don't know how it's a funny cast from up here white arches old imperial eyebrows draped in suede familiar faces twitch along with the second hand tune up and Blok starts beating away at the snare grey eyes and all locked *jangling* -in *snap* pull the lever on the slot machine three seven *snap* ace *slide* back down the other side of the ladder slowly being pulled out beneath him a glum Gumilyov in a funny mustache holds his sax and snaps along the reeds can really spit a chewed up loop around a Charlie Parker question mark ; you know the resolution if you heard the turn around back to the furnace some aristocrat takes his seat near the tick-tack colonnade a Count Basie bouncing around in a stage coach "Night and Day" a young cat stretches out on his trombone slide way out to the back wall and beyond knocking the hat off the next door neighbor the baritone is a nephew of Miles and still not 'round the bend the saxes trade a pentatonic lick for a couple of bars and send some stamps from here to Chattanooga Nat King Cole whispers in Mayakovsky's ear and the bespectacled band leader – eyes wild – squeals "When I Fall In Love" runs off stage mid-trolley-ride to smell his bouquet of flowers tossed from the corner by the Count himself a young couple on the balcony nervously touch fingers count to five and continue not speaking she wears a ring on her right hand and a large bronze ride cymbal dangling from her left ear dragging her entire head all crooked hanging down to the floorboards quite a sight but by now everyone is checking their watches "The Very Thought Of You" "My Kind of Love" the commotion spills out all bubbly like off-brand Champagne bottled up onto the street and vanishes without a sound no one followed the ghost parade they all got lost in line for the coat room or down the chute of the third trombone we'll try to get them loose – *womp* || *thud* well folks: that's jazz


| Gallons Requested | Delivery Address | Delivery Date | Suggested Price | Total Amount Due | Actions |
|---|---|---|---|---|---|
| There are no quotes in the DB. Add a new quote below. | |||||
| {{quote.gallons_requested}} | {{quote.delivery_address}} | {{quote.delivery_date}} | {{quote.suggested_price}} | {{quote.total_amount}} | |


About
okay doing - will be fine
let's make web great again
ComiCo - opensource client and server for simple forum / ad board. It is designed for easy communication. The main features are fast work with a poor Internet connection (and without), simple and user-friendly interface, compliance with modern standards. It also tries to solve the "fat web" problem by limiting external dependencies and throwing out "unnecessary" functionality.
The plans to change the architecture from client-server to the federated for great justice more freedom of information and counter-censorship.
At the moment, the project is in the prototype stage, which implements only the basic functionality. You can help by sending an error report or your opinion on how this application can be.
Features
Server
- Simple json rest api, writen in golang
- Fast embedded, in-memory storage
- ACME autocert
- JWT for authentication
- All needed headers for security (CORS, CSP, HSTS, etc)
- Simple anti-bruteforce
- Static file server (no nginx, apache, etc needed)
- Images optimization
- Flexible data validation and access rights
- Indicates when the data type is last modified
- 5 minutes installation
➜ cat /proc/cpuinfo | grep name model username: Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz
➜ wrk -t2 -c500 -d60s http://localhost:9001/pub/mtimes Running 1m test @ http://localhost:9001/pub/mtimes 2 threads and 500 connections Thread Stats Avg Stdev Max +/- Stdev Latency 20.74ms 16.68ms 236.16ms 72.69% Req/Sec 13.19k 627.43 15.62k 73.58% 1575522 requests in 1.00m, 449.26MB read Requests/sec: 26231.85 Transfer/sec: 7.48MB
➜ wrk -t2 -c500 -d60s http://localhost:9001/pub/goods Running 1m test @ http://localhost:9001/pub/goods 2 threads and 500 connections Thread Stats Avg Stdev Max +/- Stdev Latency 61.79ms 65.96ms 643.73ms 86.48% Req/Sec 5.26k 705.24 7.88k 70.31% 628215 requests in 1.00m, 8.44GB read Requests/sec: 10454.44 Transfer/sec: 143.89MB
Client
- No external dependencies, 30 KB gzip js/css/html
- Caches all data in localStorage, works offline
- Images and assets in cacheStorage
- Reloading the page does not affect
- Clean and simple HTML and JS, maximum reuse
- Mobile-friendly, PageSpeed 100/100
- Accessibility ready
- Very simple user interface
- Commenting everything
- Subscribe and ignore by record type or username
- Image upload or use external
- Up your post once a day, it will expire in a month
- Custom key-value data table for goods and users
- Flexible search and filters
- Notification of new comments to your
- Intuitive page URL and title
- Full-featured keyboard navigation
top
Known bugs
Not all features are fully implemented :) For older browsers, there are no js-polyfills and css prefixes. Not a beautiful code style. Not perfect design and user interface. For large data and / or frequent changes, client may consume a large amount of resources.
top
Roadmap
ComiCo project
More parameters for data request: time range, selection by user, specific id. Log transaction (creating, editing, deleting articles) and push notification of the client about it via server sent event. The client stores data on the indexedDB and loads only the changed items from the server.
Bazaar project
Federated network. Servers can merge, displaying data from "friendly". Each federation has its own client, with its own design. Moderation and user management for each server is different.
Echo project
Decentralized network. Each client is also a server. The data exchange protocol contains information about access rights, data structure, source code for processing and display. Instances can subscribe (keep a copy and wait for change notifications), read, suggest changes for data types of other instances (if this is allowed for this type).
...
Profit!
top
Screenshots
top
Install
# yum install golang nodejs ImageMagick # useradd -d /var/www/comico -U comico # passwd comico # su -l comico $ mkdir ~/go/src $ cd ~/go/src $ git clone https://github.com/ddidwyll/comico.git $ cd comico $ cp other/config.json.example ./config.json $ vi ./config.json $ go get $ go build $ cd client $ npm i $ npm run build $ exit # cp /var/www/comico/go/src/comico/other/comico.service /etc/systemd/system/ # systemctl daemon-reload # systemctl start comico
If port in config.json == "80" || "443" comico use ACME cert
If no config.json presents check http://localhost:8080
For Ubuntu, Debian, Elementary, Mint use apt. Etc
After install login admin|admin and enjoy :)
top
Help
Today I need review and feedback.
top
Links
| Svelte | github.com/sveltejs/svelte |
| Echo | github.com/labstack/echo |
| BuntDB | github.com/tidwall/buntdb |
| Source | github.com/ddidwyll/comico |
| Habr (ru) | habr.com/ru/post/435908 |
| Author |<EMAIL_ADDRESS>|


age_pyramid.Rd
Plot an age pyramid using ggplot2.
age_pyramid( df, age_var = "Alder", gender_var = "Kon", man_level = "Man", age_breaks = c(0, 39, 44, 49, 54, 59, 64, 69, 74, 79, 84, Inf), age_labels = c("0-39", "40-44", "45-49", "50-54", "55-59", "60-64", "65-69", "70-74", "75-79", "80-84", "85+"), percent = TRUE, x_breaks = 5, x_breaks_end = x_breaks * 1e+05, title = "", subtitle = NULL, title_size = 14, subtitle_size = 10, title_margin = 1, y_lab = NULL, x_lab = NULL, background_color = "moccasin", panel_grid_color = "grey", panel_grid_size = 0.3, contour_line_size = 0.1, axis_size = 0.3, axis_text_angle = 0, text_size = 8, fill_colors = c("#377EB8", "#E41A1C"), legend_pos = c(0, 0), legend_labels = ggplot2::waiver(), label_breaks = ggplot2::waiver(), legend_row = NULL, legend_col = NULL )
| df | Data frame. |
|---|---|
| age_var | Name of age variable. |
| gender_var | Name of gender variable. |
| man_level | Name of man level, probably "Man" or "Män". |
| age_breaks | Each age observation in an interval. |
| age_labels | Label of the interval. |
| percent | If TRUE, x-axis is in percent form. Otherwise in count form. |
| x_breaks | Length between each break on x-axis. |
| x_breaks_end | Break end, default for 100000. Works for all count values below that. |
| title, subtitle | Plot title/subtitle, NULL for no title. |
| title_size, subtitle_size | Text size of title/subtitle in pt. |
| title_margin | Margin for title |
| x_lab, y_lab | X/Y-axis labels, use NULL for no label. |
| background_color | Color of the panel background. |
| panel_grid_color | Color of the panel grid lines. |
| panel_grid_size | Size of the panel grid lines in plot and contour lines around bars, useful to change if large dpi! |
| contour_line_size | Passed to argument "size" to |
| axis_size | Size of the axis lines. |
| axis_text_angle | Angle of the tick texts, 45 is recommended for many x levels. |
| text_size | Size of the text in pt. |
| fill_colors | Colors of the genders. |
| legend_pos | Position of the legend in plot, if c(1,1), c(1,0) etc, legend inside plot. |
| legend_labels | Label for each legend key. |
| label_breaks | Order of the legend keys. |
| legend_row, legend_col | How many rows/columns for the legends. |
ggplot object containing age pyramid plot.
# Creating data df <- data.frame(age = rpois(100000, 65), gender = sample(c('Woman', 'Woman', 'Man'), 100000, replace = TRUE)) # Age pyramid age_pyramid(df, age_var = 'age', gender_var = 'gender', man_level = 'Man', title = "This is an age pyramid")# Age pyramid with percent = FALSE age_pyramid(df, age_var = 'age', gender_var = 'gender', man_level = 'Man', percent = FALSE, x_breaks = 5000, title = "This is an age pyramid")


“Ruby on Rails is a breakthrough in lowering the barriers of entry
to programming. Powerful web applications that formerly might have
taken weeks or months to develop can be produced in a matter of
days.”
-Tim O'Reilly, Founder of O'Reilly Media
“It is impossible not to notice Ruby on Rails. It has had a huge
effect both in and outside the Ruby community... Rails has become a
standard to which even well-established tools are comparing themselves
to.”
-Martin Fowler, Author of Refactoring, PoEAA, XP Explained
“...we need to focus on humans, on how humans care about doing programming.”
-Yukihiro Matsumoto, Creator of the Ruby Language


tentacle
`Prev `__
T
`Next `__
--------------
**tentacle**: n.
A covert `*pseudo* <../P/pseudo.html>`__, sense 1. An artificial
identity created in cyberspace for nefarious and deceptive purposes. The
implication is that a single person may have multiple tentacles. This
term was originally floated in some paranoid ravings on the cypherpunks
list (see `*cypherpunk* <../C/cypherpunk.html>`__), and adopted in a
spirit of irony by other, saner members. It has since shown up, used
seriously, in the documentation for some remailer software, and is now
(1994) widely recognized on the net. Compare
`*astroturfing* <../A/astroturfing.html>`__, `*sock
puppet* <../S/sock-puppet.html>`__.
--------------
+--------------------------+----------------------------+---------------------------------------------+
| `Prev `__ | `Up <../T.html>`__ | `Next `__ |
+--------------------------+----------------------------+---------------------------------------------+
| tense | `Home <../index.html>`__ | tenured graduate student |
+--------------------------+----------------------------+---------------------------------------------+


It basically works like this: The end user, me, you, computer, etc. sends a request via http through the internet to a server, that server then grants the request and sends it back through the internet to me.
More complex HTML will feature attributes like links, and images:
-
We also learn the difference between inline and block elements.
Inline does not create a new block of content, such as the span tag, or the break tag, where as Block will create a new block of content, such as the paragraph tag, or the div tag. Block elements form an "invisible box" around the content inside of them.
Finally, we also learn computers are "stupid". Not in the sense that they cannot complete simple tasks, but in that the smallest mistake can cause the biggest of issues. However, if we learn how to speak/code correctly we can make computers do amazing things


{% extends "base.html" %} {% block title %}
Medieval catalogues > UNIVERSITY AND COLLEGE LIBRARIES OF OXFORD > Merton College > Gift of books by William Reed, 22 October 1374
{% endif %}140 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 %}


Description
-
Compatible: iOS 8.4, 9, 10, 11.
-
Works with iPhones, iPads and iPods in portrait and landscape mode.
Sonus is a beautiful looking replacement for the annoying stock volume hud. It is completely customizable to your needs. You can use it as a unobtrusive volume hud in your status bar or like a Android like volume slider with overlay.
Sonus has a lot of options to configure. You can adjust the color and size of your slider and your overlay, add a gradient to it, or use it's blur background style, change the position and paddings, animation durations and styles, automatically hide the statusbar when the hud is shown, enable tap to dismiss and interaction with the slider, futher you can you can enable indicator icons that show you which volume is being adjusted - and change the color of these icons too.
It does not interfere with any custom volume huds such as YouTube, Instagram or Snapchat.
Configure options from Settings.
Changelog
-
Changes in version 3.0.2-2
- Compatible with iOS 8.4 and up.
- View Previous Versions


@Version(value="1.0.0")
See: Description
| Class | Description |
|---|---|
| Acknowledged | |
| Acknowledged.Factory | |
| Action |
$Id$
Created: [Apr 6, 2004]
Defines an ACTION iCalendar component property.
|
| Action.Factory | |
| Attach |
$Id$
Created: [Apr 6, 2004]
Defines an ATTACH iCalendar component property.
|
| Attach.Factory | |
| Attendee |
$Id$
Created: [Apr 6, 2004]
Defines an ATTENDEE iCalendar component property.
|
| Attendee.Factory | |
| BusyType |
$Id$
Created: [Apr 6, 2004]
Defines a BUSYTYPE iCalendar component property.
|
| BusyType.Factory | |
| CalScale |
$Id$
Created: [Apr 6, 2004]
Defines a CALSCALE iCalendar property.
|
| CalScale.Factory | |
| Categories |
$Id$
Created: [Apr 6, 2004]
Defines a CATEGORIES iCalendar component property.
|
| Categories.Factory | |
| Clazz |
$Id$
Created: [Apr 6, 2004]
Defines a CLASS iCalendar property.
|
| Clazz.Factory | |
| Comment |
$Id$
Created: [Apr 6, 2004]
Defines a COMMENT iCalendar component property.
|
| Comment.Factory | |
| Completed |
$Id$
Created: [Apr 6, 2004]
Defines a COMPLETED iCalendar component property.
|
| Completed.Factory | |
| Contact |
$Id$
Created: [Apr 6, 2004]
Defines a CONTACT iCalendar component property.
|
| Contact.Factory | |
| Country |
$Id$
Created: [Apr 6, 2004]
Defines a REGION iCalendar component property.
|
| Country.Factory | |
| Created |
$Id$
Created: [Apr 6, 2004]
Defines a CREATED iCalendar component property.
|
| Created.Factory | |
| DateListProperty |
$Id$
Created on 11/08/2005
Base class for properties with a list of dates as a value.
|
| DateProperty |
$Id$
Created on 9/07/2005
Base class for properties with a DATE or DATE-TIME value.
|
| Description |
$Id$
Created: [Apr 6, 2004]
Defines a DESCRIPTION iCalendar component property.
|
| Description.Factory | |
| DtEnd |
$Id$
Created: [Apr 6, 2004]
Defines a DTEND iCalendar component property.
|
| DtEnd.Factory | |
| DtStamp |
$Id$
Created: [Apr 6, 2004]
Defines a DTSTAMP iCalendar component property.
|
| DtStamp.Factory | |
| DtStart |
$Id$
Created: [Apr 6, 2004]
Defines a DTSTART iCalendar component property.
|
| DtStart.Factory | |
| Due |
$Id$
Created: [Apr 6, 2004]
Defines a DUE iCalendar component property.
|
| Due.Factory | |
| Duration |
$Id$
Created: [Apr 6, 2004]
Defines a DURATION iCalendar component property.
|
| Duration.Factory | |
| ExDate |
$Id$
Created: [Apr 6, 2004]
Defines a EXDATE iCalendar component property.
|
| ExDate.Factory | |
| ExRule |
$Id$
Created: [Apr 6, 2004]
Defines a EXRULE iCalendar component property.
|
| ExRule.Factory | |
| ExtendedAddress |
$Id$
Created: [Apr 6, 2004]
Defines a EXTENDED_ADDRESS iCalendar component property.
|
| ExtendedAddress.Factory | |
| FreeBusy |
$Id$
Created: [Apr 14, 2004]
Defines a FREEBUSY iCalendar component property.
|
| FreeBusy.Factory | |
| Geo |
$Id$
Created: [Apr 6, 2004]
Defines a GEO iCalendar component property.
|
| Geo.Factory | |
| LastModified |
$Id$
Created: [Apr 6, 2004]
Defines a LAST-MODIFIED iCalendar component property.
|
| LastModified.Factory | |
| Locality |
$Id$
Created: [Apr 6, 2004]
Defines a LOCALITY iCalendar component property.
|
| Locality.Factory | |
| Location |
$Id$
Created: [Apr 6, 2004]
Defines a LOCATION iCalendar component property.
|
| Location.Factory | |
| LocationType |
$Id$
Created: [Apr 6, 2004]
Defines a LOCATION_TYPE iCalendar component property.
|
| LocationType.Factory | |
| Method |
$Id$
Created: [Apr 6, 2004]
Defines a METHOD iCalendar property.
|
| Method.Factory | |
| Name |
$Id$
Created: [Apr 6, 2004]
Defines a NAME iCalendar component property.
|
| Name.Factory | |
| Organizer |
$Id$
Created: [Apr 6, 2004]
Defines an ORGANIZER iCalendar component property.
|
| Organizer.Factory | |
| PercentComplete |
$Id$
Created: [Apr 6, 2004]
Defines a PERCENT-COMPLETE iCalendar component property.
|
| PercentComplete.Factory | |
| Postalcode |
$Id$
Created: [Apr 6, 2004]
Defines a POSTALCODE iCalendar component property.
|
| Postalcode.Factory | |
| Priority |
$Id$
Created: [Apr 6, 2004]
Defines a PRIORITY iCalendar component property.
|
| Priority.Factory | |
| ProdId |
$Id$
Created: [Apr 6, 2004]
Defines a PRODID iCalendar property.
|
| ProdId.Factory | |
| RDate |
$Id$
Created: [Apr 6, 2004]
Defines an RDATE iCalendar component property.
|
| RDate.Factory | |
| RecurrenceId |
$Id$
Created: [Apr 6, 2004]
Defines a RECURRENCE-ID iCalendar component property.
|
| RecurrenceId.Factory | |
| Region |
$Id$
Created: [Apr 6, 2004]
Defines a REGION iCalendar component property.
|
| Region.Factory | |
| RelatedTo |
$Id$
Created: [Apr 6, 2004]
Defines a RELATED-TO iCalendar component property.
|
| RelatedTo.Factory | |
| Repeat |
$Id$
Created: [Apr 6, 2004]
Defines a REPEAT iCalendar component property.
|
| Repeat.Factory | |
| RequestStatus |
$Id$
Created: [Apr 6, 2004]
Defines a REQUEST-STATUS iCalendar component property.
|
| RequestStatus.Factory | |
| Resources |
$Id$
Created: [Apr 6, 2004]
Defines a RESOURCES iCalendar component property.
|
| Resources.Factory | |
| RRule |
$Id$
Created: [Apr 6, 2004]
Defines an RRULE iCalendar component property.
|
| RRule.Factory | |
| Sequence |
$Id$
Created: [Apr 6, 2004]
Defines a SEQUENCE iCalendar component property.
|
| Sequence.Factory | |
| Status |
$Id$
Created: [Apr 6, 2004]
Defines a STATUS iCalendar component property.
|
| Status.Factory | |
| StreetAddress |
$Id$
Created: [Apr 6, 2004]
Defines a STREET_ADDRESS iCalendar component property.
|
| StreetAddress.Factory | |
| Summary |
$Id$
Created: [Apr 6, 2004]
Defines a SUMMARY iCalendar component property.
|
| Summary.Factory | |
| Tel |
$Id$
Created: [Apr 6, 2004]
Defines a TEL iCalendar component property.
|
| Tel.Factory | |
| Transp |
$Id$
Created: [Apr 6, 2004]
Defines a TRANSP iCalendar component property.
|
| Transp.Factory | |
| Trigger |
$Id$
Created: [Apr 6, 2004]
Defines a TRIGGER iCalendar component property.
|
| Trigger.Factory | |
| TzId |
$Id$
Created: [Apr 6, 2004]
Defines a TZID iCalendar component property.
|
| TzId.Factory | |
| TzName |
$Id$
Created: [Apr 6, 2004]
Defines a TZNAME iCalendar component property.
|
| TzName.Factory | |
| TzOffsetFrom |
$Id$
Created: [Apr 6, 2004]
Defines a TZOFFSETFROM iCalendar component property.
|
| TzOffsetFrom.Factory | |
| TzOffsetTo |
$Id$
Created: [Apr 6, 2004]
Defines a TZOFFSETTO iCalendar component property.
|
| TzOffsetTo.Factory | |
| TzUrl |
$Id$
Created: [Apr 6, 2004]
Defines a TZURL iCalendar component property.
|
| TzUrl.Factory | |
| Uid |
$Id$
Created: [Apr 6, 2004]
Defines a UID iCalendar component property.
|
| Uid.Factory | |
| Url |
$Id$
Created: [Apr 6, 2004]
Defines a URL iCalendar component property.
|
| Url.Factory | |
| UtcProperty |
$Id$
Created on 8/08/2005
Superclass for all properties with date-time values that must be specified in UTC time.
|
| Version |
$Id$
Created: [Apr 6, 2004]
Defines a VERSION iCalendar property.
|
| Version.Factory | |
| XProperty |
$Id$
Created: [15/06/2004]
Defines an extension property.
|
| XProperty.Factory |


--- title: Coq in WSL (OPAM) --- Quite a few of my students were having trouble with using Coq inside Windows, so here are detailed instructions on how to do that with WSL 2 and opam:
wsl --install
sudo apt update
sudo apt upgrade
opam init
sudo apt install make gcc unzip bubblewrap
sudo apt-get update
opam init
.profile
configuration file. I'd suggest doing that
as it allows you to avoid having to type eval $$(opam env)
every time you open a shell.eval $$(opam env)
opam pin add coq 8.17.1
coqc -v
sudo apt install emacs
.emacs
file and paste
the (require ... initialize)
stub from the website, then
restart emacs and execute the package-refresh-contents
and
package-install
commands. (M-x
means
pressing the Alt key together with 'x', similarly C-
means Ctrl).bashrc
file by adding the following line. This tells ubuntu to use the xserver you just launched
to display graphical applications.export DISPLAY=$$(cat /etc/resolv.conf | grep nameserver | awk '{print $$2}'):0
.bashrc
file by adding the following line. export DISPLAY=:=0
.bashrc
changes to take effect). Run emacs in the background by adding "&" at the end:emacs file &
.emacs
:
;;; Always newline in end of file
(setq require-final-newline nil)
;;; Proper Indentations...
(setq standard-indent 2)
(setq-default indent-tabs-mode nil)
;;; Remove Backup File Creation
(setq make-backup-files nil)
;;; Set background/foreground to black/white
(set-background-color "black")
(set-foreground-color "white")
;;; Aligning with C-= within a region
(global-set-key (kbd "C-=") 'align-regexp)
;;; CUA mode for rectangles (This allows you to operate on multiple lines at the same time with C-RET)
(cua-mode)
(setq cua-auto-tabify-rectangles nil)
(setq cua-enable-cua-keys nil)
;;; ido completion stuff (File-system completion)
(require 'ido)
(setq ido-enable-flex-matching t)
(setq ido-everywhere t)
(setq ido-file-extensions-order '(".v" ".tex" ".org" ".txt" ".py" ".emacs" ".xml" ".el" ".ini" ".cfg" ".cnf"))
(setq ido-ignore-extensions t)
(setq ido-auto-merge-delay-time 1000)
(ido-mode 1)
;;; Proof General QoL (Disables startup screen and ensures the Coq buffers are on the "right")
(setq proof-splash-enable nil)
(setq proof-three-window-mode-policy 'hybrid)


{% include "stweb/views/devices/categories/display_categories.html" %}
{% include "stweb/attributes/display_boxes.html" %}
{% include "stweb/views/devices/display_devices_standard.html" %}
{% include "stweb/views/devices/display_device_associations.html" %}
{% include "stweb/attributes/display_attributes.html" %}
{% include "stweb/attributes/display_boxes.html" %}
{% include "stweb/templates/display_templates.html" %}
{% include "stweb/configs/display.html" %}
{% include "stweb/permissions/display_permissions.html" %}


ATM in Asia
First, you need cash… Paying with a credit card is not a valid option in Asia. Second,
you cannot transport all of the money you need at all time. Therefore, you will need to
withdraw money pretty often. No, it does always work. It’s always safe and easier to use
a credit card to withdraw money from an ATM.
1)
Now not all atm will accept your out of the country credit card, you need to find
on the ATM the cirrus logo if you are a mastercard owner. (After a few failed attempt we
called our bank and they told us to watch for that logo, we didn’t had problem
withdrawing after that)
2)
If the internet is not good in that area you may need to try a few time before
the transaction is accepted
3)
If your first attempt is refused, try to connect onto your bank account online
(for us, when we did that, our next attempt usually worked)
4)
Try more than once… some time it took us 3 try back to back with the same ATM
before it worked.
5)
When we leave for a new city, make sure to have enough cash for the first days
just in case ATMs are uncooperative.
Warning: Some countries don’t refill ATM until mondays…. So make sure you have
enough money for the weekend in case the ATM runs out. Yes it happens pretty often,
specially in remote area…


--- layout: default ---
{{ project.desc }}
I really like programming and it's proved to be very useful in my work and daily life. I keep several of my projects in my github page, and feedback is always welcome!


A documentation system for mortals. Use with any language.
Generates a static, searchable documentation website from JavaDoc style comments found within source code. It is similar to YUIdoc, but doesn't infer anything from the source code or directory stucture.
Yes, I eat my own dog food -- this site you're currently looking at was generated by Documon.
Example + Documentation: http://www.documon.net
Install via NPM:
npm install documon
Or ↆ download Documon directly and use it "stand alone" (via Node).
Within Node project (javascript):
var docs = require("documon"); docs({ src : "path/to/src" });
From CLI:
node /path/to/documon/index.js "/path/to/source" "/path/to/destination"
Comment tags are soley responsible for organizing the resulting heirarchy (inheritence and membership).
As a result, comment blocks must be robust and include all pertinent details required to generate documentation.
Documon is written in Javascript and runs on the Node platform, which runs on Linux, Mac, and Windows systems. Documon can be installed using NPM, or ↆ downloaded directly.
Templating is handled through vanilla javascript modules, leveraging ES6's Template Literals. This provides the highest level of flexability with zero-dependancies, unlimited logic constraints, and nothing new to learn.
Of course, since templates are JS, you can always roll some other templating system, such as Twig, or Handlebars, into your custom template.
Documon's only dependancy is Node, no additional modules are needed.
Copyright © Mike Gieson.
Released under the MIT license.
.


Ryan Lehman, 18
Princeton High School
Description:
High School Senior looking for front end roles.
Skills Needed
iOS app
Food & Bev
6 months
Greater NY Area
✕
✓


Our criteria included recommendations taken from The Cornucopia Institute Scorecards (soy and carrageenan). As well, we looked at the operation of the business, relationship to suppliers and producers, and the taste and quality of the actual food items themselves.


Arrays and Hashes
April 25, 2015
This week, I've been learning a lot about the programming language Ruby. As part of this, I've learned the difference between arrays and hashes. Follow along to see what's the deal!
In order to use Ruby to it's full potential, you need to invoke the concepts of arrays or hashes. An array is simply a set of objects. We put an array in brackets, separated by commas. They look like this
array1 = [object1, object2, object3]
We can call any object out of an array by simply calling the method array.[position]
where position is the position of the object (starting at zero). For example, if we wanted to call the second object, we would use the code array.[1]
which would return object2
These arrays can be manipulated and transformed, but the idea is that an array is a set of ordered objects. Objects can even be arrays themselves! They can also be empty arrays such as array = []
A hash is similar to an array, but a hash consists of ordered pairs, rather than just ordered objects. Each pair in a hash consists of a key and a value. We can use them like a set of coordinates, and (like an array) they are in a set order, that can be rearranged at will. Here is an example of a hash:
hash1 = { "a" => 1, "b" => 2, "c" => 3}
With a hash like this, we can call on one of the keys, and result in a value, such as if we call hash1["a"]
we will return 1
and so on.
A hash is similar to an array, but instead of calling on an integer to determine what the value of an object in the array is, we call on a specific value to determine the value of an object in the hash.
So far, I've largely been using arrays in my programs that I've been producing, but I'm excited to begin using hashes as well to solve new problems!


MENU
Welcome Back, {{routesCtrl.username}}!
Grade Range: {{routesCtrl.minGradeMenu}} to {{routesCtrl.maxGradeMenu}}
Home
Add Some Gear
Update Difficulty
Log Out


| Collector Name | City | Village | Line | Registered Date | Status | Actions |
|---|---|---|---|---|---|---|
| Vishnu Serghei | Hyderabad | Ameerpet | Road 10 | 2019/01/01 | Active | |
| Vishnu Serghei | Hyderabad | Ameerpet | Road 10 | 2019/01/01 | Active | |
| Vishnu Serghei | Hyderabad | Ameerpet | Road 10 | 2019/01/01 | Active | |
| Vishnu Serghei | Hyderabad | Ameerpet | Road 10 | 2019/01/01 | Active |


Example Graph #1
Something something something
{% load static %}
Allow Aspiring Data Enthusiasts to see data much easier.
Something something something about why we decided to make this idea.
Something something something about how you will visualize your data after uploading a dataset on our site.
Its pretty neat
Something something something
Something something something
Something something something
Something something something


Many projects within MICS are sharing similar requirements in respect to hard- and software platforms. In order to accelerate the initial startup on hands-on experimentation and to facilitate the sharing of resources and know-how within MICS we propose a common base infrastructure that will be made available to MICS partners and supported by MICS staff.
The Sensor Network Platform Kit (SNPK) is made up of components that are considered to be the state-of-the-art and known-to-work. The unique approach combines both technology from industry as well as know-how and reliable prototypes from researchers to form a baseline opensource solution. The SNPK offers a service to researchers containing a shopping list for hardware components, downloadable software, technical support for affiliated members as well as an open community base for discussion and exchange
The simplest way to add this energy saving radio stack to your application, is by adding following lines to your Makefile (example can be found in the ./app/MultihopOscilloscope directory):
CFLAGS += -DLOW_POWER_LISTENING -DLPL_DEFAULT_SLEEP_INTERVAL=250 CC2420DIR=../../tos/chips/cc2420 CFLAGS += -I$(CC2420DIR) -I$(CC2420DIR)/alarm -I$(CC2420DIR)/control -I$(CC2420DIR)/csma -I$(CC2420DIR)/interfaces -I$(CC2420DIR)/link CFLAGS += -I$(CC2420DIR)/lowpan -I$(CC2420DIR)/lpl -I$(CC2420DIR)/packet -I$(CC2420DIR)/receive -I$(CC2420DIR)/spi -I$(CC2420DIR)/transmit CFLAGS += -I$(CC2420DIR)/unique -I$(CC2420DIR)/sync CFLAGS += -DENABLE_SPI0_DMA
when LPL_DEFAULT_SLEEP_INTERVAL is not set, the parameters of the radio stack can be set with the LowPowerListening interface. This radio stack offers the ability, to save power by sending subsequent packets to a neighbour, after the first packets was successfully transmitted. For this purpose it is necessary to set the "more"-flag in the first packet, in order to keep the receiver node awake for some longer time. This flag can be set or cleared with the NeighbourSyncFlowPacket interface. This interface provides following function:
interface NeighbourSyncFlowPacket { command void setMore(message_t* msg); command void clearMore(message_t* msg); }
| Parameter | Value |
| Sleep duration | 250 ms |
| Data generation rate | 1 sample per 10 seconds |
| Packet generation rate | 1 packet per 40 seconds |
| TX Power | 20 |
The Harvester is a data gathering application that uses a slightly modified version of the Collection Tree Protocol (CTP). There exist also a simple tree visualization, written in java.
Information about the DSN-Monitor can be found on the BTNode webpage: http://www.btnode.ethz.ch/Projects/DSNMonitor
back


To use this application, you need to do the following:
Enable JavaScript in your browser.
Find out how to enable JavaScript.
Enable Cookies in your browser.
Find out how to enable Cookies.
Upgrade to a modern browser.
If you have another browser try signing in with it, or find out how to upgrade your browser.
What is considered a modern browser?
If you are using a work machine and are unable to upgrade browsers, please contact your local IT Support for assistance.
For further assistance, please contact IT Services Client Support at sdhelp@it.ucla.edu.


A class representing points in a mesh.
More...
#include <hdf5_points_data.h>
A class representing points in a mesh.
◆ Clear()
| void Kratos::HDF5::Internals::PointsData::Clear |
( |
| ) |
|
◆ CreateNodes()
◆ KRATOS_CLASS_POINTER_DEFINITION()
| Kratos::HDF5::Internals::PointsData::KRATOS_CLASS_POINTER_DEFINITION |
( |
PointsData |
| ) |
|
◆ ReadData()
| void Kratos::HDF5::Internals::PointsData::ReadData |
( |
File & |
rFile, |
|
|
const std::string & |
rPath, |
|
|
unsigned |
StartIndex, |
|
|
unsigned |
BlockSize |
|
) |
| |
◆ SetData()
◆ size()
| unsigned Kratos::HDF5::Internals::PointsData::size |
( |
| ) |
const |
|
inline |
◆ WriteData()
| void Kratos::HDF5::Internals::PointsData::WriteData |
( |
File & |
rFile, |
|
|
const std::string & |
rPath, |
|
|
WriteInfo & |
rInfo |
|
) |
| |
The documentation for this class was generated from the following files:
- /home/runner/work/Documentation/Documentation/master/applications/HDF5Application/custom_io/hdf5_points_data.h
- /home/runner/work/Documentation/Documentation/master/applications/HDF5Application/custom_io/hdf5_points_data.cpp


Register a new STS client
RFC 7591 OAuth 2.0 Dynamic Client Registration Protocol.
This is a manual version of the Security Token Service automated client registration API.
RFC 7591 OAuth 2.0 Dynamic Client Registration Protocol.
This is a manual version of the Security Token Service automated client registration API.


Logo
Home
Teams
Schedule
textsms
Search Nearby Teams
Select a radius
1 mile
5 miles
10 miles
>10 miles
Search Radius
Team Name
Location
Stats
Team A
Troy NY
10W:5L
Team B
Albany NY
6W:6L
Team C
Somewhereville NY
8W:3L


Created by Hoda Tahami From Oregon State University,2018
The accurate prediction of the path and intensity of a hurricane is crucial for planning the evacuation of the populated areas and for assessing its impact. Since the evolution of severe weather phenomena is associated with notable transient changes in water contents in the low atmosphere, the accurate monitoring of atmosphere water vapor or perceptible water vapor (PWV) spatial-temporal variations is critical to forecast and localize severe storms. On the other hand, the dynamic perturbations in the atmosphere water content can be measured from the tropospheric delay of GNSS signal propagated from a satellite to a receiver on the ground. By observing PWV spatial-temporal variations during a hurricane event, the nature of PWV of this type of event can be characterized.
This project will use data to produce a geovisualization, predicting hurricane path in US east coast states (Florida, Georgia, North and South Carolina). The path forecasting is based on the 24 hour GNSS observations of stations located at east coast area. As a case study, we adopted one of the most recent destructive and long-lived hurricane along the Florida, Georgia, and South-Carolina coast, namely, Hurricane Matthew, occurred in October 2016. To investigate the potential of GNSS data for retrieving the perturbation of GNSS derived PWV, seven days (5 October-11 October) observations of Continuously Operating Reference Stations (CORS) were used to track the hurricane trace .
The geovisualization will incorporate interactive elements, allowing the user to observe the fluctuation of atmospheric parameters over time (seven days) and the predicted path of maximum rainfall in every one hour prediction period. With forecasting the precipitation in each station, the path of maximum rainfall movement can be displayed over the time. This geovisualization seeks to use certain indicators to show where we can expect the maximum GNSS-derived precipitation as the atmospheric parameters (pressure, temperature, relative humidity) fluctuate.
classification based on the hurricane occurrence time by connecting to the PWV observations time series and the defined threshold. The GNSS-derived PWV time series fluctuate below 0.055 during the “before” class (normal condition) where the precipitation associated to the hurricane does not happen. The estimated PWV keeps increasing to exceed the threshold where the “right before” class is defined. The “right before” class keeps for about one hour. The PWV series show an active, increasing pattern in the “during” class whereas the rainfall amounts reach its peak. Then PWV time series dramatically decrease to reach the threshold where the “right after” class is defined. It then fluctuates below the level of threshold while the “after” class is formed where rainfall is started to stop. It is evident that all precipitation events happen when the PWV is fluctuating above the 0.050 m.
By comparing different prediction time lags, the stations with minimum discrepancy are determined and clustered as a group. The characteristics of PWV in each cluster in time domain plays a role as a forecast indicator, which is extended to predict the path of the hurricane and its intensity as well..
The accurate prediction of the path and intensity of a hurricane is crucial for planning the evacuation of the populated areas and for assessing its impact. Since the evolution of severe weather phenomena is associated with notable transient changes in water contents in the low atmosphere, the accurate monitoring of atmosphere water vapor or perceptible water vapor (PWV) spatial-temporal variations is critical to forecast and localize severe storms. On the other hand, the dynamic perturbations in the atmosphere water content can be measured from the tropospheric delay of GNSS signal propagated from a satellite to a receiver on the ground. By observing PWV spatial-temporal variations during a hurricane event, the nature of PWV of this type of event can be characterized.
Created by Hoda Tahami From Oregon State University


QDesignerWidgetBoxInterface Class
The QDesignerWidgetBoxInterface class allows you to control the contents of Qt Designer's widget box. More...
| Header: | #include <QDesignerWidgetBoxInterface> |
| qmake: | QT += designer |
| Inherits: | QWidget |
Public Functions
| QDesignerWidgetBoxInterface(QWidget *parent = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags()) | |
| virtual | ~QDesignerWidgetBoxInterface() |
| virtual QString | fileName() const = 0 |
| virtual bool | load() = 0 |
| virtual bool | save() = 0 |
| virtual void | setFileName(const QString &fileName) = 0 |
- 216 public functions inherited from QWidget
Additional Inherited Members
- 59 properties inherited from QWidget
- 19 public slots inherited from QWidget
- 3 signals inherited from QWidget
- 5 static public members inherited from QWidget
- 35 protected functions inherited from QWidget
- 1 protected slot inherited from QWidget
Detailed Description
The QDesignerWidgetBoxInterface class allows you to control the contents of Qt Designer's widget box.
QDesignerWidgetBoxInterface contains a collection of functions that is typically used to manipulate the contents of Qt Designer's widget box.
Qt Designer uses an XML file to populate its widget box. The name of that file is one of the widget box's properties, and you can retrieve it using the fileName() function.
QDesignerWidgetBoxInterface also provides the save() function that saves the contents of the widget box in the file specified by the widget box's file name property. If you have made changes to the widget box, for example by dropping a widget into the widget box, without calling the save() function, the original content can be restored by a simple invocation of the load() function:
QDesignerWidgetBoxInterface *widgetBox = 0: widgetBox = formEditor->widgetBox(); widgetBox->load();
The QDesignerWidgetBoxInterface class is not intended to be instantiated directly. You can retrieve an interface to Qt Designer's widget box using the QDesignerFormEditorInterface::widgetBox() function. A pointer to Qt Designer's current QDesignerFormEditorInterface object (formEditor
in the example above) is provided by the QDesignerCustomWidgetInterface::initialize() function's parameter. When implementing a custom widget plugin, you must subclass the QDesignerCustomWidgetInterface to expose your plugin to Qt Designer.
If you want to save your changes, and at the same time preserve the original contents, you can use the save() function combined with the setFileName() function to save your changes into another file. Remember to store the name of the original file first:
QString originalFile = widgetBox->fileName(); widgetBox->setFileName("myWidgetBox.xml"); widgetBox->save();
Then you can restore the original contents of the widget box by resetting the file name to the original file and calling load():
widgetBox->setFileName(originalFile); widgetBox->load();
In a similar way, you can later use your customized XML file:
if (widgetBox->filename() != "myWidgetBox.xml") { widgetBox->setFileName("myWidgetBox.xml"); widgetBox->load(); }
See also QDesignerFormEditorInterface.
Member Function Documentation
QDesignerWidgetBoxInterface::QDesignerWidgetBoxInterface(QWidget *parent = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags())
Constructs a widget box interface with the given parent and the specified window flags.
[virtual]
QDesignerWidgetBoxInterface::~QDesignerWidgetBoxInterface()
Destroys the widget box interface.
[pure virtual]
QString QDesignerWidgetBoxInterface::fileName() const
Returns the name of the XML file Qt Designer is currently using to populate its widget box.
See also setFileName().
[pure virtual]
bool QDesignerWidgetBoxInterface::load()
Populates Qt Designer's widget box by loading (or reloading) the currently specified XML file. Returns true if the file is successfully loaded; otherwise false.
See also setFileName().
[pure virtual]
bool QDesignerWidgetBoxInterface::save()
Saves the contents of Qt Designer's widget box in the file specified by the fileName() function. Returns true if the content is successfully saved; otherwise false.
See also fileName() and setFileName().
[pure virtual]
void QDesignerWidgetBoxInterface::setFileName(const QString &fileName)
Sets the XML file that Qt Designer will use to populate its widget box, to fileName. You must call load() to update the widget box with the new XML file.


Full Papers
Polagons: Designing and Fabricating Polarized Light Mosaics with User-Defined Color-Changing Behaviors
In Proceedings of CHI 2023.
DOI PDF Video Slides Talk Project Page
DOI PDF Video Slides Talk Project Page
FlexBoard: A Flexible Breadboard for Interaction Prototyping on Curved and Deformable Surfaces
In Proceedings of CHI 2023.
DOI PDF Video Project Page
DOI PDF Video Project Page
MechSense: A Design and Fabrication Pipeline for Integrating Rotary Encoders into 3D Printed Mechanisms
In Proceedings of CHI 2023.
DOI PDF Video Slides Talk Project Page
DOI PDF Video Slides Talk Project Page
InStitches: Augmenting Sewing Patterns with Personalized Material-Efficient Practice
In Proceedings of CHI 2023.
DOI PDF Video Project Page
DOI PDF Video Project Page
MuscleRehab: Improving Unsupervised Physical Rehabilitation by Monitoring and Visualizing Muscle Engagement
In Proceedings of UIST 2022.
DOI PDF Video Slides Project Page
DOI PDF Video Slides Project Page
Selective Self-Assembly using Re-Programmable Magnetic Pixels.
In Proceedings of IROS 2022.
PDF Video Project Page Slides
Mixels: Fabricating Interfaces using Programmable Magnetic Pixels.
In Proceedings of UIST 2022.
DOI PDF Video Project Page Slides
SensorViz: Visualizing Sensor Data Across Different Stages of Prototyping Interactive Objects .
In Proceedings of DIS'22.
DOI PDF Video Talk Slides Project Page
KineCAM: An Instant Camera for Animated Photographs.
In Proceedings of SIGGRAPH'22 Art Papers.
DOI PDF Video Talk Slides Project Page
ElectroVoxel: Electromagnetically Actuated Pivoting for Scalable Modular Self-Reconfigurable Robots.
In Proceedings of ICRA 2022.
DOI PDF Video Project Page Slides
InfraredTags: Embedding Invisible AR Markers and Barcodes Using Low-Cost, Infrared-Based 3D Printing and Imaging Tools.
In Proceedings of CHI 2022. [Best Demo Nominee]
DOI PDF Video Talk Slides Project Page Code
DOI PDF Video Talk Slides Project Page Code
Identifying Game Mechanics for Integrating Fabrication Activities within Existing Digital Games.
In Proceedings of CHI 2022.
DOI PDF Talk Slides Project Page
DOI PDF Talk Slides Project Page
Lenticular Objects: 3D Printed Objects with Lenticular Lens Surfaces that Can Change their Appearance Depending on the Viewpoint.
In Proceedings of UIST 2021. [* equal contribution]
DOI PDF Video Talk Slides Project Page
DOI PDF Video Talk Slides Project Page
SensiCut: Material-Aware Laser Cutting Using Speckle Sensing.
In Proceedings of UIST 2021.
DOI PDF Video Talk Slides Project Page
DOI PDF Video Talk Slides Project Page
MetaSense: Integrating Sensing Capabilities into Mechanical Metamaterial.
In Proceedings of UIST 2021.
DOI PDF Video Talk Project Page
DOI PDF Video Talk Project Page
EIT-kit: An Electrical Impedance Tomography Toolkit for Health and Motion Sensing
In Proceedings of UIST 2021.
DOI PDF Video Talk Slides Project Page
DOI PDF Video Talk Slides Project Page
Adapt2Learn: A Toolkit for Configuring the Learning Algorithm for Adaptive Physical Tools for Motor-Skill Learning
In Proceedings of DIS 2021.
DOI PDF Video Talk Slides Project Page
DOI PDF Video Talk Slides Project Page
FabO: Integrating Fabrication with a Player's Gameplay in Existing Digital Games
In Proceedings of C&C 2021.
DOI PDF Video Talk Slides Project Page
DOI PDF Video Talk Slides Project Page
Fabricaide: Fabrication-Aware Design for 2D Cutting Machines.
In Proceedings of CHI 2021.
DOI PDF Video Talk Slides Project Page
DOI PDF Video Talk Slides Project Page
LaserFactory: An Electromechanical Assembly and Fabrication Platform Integrated with a Laser Cutter to make Functional Devices and Robots.
In Proceedings of CHI 2021.
DOI PDF Video Press video Talk Slides Project Page
DOI PDF Video Press video Talk Slides Project Page
ChromoUpdate: Locally Updating Photochromic Multi-Color Textures for Fast Design Iterations.
In Proceedings of CHI 2021.
DOI PDF Video Talk Slides Project Page
DOI PDF Video Talk Slides Project Page
Can Physical Tools that Adapt their Shape based on a Learner's Performance Help in Motor Skill Training?
In Proceedings of TEI 2021.
DOI PDF Video Talk Slides Project Page
DOI PDF Video Talk Slides Project Page
MorphSensor: A 3D Electronic Design Tool for Reforming Sensor Modules
In Proceedings of UIST 2020.
DOI PDF Video Talk Slides Project Page
DOI PDF Video Talk Slides Project Page
CurveBoards: Integrating Breadboards into Physical Objects to Prototype Function
in the Context of Form In Proceedings of CHI 2020. DOI PDF Video Slides Project Page
in the Context of Form In Proceedings of CHI 2020. DOI PDF Video Slides Project Page
Sprayable User Interfaces: Prototyping Large-Scale Interactive Surfaces
with Sensors and Displays. In Proceedings of CHI 2020. DOI PDF Video Talk Slides Project Page
with Sensors and Displays. In Proceedings of CHI 2020. DOI PDF Video Talk Slides Project Page
G-ID: Identifying 3D Prints Using Slicing Parameters.
In Proceedings of CHI 2020.
DOI
PDF
Video
Slides
Project Page
FoodFab: Creating Food Perception Tricks using Food 3D Printing.
In Proceedings of CHI 2020. [Best Presentation Award Asian CHI]
DOI
PDF
Video
Project Page
ProtoSpray: Combining 3D Printing and Spraying to Create Objects with Interactive Displays.
In Proceedings of CHI 2020. [Best Paper Nominee]
DOI
Video
NURBSforms: A Modular Shape-Changing Interface for Prototyping Curved Surfaces.
In Proceedings of TEI 2020.
DOI
PDF
Video
Project Page
Photo-Chromeleon: Re-Programmable Multi-Color Textures Using Photochromic Dyes.
In Proceedings of UIST 2019. [Best Paper Award]
DOI
PDF
Video
Slides
Project Page
FoldTronics: Creating 3D Objects with Integrated Electronics Using Foldable Honeycomb Structures.
In Proceedings of CHI 2019.
DOI
PDF
Video
Slides
Project Page
Sequential Support: 3D Printing Dissolvable Support Material for Time-Dependent Mechanisms.
In Proceedings of TEI 2019.
DOI
PDF
Video
Slides
Project Page
FormFab: Continuous Interactive Fabrication.
In Proceedings of TEI 2019.
DOI
PDF
Video
Slides
Project Page
Integrating Electronic Components into Deformable Objects Based on User Interaction Data.
In Proceedings of TEI 2019.
DOI
PDF
Video
Project Page
MoSculp: Interactive Visualization of Shape and Time.
In Proceedings of UIST 2018.
DOI
PDF
Video
Slides
Project Page
ColorMod: Recoloring 3D Printed Objects using Photochromic Inks.
In Proceedings of CHI 2018.
DOI
PDF
Video
Slides
Project Page
RoMA: Interactive Fabrication with Augmented Reality and a Robotic 3D Printer.
In Proceedings of CHI 2018.
DOI
PDF
Video
Slides
Project Page
Personal Fabrication.
In Foundations and Trends® in Human–Computer Interaction 2017.
DOI
PDF
Related Work Directory
CHI Panel
Project Page
Linespace: A Sensemaking Platform for the Blind.
In Proceedings of CHI 2016.
DOI
Paper
Video
Slides
CHI Talk
Project Page
Destructive Games: Creating Value by Destroying Valuable Physical Objects.
In Proceedings of CHI 2016.
DOI
Paper
Video
Slides
Project Page
LaserStacker: Fabricating 3D Objects by Laser Cutting and Welding.
In Proceedings of UIST 2015.
DOI
Paper
Video
Slides
UIST Talk
Project Page
Patching Physical Objects.
In Proceedings of UIST 2015.
DOI
Paper
Video
Slides
UIST Talk
Project Page
Protopiper: Physically Sketching Room-Sized Objects at Actual Scale.
In Proceedings of UIST 2015.
DOI
Paper
Video
Project Page
Platener: Low-Fidelity Fabrication of 3D Objects by Substituting 3D Print with Laser-Cut Plates.
In Proceedings of CHI 2015. [Best Paper Nominee]
DOI
Paper
Video
Slides
Project Page
Scotty: Relocating Physical Objects Across Distances Using Destructive Scanning, Encryption, and 3D Printing.
In Proceedings of TEI 2015.
DOI
Paper
Video
Project Page
WirePrint: 3D Printed Previews for Fast Prototyping.
In Proceedings of UIST 2014.
DOI
Paper
Video
Slides
UIST Talk
Project Page
faBrickation: Fast 3D printing of Functional Objects With Building Blocks.
In Proceedings of CHI 2014. [Best Paper Nominee]
DOI
Paper
Video
Slides
CHI Talk
Project Page
LaserOrigami: Laser-Cutting 3D Objects.
In Proceedings of CHI 2013. [Best Paper Award]
DOI
Paper
Video
Slides
CHI Talk
Project Page
Interactive Construction: Interactive Fabrication of Functional Mechanical Devices.
In Proceedings of UIST 2012.
DOI
Paper
Video
Slides
UIST Talk
Project Page
Late Breaking Work
The Reflective Make-AR In-Action: Using Augmented Reality for Reflection-based Learning of Makerskills
In Proceedings of CHI Late Breaking Work 2023.
DOI PDF
DOI PDF
What Can We Learn From Educators About Teaching in Makerspaces?
In Proceedings of CHI Late Breaking Work 2023.
DOI PDF
DOI PDF
Azimuth Calculation and Telecommunication between VR Headset and Smartphones for Nearby Interaction
In Proceedings of TEI 2023 Work in Progress [* equal contribution].
DOI PDF Project Page
DOI PDF Project Page
CompuMat: A Computational Composite Material for Tangible Interaction
In Proceedings of TEI 2023 Work in Progress
DOI PDF Project Page
DOI PDF Project Page
PullupStructs: Digital Fabrication for Folding Structures via Pull-up Nets
In Proceedings of TEI 2023 Work in Progress [* equal contribution].
DOI PDF Video Project Page
DOI PDF Video Project Page
ChromoPrint: A Multi-Color 3D Printer Based on a Reprogrammable Photochromic Resin
In Adjunct Proceedings of CHI 2022 Late Breaking Work.
DOI PDF Video Project Page
DOI PDF Video Project Page
SliceHub: Augmenting Shared 3D Model Repositories with Slicing Results for 3D Printing
In Adjunct Proceedings of CHI 2022 Late Breaking Work.
DOI PDF Video Project Page
DOI PDF Video Project Page
Workshops, Panels, SIGs
Fabricate It or Render It? Digital Fabrication vs. Virtual Reality for Creating Objects Instantly.
CHI 2022 Panel.
DOI PDF Video Panel Page
Conference Schedule
DOI PDF Video Panel Page
Conference Schedule


.::Netbas OS:.
A new kind of desktop operating system.
Netbas OS (the old name Jicama) is an entirely different desktop operating system.plans to make a run on multiple platforms entertainment-oriented applications, This makes Netbas a general purpose operating system. Including the mainstream embedded systems and PC-(WinCE Like), the current can be part of a binary-compatible linux systems, and developed their own proprietary GUI Window System: GI.
GI Windows system based on kernel mode, the user layer simulation libX11, and developed their own widget toolkit. Will be able to run SDL, FLTK-1, Mesa, Doom, links web browser, VNC.
Netbas current development is still in alpha stage, the release of an experimental version.


Komodo
introductions
Are you a developer or blockchain enthusiast? Introduce yourself. Please note that normal chat messages will be removed. Go to #general to start a discussion or ask a follow-up question.
100 messages
Before 05-Dec-19 12:00 AM
Ham1903
29-Aug-19 01:16 PM
Joined the server.
kishaan veisal
29-Aug-19 07:20 PM
Joined the server.
sumair7230
29-Aug-19 08:37 PM
Joined the server.
BugBiter
29-Aug-19 10:58 PM
Joined the server.
ProjectRVN
29-Aug-19 11:27 PM
Joined the server.
jose 17
30-Aug-19 04:23 AM
Joined the server.
MetaJames
30-Aug-19 05:16 AM
Joined the server.
gb
30-Aug-19 05:22 AM
Joined the server.
freegraceer
30-Aug-19 07:15 AM
Joined the server.
yuriy
30-Aug-19 08:13 AM
Joined the server.
SocialDeveloper
30-Aug-19 09:28 AM
Joined the server.
aguero87
30-Aug-19 10:14 AM
Joined the server.
GB
30-Aug-19 01:27 PM
Joined the server.
pandaanu73
30-Aug-19 02:51 PM
Joined the server.
Blackbeard
30-Aug-19 07:15 PM
Joined the server.
Ruben
30-Aug-19 07:54 PM
Joined the server.
Deleted User
30-Aug-19 08:32 PM
Joined the server.
ReDev
31-Aug-19 12:05 AM
Joined the server.
Haro49
31-Aug-19 05:21 AM
Joined the server.
hello
1
Audo
31-Aug-19 07:25 AM
hey
@Haro49
, welcome
NOCTLJRNE
31-Aug-19 07:43 AM
Joined the server.
Deleted User
31-Aug-19 10:27 AM
Joined the server.
Xcallibur
31-Aug-19 10:41 AM
Joined the server.
SonnyJohnMoore
31-Aug-19 11:25 AM
Joined the server.
Komodo User
31-Aug-19 12:21 PM
Joined the server.
Izkillaz
31-Aug-19 02:15 PM
Joined the server.
Deleted User
31-Aug-19 03:35 PM
Joined the server.
خالد
31-Aug-19 04:29 PM
Joined the server.
Tirjatta
31-Aug-19 04:40 PM
Joined the server.
Hethan
31-Aug-19 04:57 PM
Joined the server.
Hethan
31-Aug-19 04:59 PM
Joined the server.
mkst
31-Aug-19 08:26 PM
Joined the server.
ribbinkvalentijn
31-Aug-19 09:04 PM
Joined the server.
Mr.Anto
01-Sep-19 03:55 AM
Joined the server.
rob
01-Sep-19 05:44 PM
Joined the server.
twiggy81r
01-Sep-19 10:59 PM
Joined the server.
Tomcat
01-Sep-19 11:53 PM
Joined the server.
Keruse
02-Sep-19 12:10 AM
Joined the server.
ClaysonFrost
02-Sep-19 04:09 AM
Joined the server.
Mahdi
02-Sep-19 04:21 AM
Joined the server.
Muriisa
02-Sep-19 05:32 AM
Joined the server.
pserg
02-Sep-19 07:36 AM
Joined the server.
pjlenny
02-Sep-19 08:37 AM
Joined the server.
Audo
02-Sep-19 08:37 AM
sorry, forgot to turn it off. No more slowmode
Barbossa
02-Sep-19 09:14 AM
Joined the server.
alexgrowler
02-Sep-19 10:11 AM
Joined the server.
Londo
02-Sep-19 10:31 AM
Joined the server.
Mark
02-Sep-19 12:34 PM
Joined the server.
Sunshine
02-Sep-19 04:33 PM
Joined the server.
SDang
02-Sep-19 04:40 PM
Joined the server.
Dietrij
02-Sep-19 05:58 PM
Joined the server.
chechikk1234
02-Sep-19 09:29 PM
Joined the server.
MA0512
03-Sep-19 03:30 AM
Joined the server.
Deleted User
03-Sep-19 04:17 AM
Joined the server.
tommyboxfx
03-Sep-19 05:27 AM
Joined the server.
Aratonel
03-Sep-19 08:57 AM
Joined the server.
Taner
03-Sep-19 08:58 AM
Joined the server.
Deleted User
03-Sep-19 10:39 AM
Joined the server.
alesha123
03-Sep-19 12:35 PM
Joined the server.
HM
03-Sep-19 04:02 PM
Joined the server.
Deleted User
03-Sep-19 08:56 PM
Joined the server.
Joined the server.
Joined the server.
Joined the server.
Joined the server.
Joined the server.
Joined the server.
Joined the server.
Joined the server.
Joined the server.
Joined the server.
Joined the server.
Joined the server.
Joined the server.
Joined the server.
Joined the server.
Joined the server.
Joined the server.
Joined the server.
Joined the server.
Bmanv1
04-Sep-19 01:22 AM
Joined the server.
Marla
04-Sep-19 01:28 AM
Joined the server.
termitador
04-Sep-19 01:38 AM
Joined the server.
infodax
04-Sep-19 02:03 AM
Joined the server.
extriio
04-Sep-19 02:05 AM
Joined the server.
alamfrag
04-Sep-19 02:12 AM
Joined the server.
Rocco.21
04-Sep-19 02:25 AM
Joined the server.
Adavortex
04-Sep-19 02:46 AM
Joined the server.
J0e
04-Sep-19 03:25 AM
Joined the server.
goiton
04-Sep-19 03:38 AM
Joined the server.
Almero
04-Sep-19 04:08 AM
Joined the server.
Imlulle
04-Sep-19 07:47 AM
Joined the server.
Gunner | K64
04-Sep-19 08:58 AM
Joined the server.
Orbis
04-Sep-19 09:18 AM
Joined the server.
Aeetes
04-Sep-19 10:08 AM
Joined the server.
revaen
04-Sep-19 11:38 AM
Joined the server.
Sentrail
04-Sep-19 12:40 PM
Joined the server.
Win Innovation
04-Sep-19 01:16 PM
Joined the server.
caitlin.eckvahl
04-Sep-19 01:26 PM
Joined the server.


Leicester comfortable challenging at the top – Rodgers
Brendan Rodgers will not put any pressure on his Leicester players but says the team are comfortable challenging the Premier League big boys again.
A 2-0 win at Crystal Palace – following second-half goals by Caglar Soyuncu and Jamie Vardy – moved the Foxes above Chelsea and into third position.
Leicester are six points ahead of fifth-placed Arsenal after a fourth consecutive victory in all competitions and right now look on course for the Champions League.
Rodgers said: “The team is playing well, but we are certainly not getting carried away and will not try to give the players any pressure.
“They have been absolutely brilliant since I’ve come in, they want to get better and want to learn and are hungry to learn.
“My senior players are first class. The spirit is very good and they understand we are trying to create something here we can sustain.
“We have had a very good start, some very good performances and different wins and we are constantly looking to improve and with 10 games to go, let’s see where we are.”
Not since Leicester’s shock Premier League title win in 2016 have the Foxes been consistently in the upper echelons of the table.
While no one is predicting Rodgers’ men will stay as the nearest challenger to leaders Liverpool and Manchester City, the former Celtic boss says his squad are happy to be in the mix after 11 matches this season.
He added: “We always want to do better, but we are comfortable with the fact we are challenging.
“People asked about European football at the beginning of the season and I said ‘listen, we don’t want to get ahead of ourselves’ because there are some incredible teams in this league.
“It was about ‘let’s work and see where it takes us’ so we are in a good place, but there is a long way to go.”
Palace not only failed to pick up any points, but saw a number of players pick up knocks during the encounter at Selhurst Park.
James McArthur was forced off with a back injury while Cheikhou Kouyate and Gary Cahill were involved in a sickening clash of heads.
But Roy Hodgson admitted: “It was strange because it wasn’t a dirty game by any stretch of the imagination.
“It was collisions, it was slightly mistimed challenges with no particular malice so in that respect I thought the game was fought with respect and with respect to the laws and spirit of the game.
“We came off counting our injuries today and it’s not going to be long before Saturday to put those things right.”
He added: “The worse one is McArthur because he has been struggling with a back injury.
“As for Gary and Cheikhou, they were blows to the head, which we see more and more these days.
“I don’t think either of those two will be out of training on Tuesday but they may have a sore head this evening and they will need tomorrow to recover.”


Spotify playlist link, URI or ID (Note: Automapped Beatmaps are ignored):
Current State: ( / )
Open selected as playlist
Download selected as playlist
/ matched!
https://github.com/patagonaa/BeatSaverMatcher
Download selected as playlist
/ matched!
| Spotify artist(s) | Spotify title | BeatSaber map author | BeatSaber song author | BeatSaber song name | BeatSaber song sub-name | BeatSaver difficulty | Rating | 👍/👎 | BeatSaver key | Selected |
|---|---|---|---|---|---|---|---|---|---|---|
|
|
| Download | View |


Here’s a comparison between two welcome messages. The first one uses the built-in alert-function, while the second is using sweetModal.
alert("Sample Welcome Message Title: Lorem ipsum dolor sit amet, consectetur...");
swmo({ title:"Sample Welcome Message Title:", text: "Lorem ipsum dolor sit...", imageUrl: 'images/Custom_Modal_Picture.png', div_class: "custom_className_fromCSS", isHtmlContent: true });
SweetModal displays a modal which reacts like SweetAlert but is more customizable because you can use a css class as a parameter and use html content in "text" ! (details below...)
Download SweetModal on GitHub : Click here
Here are the keys that you can use if you pass an object into sweetAlert:
| Argument | Default value | Description |
|---|---|---|
| title | null (required) | The title of the modal. It can either be added to the object under the key "title" or passed as the first parameter of the function. |
| text | null | A description for the modal. It can either be added to the object under the key "text" or passed as the second parameter of the function. |
| type | null | The type of the modal. SweetAlert comes with 4 built-in types which will show a corresponding icon animation: "warning", "error", "success" and "info". It can either be put in the array under the key "type" or passed as the third parameter of the function. |
| allowOutsideClick | false | If set to true, the user can dismiss the modal by clicking outside it. |
| showCancelButton | false | If set to true, a "Cancel"-button will be shown, which the user can click on to dismiss the modal. |
| confirmButtonText | "OK" | Use this to change the text on the "Confirm"-button. If showCancelButton is set as true, the confirm button will automatically show "Confirm" instead of "OK". |
| confirmButtonColor | "#AEDEF4" | Use this to change the background color of the "Confirm"-button (must be a HEX value). |
| cancelButtonText | "Cancel" | Use this to change the text on the "Cancel"-button. |
| closeOnConfirm | true | Set to false if you want the modal to stay open even if the user presses the "Confirm"-button. This is especially useful if the function attached to the "Confirm"-button is another SweetAlert. |
| imageUrl | null | Add a customized icon for the modal. Should contain a string with the path to the image. |
| imageSize | "80x80" | If imageUrl is set, you can specify imageSize to describes how big you want the icon to be in px. Pass in a string with two values separated by an "x". The first value is the width, the second is the height. |
| timer | null | Auto close timer of the modal. Set in ms (milliseconds). |
| div_class | " " | Set this parameter to any css class name to change the modal's css. |
| isHtmlContent | false | Set this parameter to true if you want to add custom html content in "text". |
SweetModal is a fork of SweetAlert created by Julien Laclaverie.
SweetAlert was created by Tristan Edwards, you can follow him on Twitter or Dribbble for updates and other cool projects!