Research assistant
Fakhrul Islam is a Research Assistant at the ERGS at the University of South Carolina in the Nuclear Engineering program. He has a BS in Applied Chemistry and Chemical Engineering from University of Dhaka (Bangladesh) and an MS in Analytical Chemistry from University of Montana (USA). He previously worked with marine data from the Arctic Ocean to understand the carbon dioxide cycle that impacts the global climate change. He is currently working on modeling reprocessing facilities and building cruiser simulation interface under the supervision of Dr. Anthony Scopatz.
Education & Employment
University of South Carolina
Research Assistant
Columbia, SC, 2018 - presentUniversity of Montana
MS in Chemistry
Missoula, MT, USA, 2013 - 2015- Adviser: Michael D. DeGrandpre
- Dissertation: Investigating CO2 and O2 variability in the partially ice covered Arctic Ocean.
University of Dhaka
BS in Applied Chemistry and Chemical Engineering
Dhaka, Bangladesh, 2006 - 2009Publications
[Download bibtex]
Skills
Programming Languages
- Intermediate: MATLAB
- Beginner: Python, bash
Software
- Beginner: git
Programming Languages
- Beginner: UNIX


Philosophy
This document outlines Super.NET’s primary philosophical drivers.
Super.NET is intended to enable ubiquitous .NET client applications.
As an overall vision, the purpose of Super.NET is to enable ubiquitous .NET client applications. It is meant to fulfill the ultimate developer use case:
“As a developer, I want to develop my application once and have it run everywhere.”
The Business Problem
In the current .NET space, this use case is not possible to fulfill. As a result, developers must create two applications in their .NET solutions, which means double the code, and resultingly double the risk, and therefore double the total cost of ownership.
Cost of Development
It is best to think of codebases as lump sums of money in terms of total cost of ownership. Each incompatible language used within a solution has its own set of risks, idiosyncrasies, and challenges. If the artifacts from one language cannot be shared and leveraged in another, then it is considered incompatible and therefore expensive.
Primary examples of ensuring low total cost of ownership:
- Cross-platform resources: e.g. in .NET you can write an artifact in F#, compile it, and use that resource in a solution that is primarily written in C#.
- Cross-tier resources: e.g. in a WPF application, you can write a general purpose library meant for server-side scenarios (such as a logging utility) and easily share it in the client-side application without having to rewrite it specifically for that scenario.
In the scenario where a JavaScript solution is introduced into a .NET solution, the JavaScript cannot be shared with .NET and vice versa. Therefore it is considered incompatible and an expensive approach as you now have to build and maintain two different codebases, each with their own set of expenses as outlined earlier.
Principles and Objectives
The following principles describe some high level objectives of this project.
HTML5 as an Established Presentation Platform
HTML has been a pillar of the web for several decades now. That’s a pretty amazing feat. HTML5 has been a standard since 2014, and it has only matured since then. Plenty of artists and designers have established great user experience and design around this presentation platform and are now only getting better which makes it a perfect candidate for anything required for presentation.
By focusing on one presentation platform, we cost and complexity is greatly reduced as now the system only has to account for this one platform. Further, it is easier to gain expert status towards this platform as developers are spending all of their time within this one paradigm or way of expression.
Finally, from a personal point of view, having had my hands in HTML in some capacity since 1994 when I first started getting into computer science, it feels “right” using it and finding a way to cleanly integrate it with .NET.
.NET Semantics
The technical challenge here, of course, is that of .NET semantics. One cannot describe a DockPanel
in HTML. They must use foreign – and inconsistently cased – constructs such as

and
to describe these objects. This project aims to rectify this challenge by ensuring that when a .NET developer describes a native .NET element such as DockPanel
, it will get converted as the appropriate HTML5 element(s) to ultimately render in the browser to which it is sent.
Data Formats
A goal of this project is to also address a significant deficiency within our development community, that of data formats. Ultimately, data formats describe an object graph. This idea seems to be a lost, unknown, or at the very least very much misunderstood concept within our community. The goal here is to enable users of Super.NET to use any supported data format, and to easily build additionally providers to enable other formats not natively supported.
To start, the following formats are recognized and should be supported from the initial version:
- XML
- JSON
- YAML
Additionally, we might consider creating our own format/dialect that perhaps improves upon YAML to produce our own unique format that is a part of Super.NET’s overall design and is aligned with the spirit of .NET. This indeed might be considered the next incarnation of Xaml.
POICO Development
Poico – or Plain Ol’ Immutable CLR Object – development means, by default, ensuring all elements used with the solution are immutable and cannot change state after they are created. Additionally, the objective is to ensure these CLR objects are as “plain” as possible, meaning that they are defined with as little to no decoration. Which ideally (there will be exceptions, of course) means no:
- Attributes or metadata
- Inheritance
- Use of virtual overrides
Composition Over Inheritance
No inheritance means the preference of composition over inheritance. Inheritance can be used, of course, for implementations of patterns such as decoration and delegation. Classes should strive to be sealed
and internal
by default until needed otherwise.
Progressive Web Applications
This will take some further investigation, but generally speaking Super.NET applications will be progressive web applications. Investigation will be required for offline scenarios, mostly. In this case, we might have to consider dropping into WebAssembly.
Further Considerations
For further philosophical thoughts and musings around software, design, and life, feel free to visit the series on the Super.NET Blog, Dawg.


|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object mpi.Datatype
public abstract class Datatype
| Constructor Summary | |
|---|---|
Datatype()
|
| Method Summary | |
|---|---|
void |
Commit()
Commit a derived datatype. |
static Datatype |
Contiguous(int count,
Datatype oldtype)
Construct new datatype representing replication of old datatype into contiguous locations. |
int |
Extent()
Returns the extent of a datatype - the difference between upper and lower bound. |
void |
finalize()
|
void |
free()
|
static Datatype |
Hindexed(int[] array_of_blocklengths,
int[] array_of_displacements,
Datatype oldtype)
Identical to indexed except that the displacements are expressed directly in terms of the buffer index, rather than the units of the old type. |
static Datatype |
Hvector(int count,
int blocklength,
int stride,
Datatype oldtype)
Identical to vector except that the stride is expressed directly in terms of the buffer index, rather than the units of the old type. |
static Datatype |
Indexed(int[] array_of_blocklengths,
int[] array_of_displacements,
Datatype oldtype)
Construct new datatype representing replication of old datatype into a sequence of blocks where each block can contain a different number of copies and have a different displacement. |
int |
Lb()
Find the lower bound of a datatype - the least value in its displacement sequence. |
int |
Size()
Returns the total size of a datatype - the number of buffer elements it represents. |
static Datatype |
Struct(int[] array_of_blocklengths,
int[] array_of_displacements,
Datatype[] array_of_types)
The most general type constructor. |
int |
Ub()
Find the upper bound of a datatype - the greatest value in its displacement sequence. |
static Datatype |
Vector(int count,
int blocklength,
int stride,
Datatype oldtype)
Construct new datatype representing replication of old datatype into locations that consist of equally spaced blocks. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public Datatype()
| Method Detail |
|---|
public int Extent() throws MPIException
| returns: | datatype extent |
Java binding of the MPI operation MPI_TYPE_EXTENT.
MPIException
public int Size() throws MPIException
| returns: | datatype size |
Java binding of the MPI operation MPI_TYPE_SIZE.
MPIException
public int Lb() throws MPIException
| returns: | displacement of lower bound from origin |
Java binding of the MPI operation MPI_TYPE_LB.
MPIException
public int Ub() throws MPIException
| returns: | displacement of upper bound from origin |
Java binding of the MPI operation MPI_TYPE_UB.
MPIException
public void Commit() throws MPIException
MPIException
public void finalize() throws MPIException
finalize
in class java.lang.Object
MPIException
public static Datatype Contiguous(int count, Datatype oldtype) throws MPIException
| count | replication count |
| oldtype | old datatype |
| returns: | new datatype |
Java binding of the MPI operation MPI_TYPE_CONTIGUOUS.
The base type of the new datatype is the same as the base type of oldtype.
MPIException
public static Datatype Vector(int count, int blocklength, int stride, Datatype oldtype) throws MPIException
| count | number of blocks |
| blocklength | number of elements in each block |
| stride | number of elements between start of each block |
| oldtype | old datatype |
| returns: | new datatype |
Java binding of the MPI operation MPI_TYPE_VECTOR.
The base type of the new datatype is the same as the base type of oldtype.
MPIException
public static Datatype Hvector(int count, int blocklength, int stride, Datatype oldtype) throws MPIException
| count | number of blocks |
| blocklength | number of elements in each block |
| stride | number of elements between start of each block |
| oldtype | old datatype |
| returns: | new datatype |
Java binding of the MPI operation MPI_TYPE_HVECTOR.
Unlike other language bindings, the value of stride is not measured in bytes.
MPIException
public static Datatype Indexed(int[] array_of_blocklengths, int[] array_of_displacements, Datatype oldtype) throws MPIException
| array_of_blocklengths | number of elements per block |
| array_of_displacements | displacement of each block in units of old type |
| oldtype | old datatype |
| returns: | new datatype |
Java binding of the MPI operation MPI_TYPE_INDEXED.
The number of blocks is taken to be size of the array_of_blocklengths argument. The second argument, array_of_displacements, should be the same size. The base type of the new datatype is the same as the base type of oldtype.
MPIException
public static Datatype Hindexed(int[] array_of_blocklengths, int[] array_of_displacements, Datatype oldtype) throws MPIException
| array_of_blocklengths | number of elements per block |
| array_of_displacements | displacement in buffer for each block |
| oldtype | old datatype |
| returns: | new datatype |
Java binding of the MPI operation MPI_TYPE_HINDEXED.
Unlike other language bindings, the values in array_of_displacements are not measured in bytes.
MPIException
public static Datatype Struct(int[] array_of_blocklengths, int[] array_of_displacements, Datatype[] array_of_types) throws MPIException
| array_of_blocklengths | number of elements per block |
| array_of_displacements | displacement in buffer for each block |
| array_of_types | type of elements in each block |
| returns: | new datatype |
Java binding of the MPI operation MPI_TYPE_STRUCT.
The number of blocks is taken to be size of the array_of_blocklengths argument. The second and third arguments, array_of_displacements, and array_of_types, should be the same size. Unlike other language bindings, the values in array_of_displacements are not measured in bytes. All elements of array_of_types with definite base types must have the same base type: this will be the base type of new datatype.
MPIException
public void free()
|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Chief Croto:
Thank you for letting me know of my nephew's fate! I have sent more soldiers to Elder Balanki. You may now leave safely!


Profile
Security
This is a list of devices that have logged into your account. Revoke any sessions that you do not recognize.
Revoke
Krummesse
<IP_ADDRESS>
Your current session
…
Opera
on OS X 10.09
Location:
Krummesse, Schleswig-Holstein, Germany
Signed in:
November 15, 2014


Here's a sample video you can use to upload to the app. Note that any video file will do, so feel free to use your own if you wish. I do recommend using a video file less than 10 seconds long while doing development of the app.
Save this to your harddrive!
https://drive.google.com/open?id=0B-ULQ9Wb2hraUU5udk9Pa1VHTjg


Menu
Home
About us
(current)
Call to Worship
Events
Need Prayer
@Faith Tabernacle Family Life Cent
About us
Apostle William Winston
about me
Pastor Robin Winston
about me
Church history
history


-
Doggo ipsum long bois lotsa pats blep. What a nice floof ruff super chub very good spot, the neighborhood pupper
lotsa pats. Borkdrive shibe shoober what a nice floof, borking doggo.
-
Shoober shooberino adorable doggo many pats, heckin good boys many pats pupper wrinkler, corgo maximum
borkdrive. A frighten puggo wow very biscit.
- Big ol adorable doggo vvv smol borking doggo with a long snoot for pats big ol, he made
many woofs doing
me a frighten puggo wow very biscit, ruff fat boi ruff long doggo.

-
Doggo ipsum long bois lotsa pats blep. What a nice floof ruff super chub very good spot, the neighborhood
pupper lotsa pats. Borkdrive shibe shoober what a nice floof, borking doggo.


Copyright (c) 1981, 2000 Robert A. Kraus
The game is played on a 8x8 square board. Each player begins with 11 stones off-board.
|
| Some examples This is a possible position after the dropping phase. Black atom at b7 has valence 2, so it can be moved to cell [1]. |
| White has a winning position. If White moves atom at e4 to cell [1], the two Black atoms at e3 and d5 are captured, and then Black cannot move his last atom (it has valence 3, and there is no other adjacent cell with that valence). |
R. Kraus defined two variants: Isotopes,
where each atom can move any number of cells (instead of just being able to move
to the adjacent cell); and Radioactive Atoms, where a stone may also
commit suicide (if able to move to an isolated cell). There is a file to play Atoms
with Zillions.


Version Control
We use git as our version control tool, following the standard here.
Java
We follow Google Java Style.
C
We follow Microsoft C# Coding Conventions (C# Programming Guide).
Javascript
We follow AirBnB Javascript Code Style.
JSON
We follow Google JSON Style Guide.
Objective-C
We follow Google Objective-C Style Guide.
Swift
We follow Github Swift Style Guide. Because swift has not been finalized, this is a temporal solution. We are seeking more mature standard.
Python
We follow Google Python Style Guide.
Ruby
We follow Google Shell Style Guide.


Drag one finger to rotate, two fingers to pan. Pinch to zoom.
Drag one finger to rotate, two fingers to pan. Pinch to zoom.
Loading scene...


WITNESS LIST
State Affairs
April 8, 2013 9:00 AM
FOR:
Ochoa, Rene (Bexar County Sheriff's Office), San Antonio, TX
Trevino, Jose (Bexar County Sheriff's Office), San Antonio, TX
ON:
Fowler, Abbey (Office of the Attorney General), Austin, TX
Mitchell, Forrest (Texas O.A.G. Law Enforcement), Austin, TX
Registering, but not testifying:
FOR:
Baggett, Donnis (Texas Press Association), Waco, TX
Blanke, Laura (Texas Pediatric Society), Austin, TX
Sabo, Jason (Children at Risk), Austin, TX
Speight, Dennis (Texas Watch), Austin, TX
FOR:
Derheimer, Sam (Pew Charitable Trusts), Washington, DC
Lopez, Dee (Travis County Tax Office), Austin, TX
Maxey, Glen (Texas Democratic Party), Austin, TX
Noble, Lannie (Wise County Elections), Decatur, TX
Raborn, Steve (Tarrant County Elections), Fort Worth, TX
Snider, Stewart (also providing written testimony) (League of Women Voters of Texas),
Austin, TX
Wallace, Skipper (Republican County Chairs Association), Lampasas, TX
AGAINST:
Sullivan, Mike Harris County Tax Assessor- Collector and Voter Registrar (Self),
Houston, TX
ON:
Ingram, Keith (Texas Secretary of State - Elections Division), Austin, TX
Terry, Michael (Texas DPS), Austin, TX
Registering, but not testifying:
FOR:
Coelho, Leonardo (Travis County Commissioners Court), Austin, TX
DeBeauvoir, Dana (County and District Clerks Legislative Committee), Austin, TX
Elfant, Bruce Travis County Tax Assessor Collector and Voter Registrar (Travis County
Tax Assessor Collector and Voter Registrar), TX
Haltom, Sondra (Empower The Vote Texas), Austin, TX
Lara, Rene (Texas A.F.L. - C.I.O.), Austin, TX
Lyznik, Karolina (M.A.L.D.E.F. (Mexican American Legal Defense and Educational
Fund)), San Antonio, TX
Pippins-Poole, Toni (Dallas County Elections), Dallas, TX
Poinsett, Royce (Pew Charitable Trusts), Austin, TX
Salvaggio, Natalie (A.C.L.U. of Texas), Austin, TX
Smith, Tom (Smitty) (Public Citizen), Austin, TX
WITNESS LIST
State Affairs
April 8, 2013 9:00 AM
ON:
Cheng, Albert (Harris County Tax Office), Houston, TX
Cubriel, Beth (Republican Party of Texas), Austin, TX
FOR:
Fields, Amanda (also providing written testimony) (Texas Pharmacy Business Council),
Corpus Christi, TX
Monsell, Harriet (also providing written testimony) (Texas Pharmacy Business Coalition),
Belton, TX
ON:
Diaz-Lara, Debra (TDI), Austin, TX
Registering, but not testifying:
FOR:
Conwell, Audra (Alliance of Independent Pharmacists of Texas), Austin, TX
Heal, John (Texas True Care Pharmacies), Austin, TX
Hernandez, Richard (ResCare Inc.: Pharmacy Alternatives), Austin, TX
Marwitz, David (Texas Pharmacy Association), Austin, TX
Shields, Brad (Texas Federation of Drug Stores), Austin, TX
Shields, Bradford (Texas Society of Health System Pharmacists), Austin, TX
Shields, Susie (Texas Independent Pharmacies Association), Austin, TX
Wiesner, Dennis (H-E-B), San Antonio, TX
Wright, Michael (Texas Pharmacy Business Council), Austin, TX
FOR:
Buckingham, Dawn (Texas Medical Association), Austin, TX
McCoy, Dan (Blue Cross Blue Shield of Texas), Corsicana, TX
Reynolds, Bill (also providing written testimony) (Self), Austin, TX
AGAINST:
Holden, Robert (American Association of Preferred Provider Organizations (AAPPO)),
Louisville, TX
ON:
Diaz-Lara, Debra (TDI), Austin, TX
Registering, but not testifying:
FOR:
Avery, BJ (Texas Optometric Associtaion), Austin, TX
Bailey, Charles (Texas Hospital Association), Austin, TX
Cain, Randy (Capitol Anesthesiology Association), Austin, TX
German, Tony (Texas ASC Soceity), Austin, TX
Holmes, Harry (Harris County Health Care Alliance), Houston, TX
Marwitz, David (Texas Dermatalogical Society), Austin, TX
Sprinkle, GK (Texas Ambulance Association), Austin, TX
Stewart, Clayton (The Texas Society of Anesthesiologists), Austin, TX
WITNESS LIST
State Affairs
April 8, 2013 9:00 AM
ON:
Sanaie, Kandice (Texas Association of Business), Austin, TX
Providing written testimony:
FOR:
Herzog, Greg (Texas Society of Gastroenterology), Austin, TX
FOR:
Parsley, Lee (Texans for Lawsuit Reform), Austin, TX
AGAINST:
Carmona, Paul (Self), Austin, TX
Kincaid, Mark (Self), Austin, TX
Longley, Joe (Self), Austin, TX
Tomlinson, Richard (Self), Houston, TX
ON:
Sullivan, Kent (Self), Austin, TX
Registering, but not testifying:
FOR:
Bennett, Richard (Texas Association of Manufactureres), Austin, TX
Fisher, Jon (Associated Builders and Contractors of Texas), Austin, TX
Gibson, Stephanie (Texas Retailers Association), Austin, TX
Norman, Scott (Texas Association of Builders), Austin, TX
Sanaie, Kandice (Texas Association of Business), Austin, TX
Sepehri, John (Texas Apartment Association), Austin, TX
Simpson, Stephanie (Texas Association of Manufacturers), Austin, TX
AGAINST:
Speight, Dennis (Texas Watch), Austin, TX
ON:
Scott, John (Office of the Attorney General), Austin, TX
FOR:
Cubrid, Beth (Republican Party of Texas), Austin, TX
Maxey, Glen (Texas Democratic Party), Austin, TX
Wallace, Skipper (Republican County Chair's Association), Lampasas, TX
ON:
Howe, Chris (Self), Fort Worth, TX
AGAINST:
Fickel, Ann (also providing written testimony) (Texas Classroom Teachers Association),
Austin, TX
Raab, Ted (also providing written testimony) (Texas American Federation of Teachers),
Austin, TX
Sanderson, Josh (Association of Texas Professional Educators), Austin, TX
WITNESS LIST
State Affairs
April 8, 2013 9:00 AM
ON:
Floyd, Beaman (Texas Association of School Administrators), Austin, TX
Grey, John (Texas State Teachers Association), Austin, TX
Guthrie, Brian (TRS), Austin, TX
Lee, Tim (Texas Retired Teachers Association), Austin, TX
FOR:
Ervin, Doug (also providing written testimony) (Cerner Corporation), North Kansas City,
MO
ON:
Anderson, Gary (Texas Public Employees Association), Austin, TX
Bishop, Ann (ERS), Austin, TX
Blount, Elizabeth (Retired State Employees Association), Austin, TX
Guinn, Skea (Game Warden Peace Officers Association), Albany, TX
Jackson, Jimmy (DPSOA), Tyler, TX
Nanos, Harry (Texas Alcoholic Beverage Commission Officers Association), Georgetown,
TX
Osobase, Derrick (Texas State Employees Union), Austin, TX
Registering, but not testifying:
AGAINST:
Ingersoll, Deborah (Texas State Troopers Association), Austin, TX
ON:
Ewing, Mike (ERS), Austin, TX
ON:
Guthrie, Brian (TRS), Austin, TX
Welch, Ken (Teachers Retirement System of Texas), Round Rock, TX
Registering, but not testifying:
FOR:
Johnson, Steven (Texas Association of Community Colleges), Austin, TX


The forest has been conquered, and you’ve escaped its claws. Well done, the Gods seem to have you in
their favour. Now, before you stands the Grand Stardew Tower, in all its glory. You the seek the wizard
Hanoi
from the magical realm of Karoun, who lives at the top of this formidable monolith. To get to the top,
you’ll need a magical ladder, which you can obtain by conquering the problem presented to you.
Instructions:


This documentation describes the internal structure of mbed TLS. It was automatically generated from specially formatted comment blocks in mbed TLS's source code using Doxygen. (See http://www.stack.nl/~dimitri/doxygen/ for more information on Doxygen)
mbed TLS has a simple setup: it provides the ingredients for an SSL/TLS implementation. These ingredients are listed as modules in the Modules section. This "Modules section" introduces the high-level module concepts used throughout this documentation.
Some examples of mbed TLS usage can be found in the Examples section.
Modules
mbed TLS supports SSLv3 up to TLSv1.2 communication by providing the following:
- TCP/IP communication functions: listen, connect, accept, read/write.
- SSL/TLS communication functions: init, handshake, read/write.
- X.509 functions: CRT, CRL and key handling
- Random number generation
- Hashing
- Encryption/decryption
Above functions are split up neatly into logical interfaces. These can be used separately to provide any of the above functions or to mix-and-match into an SSL server/client solution that utilises a X.509 PKI. Examples of such implementations are amply provided with the source code.
Note that mbed TLS does not provide a control channel or (multiple) session handling without additional work from the developer.
Examples
Example server setup:
Prerequisites:
- X.509 certificate and private key
- session handling functions
Setup:
- Load your certificate and your private RSA key (X.509 interface)
- Setup the listening TCP socket (TCP/IP interface)
- Accept incoming client connection (TCP/IP interface)
- Initialise as an SSL-server (SSL/TLS interface)
- Set parameters, e.g. authentication, ciphers, CA-chain, key exchange
- Set callback functions RNG, IO, session handling
- Perform an SSL-handshake (SSL/TLS interface)
- Read/write data (SSL/TLS interface)
- Close and cleanup (all interfaces)
Example client setup:
Prerequisites:
- X.509 certificate and private key
- X.509 trusted CA certificates
Setup:
- Load the trusted CA certificates (X.509 interface)
- Load your certificate and your private RSA key (X.509 interface)
- Setup a TCP/IP connection (TCP/IP interface)
- Initialise as an SSL-client (SSL/TLS interface)
- Set parameters, e.g. authentication mode, ciphers, CA-chain, session
- Set callback functions RNG, IO
- Perform an SSL-handshake (SSL/TLS interface)
- Verify the server certificate (SSL/TLS interface)
- Write/read data (SSL/TLS interface)
- Close and cleanup (all interfaces)


{% extends "base.html" %} {% block content %}
You don't have any resources. You can create a resource by designing a pod.


--- layout: layout --- {% include work.html %} {% include development.html %} {% include skills.html %} {% include initiatives.html %} {% include education.html %} {% include interests.html %}


WITNESS LIST State Cultural and Recreational Resources Committee March 25, 2003-2:00P HB 1427 For: Benson, Dave (City of Lakeway) Edwards, Charles A. (City of Lakeway) Jones, Virginia W. (Board of Aldermen, Village of the Hills) Schulle, Jr., Gerhardt (City of Lakeway) Traeger, Drew (Town of Hollywood Park) Against: Hagen, Brynn (Self and Texas Humane Legislation Network) On: Boruff, Scott (Texas Parks & Wildlife) Sinclair, David (Texas Parks and Wildlife Dept.) HB 1837 For: Kam, Thomas (Self) Turner, Robert (Bob) (Texas Sheep & Goat Raisers Assoc.) Against: Johnson, Amy (Concerned Citizens for Medway Preserve) Plummer, Junie (City of Austin) Stallings, Robin (Texas Bicycle Industry & Texas Bicycle Coalition)


Welcome to The Met.Office on the Internet
A brief history of The Met.Office
The Met.Office - Where we are
The Met.Office - Aims and Objectives
The Met.Office Charter Standard for the Public
Annual Reports & Accounts 1994/95
The Met. Office Library
The Met. Office College
Ian Watkins |<EMAIL_ADDRESS>| Last updated: 30 October 1995 | © Crown Copyright 1995


BLOCKCHAIN
Creation history
...2009
Bitcoin by "Satoshi Nakamoto"
Blockchain === Bitcoin //
false
BLOCKCHAIN === DATABASE //
true
Classic Database
Blockchain
Data
Hash
Hash of the previous block
DATA
HASH
929a4ad395f65ca80110818e5fa055f383203aeaa829525dfe9e0824cc459d6a
Hash of the previous block
DECENTRALIZATION
Traditional system
Blockchain system
TRANSPARENCY
Click to explore all Bitcoin's transactions
Usage cases
Cryptocurrency
Patents
Voting
The End


Cynthia Lee Rold
Democrat
Executive Coach - Maverick Coaching & Speaking
J.D. Degree, Northwestern University School of Law, Chicago, Illinois B.A. Degree magna cum laude, Political Science, Carroll College, Waukesha, Wisconsin High school diploma, Bear Creek High School, Lakewood, Colorado
80120
I texted voters in past elections to help turn out the vote. I donated $25 to a few campaigns out of state in 2020. Jaime Harrison and Amy McGrath are two I remember.
Littleton Rotary Club, President-Elect, 2020-2021; President 2021-2022 Littleton Rotary Foundation President, 2019-2021 Highline Crossing Cohousing Association, member of HOA Board, 2020-2022 Advocates for Children - CASA - volunteer CASA, 2015-2019 Committee Chair, Fundraising Gala to benefit Nourish Meals on Wheels, 2019-2020 Friendship Bridge based in Lakewood, Colorado (Micro-Loan Organization for Women in Guatemala) - volunteer, 2013-2018 Received Distinguished Alumna Award for Community Service in recognition of a lifetime of exemplary volunteerism and leadership in serving my community, 2017
I served on the City of Littleton Planning Commission for 3 years where we considered many contentious issues and had to work together to find workable solutions.
I am passionate about redistricting and have always been interested in how district boundaries are drawn. I know the importance of fair districts to promote equity. Some of the election problems we have seen in our country are due to gerrymandered districts. It's important that districts make sense both geographically and politically - geographically in the sense that they do not spread across the entire state and politically in the sense that boundaries are not drawn solely for the purpose of favoring one party over another. I want to bring my intellect, passion for the issue, impartiality, and consensus-building skills to make sure districts are drawn fairly in our state. Please see my personal statement for more.
I have lived in a co-housing community for the last 15 years. One of the guiding principles of co-housing communities is that we operate by consensus. Our community of individuals who own the 40 homes here have to work closely together to reach agreement on all issues. Although we have a Steering Team for the community (which I have served on twice), most decisions are made by all community members using consensus. I sometimes facilitate community meetings, and when I served as Treasurer for 5 years, I facilitated all meetings about the budget process each year. Those meetings were often lengthy and required a lot of dialogue and deliberation to reach decisions all could agree to. I will bring those consensus skills to the commission and creating agreement among the commissioners. Even when I served as president of numerous organizations, I always viewed my role as facilitating the discussion and allowing all viewpoints to be heard. My role was not to come in with my solution and try to get everyone to agree to that solution. My role was to create dialogue to hear all perspectives. I would take that same approach in serving on the redistricting commission. Finally, I have been a professional coach for almost 20 years and the primary skill required for that position is excellence in listening. I listen to clients every day and work to understand their viewpoint. Having coached over 1000 people from 38 countries and many different industries, I know how to work well with individuals from many different backgrounds.
My college education was rigorous in teaching how to apply analytical skills to both verbal and written expressions. Law school was even more rigorous in that regard. I am very skilled at applying logic and reason to problems.
Female


Export and Import Database
Export / Import IndexedDB <—> Blob
The npm package dexie-export-import extends Dexie with the capability to export and import databases to and from Blobs.
Install
npm install dexie
npm install dexie-export-import
Usage
Here’s the basic usage. There’s a lot you can do by supplying optional [options]
arguments. The available options are described later on in this README (See Typescript interfaces below).
import Dexie from "dexie";
import {importDB, exportDB, importInto} from "dexie-export-import";
//
// Import from Blob or File to Dexie instance:
//
const db = await importDB(blob, [options]);
//
// Export to Blob
//
const blob = await exportDB(db, [options]);
//
// Import from Blob or File to existing Dexie instance
//
await importInto(db, blob, [options]);
Note that you can also import the package as follows:
NOTE: Typescript users using<EMAIL_ADDRESS>will get compilation errors if using the static import method Dexie.import()
.
import Dexie from "dexie";
import "dexie-export-import";
//
// Import from Blob or File to Dexie instance:
//
const db = await Dexie.import(blob, [options]); // equivalent to importDB()
//
// Export to Blob
//
const blob = await db.export([options]); // equivalent to exportDB()
//
// Import from Blob or File to existing Dexie instance
//
await db.import(blob, [options]); // equivalent to importInto()
Sample
Here’s a working sample on CodePen. It uses downloadjs to deliver the blob as a “file download” to the user. For receiving an import file, it uses a drop area where you can drop your JSON file. Click the Console tab in the bottom to see what progressCallbacks receive.
Even though this sample doesn’t show it, blobs can also be sent or retrieved to/from a server, using the fetch API.
Features
- Export of IndexedDB Database to JSON Blob.
- Import from Blob back to IndexedDB Database.
- An import Blob can be retrieved from an URL (using fetch()) or from a user-input file (dropped or browsed to).
- An export Blob can be either given end-user to be stored in Downloaded Files, or be send to a server over HTTP(S) using fetch().
- Chunk-wise / Streaming - does not read the entire DB into RAM
- Progress callback (typically for showing progress bar)
- Optional filter allows to import/export subset of data
- Support for all structured clonable exotic types (Date, ArrayBuffer, Blob, etc) except CryptoKeys (which by design cannot be exported)
- Atomic - import / export within one database transaction (optional)
- Export speed: Using getAll() in chunks rather than openCursor().
- Import speed: Using bulkPut() in chunks rather than put().
- Can well be run from a Web Worker (better speed + doesn’t lock GUI).
- Can also export IndexedDB databases that was not created with Dexie.
Compatibility
| Product | Supported versions |
|---|---|
| dexie | ^2.0.4 or ^3.0.0-alpha.5 |
| Safari | ^10.1 |
| IE | 11 |
| Edge | any version |
| Chrome | any version |
| FF | any version |
Similar Libraries
indexeddb-export-import
Much smaller in size, but also much lighter than dexie-export-import.
Indexeddb-export-import can be better choice if:
- your data contains no Dates, ArrayBuffers, TypedArrays or Blobs (only objects, strings, numbers, booleans and arrays).
- your database is small enough to fit in RAM on your target devices.
Dexie-export-import was build to scale when exporting large databases without consuming much RAM. It does also support importing/exporting exotic types.
Interface
Importing this module will extend Dexie and Dexie.prototype as follows. Even though this is conceptually a Dexie.js addon, there is no addon instance. Extended interface is done into Dexie and Dexie.prototype as a side effect when importing the module.
//
// Extend Dexie interface (typescript-wise)
//
declare module 'dexie' {
// Extend methods on db
interface Dexie {
export(options?: ExportOptions): Promise<Blob>;
import(blob: Blob, options?: ImportOptions): Promise<void>;
}
interface DexieConstructor {
import(blob: Blob, options?: StaticImportOptions): Promise<Dexie>;
}
}
StaticImportOptions and ImportOptions
These are the interfaces of the options
optional arguments to Dexie.import() and Dexie.prototype.import(). All options are optional and defaults to undefined (falsy).
export interface StaticImportOptions {
noTransaction?: boolean;
chunkSizeBytes?: number; // Default: DEFAULT_KILOBYTES_PER_CHUNK ( 1MB )
filter?: (table: string, value: any, key?: any) => boolean;
progressCallback?: (progress: ImportProgress) => boolean;
}
export interface ImportOptions extends StaticImportOptions {
acceptMissingTables?: boolean;
acceptVersionDiff?: boolean;
acceptNameDiff?: boolean;
acceptChangedPrimaryKey?: boolean;
overwriteValues?: boolean;
clearTablesBeforeImport?: boolean;
noTransaction?: boolean;
chunkSizeBytes?: number; // Default: DEFAULT_KILOBYTES_PER_CHUNK ( 1MB )
filter?: (table: string, value: any, key?: any) => boolean;
progressCallback?: (progress: ImportProgress) => boolean;
}
ImportProgress
This is the interface sent to the progressCallback.
export interface ImportProgress {
totalTables: number;
completedTables: number;
totalRows: number;
completedRows: number;
done: boolean;
}
ExportOptions
This is the interface of the options
optional arguments to Dexie.prototype.export(). All options are optional and defaults to undefined (falsy).
export interface ExportOptions {
noTransaction?: boolean;
numRowsPerChunk?: number;
prettyJson?: boolean;
filter?: (table: string, value: any, key?: any) => boolean;
progressCallback?: (progress: ExportProgress) => boolean;
}
ExportProgress
This is the interface sent to the ExportOptions.progressCallback.
export interface ExportProgress {
totalTables: number;
completedTables: number;
totalRows: number;
completedRows: number;
done: boolean;
}
Defaults
These are the default chunk sizes used when not specified in the options object. We allow quite large chunks, but still not that large (1MB RAM is not much even for a small device).
const DEFAULT_KILOBYTES_PER_CHUNK = 1024; // When importing blob
const DEFAULT_ROWS_PER_CHUNK = 2000; // When exporting db
JSON Format
The JSON format is described in the Typescript interface below. This JSON format is streamable as it is generated in a streaming fashion, and imported also using a streaming fashion. Therefore, it is important that the data come last in the file.
export interface DexieExportJsonStructure {
formatName: 'dexie';
formatVersion: 1;
data: {
databaseName: string;
databaseVersion: number;
tables: Array<{
name: string;
schema: string; // '++id,name,age'
rowCount: number;
}>;
data: Array<{ // This property must be last (for streaming purpose)
tableName: string;
inbound: boolean;
rows: any[]; // This property must be last (for streaming purpose)
}>;
}
}
Example JSON File
{
"formatName": "dexie",
"formatVersion": 1,
"data": {
"databaseName": "dexie-export-import-basic-tests",
"databaseVersion": 1,
"tables": [
{
"name": "outbound",
"schema": "",
"rowCount": 2
},
{
"name": "inbound",
"schema": "++id",
"rowCount": 3
}
],
"data": [{
"tableName": "outbound",
"inbound": false,
"rows": [
[
1,
{
"foo": "bar"
}
],
[
2,
{
"bar": "foo"
}
]
]
},{
"tableName": "inbound",
"inbound": true,
"rows": [
{
"id": 1,
"date": 1,
"fullBlob": {
"type": "",
"data": "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w=="
},
"binary": {
"buffer": "AQID",
"byteOffset": 0,
"length": 3
},
"text": "foo",
"bool": false,
"$types": {
"date": "date",
"fullBlob": "blob2",
"binary": "uint8array2",
"binary.buffer": "arraybuffer"
}
},
{
"id": 2,
"foo": "bar"
},
{
"id": 3,
"bar": "foo"
}
]
}]
}
Exporting IndexedDB Databases that wasn’t generated with Dexie
As Dexie can dynamically open non-Dexie IndexedDB databases, this is not an issue. Sample provided here:
import Dexie from 'dexie';
import 'dexie-export-import';
async function exportDatabase(databaseName) {
const db = await new Dexie(databaseName).open();
const blob = await db.export();
return blob;
}
async function importDatabase(file) {
const db = await Dexie.import(file);
return db.backendDB();
}
Background / Why
This feature has been asked for a lot:
- https://github.com/dfahlander/Dexie.js/issues/391
- https://github.com/dfahlander/Dexie.js/issues/99
- https://stackoverflow.com/questions/46025699/dumping-indexeddb-data
- https://feathub.com/dfahlander/Dexie.js/+9
My simple answer initially was this:
function export(db) {
return db.transaction('r', db.tables, ()=>{
return Promise.all(
db.tables.map(table => table.toArray()
.then(rows => ({table: table.name, rows: rows})));
});
}
function import(data, db) {
return db.transaction('rw', db.tables, () => {
return Promise.all(data.map (t =>
db.table(t.table).clear()
.then(()=>db.table(t.table).bulkAdd(t.rows)));
});
}
Looks simple!
But:
- The whole database has to fit in RAM. Can be issue on small devices.
- If using JSON.stringify() / JSON.parse() on the data, we won’t support exotic types (Dates, Blobs, ArrayBuffers, etc)
- Not possible to show a progress while importing.
This addon solves these issues, and some more, with the help of some libraries.
Libraries Used
To accomplish a streamable export/import, and allow exotic types, I use the libraries listed below. Note that these libraries are listed as devDependencies because they are bundles using rollupjs - so there’s no real dependency from the library user persective.
typeson and typeson-registry
These modules enables something similar as JSON.stringify() / JSON.parse() for exotic or custom types.
clarinet
This module allow to read JSON in a streaming fashion
Streaming JSON
I must admit that I had to do some research before I understood how to accomplish streaming JSON from client-side Javascript (both reading / writing). It is really not obvious that this would even be possible. Looking at the Blob interface, it does not provide any way of either reading or writing in a streamable fashion.
What I found though (after some googling) was that it is indeed possible to do that based on the current DOM platform (including IE11 !).
Reading JSON in Chunks
A File or Blob represents something that can lie on a disk file and not yet be in RAM. So how do we read the first 100 bytes from a Blob without reading it all?
const firstPart = blob.slice(0,100);
Ok, and in the next step we use a FileReader to really read this sliced Blob into memory.
const first100Chars = await readBlob(firstPart);
function readBlob(blob: Blob): Promise<string> {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onabort = ev => reject(new Error("file read aborted"));
reader.onerror = ev => reject((ev.target as any).error);
reader.onload = ev => resolve((ev.target as any).result);
reader.readAsText(blob);
});
}
Voila!
But! How can we keep transactions alive when calling this non-indexedDB async call?
I use two different solutions for this:
- If we are in a Worker, I use
new FileReaderSync()
instead ofnew FileReader()
. - If in the main thread, I use
Dexie.waitFor()
to while reading this short elapsed chunk, keeping the transaction alive still.
Ok, fine, but how do we parse the chunk then? Cannot use JSON.parse(firstPart) because it will most defenitely be incomplete.
Clarinet to the rescue. This library can read JSON and callback whenever JSON tokens come in.
Writing JSON in Chunks
Writing JSON is solved more easily. As the BlobBuilder interface was deprecated from the DOM, I firstly found this task impossible. But after digging around, I found that also this SHOULD be possible if browers implement the Blob interface correctly.
Blobs can be constructeed from an array of other Blobs. This is the key.
- Let’s say we generate 1000 Blobs of 1MB each on a device with 512 MB RAM. If the browser does its job well, it will allow the first 200 blobs or so to reside in RAM. But then, it should start putting the remanding blobs onto temporary files.
- We put all these 1000 blobs into an array and generate a final Blob from that array.
And that’s pretty much it.
Table of Contents
- API Reference
- Best Practices
- Building Addons
- Collection
- Collection.and()
- Collection.clone()
- Collection.count()
- Collection.delete()
- Collection.desc()
- Collection.distinct()
- Collection.each()
- Collection.eachKey()
- Collection.eachPrimaryKey()
- Collection.eachUniqueKey()
- Collection.filter()
- Collection.first()
- Collection.keys()
- Collection.last()
- Collection.limit()
- Collection.modify()
- Collection.offset()
- Collection.or()
- Collection.primaryKeys()
- Collection.raw()
- Collection.reverse()
- Collection.sortBy()
- Collection.toArray()
- Collection.uniqueKeys()
- Collection.until()
- Compound Index
- Consuming Dexie as a module
- Deprecations
- Derived Work
- Design
- Dexie
- Dexie.AbortError
- Dexie.BulkError
- Dexie.ConstraintError
- Dexie.DataCloneError
- Dexie.DataError
- Dexie.DatabaseClosedError
- Dexie.IncompatiblePromiseError
- Dexie.InternalError
- Dexie.InvalidAccessError
- Dexie.InvalidArgumentError
- Dexie.InvalidStateError
- Dexie.InvalidTableError
- Dexie.MissingAPIError
- Dexie.ModifyError
- Dexie.NoSuchDatabaseErrorError
- Dexie.NotFoundError
- Dexie.Observable
- Dexie.Observable.DatabaseChange
- Dexie.OpenFailedError
- Dexie.PrematureCommitError
- Dexie.QuotaExceededError
- Dexie.ReadOnlyError
- Dexie.SchemaError
- Dexie.SubTransactionError
- Dexie.Syncable
- Dexie.Syncable.IDatabaseChange
- Dexie.Syncable.IPersistentContext
- Dexie.Syncable.ISyncProtocol
- Dexie.Syncable.StatusTexts
- Dexie.Syncable.Statuses
- Dexie.Syncable.registerSyncProtocol()
- Dexie.TimeoutError
- Dexie.TransactionInactiveError
- Dexie.UnknownError
- Dexie.UnsupportedError
- Dexie.UpgradeError()
- Dexie.VersionChangeError
- Dexie.VersionError
- Dexie.[table]
- Dexie.addons
- Dexie.async()
- Dexie.backendDB()
- Dexie.close()
- Dexie.currentTransaction
- Dexie.debug
- Dexie.deepClone()
- Dexie.defineClass()
- Dexie.delByKeyPath()
- Dexie.delete()
- Dexie.derive()
- Dexie.events()
- Dexie.exists()
- Dexie.extend()
- Dexie.fakeAutoComplete()
- Dexie.getByKeyPath()
- Dexie.getDatabaseNames()
- Dexie.hasFailed()
- Dexie.ignoreTransaction()
- Dexie.isOpen()
- Dexie.js
- Dexie.name
- Dexie.on()
- Dexie.on.blocked
- Dexie.on.error
- Dexie.on.populate
- Dexie.on.populate-(old-version)
- Dexie.on.ready
- Dexie.on.versionchange
- Dexie.open()
- Dexie.override()
- Dexie.semVer
- Dexie.setByKeyPath()
- Dexie.shallowClone()
- Dexie.spawn()
- Dexie.table()
- Dexie.tables
- Dexie.transaction()
- Dexie.transaction()-(old-version)
- Dexie.verno
- Dexie.version
- Dexie.version()
- Dexie.vip()
- Dexie.waitFor()
- DexieError
- Docs Home
- Download
- Export and Import Database
- Getting Started
- Hello World
- How To Use the StorageManager API
- Inbound
- IndexSpec
- Indexable Type
- IndexedDB on Safari
- Migrating existing DB to Dexie
- MultiEntry Index
- Promise
- Promise.PSD
- Promise.catch()
- Promise.finally()
- Promise.on.error
- Promise.onuncatched
- Questions and Answers
- Releasing Dexie
- Samples
- Simplify with yield
- Table
- Table Schema
- Table.add()
- Table.bulkAdd()
- Table.bulkDelete()
- Table.bulkGet()
- Table.bulkPut()
- Table.clear()
- Table.count()
- Table.defineClass()
- Table.delete()
- Table.each()
- Table.filter()
- Table.get()
- Table.hook('creating')
- Table.hook('deleting')
- Table.hook('reading')
- Table.hook('updating')
- Table.limit()
- Table.mapToClass()
- Table.name
- Table.offset()
- Table.orderBy()
- Table.put()
- Table.reverse()
- Table.schema
- Table.toArray()
- Table.toCollection()
- Table.update()
- Table.where()
- The three main limitations of IndexedDB
- Transaction
- Transaction.abort()
- Transaction.on.abort
- Transaction.on.complete
- Transaction.on.error
- Transaction.table()
- Tutorial
- Typescript
- Understanding the basics
- Version
- Version.stores()
- Version.upgrade()
- WhereClause
- WhereClause.above()
- WhereClause.aboveOrEqual()
- WhereClause.anyOf()
- WhereClause.anyOfIgnoreCase()
- WhereClause.below()
- WhereClause.belowOrEqual()
- WhereClause.between()
- WhereClause.equals()
- WhereClause.equalsIgnoreCase()
- WhereClause.inAnyRange()
- WhereClause.noneOf()
- WhereClause.notEqual()
- WhereClause.startsWith()
- WhereClause.startsWithAnyOf()
- WhereClause.startsWithAnyOfIgnoreCase()
- WhereClause.startsWithIgnoreCase()
- db.syncable.connect()
- db.syncable.delete()
- db.syncable.disconnect()
- db.syncable.getOptions()
- db.syncable.getStatus()
- db.syncable.list()
- db.syncable.on('statusChanged')
- db.syncable.setFilter()
- unhandledrejection-event


If you have a submission or questions about the magazine, submission guidelines, recruitment, or more, send us an email. Submission deadline was November 24th.


Adds a search or searches to the grid.
addSearch([before], search)
| before |
string or integer, optional, search to add before |
| search |
object or array, search(s) to add |
Returns integer.
Description
Adds a search or searches to the grid by adding items into .searches array. Since the
search popup is shown when user clicks the search button, there is no need to refresh the grid. The first optional argument
before is the search to insert before. It can be either a search field name or the index in
the .searches array. If first parameter is not defined, the search will be appended
to the end. Second argument search is the search object or an array of search objects.
Returns the number of searches it adds.
If you define grid as:
You can add searches by:
or several at a time:
See .searches array for the structure of the search object.


Identify and eliminate product defects using computer vision and AI
Check out the glimpse of our defect detection model that uses computer vision & convolutional neural networks to identify the relevant parts from an image & classify them to be either defective or good quality. Detection is also possible is several similar parts are present in the image (typical case of a production line).
This demo detects defects only for images of the tops of submersible pump impellers.
- Download any image from this dataset
- Upload the image & click Detect to get your results
- Similar functionality for videos coming soon...
OR
Localize & classify the type of defects in manufactured parts
Try out our defect classifier model, that can predict the types of defect that a product may have based on the image using deep CNNs trained using transfer learning.
This demo can be used to classify the different types of defects on metal surfaces into 6 different categories.
- Download any image from this dataset
- Upload the image & click Categorize to get your results
- Similar functionality for videos coming soon...


{% extends "blog/base_template.html" %} {% import "macros/post_widget.html" as post_widget %} {# Expects a variable `posts` which is a Pagination result of Post instances. #} {# See https://flask-sqlalchemy.palletsprojects.com/en/3.0.x/pagination/ #} {% block content %}


Tutorial 7 - Page Editor Basics (2)
When going through Maqetta's tutorials, it is suggested that you have two side-by-side
browser windows open, one showing the tutorial, and the other where you run the application
and perform the steps listed in the tutorial.
This tutorial covers the following topics:
- Container widgets vs primitive widgets (i.e., "controls")
- Choose parent preference
- Inline vs block widgets
- Flow vs absolute layout
Container widgets vs primitive widgets (i.e., "controls")
- ⇒
Issue a Create Desktop Application... command.
- ⇒
In the Palette, click on the Containers section to open that section, then
click on the the subsection labelled Dojo.
- ⇒
Drag a TabContainer widget onto the canvas.
When the data entry popup appears, click OK or click away to accept the default values.
- ⇒
In the Palette, click on the Controls section to open that section, then
click on the the subsection labelled TextBox.
- ⇒
Drag a TextBox widget onto the canvas, dropping the Button
inside of the TabContainer.
- ⇒
In the Palette, click on the Controls section to open that section (if not already open), then
click on the the subsection labelled Buttons.
- ⇒
Drag a Button widget onto the canvas, dropping the Button
inside of the TabContainer.
When the data entry popup appears, click OK or click away to accept the default values.
- ⇒
Go to the far-left of the Maqetta window and click on the large Outline
palette button to expose the Outline palette, which shows your document's widget hierarchy.
Note that the Outline shows that the TextBox and Button widgets are nested inside the TabContainer.
In fact, the hierarchy is TabContainer, with two ContentPane children (one for each tab in the TabContainer),
and then the TextBox and Button widgets are children of the first ContentPane.
By default, Maqetta adds new widgets as children of the container widget
at the widget drop location.
- ⇒
Go to the far-left of the Maqetta window and click on the large Palette
palette button to expose the Palette palette to show the widget palette once again.
Choose parent preference
- ⇒
In the main menubar, at the top/right of the application, click on the application settings icon
and then choose "Preferences" to bring up the Preferences dialog.
- ⇒
Turn option "When dragging, show possible parents:" on by clicking on the checkmark for that item,
then click Save to update your preferences.
Note that preference changes stay active forever, even across sessions,
until you change them again.
- ⇒
In the Palette, click on the Controls section to open that section (if not already open), then
click on the the subsection labelled Buttons.
- ⇒
Observe the screen while you perform the following operation.
Drag a ComboButton widget onto the canvas and hover over the TabContainer,
but don't let up on the mouse yet.
Instead, notice that Maqetta shows an annotation next to the mouse that shows
the list of possible parent widgets for the ComboButton. While still holding the mouse,
your screen should look something like this:
- ⇒
Let up on the mouse over the TabContainer so that the ComboBox is dropped into the TabContainer,
and will become a child of the ContentPane (just like what happened previously with the TextBox and Button).
- ⇒
Drag a second ComboButton widget onto the canvas and hover over the white area
under the TabContainer. Notice that the only candidate parent will by the <body>.
- ⇒
While still dragging the ComboButton, move the mouse once again over the TabContainer.
The list of candidate parents will once again show two candidate parents: the ContentPane and the <body>.
- ⇒
While still dragging and hovering over the ContentPane, on your keyboard, press the number "2" key.
Notice that list of candidate parents now has the arrow pointing to the <body>.
At this point, let up on the mouse to complete the drop operation.
The new ComboBox should be added under the TabContainer because you told Maqetta
to choose <body> as the parent, instead of the ContentPane, and as a result,
the ComboBox has become a sibling to the TabContainer. (Note: you can look at the Outline palette
to verify that the ComboBox is indeed a sibling to the TabContainer.)
The choose parent user interface shows both at widget creation time (when dragging/dropping
from the Palette onto the canvas), and when dragging existing widgets around on the canvas.
- ⇒
Click on the file tab's close button -
- to close the page editor. (Click Discard on the Save/Discard/Cancel alert that appears.)
Inline vs block widgets
- ⇒
Issue a Create Desktop Application... command. In the Create Desktop Application dialog,
click the Create button to create a new file with the default filename.
- ⇒
Drag the following widgets onto the canvas:
TextBox, Button, ComboButton, HTML <label>,
Calendar, HTML <div>.
Note that some widgets are added to the right of the previous widget and other widgets are added under the previous widget.
This is because some widgets default as "block-level" widgets, which means they, in effect, also establish their own
separate block (or "paragraph"), whereas other widgets are designed as "inline" widgets, which means they are placed inline
within the current block (or "paragraph") and behave from a layout perspective similar to typed text or small inline images.
Maqetta simply honors the default layout behavior for each widget.
- ⇒
Click on the file tab's close button -
- to close the page editor. (Click Discard on the Save/Discard/Cancel alert that appears.)
Flow vs absolute layout
HTML5 uses CSS for layout and styling. CSS offers two primary layout mechanisms:
- Flow layout - This is the layout you find in text document editors such as
MS Word or Google Docs, where page elements flow left-to-right and then
top-to-bottom.
- Absolute layout - This is the layout you find in drawing programs
where page elements are positioned at fixed (x,y) locations on the page.
- ⇒
Issue a Create Desktop Application... command.
- ⇒
Look at the page editor toolbar for a drop-down button that says either "Flow"
or "Absolute". (Note: it probably says "Flow".) This indicates that the page editor
will add new widgets using flow layout.
- ⇒
Change the Flow/Absolute button to "Absolute".
- ⇒
Drag/drop a Calendar widget onto the canvas.
Notice that the Calendar widget is positioned absolutely at the position where
you dropped the Calendar.
The flow-vs-absolute setting is document-specific and persists throughout the
lifetime of the document, until you change the value.
Click on the Undo icon to remove the Calendar you just added.
- ⇒
Change the Flow/Absolute button back to "Flow".
- ⇒
Once again, drag/drop a Calendar widget onto the canvas.
Notice that the Calendar widget is positioned using flow layout, and ends up at the top/left of the canvas.
- ⇒
Click on the file tab's close button -
- to close the page editor. (Click Discard on the Save/Discard/Cancel alert that appears.)
Previous / Next


project_id, cloud_region, registry_id)
registries = client.projects().locations().registries()
return registries.delete(name=registry_name).execute()
// [END iot_delete_registry]
registry_path = client.registry_path(project_id, cloud_region, registry_id)
try:
response = client.delete_device_registry(registry_path)
print("Deleted registry")
return response
except HttpError:
print("Error, registry not deleted")
return ""
// [END iot_delete_registry]


Organizations face a data discovery problem when their analysts spend more time finding relevant data than analyzing it. This problem has become common as: i) data is stored across multiple storage systems, from databases to data lakes; ii) data scientists do not operate within the limits of well-defined schemas, instead they want to find data across their organization to answer increasingly complex business questions.
We have built Aurum, a system to tackle data discovery problems at large. Aurum introduces a new discovery algebra, R2QL, that permits users to declare their intuition of what is relevant through a set of data primitives that expose the relations of the underlying data. The algebra relies on a metaschema graph to answer queries in human-scale latencies. Aurum is scalable: it builds the metaschema graph in linear time, despite the complexity of extracting complex relationships among thousands of data sources.
For more info, contact aurum-dev@mit.edu.


Data
public extension Data
-
Get HEX string from data. Can be used for sending APNS token to backend.
Declaration
Swift
var hexString: String { get }
-
Creates data from HEX string
Declaration
Swift
init(hex: String)
-
Try to convert data to ASCII string
Declaration
Swift
var asciiString: String? { get }
-
Try to convert data to UTF8 string
Declaration
Swift
var utf8String: String? { get }
-
String representation for data. Try to decode as UTF8 string at first. Try to decode as ASCII string at second. Uses hex representation if data can not be represented as UTF8 or ASCII string.
Declaration
Swift
var asString: String { get }
-
Try to serialize JSON data
Declaration
Swift
var jsonObject: Any? { get }
-
Try to get dictionary from JSON data
Declaration
Swift
var jsonDictionary: [String : Any]? { get }
-
Try to get array from JSON data
Declaration
Swift
var jsonArray: [Any]? { get }
-
Try to get string for key in dictionary from JSON data
Declaration
Swift
func jsonDictionaryStringForKey(_ key: String) -> String?
-
Initialize data with content of a given file and report error if unable.
Declaration
Swift
init?(safeContentsOf url: URL, file: String = #file, function: String = #function, line: UInt = #line)
-
Write the contents of the
Data
to a location and report error if unable.Throws
An error in the Cocoa domain, if there is an error writing to theURL
.Declaration
Swift
@discardableResult func safeWrite(to url: URL, options: Data.WritingOptions = [], file: String = #file, function: String = #function, line: UInt = #line) -> Bool
Parameters
url
The location to write the data into.
options
Options for writing the data. Default value is
[]
.